#!/bin/bash # # bcm5943-diagnostics - troubleshooting the BCM5974 setup # # Copyright (C) 2008 Henrik Rydberg (rydberg@euromail.se) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # DRIVER=bcm5974 echo ----------------------------------------------------------------------- # What kernel version am I running? KERNEL=`uname -r` echo \* Kernel version: $KERNEL # What synaptics version is installed (debian)? if [ -x /usr/bin/dpkg-query ]; then SYNAPTICS=`/usr/bin/dpkg-query -W -f='${Version}\n' xserver-xorg-input-synaptics` echo \* Synaptics version: $SYNAPTICS else echo \* Synaptics version: UNKNOWN - dpkg not found fi # What USB devices of interest can we find? if [ -x /usr/sbin/lsusb ]; then LSUSB=`lsusb|grep -c 05ac:022` echo \* USB device: $LSUSB else echo \* USB device: UNKNOWN - lsusb not found fi # Do we have the module intalled? MODLIB=/lib/modules/$KERNEL/kernel/drivers/input/mouse/$DRIVER.ko if [ -f $MODLIB ]; then echo \* $MODLIB: exists else echo \* $MODLIB: does NOT exist echo Copy the file $DRIVER.ko to $MODLIB exit 1 fi # Do we have the module configured? MODULES=/etc/modules if [ -f $MODULES ]; then if (grep -q $DRIVER $MODULES); then echo \* $MODULES: has $DRIVER else echo \* $MODULES: does NOT have $DRIVER echo Add this line to $MODULES: echo $DRIVER exit 1 fi else echo \* $MODULES: file not found exit 1 fi # Do we have the right quirks? MODPROBE=/etc/modprobe.d/options if [ -f $MODPROBE ]; then MODPROBEOPTS=`grep quirks= $MODPROBE|grep -v ^#|grep 0x05ac:0x02` if [ "$MODPROBEOPTS" != "" ]; then echo \* $MODPROBE: has quirks else echo \* $MODPROBE: does NOT have quirks echo Add this line to $MODPROBE: echo -n options usbhid quirks= (lsusb|grep -q 05ac:022) && echo 0x05ac:0x0223:0x00020800,0x05ac:0x0224:0x00024800,0x05ac:0x0225:0x00020800 (lsusb|grep -q 05ac:023) && echo 0x05ac:0x0230:0x00020800,0x05ac:0x0231:0x00024800,0x05ac:0x0232:0x00020800 exit 1 fi else echo \* $MODPROBE: file not found exit 1 fi # Was the $DRIVER module loaded? DMESG=`lsmod|grep $DRIVER` if [ "$DMESG" != "" ]; then echo \* $DRIVER: module is loaded else echo \* $DRIVER: module is NOT loaded echo Add this line to /etc/modules: echo "$DRIVER" exit 1 fi # Was the $DRIVER properly initialized? WELLSPRING=`dmesg|grep $DRIVER|grep Wellspring` if [ "$WELLSPRING" != "" ]; then echo \* $DRIVER: Wellspring was initialized else echo \* $DRIVER: Wellspring was NOT initialized exit 1 fi # Do we have synaptics working properly? typeset -i SYNLINES=`synclient -l|wc -l` if [ $SYNLINES -gt 10 ]; then echo \* synaptics: configuration readable else echo \* synaptics: configuration NOT readable exit 1 fi # Do we have a working synaptics configuration? DIFF=/tmp/synclient-output.diff.$$ TMP=/tmp/synclient-output.txt.$$ synclient -l | sort > $TMP diff -u - $TMP > $DIFF <