31

Windows でソフトウェアを使用して USB デバイスの電源を入れ直したいと考えています。

小型の USB 電源マイクロコントローラの開発を行っています。このチップは、電源を入れ直すとネイティブの動作に戻り、コードをダウンロードできるようになります。私のコードは、問題が発生したときにデバイスをクラッシュさせ、すべての USB コマンドを無視させるため、デバイスをシステムから物理的に取り外す必要があります。

リモートで開発を行いたいので、物理的に存在する必要はありません。

これまでのところ、「devcon」を使用して USB スタックの一部を無効にしようとしました。これにより、ハブが D3 になりますが (電源をオフにする必要があります)、デバイスにはまだ電力が供給されています。

役立つ既存のソリューションや SetupAPI トリックはありますか?

4

5 に答える 5

4

一部の 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

Dream-Cheeky USB LED ユニットを使用して Ubuntu でこれをテストしたところ、電源がオフになったように見えましたが、再度オンにすると、デバイスは LED のオン/オフ状態を記憶していました (!) ??? - これは、USB リードを LED に接続し直したときに発生しませんでした...

誰かがこれを Windows 用にコンパイルしようとしているようですが、結果が見つかりませんでした。申し訳ありません。

于 2014-02-06T16:05:56.137 に答える
3

本番用ではなく開発/テスト用であるため、2 番目のデバイスの一部としてsolid-state_relayを使用し、それを使用して USB 接続の電源を入れ直すことをお勧めします。

于 2008-12-31T23:02:00.600 に答える
3

ハードウェア リレーを使用して、ソフトウェア経由で制御することもできます: http://pintant.cat/2012/05/12/power-off-usb-device/ (もちろん、2 つの USB ポートを使用します:-) 1 つはデバイス、リレー用の 1 つ)。

于 2012-05-19T01:57:18.247 に答える
2

この外付け USB ハブを購入すれば、Windows でこれを解決する簡単な方法があります。ハブが Windows デバイス マネージャーで「有効」になっているときはいつでも、接続されているすべての USB デバイスの電源を入れ直す、文書化されていない機能があります。これは手動で行うことができます:

  1. 「デバイスマネージャー」を実行
  2. 「ユニバーサル シリアル バス コントローラー」を展開します。
  3. 適切な「汎用 USB ハブ」のプロパティを開きます。
  4. 「ドライバー」タブを選択します
  5. 「無効にする」ボタンをクリックします
  6. 「有効にする」ボタンをクリックします。ハブは、4 つの USB ポートすべてへの電力出力を一時的に無効にしてから、再び有効にします。

これは、管理者特権で実行されている任意の Windows アプリケーションからプログラムで行うこともできます。C# の例を次に示します。

この手法を使用して、「ロックアップ」された USB デバイスの電源を入れ直すことに成功しました。特にリモート PC または無人 PC では、デバイスのプラグを物理的に抜くよりも優れています。

于 2016-06-24T20:31:03.247 に答える
1

残念ながら、ストック PC では使用できません。

USB ホスト チップセットには、完全にパワーダウンする機能がありません。USB 2.0 または 3.0 でデバイスをスリープ状態にするように要求できる信号がいくつかありますが、PC の電源がオフの場合でも、ポートは電力を供給します。(これは、iPod などのデバイスを必要に応じて充電できるようにするためです。)

于 2008-12-31T22:42:55.867 に答える