在Windows上使用软件closuresUSB设备
我想通过Windows上的软件重新启动USB设备。
我正在开发一个小型的USB电源微控制器。 该芯片将恢复到电源周期的本地行为,并允许代码下载。 由于我的代码会在出现问题时使设备崩溃 – 使其忽略所有USB命令 – 我必须从系统中物理拔下设备。
我想远程开发,而不是必须身体力行。
到目前为止,我已经尝试使用“devcon”来禁用部分USB堆栈。 虽然这将集线器连接到D3(应断电!),但仍有电源供应给设备。
是否有任何先前存在的解决scheme或SetupAPI技巧可能有所帮助?
一些USB集线器能够closures其下游设备的电源。
“是否可以通过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 LEDunit testing了这个function,而且似乎确实closures了电源 – 虽然当再次打开时,设备已经记住(!)LED的开/关状态了。 – 当拔下USB线到LED时,并没有发生这种情况。
它看起来像有人已经看过编译这个Windows,但我找不到结果,对不起。
由于它是用于开发/testing而不是生产,因此build议在第二个设备中使用固态重新布局 ,并使用它来循环使用USB连接。
你可以做一个硬件中继,并通过软件来控制它: http : //pintant.cat/2012/05/12/power-off-usb-device/ (当然,将使用2个USB端口:-)一设备,一个为继电器)。
不幸的是,这在个人电脑上是不可能的。
USB主机芯片组无法完全closures电源。 有一些信号表明,你可以在USB 2.0或3.0中使用,让设备进入睡眠状态,但是即使PCclosures,端口也会供电。 (就像iPod那样的设备,如果需要,还可以充电。)
如果您购买这个外部USB集线器,在Windows上有一个简单的解决scheme。 它具有未公开的function,只要集线器在Windows设备pipe理器中“启用”,就会为所有连接的USB设备供电。 您可以手动执行此操作:
- 运行“设备pipe理器”
- 展开“通用串行总线控制器”
- 打开相应的“通用USB集线器”属性
- select“驱动程序”选项卡
- 点击“禁用”button
- 点击“启用”button。 集线器将暂时禁用所有4个USB端口的电源输出,然后再次启用。
您也可以通过以pipe理员身份运行的任何Windows应用程序以编程方式执行此操作。 这里是C#中的一个例子 。
我已经成功地使用这种技术来为“locking”的USB设备供电。 它确实打败了物理上拔掉的设备,尤其是在远程或无人的电脑上。