uhubctl
adalah utilitas untuk mengontrol daya USB per-port pada hub USB pintar. Hub pintar didefinisikan sebagai hub yang menerapkan peralihan daya per port.
Ide asli untuk kode ini terinspirasi oleh hub-ctrl.c oleh Niibe Yutaka: https://www.gniibe.org/development/ac-power-control-by-USB-hub
Perhatikan bahwa sangat sedikit hub yang benar-benar mendukung peralihan daya per port. Beberapa di antaranya sudah tidak diproduksi lagi dan sulit ditemukan.
Ini adalah daftar hub USB kompatibel yang diketahui:
Pabrikan | Produk | Pelabuhan | USB | VID:PID | Melepaskan | EOL |
---|---|---|---|---|---|---|
Tanaman acer | Monitor BE270U (lihat) | 4 | 3.0 | 2109:2811 | 2016 | |
AmazonDasar-Dasar | HU3641V1 (masalah RPi) | 4 | 3.0 | 2109:2811 | 2013 | |
AmazonDasar-Dasar | HU3770V1 (masalah RPi) | 7 | 3.0 | 2109:2811 | 2013 | |
AmazonDasar-Dasar | HU9003V1EBL, HUC9003V1EBL | 7 | 3.1 | 2109:2817 | 2018 | |
AmazonDasar-Dasar | HU9002V1SBL, HU9002V1EBL, HU9002V1ESL (catatan) | 10 | 3.1 | 2109:2817 | 2018 | |
AmazonDasar-Dasar | HUC9002V1SBL, HUC9002V1EBL, HUC9002V1ESL | 10 | 3.1 | 2109:2817 | 2018 | |
AmazonDasar-Dasar | U3-7HUB (hanya berfungsi untuk 1 port pengisian daya) | 7 | 3.0 | 2109:2813 | 2020 | |
Anker | AK-68ANHUB-BV7A-0004 (catatan) | 7 | 3.0 | 2109:0812 | 2014 | |
Apel | Tampilan Pro XDR MWPE2LL/A (hub USB internal) | 4 | 2.0 | 05AC:9139 | 2019 | |
Apel | Layar Thunderbolt 27" (hub USB internal) | 6 | 2.0 | 2011 | 2016 | |
Apel | Keyboard USB Dengan Pad Numerik (hub USB internal) | 3 | 2.0 | 2011 | ||
asus | Motherboard Z77 Sabertooth (hub USB bawaan) | 6 | 2.0 | 2012 | ||
asus | Motherboard Z87-PLUS (hub USB terpasang) | 4 | 3.0 | 2013 | 2016 | |
Aukey | CB-C59 | 4 | 3.0 | 2109:2813 | 2017 | |
B+B SmartWorx | UHR204 | 4 | 2.0 | 0856:DB00 | 2013 | |
B+B SmartWorx | USH304 | 4 | 3.0 | 04B4:6506 | 2017 | 2019 |
Basler | 2000036234 | 4 | 3.0 | 0451:8046 | 2016 | |
Belkin | F5U101 | 4 | 2.0 | 0451:2046 | 2005 | 2010 |
Belkin | F5U238UKCRL-MOB | 4 | 2.0 | 0409:0059 | 2004 | 2010 |
BenQ | Monitor PD2700U 4K (hanya berfungsi dalam mode USB2) | 4 | 3.0 | 05E3:0610 | 2018 | |
BenQ | PD3220U | 4 | 3.1 | 05E3:0610 | 2019 | |
Bytecc | BT-UH340 (peringatan) | 4 | 3.0 | 2109:8110 | 2010 | |
Centech | CT-USB4HUB COBA LAGI HUB | 4 | 3.0 | 0424:2744 | 2017 | |
Sirkuitco | Beagleboard-xM (hub USB internal) | 4 | 2.0 | 0424:9514 | 2010 | |
Klub3D | Stasiun Docking Layar Ganda CSV-3242HD | 4 | 3.0 | 2109:2811 | 2015 | |
perlengkapan pendingin | USBG-12U2ML | 12 | 2.0 | 05e3:0607 | 2015 | |
cemara | Perangkat pengembangan CY4608 HX2VL (catatan) | 4 | 2.0 | 04B4:6570 | 2012 | |
D-Link | DUB-H4 putaran D,E (hitam). Catatan: putaran A,C,F tidak didukung | 4 | 2.0 | 05E3:0608 | 2012 | |
D-Link | DUB-H7 putaran A (perak) | 7 | 2.0 | 2001:F103 | 2005 | 2010 |
D-Link | DUB-H7 putaran D,E (hitam). Rev B,C,F,G tidak didukung | 7 | 2.0 | 05E3:0608 | 2012 | |
Dell | Monitor QHD P2416D 24" (catatan) | 4 | 2.0 | 2017 | ||
Dell | S2719DGF 27" Monitor Gaming WQHD | 5 | 3.0 | 0424:5734 | 2018 | |
Dell | Monitor LCD UltraSharp 1704FPT 17". | 4 | 2.0 | 0424:A700 | 2005 | 2015 |
Dell | Monitor LCD UltraSharp U2415 24". | 5 | 3.0 | 2014 | ||
Dell | Monitor Melengkung UltraSharp U3419W 34". | 6 | 3.0 | 2020 | ||
Dell | Wyse 3040 (-f diperlukan) | 6 | 3.0 | 2017 | ||
Delock | 62537 | 4 | 3.0 | 2017 | 2021 | |
Delock | 87445 (catatan) | 4 | 2.0 | 05E3:0608 | 2009 | 2013 |
elektronik | U2H-G4S | 4 | 2.0 | 2006 | 2011 | |
Gigabita | Monitor G27Q (lihat | 4 | 3.0 | 2109:0817 | 2020 | |
Skala Global | ESPRESSObin SBUD102 V5 | 1 | 3.0 | 1D6B:0003 | 2017 | |
Kernel keras | ODROID-C4 (catatan) | 4 | 3.0 | 2020 | ||
Teknologi Hawking | UH214 | 4 | 2.0 | 2003 | 2008 | |
Hewlett Packard | Dok USB-C G5 5TW10AA | 5 | 3.0 | 03F0:076B | 2019 | |
Hewlett Packard | P5Q58UT | 3 | 3.0 | 2019 | ||
tidak memenuhi syarat | HB2025A (hanya USB2) | 4 | 3.1 | 2109:2822 | 2021 | |
IOI | U3H415E1 | 4 | 3.0 | 2012 | ||
j5buat | JUH377 (catatan) | 7 | 3.0 | 2016 | ||
j5buat | JUH470 (catatan) | 3 | 3.0 | 05E3:0610 | 2014 | |
Sistem Jus | 6HUB-01 | 7 | 3.0 | 0BDA:0411 | 2014 | 2018 |
KUNBUS GmbH | RevPi Hubungkan (+) / S / SE | 2 | 2.0 | 0424:9514 | 2018 | |
KUNBUS GmbH | RevPi Hubungkan 4 | 2 | 3.0 | 2022 | ||
KUNBUS GmbH | RevPi Inti 3/S/SE | 2 | 2.0 | 0424:9514 | 2017 | |
LG Elektronik | monitor 27MD5KL-B | 4 | 3.0 | 043E:9A60 | 2019 | |
LG Elektronik | monitor 27GL850-B | 4 | 3.0 | 0451:8142 | 2019 | |
LG Elektronik | monitor 27UK850-W | 2 | 3.0 | 2018 | ||
LG Elektronik | monitor 27UN83A-W | 2 | 3.0 | 0451:8142 | 2020 | |
LG Elektronik | monitor 38WK95C-W | 4 | 3.0 | 0451:8142 | 2018 | |
Lenovo | Stasiun Docking ThinkPad Ultra (40A20090EU) | 6 | 2.0 | 17EF:100F | 2015 | |
Lenovo | Stasiun Docking ThinkPad Ultra (40AJ0135EU) | 7 | 3.1 | 17EF:3070 | 2018 | |
Lenovo | ThinkPad X200 Ultrabase 42X4963 | 3 | 2.0 | 17EF:1005 | 2008 | 2011 |
Lenovo | ThinkPad X6 Ultrabase 42W3107 | 4 | 2.0 | 17EF:1000 | 2006 | 2009 |
Lenovo | Hub USB-C Think Plus 4-in-1 4X90W86497 | 3 | 3.0 | 2021 | ||
Lenovo | Monitor ThinkVision T24i-10 | 4 | 2.0 | 17EF:0610 | 2018 | |
Lenovo | USB-C ke 4 Port USB-A Hub | 4 | 2.0 | 17EF:103A | 2020 | |
Lindy | Konverter serial USB 4 port | 4 | 1.1 | 058F:9254 | 2008 | |
Linksys | USB2HUB4 (catatan) | 4 | 2.0 | 2004 | 2010 | |
maplin | A08CQ | 7 | 2.0 | 0409:0059 | 2008 | 2011 |
Metadot | Papan Ketik 4 | 2 | 3.0 | 2014 | ||
mikrochip | EVB9512 | 2 | 2.0 | 2009 | ||
mikrochip | EVB-USB2517 | 7 | 2.0 | 2008 | ||
mikrochip | EVB-USB2534BC | 4 | 2.0 | 2013 | ||
mikrochip | EVB-USB5807 | 7 | 3.0 | 2016 | ||
Moksa | Uport-407 | 7 | 2.0 | 110A:0407 | 2009 | |
NVidia | Jetson Nano B01 (detail) | 4 | 3.0 | 2019 | ||
NVidia | Jetson Xavier NX (detail) | 4 | 3.0 | 2020 | ||
Fidget | HUB0003_0 | 7 | 2.0 | 1A40:0201 | 2017 | |
Philips | Monitor Lengkung 34" UltraWide 346B1C | 4 | 3.0 | 05E3:0610 | 2019 | |
Dapat dicolokkan | USB3-HUB7BC | 7 | 3.0 | 2109:0813 | 2015 | |
Dapat dicolokkan | USB3-HUB7C (hanya berfungsi untuk 2 port pengisian daya) | 7 | 3.0 | 2109:0813 | 2015 | |
Dapat dicolokkan | USBC-HUB7BC (berfungsi untuk port 6/7, bukan yang paling kanan) | 7 | 3.0 | 2109:0817 | 2021 | |
Dapat dicolokkan | USB3-HUB10-C2 (hanya berfungsi untuk 2 port pengisian daya) | 10 | 3.0 | 2014 | ||
Pelabuhan Inc | NWUSB01 | 4 | 1.1 | 0451:1446 | 1999 | 2003 |
Raspberry Pi | B+, 2B, 3B (lihat di bawah) | 4 | 2.0 | 2011 | ||
Raspberry Pi | 3B+ (lihat di bawah) | 4 | 2.0 | 0424:2514 | 2018 | |
Raspberry Pi | 4B (lihat di bawah) | 4 | 3.0 | 2109:3431 | 2019 | |
Raspberry Pi | 5 (lihat di bawah) | 4 | 3.0 | 1d6b:0002 | 2023 | |
Renesa | uPD720202 pengontrol host PCIe USB 3.0 | 2 | 3.0 | 2013 | ||
Rosewill | RHUB-210 | 4 | 2.0 | 0409:005A | 2011 | 2014 |
Rosonway | RSH-518C (catatan) | 7 | 3.0 | 2109:0817 | 2021 | |
Rosonway | RSH-A10 (lihat) | 10 | 3.0 | 0bda:0411 | 2020 | |
Rosonway | RSH-A13 (peringatan) | 13 | 3.1 | 2109:2822 | 2021 | |
Rosonway | RSH-A16 (catatan, peringatan) | 16 | 3.0 | 0bda:0411 | 2020 | |
Rosonway | RSH-A104 (hanya USB2) | 4 | 3.1 | 2109:2822 | 2022 | |
Rosonway | RSH-A107 (alias ikuai A107-5) | 7 | 3.1 | 0bda:5411 | 2022 | |
Rosonway | RSH-ST07C (hanya 4) | 7 | 3.0 | 2109:2822 | 2023 | |
Pasokan Sanwa | USB-HUB14GPH | 4 | 1.1 | 2001 | 2003 | |
gerbang laut | Cadangan Plus Hub STEL8000100 | 2 | 3.0 | 0BC2:AB44 | 2016 | |
Studio Benih | Terminal ulang CM4104032 | 2 | 2.0 | 0424:2514 | 2021 | |
Teknologi Bintang | Dok Perjalanan USB-C DKT30CSDHPD3 | 3 | 3.0 | 2109:2817 | 2018 | |
Teknologi Bintang | HB30A4AIB (peringatan) | 4 | 3.0 | 2109:2817 | 2018 | |
Sunix | SHB4200MA | 4 | 2.0 | 0409:0058 | 2006 | 2009 |
Pembicaraan Sistem | Sugoi USB2-HUB4X | 4 | 2.0 | 2007 | ||
Targus | PA095UZ | 2 | 2.0 | 2004 | ||
Targus | PAUH212/PAUH212U | 7 | 2.0 | 2004 | 2009 | |
Instrumen Texas | TUSB4041PAPEVM | 4 | 2.1 | 0451:8142 | 2015 | |
UUGear | MEGA4 (untuk Raspberry Pi 4B) | 4 | 3.0 | 2109:0817 | 2021 | |
VirtualDi Sini | Hub 4 port USB3 (catatan) | 4 | 3.0 | 2024 |
Tabel ini sama sekali belum lengkap. Jika hub Anda berfungsi dengan uhubctl
, namun tidak tercantum di atas, harap laporkan dengan membuka masalah baru di https://github.com/mvp/uhubctl/issues, sehingga kami dapat menambahkannya ke tabel yang didukung. Dalam laporan Anda, berikan model produk yang tepat dan tambahkan keluaran dari uhubctl
dan harap uji dukungan VBUS seperti yang dijelaskan di bawah dalam FAQ.
Perhatikan bahwa beberapa motherboard modern memiliki hub root bawaan yang mendukung fitur ini - Anda bahkan mungkin tidak perlu membeli hub eksternal apa pun.
Jika Anda memiliki hub USB 3.0 yang tersambung ke port upstream USB3, hub tersebut akan terdeteksi sebagai 2 hub virtual independen: USB2 dan USB3, dan perangkat USB Anda akan tersambung ke hub virtual USB2 atau USB3 tergantung pada kemampuan dan kecepatan koneksinya. Untuk mengontrol daya pada hub tersebut, penting untuk mematikan/menghidupkan daya pada hub virtual USB2 dan USB3 agar perubahan daya mati/hidup dapat diterapkan. uhubctl
akan mencoba melakukan ini secara otomatis (kecuali Anda menonaktifkan perilaku ini dengan opsi -e
).
Sayangnya, meskipun sebagian besar hub akan memutus koneksi data USB, beberapa hub mungkin masih tidak memutus VBUS ke port, yang berarti ponsel yang terhubung mungkin masih terus mengisi daya dari port yang dimatikan oleh uhubctl
.
Utilitas ini telah diuji untuk dikompilasi dan bekerja di Linux (Ubuntu/Debian, Redhat/Fedora/CentOS, Arch Linux, Gentoo, openSUSE, Buildroot), FreeBSD, NetBSD, SunOS dan MacOS.
Saat uhubctl
dikompilasi di Windows, peralihan daya USB tidak berfungsi di Windows karena libusb
menggunakan driver winusb.sys
, yang menurut Microsoft tidak mendukung permintaan kontrol USB yang diperlukan. Ini mungkin diperbaiki jika libusb
mulai mendukung driver berbeda di Windows.
Perhatikan bahwa sangat disarankan untuk menginstal pkg-config
(banyak platform menyediakannya secara default).
Pertama, Anda perlu menginstal perpustakaan libusb-1.0 (disarankan versi 1.0.12 atau lebih baru, 1.0.16 atau lebih baru):
sudo apt-get install libusb-1.0-0-dev
sudo yum install libusb1-devel
sudo zypper install libusb-1_0-devel
brew install libusb
, atau sudo port install libusb-devel
sudo pkgin install libusb1 gmake pkg-config
Untuk mengambil sumber uhubctl dan mengkompilasinya:
git clone https://github.com/mvp/uhubctl
cd uhubctl
make
Ini harus menghasilkan biner uhubctl
. Anda dapat menginstalnya di sistem Anda sebagai /usr/sbin/uhubctl
menggunakan:
sudo make install
Perhatikan bahwa pada beberapa OS (misalnya FreeBSD/NetBSD) Anda perlu menggunakan gmake
untuk membangun.
Selain itu, di MacOS Anda dapat menginstal uhubctl
dengan semua dependensi yang diperlukan dalam satu kesempatan menggunakan ketukan Homebrew:
brew tap mvp/uhubctl https://github.com/mvp/uhubctl
brew install uhubctl
Untuk membangun/menginstal dari cabang master, gunakan --HEAD
:
brew install uhubctl --HEAD
️ Di Linux, gunakansudo
atau konfigurasikan izin USB seperti dijelaskan di bawah!
Untuk mencantumkan semua hub yang didukung:
uhubctl
Anda dapat mengontrol daya pada port USB seperti ini:
uhubctl -a off -p 2
Ini berarti beroperasi pada smart hub default dan mematikan daya ( -a off
, atau -a 0
) pada port 2 ( -p 2
). Tindakan yang didukung adalah off
/ on
/ cycle
/ toggle
(atau 0
/ 1
/ 2
/ 3
). cycle
berarti mematikan daya, tunggu beberapa saat (dapat dikonfigurasi dengan -d
) dan hidupkan kembali. Port dapat berupa daftar yang dipisahkan koma, dan dapat digunakan -
untuk rentang misalnya 2
, atau 2,4
, atau 2-5
, atau 1-2,5-8
.
️ Mematikan port USB internal dapat memutus keyboard atau mouse Anda, jadi berhati-hatilah port mana yang Anda matikan!
Jika Anda memiliki lebih dari satu hub USB pintar yang terhubung, Anda harus memilih hub tertentu untuk dikontrol menggunakan parameter -l
(lokasi). Untuk menemukan lokasi hub, cukup jalankan uhubctl
tanpa parameter apa pun. Lokasi hub terlihat seperti bx.yz
, dengan b
nomor bus USB, dan x
, y
, z
... adalah nomor port untuk semua hub dalam rangkaian, dimulai dari hub akar untuk bus USB tertentu. Alamat ini semi-stabil - tidak akan berubah jika Anda mencabut/menyambungkan kembali (atau mematikan/menghidupkan) perangkat USB ke port USB fisik yang sama (metode ini juga digunakan di kernel Linux).
Di Linux, Anda harus mengonfigurasi izin USB udev
(jika tidak, Anda harus menjalankannya sebagai root menggunakan sudo uhubctl
).
Dimulai dengan Kernel Linux 6.0 terdapat antarmuka standar untuk mengaktifkan atau menonaktifkan port hub USB, dan uhubctl
akan mencoba menggunakannya (bukan libusb
) untuk mengatur status port. Inilah sebabnya mengapa ada aturan tambahan untuk kernel 6.0+. Tidak ada salahnya menerapkan aturan ini pada sistem yang menjalankan versi kernel lama.
Untuk memperbaiki izin USB, jalankan sudo uhubctl
terlebih dahulu dan catat semua vid:pid
untuk hub yang perlu Anda kontrol. Kemudian, tambahkan aturan udev seperti di bawah ini ke file /etc/udev/rules.d/52-usb.rules
(ganti 2001
dengan id vendor hub Anda, atau hapus filter ATTR{idVendor}
sepenuhnya untuk mengizinkan akses hub 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""
Perhatikan bahwa untuk hub USB3, beberapa hub menggunakan ID vendor yang berbeda untuk komponen USB2 vs USB3 dari chip yang sama, dan keduanya memerlukan izin agar uhubctl berfungsi dengan baik. Misalnya untuk Raspberry Pi 4B, Anda perlu menambahkan 2 baris ini (atau menghapus filter idVendor):
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2109"
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="1d6b"
Jika Anda tidak menyukai mode terbuka lebar 0666
, Anda dapat membatasi akses berdasarkan grup seperti ini:
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""
lalu tambahkan pengguna yang diizinkan ke grup dialout
:
sudo usermod -a -G dialout $USER
Agar perubahan aturan udev
Anda diterapkan, reboot atau jalankan:
sudo udevadm trigger --attr-match=subsystem=usb
Demi kenyamanan Anda, aturan udev siap pakai disediakan di sini.
Menurut spesifikasi USB 2.0, hub USB dapat menunjukkan tidak adanya peralihan daya, peralihan daya gabungan (semua port sekaligus), atau peralihan daya per port (individu). Perhatikan bahwa secara default uhubctl
hanya akan mendeteksi hub USB yang mendukung peralihan daya per port (tetapi Anda dapat memaksanya untuk mencoba beroperasi pada hub yang tidak didukung dengan opsi -f
). Anda dapat mengetahui jenis peralihan daya yang didukung perangkat keras Anda dengan menggunakan sudo lsusb -v
:
Tidak ada peralihan daya:
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
Peralihan daya bersekongkol:
wHubCharacteristic 0x0008
Ganged power switching
Per-port overcurrent protection
Peralihan daya per port:
wHubCharacteristic 0x0009
Per-port power switching
Per-port overcurrent protection
uhubctl
?sudo uhubctl
. Jika hub Anda tidak terdaftar, maka hub tersebut tidak didukung. Alternatifnya, Anda dapat menjalankan sudo lsusb -v
dan memeriksa Per-port power switching
- jika Anda tidak dapat melihat baris tersebut di keluaran lsusb, hub tidak didukung.uhubctl
untuk mematikan daya pada port tersebut, dan periksa apakah ponsel berhenti mengisi daya, lampu USB berhenti bersinar, atau kipas USB berhenti berputar. Jika VBUS tidak mati, pabrikan hub Anda tidak menyertakan sirkuit untuk memutus aliran listrik. Hub tersebut akan tetap berfungsi untuk memutus sambungan data USB, namun tidak dapat mematikan daya, dan kami tidak menganggap perangkat ini didukung.Setelah mematikan port USB, udev tidak mendapatkan kejadian apa pun, sehingga file perangkat tetap ada. Namun, mencoba mengakses file perangkat akan menyebabkan kesalahan IO.
Ini adalah masalah kernel Linux dan telah diperbaiki sejak uhubctl 2.5.0 untuk sistem dengan kernel Linux 6.0 atau lebih baru.
Jika Anda masih menggunakan Linux 5.x atau lebih lama, Anda dapat menggunakan solusi ini untuk masalah ini:
sudo uhubctl -a off -l ${location} -p ${port}
sudo udevadm trigger --action=remove /sys/bus/usb/devices/${location}.${port}/
File perangkat akan dihapus oleh udev, tetapi perangkat USB akan tetap terlihat di lsusb
. Perhatikan bahwa jalur /sys/bus/usb/devices/${location}.${port}
hanya akan ada jika perangkat terdeteksi pada port tersebut. Saat Anda menghidupkan kembali daya, perangkat harus menghitung ulang dengan benar (tidak perlu memanggil udevadm
lagi).
Beberapa driver perangkat di kernel terkejut ketika perangkat USB dimatikan dan secara otomatis mencoba menyalakannya kembali.
Ini adalah masalah kernel Linux dan telah diperbaiki sejak uhubctl 2.5.0 untuk sistem dengan kernel Linux 6.0 atau lebih baru.
Jika Anda masih menggunakan Linux 5.x atau lebih lama:
Anda dapat menggunakan opsi -r N
, di mana N adalah angka dari 10 hingga 1000 untuk memperbaikinya - uhubctl
akan mencoba mematikan daya berkali-kali secara berurutan, dan itu akan menekannya.
Menonaktifkan otorisasi USB untuk perangkat yang dimaksud sebelum mematikan daya dengan uhubctl
akan membantu:
echo 0 > sudo tee /sys/bus/usb/devices/${location}.${port}/authorized
Jika perangkat Anda adalah penyimpanan massal USB, menjalankan udisksctl
sebelum memanggil uhubctl
juga akan membantu:
sudo udisksctl power-off --block-device /dev/disk/...`
sudo uhubctl -a off ...
Banyak produsen hub membuat hub USB mereka menggunakan chip USB 4 port dasar. Misalnya untuk membuat 7 port hub, mereka melakukan daisy-chain pada dua hub 4 port - 1 port hilang ke daisy-chaining, sehingga menjadikannya 4+4-1=7 port hub. Demikian pula, 10 hub port dapat dibangun sebagai 3 hub 4-port yang dirangkai bersama, sehingga menghasilkan 4+4+4-2=10 port yang dapat digunakan.
Perhatikan bahwa Anda tidak boleh mencoba mengubah status daya untuk port yang digunakan untuk menghubungkan hub internal secara bersamaan. Melakukan hal ini akan membingungkan sirkuit hub internal dan menyebabkan perilaku yang tidak terduga.
Inilah batasan desain perangkat keras Raspberry Pi. Sebagai solusinya, Anda dapat membeli hub USB eksternal apa pun dari daftar yang didukung di atas, menyambungkannya ke port USB mana pun di Raspberry Pi, dan mengontrol daya pada portnya secara mandiri. Juga, ada hub yang didukung yang dirancang khusus untuk Raspberry Pi, misalnya UUGear MEGA4.
Sebagai referensi, model Raspberry Pi yang didukung memiliki topologi USB internal berikut:
Hub tunggal 1-1
, port 2-5 bersekongkol, semuanya dikendalikan oleh port 2
:
uhubctl -l 1-1 -p 2 -a 0
Mencoba mengontrol port 3
, 4
, 5
tidak akan menghasilkan apa pun. Port 1
mengontrol daya untuk Ethernet+WiFi.
Hub utama 1-1
, keempat port digabungkan, semua dikontrol oleh port 2
(mematikan port hub sekunder juga). Port 1
menghubungkan hub 1-1.1
di bawah, port 2
dan 3
dihubungkan dengan kabel di luar, port 4
tidak dihubungkan dengan kabel.
uhubctl -l 1-1 -p 2 -a 0
Hub sekunder 1-1.1
(rantai daisy ke utama): 3 port, port 1
digunakan untuk Ethernet+WiFi, dan port 2
dan 3
dihubungkan dengan kabel ke luar.
️ Jika firmware VL805 Anda lebih lama dari00137ad
(periksa dengansudo rpi-eeprom-update
), Anda harus memperbarui firmware agar peralihan daya berfungsi pada RPi 4B.
Hub USB2 1
, 1 port, hanya menghubungkan hub 1-1
di bawah.
Hub USB2 1-1
, 4 port bersekongkol, ganda ke hub USB3 2
di bawah:
uhubctl -l 1-1 -a 0
Hub USB3 2
, 4 port bersekongkol, ganda ke hub USB2 1-1
di atas:
uhubctl -l 2 -a 0
Hub USB2 3
, 1 port, pengontrol OTG. Peralihan daya tidak didukung.
Raspberry Pi 5 memiliki dua port USB2 dan dua port USB3 (total 4). Port-port ini terhubung ke 4 hub USB berbeda 1
, 2
, 3
, 4
dalam konfigurasi yang sangat aneh (tetapi tergantung pada OS dan hub revisi HW yang diminati bisa jadi 2
, 3
, 4
, 5
). Jika perangkat USB3 terhubung ke soket biru, maka akan terdeteksi pada hub USB3 2
atau 4
. Jika perangkat USB2 terhubung ke soket apa pun atau perangkat USB3 terhubung ke soket hitam, maka akan terdeteksi pada hub USB2 1
atau 3
. Terlepas dari jenis sambungan USB2/USB3, soket biru selalu merupakan port 1
, dan soket hitam selalu merupakan port 2
.
Masing-masing dari 4 hub onboard USB diiklankan mendukung peralihan daya per port, tetapi ini tidak benar. Pada kenyataannya, Raspberry Pi 5 keempat port digabungkan menjadi satu kelompok, meskipun memiliki 4 hub USB logis yang berbeda.
Untuk mematikan daya VBUS, daya tersebut harus dinonaktifkan di semua hub dan port onboard dengan:
uhubctl -l 2 -a 0
uhubctl -l 4 -a 0
Untuk mengaktifkannya kembali:
uhubctl -l 2 -a 1
uhubctl -l 4 -a 1
Perhatikan bahwa daya VBUS mati hanya jika semua port mati - mengaktifkan satu port akan mengaktifkan VBUS kembali untuk keempat port.
Proyek | Keterangan |
---|---|
Lampu USB kode morse | Flash pesan dalam kode Morse dengan lampu USB |
Lampu USB kamera web | Nyalakan/matikan LED saat webcam dihidupkan/dimatikan |
Lightbox Bioskop | Nyalakan/matikan Cinema Lightbox dari aplikasi iOS Home |
Bangun Lampu Status | Buat lampu status build dalam waktu kurang dari 10 menit |
Lampu bangunan | Status pembangunan proyek GitLab/GitHub sebagai lampu hijau/merah |
Stasiun Cuaca | Setel ulang Stasiun Cuaca saat membeku |
sysmoQMOD | Setel ulang modem seluler bila perlu |
Sensor Asap | Reset daya sensor kabut berbasis Raspberry Pi |
Cluster yang Mengerikan | Nyalakan/matikan node cluster Raspberry Pi sesuai kebutuhan |
Server Musik Ideal | Matikan port USB yang tidak digunakan untuk meningkatkan kualitas audio |
Drive USB tanpa beban hantu | Nyalakan drive USB hanya jika diperlukan untuk menghemat daya |
Pemulihan data drive USB | Pulihkan data dari hard drive USB yang rusak |
Kontrol daya ke printer 3D | Plugin web OctoPrint untuk kontrol daya USB |
Kipas USB untuk Raspberry Pi | Kontrol kipas USB untuk menghindari panas berlebih pada Raspberry Pi |
Router Reboot Raspberry Pi | Reboot router secara otomatis jika internet tidak berfungsi |
Kontrol Lampu USB Dengan Suara | Kontrol Suara Lampu USB menggunakan Siri dan Raspberry Pi |
Kontrol Strip LED USB | Mengontrol Strip Lampu LED bertenaga USB |
Seduh bir dengan Raspberry Pi | Sistem pembuatan bir otomatis menggunakan Raspberry Pi |
Tanda Siaran Webcam | Secara otomatis menyalakan tanda saat webcam sedang digunakan |
Lakukan sendiri PPPS | Kabel solder di hub USB Anda untuk mendukung uhubctl |
Hub PPPS sumber terbuka | Proyek perangkat keras sumber terbuka untuk hub yang kompatibel dengan uhubctl |
Pembungkus Python untuk uhubctl | Modul untuk menggunakan uhubctl dengan Python |
laboratorium | Kerangka untuk menguji Linux tertanam pada perangkat keras |
Hak Cipta (C) 2009-2024 Vadim Mikhailov
File ini dapat didistribusikan berdasarkan syarat dan ketentuan GNU General Public License versi 2.