防止usb设备自动挂起

CPU/显卡/打印机/USB设备等硬件问题
回复
zrqlx126
帖子: 377
注册时间: 2007-06-22 18:52

防止usb设备自动挂起

#1

帖子 zrqlx126 » 2020-12-01 17:57

最近升级ubuntu21.04后,发现鼠标经常性冻结,细看之下冻结时鼠标根本不亮,怀疑自动挂起了。
1.查看usb设备

代码: 全选

$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
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 004: ID 046d:c077 Logitech, Inc. M105 Optical Mouse
Bus 001 Device 003: ID 0781:5581 SanDisk Corp. Ultra
Bus 001 Device 005: ID 046d:c31c Logitech, Inc. Keyboard K120
Bus 001 Device 002: ID 04f9:02d1 Brother Industries, Ltd MFC-1810
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
我用的是罗技鼠标键盘套装,可以看到鼠标键盘在总线1上,分别是设备4和设备5

代码: 全选

Bus 001 Device 004: ID 046d:c077 Logitech, Inc. M105 Optical Mouse
Bus 001 Device 005: ID 046d:c31c Logitech, Inc. Keyboard K120
2.查找系统映像

代码: 全选

$ ls /sys/bus/usb/devices/
1-0:1.0  1-10:1.0  1-1:1.1  1-3:1.0  2-0:1.0  usb1  usb4
1-1      1-10:1.1  1-1:1.2  1-7      3-0:1.0  usb2
1-10     1-1:1.0   1-3      1-7:1.0  4-0:1.0  usb3
可以看到好几个总线,在1-7中找到了设备ID

代码: 全选

$ cat /sys/bus/usb/devices/1-7/idVendor 
046d
$ cat /sys/bus/usb/devices/1-7/idProduct 
c077
3.查看当前电源状态,果然是自动挂起的

代码: 全选

$ cat /sys/bus/usb/devices/1-7/power/autosuspend
2
4.禁止自动挂起

代码: 全选

$ sudo echo '-1' > /sys/bus/usb/devices/1-7/power/autosuspend
这样不是长久之计,启动后还是会自动挂起。写一个脚本加到启动环境中,重启搞定。

代码: 全选

#! /bin/bash

usbl=`lsusb | sed -n '/Logitech.*Mouse/p'`
busid=`echo $usbl | cut -d " " -f2`
busid=`echo $busid | cut -b 3`
deviceid=`echo $usbl | cut -d " " -f6`
idProduct=`echo $deviceid | cut -d ":" -f2`

echo "find usb mouse deviceid is $deviceid."
for((i=0;i<10;i++))
do
    if [ -f "/sys/bus/usb/devices/$busid-$i/idProduct" ]; then
        tmp=`cat /sys/bus/usb/devices/$busid-$i/idProduct`
        if [ "$tmp" == "$idProduct" ]; then
            echo "will disable autosuspend $tmp in $busid-$i."
            echo '-1' > /sys/bus/usb/devices/$busid-$i/power/autosuspend
        fi
    fi
done
回复