Windowsのソフトウェアを使用してUSBデバイスの電源を入れ直します。
小型のUSB電源マイクロコントローラーで開発を行っています。このチップは、電源サイクル時にネイティブの動作に戻り、コードのダウンロードを許可します。私のコードは、問題が発生するとデバイスをクラッシュさせます-すべてのUSBコマンドを無視するため-デバイスをシステムから物理的に外す必要があります。
私はリモートで開発を行いたいのですが、物理的に立ち会う必要はありません。
これまでのところ、「devcon」を使用してUSBスタックの一部を無効にしてみました。これによりハブがD3に接続されますが(電源をオフにする必要があります!)、デバイスにはまだ電力が供給されています。
役立つ可能性のある既存のソリューションまたはSetupAPIトリックはありますか?
製品版ではなく開発/テスト用なので、2番目のデバイスの一部として solid-state_relay を使用し、それを使用してUSB接続の電源を入れ直すことをお勧めします。
一部のUSBハブには、ダウンストリームデバイスの電源をオフにする機能があります。
「UbuntuからUSBハブのポートに電源を投入することは可能ですか?」 https://askubuntu.com/questions/149242/is-it-possible-to-power-up-ports-on-a-usb-hub-from-ubunt あるCソースを指しますhub-ctrl.c
参照: http://www.gniibe.org/development/ac-power-control-by-USB-hub/index
私はこれをUbuntuでDream-Cheeky USB LEDユニットを使用してテストしましたが、電源がオフになっているように見えました。 -USBリード線をLEDから取り外して再度差し込んだとき、これは起こりませんでした...
誰かがこれをWindows用にコンパイルしようとしているようですが、結果が見つかりませんでした。
ハードウェアリレーを使用して、ソフトウェアで制御できます: http://pintant.cat/2012/05/12/power-off-usb-device/ (もちろん、2 USBを使用しますポート:-) 1つはデバイス用、もう1つはリレー用です。
この外部USBハブ を購入すると、Windowsでこれを解決する簡単な方法があります。 Windowsデバイスマネージャーでハブが「有効」になっている場合は常に、接続されているすべてのUSBデバイスの電源を入れ直す、文書化されていない機能があります。これは手動で行うことができます:
これは、管理者特権で実行されているWindowsアプリケーションからプログラムで行うこともできます。これが C#の例 です。
私はこのテクニックを使用して、「ロック」されたUSBデバイスの電源を入れ直すことに成功しました。特にリモートPCまたは無人PCでは、物理的にプラグを抜くデバイスに勝ります。
残念ながら、それは在庫のPCでは不可能です。
USBホストチップセットには、完全にパワーダウンする機能がありません。 USB 2.0または3.0でデバイスにスリープ状態に移行するように要求できる信号がいくつかありますが、PCの電源がオフの場合でもポートは電力を供給します。 (これはiPodのようなデバイスであり、必要な場合でも充電できません。)