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


10

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

我想用它来关闭(以便LED关闭)一个(单个)USB记忆棒。

你知道实现这个的任何方法吗?例如使用/ sys / bus / usb等?


是。只需卸下设备即可。
iglvzx 2011年

1
不,这没有用。还有可能在杆上没有可用的隔板(可以安装)。
Daniel Jour

对于闪存驱动器,删除磁盘的一种方法是echo 1 > /sys/block/sd<letter[s]>/device/delete...(弹出可能正在这样做...)它可能导致设备被(软)“断电”...(如果它适用于磁盘,它不适用于非磁盘设备..)
Gert van den Berg

Answers:


10

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

但是,自2.6.32起,这已不再可能:

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

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引脚)。


我将此标记为已接受的答案,因为我能够将设备与其驱动程序解除绑定并配置自动挂起,从而导致设备断开。不幸的是,目标USB棒(或:它们的LED)直接连接到+ 5V和GND,因此无法断电。
Daniel Jour 2013年

3

使用eject命令应该可以工作。

运行eject /dev/<devicename>它应该关闭。


不幸的是,这对我的测试棒不起作用:(
Daniel Jour

1
如果您的USB记忆棒不是CD,软盘,磁带或SCSI驱动器,那就不足为奇了。eject只适用于这些。
Dmitry Grigoryev 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.