uhubctl
是用于控制智能 USB 集线器上每个端口的 USB 电源的实用程序。智能集线器被定义为实现每端口电源切换的集线器。
此代码的最初想法受到 Niibe Yutaka 的 hub-ctrl.c 的启发:https://www.gniibe.org/development/ac-power-control-by-USB-hub
请注意,很少有集线器实际上支持每端口电源切换。其中一些已不再生产并且很难找到。
这是已知兼容 USB 集线器的列表:
制造商 | 产品 | 港口 | USB | 视频:PID | 发布 | 停产 |
---|---|---|---|---|---|---|
宏碁 | 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 SmartWorx | 超高热204 | 4 | 2.0 | 0856:DB00 | 2013年 | |
B+B SmartWorx | 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-Link | DUB-H4 版本 D、E(黑色)。注意:不支持版本 A、C、F | 4 | 2.0 | 05E3:0608 | 2012年 | |
D-Link | DUB-H7 版本 A(银色) | 7 | 2.0 | 2001:F103 | 2005年 | 2010年 |
D-Link | DUB-H7 版本 D、E(黑色)。不支持版本 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 英寸液晶显示器 | 4 | 2.0 | 0424:A700 | 2005年 | 2015年 |
戴尔 | UltraSharp U2415 24 英寸液晶显示器 | 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年 | |
全球规模 | ESPRESSObin SBUD102 V5 | 1 | 3.0 | 1D6B:0003 | 2017年 | |
硬核 | ODROID-C4(注) | 4 | 3.0 | 2020年 | ||
霍金科技 | 呃214 | 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年 | |
IOI | U3H415E1 | 4 | 3.0 | 2012年 | ||
j5创建 | JUH377(注) | 7 | 3.0 | 2016年 | ||
j5创建 | 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 Ultra 扩展坞 (40A20090EU) | 6 | 2.0 | 17EF:100F | 2015年 | |
联想 | ThinkPad Ultra 扩展坞 (40AJ0135EU) | 7 | 3.1 | 17EF:3070 | 2018年 | |
联想 | ThinkPad X200 Ultrabase 42X4963 | 3 | 2.0 | 17EF:1005 | 2008年 | 2011年 |
联想 | ThinkPad X6 Ultrabase 42W3107 | 4 | 2.0 | 17EF:1000 | 2006年 | 2009年 |
联想 | ThinkPlus 4 合 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年 | ||
微芯片 | 评估板-USB2517 | 7 | 2.0 | 2008年 | ||
微芯片 | 评估板-USB2534BC | 4 | 2.0 | 2013年 | ||
微芯片 | 评估板-USB5807 | 7 | 3.0 | 2016年 | ||
艾 | Uport-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(又名 ikuai A107-5) | 7 | 3.1 | 0bda:5411 | 2022年 | |
罗森威 | RSH-ST07C(仅4个) | 7 | 3.0 | 2109:2822 | 2023年 | |
三和供应 | USB-HUB14GPH | 4 | 1.1 | 2001年 | 2003年 | |
希捷 | Backup Plus 集线器 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(适用于树莓派 4B) | 4 | 3.0 | 2109:0817 | 2021年 | |
虚拟这里 | USB3 4端口集线器(注) | 4 | 3.0 | 2024年 |
该表并不完整。如果您的集线器与uhubctl
配合使用,但上面未列出,请通过在 https://github.com/mvp/uhubctl/issues 上打开新问题来报告它,以便我们可以将其添加到支持的表中。在您的报告中,请提供准确的产品型号并添加uhubctl
的输出,并测试 VBUS 是否支持,如常见问题解答中所述。
请注意,相当多的现代主板都有内置的根集线器,支持此功能 - 您甚至可能不需要购买任何外部集线器。
如果您有 USB 3.0 集线器连接到 USB3 上游端口,它将被检测为 2 个独立的虚拟集线器:USB2 和 USB3,并且您的 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 上编译,但 USB 电源切换在 Windows 上不起作用,因为libusb
使用winusb.sys
驱动程序,根据 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
请注意,在某些操作系统(例如 FreeBSD/NetBSD)上,您需要使用gmake
来构建。
此外,在 MacOS 上,您可以使用 Homebrew Tap 一次性安装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 Kernel 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
是否支持我的 USB 集线器?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
关闭电源之前禁用相关设备的 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 端口集线器,他们以菊花链方式连接两个 4 端口集线器 - 1 个端口因菊花链而丢失,因此使其成为 4+4-1=7 端口集线器。同样,10 端口集线器可以构建为以菊花链方式连接在一起的 3 个 4 端口集线器,从而提供 4+4+4-2=10 个可用端口。
请注意,您绝对不应该尝试更改用于将内部集线器菊花链在一起的端口的电源状态。这样做会混淆内部集线器电路并导致不可预测的行为。
这是Raspberry Pi硬件设计的限制。作为解决方法,您可以从上面支持的列表中购买任何外部 USB 集线器,将其连接到 Raspberry Pi 的任何 USB 端口,并独立控制其端口的电源。此外,还有专为 Raspberry Pi 设计的受支持集线器,例如 UUGear MEGA4。
作为参考,支持的 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 hub 1
, 1 端口,仅连接下面的 hub 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
、1 个端口、OTG 控制器。不支持电源切换。
Raspberry Pi 5 有两个 USB2 端口和两个 USB3 端口(总共 4 个)。这些端口以非常奇怪的配置连接到 4 个不同的 USB 集线器1
、 2
、 3
、 4
(但根据操作系统和硬件版本,感兴趣的集线器可以是2
、 3
、 4
、 5
)。如果 USB3 设备连接到蓝色插座,则会在 USB3 集线器2
或4
上检测到该设备。如果 USB2 设备连接到任何插座或 USB3 设备连接到黑色插座,则会在 USB2 集线器1
或3
上检测到该设备。无论 USB2/USB3 连接类型如何,蓝色插座始终为端口1
,黑色插座始终为端口2
。
4 个 USB 板载集线器中的每一个都宣称支持每端口电源切换,但事实并非如此。实际上,尽管属于 4 个不同的逻辑 USB 集线器,但 Raspberry Pi 5 的所有 4 个端口都组合在一起为一组。
要关闭 VBUS 电源,必须通过以下方式在所有板载集线器和端口上禁用它:
uhubctl -l 2 -a 0
uhubctl -l 4 -a 0
要将其重新打开:
uhubctl -l 2 -a 1
uhubctl -l 4 -a 1
请注意,仅当所有端口都关闭时,VBUS 电源才会关闭 - 启用任何单个端口都会使所有 4 个端口恢复 VBUS。
项目 | 描述 |
---|---|
摩尔斯电码 USB 灯 | 使用 USB 灯以莫尔斯电码闪烁消息 |
网络摄像头 USB 灯 | 当网络摄像头打开/关闭时打开/关闭 LED |
电影院灯箱 | 从 iOS Home 应用程序打开/关闭 Cinema Lightbox |
构建状态灯 | 在 10 分钟内创建构建状态灯 |
建筑灯 | GitLab/GitHub 项目构建状态为绿/红灯 |
气象站 | 结冰时重置气象站 |
系统QMOD | 必要时重置蜂窝调制解调器 |
烟雾传感器 | 基于Raspberry Pi的烟雾传感器电源重置 |
可怕的集群 | 根据需要打开/关闭 Raspberry Pi 集群节点的电源 |
理想的音乐服务器 | 关闭未使用的 USB 端口以提高音频质量 |
无幻象负载的 USB 驱动器 | 仅在需要时为 USB 驱动器供电以节省电量 |
U盘数据恢复 | 从出现故障的 USB 硬盘恢复数据 |
控制 3D 打印机的电源 | 用于 USB 电源控制的 OctoPrint Web 插件 |
适用于 Raspberry Pi 的 USB 风扇 | 控制USB风扇以避免Raspberry Pi过热 |
树莓派重启路由器 | 如果互联网不工作,自动重启路由器 |
语音控制USB灯 | 使用 Siri 和 Raspberry Pi 语音控制 USB 灯 |
控制USB LED灯条 | 控制USB供电的LED灯带 |
用树莓派酿造啤酒 | 使用 Raspberry Pi 的自动化啤酒酿造系统 |
网络摄像头直播标志 | 使用网络摄像头时自动点亮标志 |
自己做PPPS | 在 USB 集线器中焊接电线以支持 uhubctl |
开源 PPPS 中心 | uhubctl 兼容集线器的开源硬件项目 |
uhubctl 的 Python 包装器 | 将 uhubctl 与 Python 结合使用的模块 |
实验室网格 | 在硬件上测试嵌入式 Linux 的框架 |
版权所有 (C) 2009-2024 瓦迪姆·米哈伊洛夫
该文件可以根据 GNU 通用公共许可证版本 2 的条款和条件进行分发。