uhubctl
スマート USB ハブのポートごとに USB 電源を制御するユーティリティです。スマート ハブは、ポートごとの電源スイッチングを実装するハブとして定義されます。
このコードの元のアイデアは、新部豊氏による Hub-ctrl.c からインスピレーションを受けました: https://www.gniibe.org/development/ac-power-control-by-USB-hub
実際にポートごとの電源切り替えをサポートしているハブはほとんどないことに注意してください。中にはもう製造されていないものもあり、見つけるのが難しい場合があります。
これは、既知の互換性のある USB ハブのリストです。
メーカー | 製品 | ポート | USB | VID:PID | リリース | EOL |
---|---|---|---|---|---|---|
エイサー | BE270U モニター (参照) | 4 | 3.0 | 2109:2811 | 2016年 | |
アマゾンベーシック | HU3641V1 (RPi の問題) | 4 | 3.0 | 2109:2811 | 2013年 | |
アマゾンベーシック | HU3770V1 (RPi の問題) | 7 | 3.0 | 2109:2811 | 2013年 | |
アマゾンベーシック | HU9003V1EBL、HUC9003V1EBL | 7 | 3.1 | 2109:2817 | 2018年 | |
アマゾンベーシック | HU9002V1SBL、HU9002V1EBL、HU9002V1ESL(注) | 10 | 3.1 | 2109:2817 | 2018年 | |
アマゾンベーシック | HUC9002V1SBL、HUC9002V1EBL、HUC9002V1ESL | 10 | 3.1 | 2109:2817 | 2018年 | |
アマゾンベーシック | U3-7HUB (1 つの充電ポートでのみ動作) | 7 | 3.0 | 2109:2813 | 2020年 | |
アンカー | AK-68ANHUB-BV7A-0004(注) | 7 | 3.0 | 2109:0812 | 2014年 | |
りんご | Pro Display XDR MWPE2LL/A (内蔵 USB ハブ) | 4 | 2.0 | 05AC:9139 | 2019年 | |
りんご | Thunderbolt Display 27 インチ (内蔵 USB ハブ) | 6 | 2.0 | 2011年 | 2016年 | |
りんご | テンキー付き USB キーボード (内蔵 USB ハブ) | 3 | 2.0 | 2011年 | ||
エイスース | Z77 Sabertooth マザーボード (オンボード USB ハブ) | 6 | 2.0 | 2012年 | ||
エイスース | Z87-PLUS マザーボード (オンボード USB ハブ) | 4 | 3.0 | 2013年 | 2016年 | |
オーキー | CB-C59 | 4 | 3.0 | 2109:2813 | 2017年 | |
B+B スマートワークス | UHR204 | 4 | 2.0 | 0856:DB00 | 2013年 | |
B+B スマートワークス | USH304 | 4 | 3.0 | 04B4:6506 | 2017年 | 2019年 |
バスラー | 2000036234 | 4 | 3.0 | 0451:8046 | 2016年 | |
ベルキン | F5U101 | 4 | 2.0 | 0451:2046 | 2005年 | 2010年 |
ベルキン | F5U238UKCRL-MOB | 4 | 2.0 | 0409:0059 | 2004年 | 2010年 |
ベンキュー | PD2700U 4K モニター (USB2 モードでのみ動作) | 4 | 3.0 | 05E3:0610 | 2018年 | |
ベンキュー | PD3220U | 4 | 3.1 | 05E3:0610 | 2019年 | |
バイトテック | BT-UH340(警告) | 4 | 3.0 | 2109:8110 | 2010年 | |
センテック | CT-USB4HUB リトライハブ | 4 | 3.0 | 0424:2744 | 2017年 | |
サーキットコ | Beagleboard-xM (内蔵 USB ハブ) | 4 | 2.0 | 0424:9514 | 2010年 | |
クラブ3D | CSV-3242HD デュアル ディスプレイ ドッキング ステーション | 4 | 3.0 | 2109:2811 | 2015年 | |
クールギア | USBG-12U2ML | 12 | 2.0 | 05e3:0607 | 2015年 | |
サイプレス | CY4608 HX2VL 開発キット (注) | 4 | 2.0 | 04B4:6570 | 2012年 | |
Dリンク | DUB-H4 Rev D、E (ブラック)。注: Rev A、C、F はサポートされていません | 4 | 2.0 | 05E3:0608 | 2012年 | |
Dリンク | DUB-H7 Rev A(シルバー) | 7 | 2.0 | 2001:F103 | 2005年 | 2010年 |
Dリンク | DUB-H7 rev D、E (ブラック)。 Rev B、C、F、G はサポートされていません | 7 | 2.0 | 05E3:0608 | 2012年 | |
デル | P2416D 24 インチ QHD モニター (注) | 4 | 2.0 | 2017年 | ||
デル | S2719DGF 27 インチ WQHD ゲーミング モニター | 5 | 3.0 | 0424:5734 | 2018年 | |
デル | UltraSharp 1704FPT 17 インチ LCD モニター | 4 | 2.0 | 0424:A700 | 2005年 | 2015年 |
デル | UltraSharp U2415 24 インチ LCD モニター | 5 | 3.0 | 2014年 | ||
デル | UltraSharp U3419W 34 インチ曲面モニター | 6 | 3.0 | 2020年 | ||
デル | Wyse 3040 (-f が必要) | 6 | 3.0 | 2017年 | ||
デロック | 62537 | 4 | 3.0 | 2017年 | 2021年 | |
デロック | 87445 (注) | 4 | 2.0 | 05E3:0608 | 2009年 | 2013年 |
エレコム | U2H-G4S | 4 | 2.0 | 2006年 | 2011年 | |
ギガバイト | G27Q モニター (「 | 4 | 3.0 | 2109:0817 | 2020年 | |
グローバルスケール | エスプレッソビン SBUD102 V5 | 1 | 3.0 | 1D6B:0003 | 2017年 | |
ハードカーネル | ODROID-C4(注) | 4 | 3.0 | 2020年 | ||
ホーキングテクノロジー | UH214 | 4 | 2.0 | 2003年 | 2008年 | |
ヒューレット・パッカード | USB-C ドック G5 5TW10AA | 5 | 3.0 | 03F0:076B | 2019年 | |
ヒューレット・パッカード | P5Q58UT | 3 | 3.0 | 2019年 | ||
イナテック | HB2025A (USB2のみ) | 4 | 3.1 | 2109:2822 | 2021年 | |
オイオイ | U3H415E1 | 4 | 3.0 | 2012年 | ||
j5create | JUH377(注) | 7 | 3.0 | 2016年 | ||
j5create | JUH470(注) | 3 | 3.0 | 05E3:0610 | 2014年 | |
ジュースシステム | 6HUB-01 | 7 | 3.0 | 0BDA:0411 | 2014年 | 2018年 |
クンバス社 | RevPi コネクト (+) / S / SE | 2 | 2.0 | 0424:9514 | 2018年 | |
クンバス社 | RevPi コネクト 4 | 2 | 3.0 | 2022年 | ||
クンバス社 | RevPiコア3/S/SE | 2 | 2.0 | 0424:9514 | 2017年 | |
LGエレクトロニクス | 27MD5KL-Bモニター | 4 | 3.0 | 043E:9A60 | 2019年 | |
LGエレクトロニクス | 27GL850-Bモニター | 4 | 3.0 | 0451:8142 | 2019年 | |
LGエレクトロニクス | 27UK850-Wモニター | 2 | 3.0 | 2018年 | ||
LGエレクトロニクス | 27UN83A-Wモニター | 2 | 3.0 | 0451:8142 | 2020年 | |
LGエレクトロニクス | 38WK95C-Wモニター | 4 | 3.0 | 0451:8142 | 2018年 | |
レノボ | ThinkPad ウルトラ ドッキング ステーション (40A20090EU) | 6 | 2.0 | 17EF:100F | 2015年 | |
レノボ | ThinkPad ウルトラ ドッキング ステーション (40AJ0135EU) | 7 | 3.1 | 17EF:3070 | 2018年 | |
レノボ | ThinkPad X200 ウルトラベース 42X4963 | 3 | 2.0 | 17EF:1005 | 2008年 | 2011年 |
レノボ | ThinkPad X6 ウルトラベース 42W3107 | 4 | 2.0 | 17EF:1000 | 2006年 | 2009年 |
レノボ | ThinkPlus 4-in-1 USB-C ハブ 4X90W86497 | 3 | 3.0 | 2021年 | ||
レノボ | ThinkVision T24i-10 モニター | 4 | 2.0 | 17EF:0610 | 2018年 | |
レノボ | USB-C - 4 ポート USB-A ハブ | 4 | 2.0 | 17EF:103A | 2020年 | |
リンディ | USBシリアルコンバータ4ポート | 4 | 1.1 | 058F:9254 | 2008年 | |
リンクシス | USB2HUB4(注) | 4 | 2.0 | 2004年 | 2010年 | |
マップリン | A08CQ | 7 | 2.0 | 0409:0059 | 2008年 | 2011年 |
メタドット | ダス キーボード 4 | 2 | 3.0 | 2014年 | ||
マイクロチップ | EVB9512 | 2 | 2.0 | 2009年 | ||
マイクロチップ | EVB-USB2517 | 7 | 2.0 | 2008年 | ||
マイクロチップ | EVB-USB2534BC | 4 | 2.0 | 2013年 | ||
マイクロチップ | EVB-USB5807 | 7 | 3.0 | 2016年 | ||
お灸 | うぽーと-407 | 7 | 2.0 | 110A:0407 | 2009年 | |
エヌビディア | Jetson Nano B01(詳細) | 4 | 3.0 | 2019年 | ||
エヌビディア | Jetson Xavier NX (詳細) | 4 | 3.0 | 2020年 | ||
フィジェット | HUB0003_0 | 7 | 2.0 | 1A40:0201 | 2017年 | |
フィリップス | 346B1C ウルトラワイド 34 インチ曲面モニター | 4 | 3.0 | 05E3:0610 | 2019年 | |
プラグ可能 | USB3-HUB7BC | 7 | 3.0 | 2109:0813 | 2015年 | |
プラグ可能 | USB3-HUB7C (2 つの充電ポートでのみ機能) | 7 | 3.0 | 2109:0813 | 2015年 | |
プラグ可能 | USBC-HUB7BC (右端ではなく、6/7 ポートで動作します) | 7 | 3.0 | 2109:0817 | 2021年 | |
プラグ可能 | USB3-HUB10-C2 (2 つの充電ポートでのみ機能) | 10 | 3.0 | 2014年 | ||
ポート株式会社 | NWUSB01 | 4 | 1.1 | 0451:1446 | 1999年 | 2003年 |
ラズベリーパイ | B+、2B、3B (下記参照) | 4 | 2.0 | 2011年 | ||
ラズベリーパイ | 3B+ (下記を参照) | 4 | 2.0 | 0424:2514 | 2018年 | |
ラズベリーパイ | 4B (下記参照) | 4 | 3.0 | 2109:3431 | 2019年 | |
ラズベリーパイ | 5 (下記参照) | 4 | 3.0 | 1d6b:0002 | 2023年 | |
ルネサス | uPD720202 PCIe USB 3.0 ホスト コントローラー | 2 | 3.0 | 2013年 | ||
ローズウィル | RHUB-210 | 4 | 2.0 | 0409:005A | 2011年 | 2014年 |
ロゾンウェイ | RSH-518C(注) | 7 | 3.0 | 2109:0817 | 2021年 | |
ロゾンウェイ | RSH-A10(参照) | 10 | 3.0 | 0bda:0411 | 2020年 | |
ロゾンウェイ | RSH-A13(警告) | 13 | 3.1 | 2109:2822 | 2021年 | |
ロゾンウェイ | RSH-A16(注、警告) | 16 | 3.0 | 0bda:0411 | 2020年 | |
ロゾンウェイ | RSH-A104(USB2のみ) | 4 | 3.1 | 2109:2822 | 2022年 | |
ロゾンウェイ | RSH-A107(別名育愛A107-5) | 7 | 3.1 | 0bda:5411 | 2022年 | |
ロゾンウェイ | RSH-ST07C(4台のみ) | 7 | 3.0 | 2109:2822 | 2023年 | |
サンワサプライ | USB-HUB14GPH | 4 | 1.1 | 2001年 | 2003年 | |
シーゲイト | バックアッププラスハブ STEL8000100 | 2 | 3.0 | 0BC2:AB44 | 2016年 | |
シードスタジオ | リターミナル CM4104032 | 2 | 2.0 | 0424:2514 | 2021年 | |
スターテック | DKT30CSDHPD3 USB-C トラベル ドック | 3 | 3.0 | 2109:2817 | 2018年 | |
スターテック | HB30A4AIB(警告) | 4 | 3.0 | 2109:2817 | 2018年 | |
サニックス | SHB4200MA | 4 | 2.0 | 0409:0058 | 2006年 | 2009年 |
システムトーク | すごいUSB2-HUB4X | 4 | 2.0 | 2007年 | ||
ターガス | PA095UZ | 2 | 2.0 | 2004年 | ||
ターガス | PAUH212/PAUH212U | 7 | 2.0 | 2004年 | 2009年 | |
テキサス・インスツルメンツ | TUSB4041PAPEVM | 4 | 2.1 | 0451:8142 | 2015年 | |
ユーギア | MEGA4 (Raspberry Pi 4B用) | 4 | 3.0 | 2109:0817 | 2021年 | |
仮想ここ | USB3 4ポートハブ(注) | 4 | 3.0 | 2024年 |
この表は決して完成したものではありません。ハブがuhubctl
で動作するが、上記にリストされていない場合は、https://github.com/mvp/uhubctl/issues で新しい問題を開いて報告してください。サポートされている表に追加できます。レポートでは、正確な製品モデルを提供し、 uhubctl
からの出力を追加し、以下の FAQ で説明されているように VBUS オフ サポートをテストしてください。
最近のマザーボードの多くには、この機能をサポートするルート ハブが組み込まれていることに注意してください。外部ハブを購入する必要さえない場合もあります。
USB 3.0 ハブを USB3 アップストリーム ポートに接続している場合、USB2 と USB3 という 2 つの独立した仮想ハブとして検出され、USB デバイスは、その機能と接続速度に応じて USB2 または USB3 仮想ハブに接続されます。このようなハブの電源を制御するには、電源のオフ/オンの変更を有効にするには、USB2 と USB3 の両方の仮想ハブで電源をオフ/オンにする必要があります。 uhubctl
これを自動的に実行しようとします (オプション-e
でこの動作を無効にしない限り)。
残念ながら、ほとんどのハブはデータ USB 接続を切断しますが、一部のハブはポートへの VBUS を切断しない場合があります。つまり、接続されている電話は、 uhubctl
によって電源がオフになっているポートから引き続き充電される可能性があります。
このユーティリティは、Linux (Ubuntu/Debian、Redhat/Fedora/CentOS、Arch Linux、Gentoo、openSUSE、Buildroot)、FreeBSD、NetBSD、SunOS、MacOS 上でコンパイルして動作することがテストされています。
uhubctl
Windows 上でコンパイルされますが、 libusb
winusb.sys
ドライバーを使用しているため、Windows では USB 電源の切り替えが機能しません。Microsoft によれば、このドライバーは必要な USB 制御要求をサポートしていません。この問題は、 libusb
Windows 上で別のドライバーのサポートを開始すると修正される可能性があります。
pkg-config
インストールすることを強くお勧めします (多くのプラットフォームではデフォルトで提供されています)。
まず、ライブラリ libusb-1.0 (バージョン 1.0.12 以降、1.0.16 以降を推奨) をインストールする必要があります。
sudo apt-get install libusb-1.0-0-dev
sudo yum install libusb1-devel
sudo zypper install libusb-1_0-devel
brew install libusb
、またはsudo port install libusb-devel
sudo pkgin install libusb1 gmake pkg-config
uhubctl ソースを取得してコンパイルするには、次のようにします。
git clone https://github.com/mvp/uhubctl
cd uhubctl
make
これにより、 uhubctl
バイナリが生成されるはずです。以下を使用して、システムに/usr/sbin/uhubctl
としてインストールできます。
sudo make install
一部の OS (FreeBSD/NetBSD など) では、ビルドの代わりにgmake
使用する必要があることに注意してください。
また、MacOS では、Homebrew タップを使用して、必要な依存関係をすべて含むuhubctl
ワンショットでインストールできます。
brew tap mvp/uhubctl https://github.com/mvp/uhubctl
brew install uhubctl
master ブランチからビルド/インストールするには、 --HEAD
を使用します。
brew install uhubctl --HEAD
️ Linux では、sudo
使用するか、以下の説明に従って USB アクセス許可を設定します。
サポートされているすべてのハブをリストするには:
uhubctl
次のように USB ポートの電源を制御できます。
uhubctl -a off -p 2
これは、デフォルトのスマート ハブで動作し、ポート 2 ( -p 2
) の電源をオフにする ( -a off
または-a 0
) ことを意味します。サポートされているアクションは、 off
/ on
/ cycle
/ toggle
(または0
/ 1
/ 2
/ 3
) です。 cycle
とは、電源をオフにし、少し遅れて ( -d
で構成可能) 待ってから再びオンにすることを意味します。ポートはカンマ区切りのリストにすることができ、範囲には-
を使用できます (例: 2
、または2,4
、または2-5
、または1-2,5-8
)。
️ 内蔵 USB ポートをオフにすると、キーボードまたはマウスの動作が切断される可能性があるため、どのポートをオフにするか注意してください。
複数のスマート USB ハブが接続されている場合は、 -l
(場所) パラメーターを使用して制御する特定のハブを選択する必要があります。ハブの場所を見つけるには、パラメータを指定せずにuhubctl
実行するだけです。ハブの場所はbx.yz
のようになります。 b
は USB バス番号、 x
、 y
、 z
... は、特定の USB バスのルート ハブから始まるチェーン内のすべてのハブのポート番号です。このアドレスは半安定です。USB デバイスを同じ物理 USB ポートに抜き差ししても (または、電源をオフ/オンにして) 変更されません (この方法は Linux カーネルでも使用されます)。
Linux では、 udev
USB 権限を設定する必要があります (それ以外の場合は、 sudo uhubctl
使用して root として実行する必要があります)。
Linux カーネル 6.0 以降では、USB ハブ ポートをオンまたはオフにするための標準インターフェイスがあり、 uhubctl
( libusb
の代わりに) それを使用してポートのステータスを設定しようとします。このため、6.0 以降のカーネルには追加のルールが存在します。古いカーネル バージョンを実行しているシステムにこれらのルールを設定しても害はありません。
USB アクセス許可を修正するには、まずsudo uhubctl
実行し、制御する必要があるハブのすべてのvid:pid
メモします。次に、以下のような udev ルールをファイル/etc/udev/rules.d/52-usb.rules
に追加します ( 2001
ハブ ベンダー ID に置き換えるか、 ATTR{idVendor}
フィルターを完全に削除して USB ハブ アクセスを許可します)。
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2001"
# Linux 6.0 or later (its ok to have this block present for older Linux kernels):
SUBSYSTEM=="usb", DRIVER=="usb",
RUN="/bin/sh -c "chmod -f 666 $sys$devpath/*-port*/disable || true""
USB3 ハブの場合、一部のハブは同じチップの USB2 コンポーネントと USB3 コンポーネントで異なるベンダー ID を使用しており、uhubctl を適切に動作させるには両方のアクセス許可が必要であることに注意してください。たとえば、Raspberry Pi 4B の場合、次の 2 行を追加する (または idVendor フィルターを削除する) 必要があります。
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2109"
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="1d6b"
ワイドオープンモード0666
が気に入らない場合は、次のようにグループごとにアクセスを制限できます。
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0664", GROUP="dialout"
# Linux 6.0 or later (its ok to have this block present for older Linux kernels):
SUBSYSTEM=="usb", DRIVER=="usb",
RUN+="/bin/sh -c "chown -f root:dialout $sys$devpath/*-port*/disable || true""
RUN+="/bin/sh -c "chmod -f 660 $sys$devpath/*-port*/disable || true""
次に、許可されたユーザーをdialout
グループに追加します。
sudo usermod -a -G dialout $USER
udev
ルールの変更を有効にするには、再起動するか、次のコマンドを実行します。
sudo udevadm trigger --attr-match=subsystem=usb
便宜上、すぐに使用できる udev ルールがここに提供されています。
USB 2.0 仕様によれば、USB ハブは、電源スイッチングなし、連動 (すべてのポートを一度に) 電源スイッチング、またはポートごと (個別) 電源スイッチングをアドバタイズできます。デフォルトでは、 uhubctl
ポートごとの電源切り替えをサポートする USB ハブのみを検出することに注意してください (ただし、オプション-f
を使用して、サポートされていないハブでの動作を強制的に試行することができます)。 sudo lsusb -v
使用すると、ハードウェアがサポートしている電源切り替えの種類を確認できます。
電源切り替えなし:
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
連動電源切り替え:
wHubCharacteristic 0x0008
Ganged power switching
Per-port overcurrent protection
ポートごとの電源切り替え:
wHubCharacteristic 0x0009
Per-port power switching
Per-port overcurrent protection
uhubctl
でサポートされているかどうかを確認するにはどうすればよいですか?sudo uhubctl
実行します。お使いのハブがリストにない場合、そのハブはサポートされていません。あるいは、 sudo lsusb -v
実行して、 Per-port power switching
を確認することもできます。lsusb 出力にそのような行が表示されない場合、ハブはサポートされていません。uhubctl
使用してそのポートの電源をオフにし、電話機の充電が停止するか、USB ライトが点灯しなくなるか、USB ファンの回転が停止するかを確認してください。 VBUS がオフにならない場合、ハブの製造元には実際に電源をオフにする回路が組み込まれていません。このようなハブは USB データ接続を切断することはできますが、電源をオフにすることはできないため、このデバイスはサポートされているとは見なされません。USB ポートの電源をオフにした後、udev はイベントを取得しないため、デバイス ファイルが保持されます。ただし、デバイス ファイルにアクセスしようとすると IO エラーが発生します。
これは Linux カーネルの問題であり、Linux カーネル 6.0 以降を搭載したシステムでは uhubctl 2.5.0 以降で修正されています。
まだ Linux 5.x 以前を使用している場合は、この問題に対して次の回避策を使用できます。
sudo uhubctl -a off -l ${location} -p ${port}
sudo udevadm trigger --action=remove /sys/bus/usb/devices/${location}.${port}/
デバイス ファイルは udev によって削除されますが、USB デバイスはlsusb
に引き続き表示されます。パス/sys/bus/usb/devices/${location}.${port}
は、そのポートでデバイスが検出された場合にのみ存在することに注意してください。電源を再度オンにすると、デバイスは適切に再列挙されます ( udevadm
再度呼び出す必要はありません)。
カーネル内の一部のデバイス ドライバーは、USB デバイスがオフになると驚いて、自動的に電源を入れ直そうとします。
これは Linux カーネルの問題であり、Linux カーネル 6.0 以降を搭載したシステムでは uhubctl 2.5.0 以降で修正されています。
まだ Linux 5.x 以前を使用している場合:
これを修正するには、オプション-r N
使用できます。N は 10 ~ 1000 の数値です。uhubctl uhubctl
電源を何度も続けてオフにしようとするため、それを抑制する必要があります。
uhubctl
で電源をオフにする前に、問題のデバイスの USB 認証を無効にすると、次のことが解決します。
echo 0 > sudo tee /sys/bus/usb/devices/${location}.${port}/authorized
デバイスが USB 大容量ストレージの場合は、 uhubctl
呼び出す前にudisksctl
を呼び出すことも効果的です。
sudo udisksctl power-off --block-device /dev/disk/...`
sudo uhubctl -a off ...
多くのハブ メーカーは、基本的な 4 ポート USB チップを使用して USB ハブを構築しています。たとえば、7 ポート ハブを作成するには、2 つの 4 ポート ハブをデイジーチェーン接続します。デイジーチェーン接続により 1 つのポートが失われるため、4+4-1=7 ポート ハブになります。同様に、10 ポート ハブは、デイジーチェーン接続された 3 つの 4 ポート ハブとして構築でき、4+4+4-2=10 個の使用可能なポートが得られます。
内部ハブをデイジーチェーン接続するために使用されるポートの電源状態を変更しないでください。そうすると、ハブの内部回路が混乱し、予期しない動作が発生する可能性があります。
これは、Raspberry Pi ハードウェア設計の制限です。回避策として、上記のサポートされているリストから任意の外部 USB ハブを購入し、Raspberry Pi の任意の USB ポートに接続して、ポートの電源を個別に制御できます。また、UUGear MEGA4 など、Raspberry Pi 専用に設計されたハブもサポートされています。
参考までに、サポートされている Raspberry Pi モデルには次の内部 USB トポロジがあります。
単一のハブ1-1
、ポート 2 ~ 5 が連動し、すべてポート2
によって制御されます。
uhubctl -l 1-1 -p 2 -a 0
ポート3
、 4
、 5
を制御しようとしても何も起こりません。ポート1
イーサネット + WiFi の電力を制御します。
メイン ハブ1-1
、4 つのポートすべてが連動し、すべてポート2
によって制御されます (セカンダリ ハブ ポートもオフになります)。ポート1
以下のハブ1-1.1
に接続し、ポート2
と3
外部に配線され、ポート4
配線されません。
uhubctl -l 1-1 -p 2 -a 0
セカンダリ ハブ1-1.1
(メインにデイジーチェーン接続): 3 つのポート。ポート1
はイーサネット + WiFi に使用され、ポート2
と3
外部に配線されます。
️ VL805 ファームウェアが00137ad
より古い場合 (sudo rpi-eeprom-update
で確認してください)、RPi 4B で電源切り替えが機能するようにファームウェアを更新する必要があります。
USB2 ハブ1
、1 ポート、以下のハブ1-1
のみを接続します。
USB2 ハブ1-1
ポート連動、以下の USB3 ハブ2
へのデュアル:
uhubctl -l 1-1 -a 0
USB3 ハブ2
ポート連動、上記の USB2 ハブ1-1
へのデュアル:
uhubctl -l 2 -a 0
USB2ハブ3
ポート、OTGコントローラー。電源切り替えはサポートされていません。
Raspberry Pi 5 には、USB2 ポートが 2 つと USB3 ポートが 2 つ (合計 4 つ) あります。これらのポートは、非常に奇妙な構成で 4 つの異なる USB ハブ1
、 2
、 3
、 4
に接続されています (ただし、OS とハードウェアのリビジョンによっては、対象となるハブが2
、 3
、 4
、 5
になる可能性があります)。 USB3 デバイスが青いソケットに接続されている場合、USB3 ハブ2
または4
で検出されます。 USB2 デバイスが任意のソケットに接続されている場合、または USB3 デバイスが黒いソケットに接続されている場合、USB2 ハブ1
または3
で検出されます。 USB2/USB3 接続タイプに関係なく、青いソケットは常にポート1
であり、黒いソケットは常にポート2
です。
4 つの USB オンボード ハブはそれぞれ、ポートごとの電源切り替えをサポートしていると宣伝していますが、これは真実ではありません。実際には、Raspberry Pi 5 は 4 つの異なる論理 USB ハブに属しているにもかかわらず、4 つのポートすべてが 1 つのグループにまとめられています。
VBUS 電源をオフにするには、次の方法ですべてのオンボード ハブとポートにわたって VBUS 電源を無効にする必要があります。
uhubctl -l 2 -a 0
uhubctl -l 4 -a 0
オンに戻すには:
uhubctl -l 2 -a 1
uhubctl -l 4 -a 1
VBUS の電源がオフになるのは、すべてのポートがオフの場合のみであることに注意してください。いずれかの 1 つのポートを有効にすると、4 つのポートすべてで VBUS が有効になります。
プロジェクト | 説明 |
---|---|
モールス信号USBライト | USBライトでモールス信号のメッセージをフラッシュ |
ウェブカメラUSBライト | Webカメラのオン/オフに合わせてLEDをオン/オフします |
シネマ ライトボックス | iOSホームアプリからシネマライトボックスをオン/オフにする |
ビルドステータスライト | 10 分以内にビルド ステータス ライトを作成します |
ビルデンライト | GitLab/GitHub プロジェクトのビルド ステータスが緑/赤のライトで表示される |
気象観測所 | ウェザーステーションがフリーズした場合にリセットする |
シスモQMOD | 必要に応じてセルラーモデムをリセットする |
スモッグセンサー | Raspberry Piベースのスモッグセンサーの電源リセット |
恐ろしいクラスター | 必要に応じて Raspberry Pi クラスター ノードの電源をオン/オフします |
理想的なミュージックサーバー | オーディオ品質を向上させるために未使用の USB ポートをオフにします |
ファントムロードのない USB ドライブ | 電力を節約するために必要な場合にのみ USB ドライブに電力を供給します |
USBドライブのデータ復旧 | 故障したUSBハードドライブからデータを回復する |
3Dプリンターへの電源制御 | USB電源制御用のOctoPrint Webプラグイン |
Raspberry Pi用USBファン | USBファンを制御してRaspberry Piの過熱を防ぎます |
Raspberry Pi 再起動ルーター | インターネットが機能していない場合はルーターを自動的に再起動します |
USBランプを音声で制御 | Siri と Raspberry Pi を使用した USB ランプの音声制御 |
制御USB LEDストリップ | USB 電源による LED ライト ストリップの制御 |
Raspberry Piでビールを醸造する | Raspberry Piを使った自動ビール醸造システム |
ウェブカメラのオンエアサイン | ウェブカメラの使用中に標識を自動的に点灯します |
自分でやる PPPS | uhubctl をサポートするには、USB ハブにワイヤをはんだ付けします。 |
オープンソースのPPPSハブ | uhubctl 互換ハブのオープンソース ハードウェア プロジェクト |
uhubctl の Python ラッパー | Pythonでuhubctlを使用するためのモジュール |
ラボグリッド | ハードウェア上の組み込み Linux をテストするためのフレームワーク |
著作権 (C) 2009-2024 ヴァディム・ミハイロフ
このファイルは、GNU General Public License バージョン 2 の利用規約に基づいて配布できます。