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 디스플레이 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 | |
바이트cc | 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(검은색). 참고: 개정판 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(검은색). 개정판 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 | |
글로벌스케일 | ESPRESSObin 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 |
쿤버스 GmbH | RevPi 연결(+) / S / SE | 2 | 2.0 | 0424:9514 | 2018 | |
쿤버스 GmbH | RevPi 연결 4 | 2 | 3.0 | 2022년 | ||
쿤버스 GmbH | 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년 | ||
뜸쑥 | Uport-407 | 7 | 2.0 | 110A:0407 | 2009년 | |
엔비디아 | 젯슨 나노 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년 | |
씨게이트 | 백업 플러스 허브 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년 | |
UU기어 | MEGA4(라즈베리 파이 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
마스터 브랜치에서 빌드/설치하려면 --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
사용하여 루트로 실행해야 합니다).
Linux Kernel 6.0부터 USB 허브 포트를 켜거나 끄는 표준 인터페이스가 있으며, uhubctl
은 이를 사용하여( libusb
대신) 포트 상태를 설정하려고 합니다. 이것이 6.0+ 커널에 대한 추가 규칙이 있는 이유입니다. 이전 커널 버전을 실행하는 시스템에서 이러한 규칙을 적용해도 아무런 해가 없습니다.
USB 권한을 수정하려면 먼저 sudo uhubctl
실행하고 제어해야 하는 허브에 대한 모든 vid:pid
기록해 두세요. 그런 다음 아래와 같은 udev 규칙을 /etc/udev/rules.d/52-usb.rules
파일에 추가합니다( 2001
허브 공급업체 ID로 바꾸거나 USB 허브 액세스를 허용하려면 ATTR{idVendor}
필터를 완전히 제거하세요).
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
사용하여 전원을 끄기 전에 문제의 장치에 대한 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포트 허브 2개를 데이지 체인 방식으로 연결합니다. 데이지 체인 방식으로 포트 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
, 4개 포트가 하나로 연결됨, 아래 USB3 허브 2
에 듀얼:
uhubctl -l 1-1 -a 0
USB3 허브 2
, 4개 포트가 하나로 연결됨, 위의 USB2 허브 1-1
에 듀얼:
uhubctl -l 2 -a 0
USB2 허브 3
, 1 포트, OTG 컨트롤러. 전원 전환은 지원되지 않습니다.
Raspberry Pi 5에는 USB2 포트 2개와 USB3 포트 2개(총 4개)가 있습니다. 이 포트는 매우 이상한 구성으로 4개의 개별 USB 허브 1
, 2
, 3
, 4
에 연결됩니다(그러나 OS 및 HW 개정 허브에 따라 관심 있는 허브는 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개의 포트가 모두 하나의 그룹으로 묶여 있습니다.
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 홈 앱에서 Cinema Lightbox 켜기/끄기 |
상태 표시등 구축 | 10분 이내에 빌드 상태 표시등 만들기 |
빌드라이트 | GitLab/GitHub 프로젝트 빌드 상태가 녹색/빨간색으로 표시됨 |
기상 관측소 | 기상 관측소가 정지되면 재설정 |
sysmoQMOD | 필요한 경우 셀룰러 모뎀 재설정 |
스모그 센서 | Raspberry Pi 기반 스모그 센서 전원 재설정 |
끔찍한 클러스터 | 필요에 따라 Raspberry Pi 클러스터 노드 전원 켜기/끄기 |
이상적인 뮤직 서버 | 오디오 품질을 향상하려면 사용하지 않는 USB 포트를 끄십시오. |
팬텀 로드가 없는 USB 드라이브 | 전원을 절약하기 위해 필요할 때만 USB 드라이브에 전원을 공급하세요. |
USB 드라이브 데이터 복구 | 실패한 USB 하드 드라이브에서 데이터 복구 |
3D 프린터의 전원 제어 | USB 전원 제어를 위한 OctoPrint 웹 플러그인 |
라즈베리 파이용 USB 팬 | Raspberry Pi 과열을 방지하기 위해 USB 팬 제어 |
라즈베리 파이 재부팅 라우터 | 인터넷이 작동하지 않으면 라우터를 자동으로 재부팅합니다. |
음성으로 USB 램프 제어 | Siri와 Raspberry Pi를 사용한 USB 램프의 음성 제어 |
USB LED 스트립 제어 | USB 전원 LED 조명 스트립 제어 |
라즈베리 파이로 맥주 양조하기 | 라즈베리파이를 이용한 자동 맥주 양조 시스템 |
웹캠 온에어 사인 | 웹캠을 사용하면 자동으로 표지판이 켜집니다. |
직접 해보세요 PPPS | uhubctl을 지원하려면 USB 허브에 와이어를 납땜하세요. |
오픈 소스 PPPS 허브 | uhubctl 호환 허브를 위한 오픈 소스 하드웨어 프로젝트 |
uhubctl용 Python 래퍼 | Python에서 uhubctl을 사용하는 모듈 |
랩그리드 | 하드웨어에서 임베디드 Linux를 테스트하기 위한 프레임워크 |
저작권 (C) 2009-2024 Vadim Mikhailov
이 파일은 GNU General Public License 버전 2의 이용 약관에 따라 배포될 수 있습니다.