红联Linux门户
Linux帮助

解决ubuntu鼠标自动休眠引起鼠标失灵的问题

发布时间:2016-02-05 10:46:20来源:linux网站作者:cwll2009

查看鼠标的usb设备:

$ lsusb 
Bus 003 Device 002: ID 8087:8000 Intel Corp.  
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 
Bus 001 Device 003: ID 17ef:6050 Lenovo  
Bus 001 Device 002: ID 09da:054f A4Tech Co., Ltd.  
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 


在/sys/bus/usb/devices/中找到对应的设备,如上面的:

Bus 001 Device 003: ID 17ef:6050 Lenovo 


是我的usb鼠标总线1上,是设备3,在该文件夹中,查看目录:

$ ls /sys/bus/usb/devices/ 
1-0:1.0  1-1:1.0  1-3  2-0:1.0  3-1  usb1  usb3 
1-1  1-1:1.1  1-3:1.0  3-0:1.0  3-1:1.0  usb2 


可以看到有3个usb总线,执行下面命令确认一下,是该设备:

cat /sys/bus/usb/devices/usb1/1-3/idVendor 

17ef 


和上面的设备ID能对应上。

$ cat /sys/bus/usb/devices/usb1/1-3/power/autosuspend 


当前状态是自动挂起,执行下面命令改为禁止自动挂起。

$ sudo echo '-1' > /sys/bus/usb/devices/usb1/1-3/power/autosuspend 


以上只能临时解决问题,要永久解决问题,可以把上面一句命令加到系统启动脚本里。

以下是自己写的一段自动化脚本,加到系统启动脚本里就可以了,其中第一行的Lenovo是lsusb命令看到的鼠标的名称。

usbl=`lsusb | sed -n '/Lenovo/p'` 
busid=`echo $usbl | cut -d " " -f2` 
deviceid=`echo $usbl | cut -d " " -f6` 
busid=`echo $busid | cut -b 3` 
deviceid=`echo $deviceid | cut -d ":" -f1` 
echo $deviceid 
for((i=0;i<10;i++)) 
do 
if [ -f "/sys/bus/usb/devices/$busid-$i/idVendor" ]; then 
idvendor=`cat /sys/bus/usb/devices/$busid-$i/idVendor` 
echo "idvendor: $idvendor" 
if [ "$idvendor"="$deviceid" ];then 
echo "will change it:$idvendor i is:$i" 
sudo echo -1 > /sys/bus/usb/devices/$busid-$i/power/autosuspend 
fi 
fi 
done


本文永久更新地址:http://www.linuxdiyf.com/linux/17890.html