我尝试过的 USB 集线器实际上似乎都不能正确支持 USB 2.0 兼容性所需的“集线器端口电源控制”。
USB 2.0 标准规定:
自供电集线器可能具有电源开关,用于控制下游端口的供电,但这不是必需的。总线供电集线器必须具有电源开关。具有电源开关的集线器可以将电源切换为所有端口(作为一个组/群组),单独切换为每个端口,或者具有一个或多个端口的任意数量的群组。集线器通过 wHubCharacteristics 中的逻辑电源切换模式字段的设置来指示它是否支持电源切换。如果集线器支持每个端口的电源切换,则当收到端口的 SetPortFeature(PORT_POWER) 请求时,端口的电源将打开。当端口处于关闭电源或未配置状态时,端口电源将关闭。如果集线器支持群组电源切换,则当群组中的任何端口收到 SetPortFeature(PORT_POWER) 请求时,群组中所有端口的电源都将打开。除非群组中的所有端口都处于关闭电源或未配置状态,否则群组的电源不会关闭。
和
虽然自供电集线器不需要实现电源切换,但集线器必须支持所有端口的断电状态。此外,即使集线器没有可由 USB 系统软件控制的电源开关,集线器也必须实现 PortPwrCtrlMask(所有位都设置为 1B)。
http://www.makelinux.net/lib/usb/2/USB_2.0_Specification/doc-363
在 Linux 中,大多数芯片组似乎都支持此功能(lusb -v
按字段指定的方式操作wHubCharacteristics
)。但实际尝试使用它时,什么也没有发生,无法关闭任何端口(甚至所有端口)的电源。
我猜这是因为硬件制造商从来没有费心去实际连接这种支持,即使芯片组支持它,导致人们进行如下黑客攻击这
我的问题是:
是否有人有一份正确支持 USB 端口电源控制的硬件列表?
具体来说,最好同时提供型号和批号,因为不同修订版之间的支持可能会有所不同。
相关链接:
http://www.gniibe.org/development/ac-power-control-by-USB-hub/index.html