我想通过 Windows 上的软件重新启动 USB 设备。
我正在开发一个小型 USB 电源微控制器。该芯片将在电源循环时恢复为本机行为并允许下载代码。由于我的代码会在出现问题时使设备崩溃——使其忽略所有 USB 命令——我必须从系统中物理拔出设备。
我想远程进行开发,而不必亲自到场。
到目前为止,我已经尝试使用“devcon”来禁用部分 USB 堆栈。虽然这会将集线器带入 D3(应该关闭电源!),但仍然为设备供电。
是否有任何预先存在的解决方案或 SetupAPI 技巧可能会有所帮助?
我想通过 Windows 上的软件重新启动 USB 设备。
我正在开发一个小型 USB 电源微控制器。该芯片将在电源循环时恢复为本机行为并允许下载代码。由于我的代码会在出现问题时使设备崩溃——使其忽略所有 USB 命令——我必须从系统中物理拔出设备。
我想远程进行开发,而不必亲自到场。
到目前为止,我已经尝试使用“devcon”来禁用部分 USB 堆栈。虽然这会将集线器带入 D3(应该关闭电源!),但仍然为设备供电。
是否有任何预先存在的解决方案或 SetupAPI 技巧可能会有所帮助?
一些 USB 集线器能够关闭其下游设备的电源。
“是否可以从 Ubuntu 为 USB 集线器上的端口供电?” https://askubuntu.com/questions/149242/is-it-possible-to-power-up-ports-on-a-usb-hub-from-ubuntu 指向 hub-ctrl.c 的一些 c 源
见:http ://www.gniibe.org/development/ac-power-control-by-USB-hub/index
我在 Ubuntu 上使用 Dream-Cheeky USB LED 单元对此进行了测试,它似乎确实关闭了电源 - 尽管再次打开时,设备已经记住(!)它的 LED 开/关状态???- 当我拔下 USB 线并将其重新插入 LED 时,没有发生这种情况......
看起来有人看过为 Windows 编译这个,但我找不到结果,抱歉。
Since it's for development/test instead of production, I'd recommend having a solid-state_relay as part of a second device and using that to cycle the power on the USB connection.
您可以使用硬件继电器并通过软件控制它:http: //pintant.cat/2012/05/12/power-off-usb-device/(当然,将使用 2 个 USB 端口 :-) 一个用于设备,一个用于继电器)。
如果您购买此外部 USB 集线器,则在 Windows 上有一个简单的解决方案。它有一个未记录的功能,只要在 Windows 设备管理器中“启用”集线器,就会为所有连接的 USB 设备循环供电。您可以手动执行此操作:
您还可以通过任何以管理员权限运行的 Windows 应用程序以编程方式执行此操作。这是C# 中的一个示例。
我已经成功地使用这种技术为“锁定”的 USB 设备循环供电。它肯定胜过物理拔出设备,尤其是在远程或无人 PC 上。
Unfortunately, it's not possible on stock PCs.
USB host chipsets do not have the capability to fully power-down. There is some signaling that you can do in USB 2.0 or 3.0 to ask the device to go into a sleep-state, but the port will provide power even when the PC is turned off. (That's so devices like iPods and whatnot can still charge if needed.)