Mise hors tension D'un périphérique USB dans un logiciel sous Windows

je voudrais alimenter un périphérique USB par le biais d'un logiciel sur Windows.

je fais du développement sur un petit microcontrôleur USB. Cette puce va revenir à un comportement natif sur un cycle de puissance et permettre un téléchargement de code. Depuis que mon code va planter l'appareil quand les choses vont mal -- le faisant Ignorer toutes les commandes USB -- je dois physiquement débrancher l'appareil du système.

je veux faire du développement à distance, et ne pas avoir à être physiquement présent.

jusqu'à présent, j'ai essayé d'utiliser "devcon" pour désactiver des parties de la pile USB. Alors que cela prend les moyeux dans D3 (devrait être éteint!), il y a encore de la puissance fournie à l'appareil.

y a-t-il des solutions préexistantes ou des trucs SetupAPI qui pourraient aider?

26
demandé sur Peter Mortensen 2009-01-01 00:42:35

5 réponses

vous pourriez faire avec un relais matériel et de le contrôler via un logiciel: http://pintant.cat/2012/05/12/power-off-usb-device / (bien sûr, utilisera 2 ports USB :-) un pour le périphérique, un pour le relais).

3
répondu Carles 2012-05-19 01:57:18

certains hubs USB ont la capacité de couper l'électricité à ses dispositifs en aval.

"Est-il possible de l'alimentation des ports sur un hub USB de Ubuntu?" https://askubuntu.com/questions/149242/is-it-possible-to-power-up-ports-on-a-usb-hub-from-ubuntu Ce qui indique une source de c pour hub-ctrl.c

voir: http://www.gniibe.org/development/ac-power-control-by-USB-hub/index

J'ai testé cela sur Ubuntu avec un Dream-Cheeky USB LED unit, et il semble bien d'éteindre le courant - bien que lorsque allumé à nouveau, l'appareil s'est souvenu (!) LED on/off de l'état ??? - Ce n'est pas ce qui s'est passé quand j'ai débranché et remis en place la clé USB à la LED...

il semble que quelqu'un a regardé la compilation Pour Windows, mais je n'ai pas pu trouver le résultat, désolé.

3
répondu irdroid3 2017-04-13 12:22:45

Puisqu'il est pour le développement/test au lieu de la production, je recommande d'avoir un solid-state_relay comme partie d'un deuxième dispositif et en utilisant cela pour le cycle de l'énergie sur la connexion USB.

3
répondu devstuff 2015-02-13 15:55:33

il y a une solution simple à cela sur Windows si vous achetez ce hub USB externe . Il dispose d'une fonctionnalité non documentée qui fait tourner l'alimentation vers tous les périphériques USB connectés chaque fois que le hub est "activé" dans Windows Device Manager. Vous pouvez le faire manuellement:

  1. Exécuter "Gestionnaire De Périphériques"
  2. Expand "Universal Serial Bus controllers"
  3. propriétés ouvertes pour le Hub USB générique approprié ""
  4. sélectionnez l'onglet "Pilote
  5. cliquez sur le bouton" Désactiver "
  6. , Cliquez sur le bouton "Activer". Le hub désactivera brièvement la sortie de puissance vers les 4 ports USB, puis l'activera à nouveau.

vous pouvez également le faire de manière programmatique à partir de N'importe quelle application Windows qui est en cours d'exécution avec l'administrateur priveledges. Voici un exemple en C# .

j'ai utilisé avec succès cette technique de cycle de l'énergie à des dispositifs USB qui ont été "verrouillé". Il bat certainement physiquement les dispositifs de débranchement, en particulier sur les PC à distance ou sans personnel.

2
répondu Fanblade 2016-06-24 20:31:03

malheureusement, ce N'est pas possible sur les PC en stock.

Les chipsets USB

n'ont pas la capacité de s'éteindre complètement. Il ya quelques signaux que vous pouvez faire dans USB 2.0 ou 3.0 pour demander à l'appareil de passer dans un État de sommeil, mais le port fournira l'alimentation même lorsque le PC est éteint. (C'est ainsi que les appareils comme les iPods et tout ce qui peut encore charger si nécessaire.)

0
répondu Mark Maxham 2008-12-31 22:42:55