再次关闭单个USB设备

use*_*761 17 usb debian

我知道这个话题已经讨论了很多次,但没有一个答案对我有帮助.为了记录,我正在运行Debian.

这笔交易是:我买了一个usb供电的led灯,非常简单,甚至没有开/关开关(它工作并且一直打开).我希望能够通过命令行打开/关闭它.这是我试过的:

    echo on > /sys/bus/usb/devices/usb1/power/level       # turn on
    echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off
Run Code Online (Sandbox Code Playgroud)

这是我在很多论坛上发现的."开启"工作,但"暂停"收益率

    -su: echo: write error: Invalid argument
Run Code Online (Sandbox Code Playgroud)

对于每一个usbN.我也试过了

    echo "0" > "/sys/bus/usb/devices/usbX/power/autosuspend_delay_ms"
Run Code Online (Sandbox Code Playgroud)

这不会给出错误,但也不会做任何事情(同样,对于每个usbN)

    echo "usb1" > /sys/bus/usb/drivers/usb/unbind
Run Code Online (Sandbox Code Playgroud)

仅适用于更"智能"的设备,如键盘,鼠标或USB wifi卡.我的意思是只关闭tyhose设备,其他usbN不会出错,但灯泡永远不会熄灭.

/ sys/bus/usb/devices /的内容是

    1-0:1.0 1-1:1.0 1-2:1.0 1-2:1.2 2-0:1.0 4-0:1.0 4-1:1.0 6-0:1.0 8-0:1.0 8-2:1.0 usb2 usb4 usb6 usb8
    1-1 1-2 1-2:1.1 1-2:1.3 3-0:1.0 4-1 5-0:1.0 7-0:1.0 8-2 usb1 usb3 usb5 usb7
Run Code Online (Sandbox Code Playgroud)

我试着做

    echo device_name > /sys/bus/usb/drivers/usb/unbind
Run Code Online (Sandbox Code Playgroud)

对于它们中的每一个,但只有usbN和NM反应的设备,形式为nm:xy的那些

    tee: /sys/bus/usb/drivers/usb/bind: No such device
Run Code Online (Sandbox Code Playgroud)

(我尝试输入,例如,"1-0:1.0","1-0 \:1.0"和"1-0 \:1.0",都给出了相同的结果).

最后一件事,执行后显示的内容

    lsusb -t
Run Code Online (Sandbox Code Playgroud)

当我插上或拔下灯泡时,它不会改变.

有任何想法吗?

小智 18

关闭设备ID 2-1:

echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/unbind

重新打开设备ID 2-1:

echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/bind

在我的情况下,使用设备ID 2-1控制我的USB棒的电源,因此控制光.

  • 提示:如果它们在Debian中为您工作,请为它们创建一个别名,以便以后让您的生活更轻松.

希望这有帮助,苏

  • 如何识别哪个设备 ID 控制什么? (3认同)

jwa*_*att 8

如果您想要做的只是重置USB设备以在其进入损坏状态时进行修复,那么使用bind/unbind usbfs特殊文件可能会有点痛苦(因为设备ID可能会发生变化,而且它们是一个有点难以准确识别您是否不想重新绑定其他设备).在这种情况下,我发现使用lsusb随附的供应商和产品ID要容易得多usb_modeswitch.例如,如果我使用以下方式识别我的无线适配器:

$ lsusb
Bus 001 Device 042: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 035: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法重置无线适配器:

$ sudo usb_modeswitch -v 0x7392 -p 0x7811 --reset-usb
Run Code Online (Sandbox Code Playgroud)

如果您有多个设备连接有相同的供应商和产品ID,则usb_modeswitch提供总线和设备编号标志.对于上面的无线适配器示例,我将添加-b 1 -g 42到标志.

  • 这是在 Ubuntu (12.04 LTS) 上对我有用的唯一方法,用于重新启动我的 USB 无线适配器,该适配器在挂起后不会重新连接。谢谢! (2认同)