![有没有办法使用软件关闭 USB 设备?](https://linux22.com/image/1299578/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E4%BD%BF%E7%94%A8%E8%BD%AF%E4%BB%B6%E5%85%B3%E9%97%AD%20USB%20%E8%AE%BE%E5%A4%87%EF%BC%9F.png)
有没有办法可以使用 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>
后它就会断电。