有没有办法使用软件关闭 USB 设备?

有没有办法使用软件关闭 USB 设备?

有没有办法可以使用 Linux 机器上的软件完全关闭(特定的)USB 设备?

我想用它关闭一个(单个)USB 驱动器(以便 LED 熄灭)。

您知道有什么方法可以实现这一点吗?例如使用 /sys/bus/usb 或类似方法?

答案1

如果您的机器运行旧内核,您可以echo suspend > /sys/bus/usb/devices/X-X/power/level强制暂停设备。

然而,从 2.6.32 版本开始,这不再可能:

我们可以将电源管理事件分为两大类:外部事件和内部事件。外部事件是由 USB 堆栈之外的某些代理触发的事件:系统暂停/恢复(由用户空间触发)、手动动态恢复(也由用户空间触发)和远程唤醒(由设备触发)。 内部事件是 USB 堆栈内触发的事件:自动暂停和自动恢复。请注意,所有动态暂停事件都是内部的;不允许外部代理发出动态暂停。

power/control

    This file contains one of two words: "on" or "auto".
    You can write those words to the file to change the
    device's setting.

    "on" means that the device should be resumed and
    autosuspend is not allowed.  (Of course, system
    suspends are still allowed.)

    "auto" is the normal state in which the kernel is
    allowed to autosuspend and autoresume the device.

    (In kernels up to 2.6.32, you could also specify
    "suspend", meaning that the device should remain
    suspended and autoresume was not allowed.  This
    setting is no longer supported.

(从http://www.kernel.org/doc/Documentation/usb/power-management.txt

我想你能做的最好的事情就是解除设备与驱动程序的绑定,这样设备上就不会有任何活动,然后尽快将设备配置为自动挂起(echo auto > /sys/bus/usb/devices/X-X/power/control && echo 0 > /sys/bus/usb/devices/X-X/power/autosuspend_delay_ms)。

然而据我所知USB 规格,即使您暂停设备,端口上的一些电源仍会保留,因此如果它由“哑”方案供电(即直接连接到+ 5V 和 GND 引脚),则可能无法禁用 LED。

答案2

使用弹出命令应该可以工作。

运行eject /dev/<devicename>后它就会断电。

相关内容