查看鼠标的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
2
当前状态是自动挂起,执行下面命令改为禁止自动挂起。

$ 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




Logo

更多推荐