在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设备供电。 您可以手动执行此操作:

  1. 运行“设备pipe理器”
  2. 展开“通用串行总线控制器”
  3. 打开相应的“通用USB集线器”属性
  4. select“驱动程序”选项卡
  5. 点击“禁用”button
  6. 点击“启用”button。 集线器将暂时禁用所有4个USB端口的电源输出,然后再次启用。

您也可以通过以pipe理员身份运行的任何Windows应用程序以编程方式执行此操作。 这里是C#中的一个例子 。

我已经成功地使用这种技术来为“locking”的USB设备供电。 它确实打败了物理上拔掉的设备,尤其是在远程或无人的电脑上。