uhubctl
é um utilitário para controlar a alimentação USB por porta em hubs USB inteligentes. Hub inteligente é definido como aquele que implementa comutação de energia por porta.
A ideia original para este código foi inspirada em hub-ctrl.c de Niibe Yutaka: https://www.gniibe.org/development/ac-power-control-by-USB-hub
Observe que poucos hubs realmente suportam comutação de energia por porta. Alguns deles não são mais fabricados e podem ser difíceis de encontrar.
Esta é uma lista de hubs USB compatíveis conhecidos:
Fabricante | Produto | Portas | USB | VÍDEO:PID | Liberar | EOL |
---|---|---|---|---|---|---|
Acer | Monitor BE270U (ver) | 4 | 3,0 | 2109:2811 | 2016 | |
Amazon Básico | HU3641V1 (problema RPi) | 4 | 3,0 | 2109:2811 | 2013 | |
Amazon Básico | HU3770V1 (problema RPi) | 7 | 3,0 | 2109:2811 | 2013 | |
Amazon Básico | HU9003V1EBL, HUC9003V1EBL | 7 | 3.1 | 2109:2817 | 2018 | |
Amazon Básico | HU9002V1SBL, HU9002V1EBL, HU9002V1ESL (nota) | 10 | 3.1 | 2109:2817 | 2018 | |
Amazon Básico | HUC9002V1SBL, HUC9002V1EBL, HUC9002V1ESL | 10 | 3.1 | 2109:2817 | 2018 | |
Amazon Básico | U3-7HUB (funciona apenas para 1 porta de carregamento) | 7 | 3,0 | 2109:2813 | 2020 | |
Anker | AK-68ANHUB-BV7A-0004 (nota) | 7 | 3,0 | 2109:0812 | 2014 | |
Maçã | Pro Display XDR MWPE2LL/A (hub USB interno) | 4 | 2,0 | 05AC:9139 | 2019 | |
Maçã | Thunderbolt Display 27" (hub USB interno) | 6 | 2,0 | 2011 | 2016 | |
Maçã | Teclado USB com teclado numérico (hub USB interno) | 3 | 2,0 | 2011 | ||
ASUS | Placa-mãe Z77 Sabertooth (hub USB integrado) | 6 | 2,0 | 2012 | ||
ASUS | Placa-mãe Z87-PLUS (hub USB integrado) | 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 (funciona apenas no modo USB2) | 4 | 3,0 | 05E3:0610 | 2018 | |
BenQ | PD3220U | 4 | 3.1 | 05E3:0610 | 2019 | |
Bytec | BT-UH340 (aviso) | 4 | 3,0 | 2109:8110 | 2010 | |
Centech | CENTRO DE RETENTAÇÃO CT-USB4HUB | 4 | 3,0 | 0424:2744 | 2017 | |
Circuito | Beagleboard-xM (hub USB interno) | 4 | 2,0 | 0424:9514 | 2010 | |
Clube3D | Estação de acoplamento de tela dupla CSV-3242HD | 4 | 3,0 | 2109:2811 | 2015 | |
Equipamento legal | USBG-12U2ML | 12 | 2,0 | 05e3:0607 | 2015 | |
Cipreste | Kit de desenvolvimento CY4608 HX2VL (nota) | 4 | 2,0 | 04B4:6570 | 2012 | |
Link D | DUB-H4 rev D,E (preto). Nota: rev A, C, F não suportado | 4 | 2,0 | 05E3:0608 | 2012 | |
Link D | DUB-H7 rev A (prata) | 7 | 2,0 | 2001:F103 | 2005 | 2010 |
Link D | DUB-H7 rev D,E (preto). Rev B,C,F,G não suportado | 7 | 2,0 | 05E3:0608 | 2012 | |
Dell | Monitor P2416D 24" QHD (nota) | 4 | 2,0 | 2017 | ||
Dell | Monitor de jogos S2719DGF 27" WQHD | 5 | 3,0 | 0424:5734 | 2018 | |
Dell | Monitor LCD UltraSharp 1704FPT de 17" | 4 | 2,0 | 0424:A700 | 2005 | 2015 |
Dell | Monitor LCD UltraSharp U2415 de 24" | 5 | 3,0 | 2014 | ||
Dell | Monitor Curvo UltraSharp U3419W 34" | 6 | 3,0 | 2020 | ||
Dell | Wyse 3040 (-f obrigatório) | 6 | 3,0 | 2017 | ||
Desbloquear | 62537 | 4 | 3,0 | 2017 | 2021 | |
Desbloquear | 87445 (nota) | 4 | 2,0 | 05E3:0608 | 2009 | 2013 |
Elecom | U2H-G4S | 4 | 2,0 | 2006 | 2011 | |
Gigabyte | Monitor G27Q (ver | 4 | 3,0 | 2109:0817 | 2020 | |
Escala Global | ESPRESSObin SBUD102 V5 | 1 | 3,0 | 1D6B:0003 | 2017 | |
Hardkernel | ODROID-C4 (nota) | 4 | 3,0 | 2020 | ||
Tecnologia Hawking | UH214 | 4 | 2,0 | 2003 | 2008 | |
Hewlett-Packard | Base USB-C G5 5TW10AA | 5 | 3,0 | 03F0:076B | 2019 | |
Hewlett-Packard | P5Q58UT | 3 | 3,0 | 2019 | ||
Inateck | HB2025A (somente USB2) | 4 | 3.1 | 2109:2822 | 2021 | |
IOI | U3H415E1 | 4 | 3,0 | 2012 | ||
j5criar | JUH377 (nota) | 7 | 3,0 | 2016 | ||
j5criar | JUH470 (nota) | 3 | 3,0 | 05E3:0610 | 2014 | |
Sistemas de suco | 6HUB-01 | 7 | 3,0 | 0BDA:0411 | 2014 | 2018 |
KUNBUS GmbH | RevPi Connect (+) / S / SE | 2 | 2,0 | 0424:9514 | 2018 | |
KUNBUS GmbH | RevPi Conectar 4 | 2 | 3,0 | 2022 | ||
KUNBUS GmbH | RevPi Core 3/S/SE | 2 | 2,0 | 0424:9514 | 2017 | |
Eletrônica LG | Monitor 27MD5KL-B | 4 | 3,0 | 043E:9A60 | 2019 | |
Eletrônica LG | Monitor 27GL850-B | 4 | 3,0 | 0451:8142 | 2019 | |
Eletrônica LG | Monitor 27UK850-W | 2 | 3,0 | 2018 | ||
Eletrônica LG | Monitor 27UN83A-W | 2 | 3,0 | 0451:8142 | 2020 | |
Eletrônica LG | Monitor 38WK95C-W | 4 | 3,0 | 0451:8142 | 2018 | |
Lenovo | Estação de acoplamento ThinkPad Ultra (40A20090EU) | 6 | 2,0 | 17EF:100F | 2015 | |
Lenovo | Estação de acoplamento 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 ThinkPlus 4 em 1 4X90W86497 | 3 | 3,0 | 2021 | ||
Lenovo | Monitor ThinkVision T24i-10 | 4 | 2,0 | 17EF:0610 | 2018 | |
Lenovo | Hub USB-C para 4 portas USB-A | 4 | 2,0 | 17EF:103A | 2020 | |
Linda | Conversor serial USB 4 portas | 4 | 1.1 | 058F:9254 | 2008 | |
Linksys | USB2HUB4 (nota) | 4 | 2,0 | 2004 | 2010 | |
Maplin | A08CQ | 7 | 2,0 | 0409:0059 | 2008 | 2011 |
Metadoto | O Teclado 4 | 2 | 3,0 | 2014 | ||
Microchip | EVB9512 | 2 | 2,0 | 2009 | ||
Microchip | EVB-USB2517 | 7 | 2,0 | 2008 | ||
Microchip | EVB-USB2534BC | 4 | 2,0 | 2013 | ||
Microchip | EVB-USB5807 | 7 | 3,0 | 2016 | ||
Moxa | Uport-407 | 7 | 2,0 | 110A:0407 | 2009 | |
Nvidia | Jetson Nano B01 (detalhes) | 4 | 3,0 | 2019 | ||
Nvidia | Jetson Xavier NX (detalhes) | 4 | 3,0 | 2020 | ||
Fidgets | HUB0003_0 | 7 | 2,0 | 1A40:0201 | 2017 | |
Philips | Monitor Curvo 346B1C UltraWide de 34" | 4 | 3,0 | 05E3:0610 | 2019 | |
Plugável | USB3-HUB7BC | 7 | 3,0 | 2109:0813 | 2015 | |
Plugável | USB3-HUB7C (funciona apenas com 2 portas de carregamento) | 7 | 3,0 | 2109:0813 | 2015 | |
Plugável | USBC-HUB7BC (funciona para portas 6/7, não a mais à direita) | 7 | 3,0 | 2109:0817 | 2021 | |
Plugável | USB3-HUB10-C2 (funciona apenas para 2 portas de carregamento) | 10 | 3,0 | 2014 | ||
Porto Inc. | NWUSB01 | 4 | 1.1 | 0451:1446 | 1999 | 2003 |
Framboesa Pi | B+, 2B, 3B (veja abaixo) | 4 | 2,0 | 2011 | ||
Framboesa Pi | 3B+ (veja abaixo) | 4 | 2,0 | 0424:2514 | 2018 | |
Framboesa Pi | 4B (veja abaixo) | 4 | 3,0 | 2109:3431 | 2019 | |
Framboesa Pi | 5 (veja abaixo) | 4 | 3,0 | 1d6b:0002 | 2023 | |
Renesas | Controlador host uPD720202 PCIe USB 3.0 | 2 | 3,0 | 2013 | ||
Rosewill | RHUB-210 | 4 | 2,0 | 0409:005A | 2011 | 2014 |
Rosonway | RSH-518C (nota) | 7 | 3,0 | 2109:0817 | 2021 | |
Rosonway | RSH-A10 (ver) | 10 | 3,0 | 0bda:0411 | 2020 | |
Rosonway | RSH-A13 (aviso) | 13 | 3.1 | 2109:2822 | 2021 | |
Rosonway | RSH-A16 (nota, aviso) | 16 | 3,0 | 0bda:0411 | 2020 | |
Rosonway | RSH-A104 (somente USB2) | 4 | 3.1 | 2109:2822 | 2022 | |
Rosonway | RSH-A107 (também conhecido como ikuai A107-5) | 7 | 3.1 | 0bda:5411 | 2022 | |
Rosonway | RSH-ST07C (apenas 4) | 7 | 3,0 | 2109:2822 | 2023 | |
Sanwa Fornecimento | USB-HUB14GPH | 4 | 1.1 | 2001 | 2003 | |
Seagate | Backup Plus Hub STEL8000100 | 2 | 3,0 | 0BC2:AB44 | 2016 | |
Estúdio visto | reTerminal CM4104032 | 2 | 2,0 | 0424:2514 | 2021 | |
StarTech | Dock de viagem DKT30CSDHPD3 USB-C | 3 | 3,0 | 2109:2817 | 2018 | |
StarTech | HB30A4AIB (aviso) | 4 | 3,0 | 2109:2817 | 2018 | |
Sunix | SHB4200MA | 4 | 2,0 | 0409:0058 | 2006 | 2009 |
Conversas do sistema | Sugoi USB2-HUB4X | 4 | 2,0 | 2007 | ||
Targus | PA095UZ | 2 | 2,0 | 2004 | ||
Targus | PAUH212/PAUH212U | 7 | 2,0 | 2004 | 2009 | |
Instrumentos Texas | TUSB4041PAPEVM | 4 | 2.1 | 0451:8142 | 2015 | |
UUGear | MEGA4 (para Raspberry Pi 4B) | 4 | 3,0 | 2109:0817 | 2021 | |
VirtualAqui | Hub USB3 de 4 portas (nota) | 4 | 3,0 | 2024 |
Esta tabela não está de forma alguma completa. Se o seu hub funciona com uhubctl
, mas não está listado acima, informe-o abrindo um novo problema em https://github.com/mvp/uhubctl/issues, para que possamos adicioná-lo à tabela suportada. Em seu relatório, forneça o modelo exato do produto e adicione a saída de uhubctl
e teste o suporte do VBUS conforme descrito abaixo nas Perguntas frequentes.
Observe que algumas placas-mãe modernas possuem hubs raiz integrados que suportam esse recurso - talvez você nem precise comprar nenhum hub externo.
Se você tiver um hub USB 3.0 conectado à porta upstream USB3, ele será detectado como 2 hubs virtuais independentes: USB2 e USB3, e seus dispositivos USB serão conectados ao hub virtual USB2 ou USB3 dependendo de suas capacidades e velocidade de conexão. Para controlar a energia de tais hubs, é necessário desligar/ligar os hubs virtuais USB2 e USB3 para que as alterações de desligar/ligar tenham efeito. uhubctl
tentará fazer isso automaticamente (a menos que você desative esse comportamento com a opção -e
).
Infelizmente, embora a maioria dos hubs corte a conexão USB de dados, alguns ainda podem não cortar o VBUS para a porta, o que significa que o telefone conectado ainda pode continuar a carregar a partir da porta desligada por uhubctl
.
Este utilitário foi testado para compilar e funcionar em Linux (Ubuntu/Debian, Redhat/Fedora/CentOS, Arch Linux, Gentoo, openSUSE, Buildroot), FreeBSD, NetBSD, SunOS e MacOS.
Embora uhubctl
seja compilado no Windows, a comutação de energia USB não funciona no Windows porque libusb
está usando o driver winusb.sys
, que, segundo a Microsoft, não oferece suporte às solicitações de controle USB necessárias. Isso pode ser corrigido se libusb
começar a oferecer suporte a drivers diferentes no Windows.
Observe que é altamente recomendável ter pkg-config
instalado (muitas plataformas o fornecem por padrão).
Primeiro, você precisa instalar a biblioteca libusb-1.0 (versão 1.0.12 ou posterior, 1.0.16 ou posterior é recomendada):
sudo apt-get install libusb-1.0-0-dev
sudo yum install libusb1-devel
sudo zypper install libusb-1_0-devel
brew install libusb
ou sudo port install libusb-devel
sudo pkgin install libusb1 gmake pkg-config
Para buscar a fonte do uhubctl e compilá-la:
git clone https://github.com/mvp/uhubctl
cd uhubctl
make
Isso deve gerar o binário uhubctl
. Você pode instalá-lo em seu sistema como /usr/sbin/uhubctl
usando:
sudo make install
Observe que em alguns sistemas operacionais (por exemplo, FreeBSD/NetBSD) você precisa usar gmake
para compilar.
Além disso, no MacOS você pode instalar uhubctl
com todas as dependências necessárias de uma só vez usando o Homebrew tap:
brew tap mvp/uhubctl https://github.com/mvp/uhubctl
brew install uhubctl
Para compilar/instalar a partir do branch master, use --HEAD
:
brew install uhubctl --HEAD
️ No Linux, usesudo
ou configure as permissões USB conforme descrito abaixo!
Para listar todos os hubs suportados:
uhubctl
Você pode controlar a energia em uma(s) porta(s) USB assim:
uhubctl -a off -p 2
Isso significa operar no hub inteligente padrão e desligar ( -a off
ou -a 0
) na porta 2 ( -p 2
). 2
ações 1
são off
/ on
/ cycle
/ toggle
(ou 0
3
. cycle
significa desligar, esperar algum atraso (configurável com -d
) e ligá-lo novamente. As portas podem ser uma lista separada por vírgulas e podem usar -
para intervalos, por exemplo, 2
, ou 2,4
, ou 2-5
, ou 1-2,5-8
.
️ Desativar as portas USB integradas pode desligar o teclado ou o mouse, portanto, tome cuidado com as portas que você está desligando!
Se você tiver mais de um hub USB inteligente conectado, você deve escolher um hub específico para controlar usando o parâmetro -l
(localização). Para encontrar locais de hub, basta executar uhubctl
sem nenhum parâmetro. Os locais dos hubs se parecem com bx.yz
, onde b
é o número do barramento USB e x
, y
, z
... são números de porta para todos os hubs na cadeia, começando pelo hub raiz de um determinado barramento USB. Este endereço é semi-estável - ele não mudará se você desconectar/reconectar (ou desligar/ligar) o dispositivo USB na mesma porta USB física (este método também é usado no kernel Linux).
No Linux, você deve configurar as permissões USB udev
(caso contrário, você terá que executá-lo como root usando sudo uhubctl
).
A partir do Linux Kernel 6.0, há uma interface padrão para ativar ou desativar as portas do hub USB, e uhubctl
tentará usá-la (em vez de libusb
) para definir o status da porta. É por isso que existem regras adicionais para kernels 6.0+. Não há mal nenhum em ter essas regras em sistemas que executam versões mais antigas do kernel.
Para corrigir as permissões USB, primeiro execute sudo uhubctl
e anote todos vid:pid
dos hubs que você precisa controlar. Em seguida, adicione regras do udev como abaixo ao arquivo /etc/udev/rules.d/52-usb.rules
(substitua 2001
pelo ID do fornecedor do hub ou remova completamente o filtro ATTR{idVendor}
para permitir qualquer acesso ao 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""
Observe que para hubs USB3, alguns hubs usam ID de fornecedor diferente para componentes USB2 e USB3 do mesmo chip, e ambos precisam de permissões para fazer o uhubctl funcionar corretamente. Por exemplo, para Raspberry Pi 4B, você precisa adicionar estas 2 linhas (ou remover o filtro idVendor):
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2109"
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="1d6b"
Se você não gosta do modo totalmente aberto 0666
, você pode restringir o acesso por grupo assim:
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""
e adicione usuários permitidos ao grupo dialout
:
sudo usermod -a -G dialout $USER
Para que as alterações nas regras udev
tenham efeito, reinicie ou execute:
sudo udevadm trigger --attr-match=subsystem=usb
Para sua conveniência, a regra udev pronta para usar é fornecida aqui.
De acordo com a especificação USB 2.0, os hubs USB não podem anunciar nenhuma comutação de energia, comutação de energia agrupada (todas as portas ao mesmo tempo) ou comutação de energia por porta (individual). Observe que, por padrão, uhubctl
detectará apenas hubs USB que suportam comutação de energia por porta (mas você pode forçá-lo a tentar operar em hubs não suportados com a opção -f
). Você pode descobrir que tipo de comutação de energia seu hardware suporta usando sudo lsusb -v
:
Sem comutação de energia:
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
Comutação de energia agrupada:
wHubCharacteristic 0x0008
Ganged power switching
Per-port overcurrent protection
Comutação de energia por porta:
wHubCharacteristic 0x0009
Per-port power switching
Per-port overcurrent protection
uhubctl
?sudo uhubctl
. Se o seu hub não estiver listado, ele não é compatível. Alternativamente, você pode executar sudo lsusb -v
e verificar Per-port power switching
- se você não conseguir ver essa linha na saída lsusb, o hub não é suportado.uhubctl
para desligar essa porta e verifique se o telefone para de carregar, a luz do USB para de brilhar ou a ventoinha do USB para de girar. Se o VBUS não desligar, o fabricante do hub não incluiu circuitos para realmente cortar a energia. Esse hub ainda funcionaria para cortar a conexão de dados USB, mas não pode desligar a energia e não consideramos este dispositivo compatível.Depois de desligar a porta USB, o udev não recebe nenhum evento, portanto mantém os arquivos do dispositivo por perto. No entanto, tentar acessar os arquivos do dispositivo resultará em um erro de E/S.
Este é um problema do kernel Linux e foi corrigido desde uhubctl 2.5.0 para sistemas com kernel Linux 6.0 ou posterior.
Se você ainda estiver usando o Linux 5.x ou anterior, poderá usar esta solução alternativa para esse problema:
sudo uhubctl -a off -l ${location} -p ${port}
sudo udevadm trigger --action=remove /sys/bus/usb/devices/${location}.${port}/
O arquivo do dispositivo será removido pelo udev, mas o dispositivo USB ainda estará visível em lsusb
. Observe que o caminho /sys/bus/usb/devices/${location}.${port}
só existirá se o dispositivo for detectado nessa porta. Quando você ligar novamente, o dispositivo deverá ser reenumerado corretamente (não é necessário chamar udevadm
novamente).
Alguns drivers de dispositivo no kernel são surpreendidos pelo desligamento do dispositivo USB e tentam ligá-lo automaticamente.
Este é um problema do kernel Linux e foi corrigido desde uhubctl 2.5.0 para sistemas com kernel Linux 6.0 ou posterior.
Se você ainda estiver usando Linux 5.x ou anterior:
Você pode usar a opção -r N
, onde N é um número de 10 a 1000 para corrigir isso - uhubctl
tentará desligar muitas vezes em rápida sucessão e deve suprimir isso.
Desativar a autorização USB para o dispositivo em questão antes de desligar com uhubctl
deve ajudar:
echo 0 > sudo tee /sys/bus/usb/devices/${location}.${port}/authorized
Se o seu dispositivo for um armazenamento em massa USB, invocar udisksctl
antes de chamar uhubctl
também deve ajudar:
sudo udisksctl power-off --block-device /dev/disk/...`
sudo uhubctl -a off ...
Muitos fabricantes de hubs constroem seus hubs USB usando chips USB básicos de 4 portas. Por exemplo, para criar um hub de 7 portas, eles conectam em cadeia dois hubs de 4 portas - 1 porta é perdida no encadeamento em série, tornando-o um hub de 4 + 4-1 = 7 portas. Da mesma forma, hubs de 10 portas poderiam ser construídos como 3 hubs de 4 portas conectados em série, o que fornece 4+4+4-2=10 portas utilizáveis.
Observe que você nunca deve tentar alterar o estado de energia das portas usadas para conectar hubs internos em série. Isso confundirá os circuitos internos do hub e causará um comportamento imprevisível.
Esta é a limitação do design de hardware Raspberry Pi. Como solução alternativa, você pode comprar qualquer hub USB externo da lista de suporte acima, conectá-lo a qualquer porta USB do Raspberry Pi e controlar a alimentação de suas portas de forma independente. Além disso, existem hubs suportados projetados especificamente para Raspberry Pi, por exemplo, UUGear MEGA4.
Para referência, os modelos Raspberry Pi suportados têm a seguinte topologia USB interna:
Hub único 1-1
, portas 2-5 agrupadas, todas controladas pela porta 2
:
uhubctl -l 1-1 -p 2 -a 0
Tentar controlar as portas 3
, 4
, 5
não fará nada. A porta 1
controla a energia para Ethernet+WiFi.
Hub principal 1-1
, todas as 4 portas agrupadas, todas controladas pela porta 2
(também desativa as portas do hub secundário). A porta 1
conecta o hub 1-1.1
abaixo, as portas 2
e 3
estão conectadas externamente, a porta 4
não está conectada.
uhubctl -l 1-1 -p 2 -a 0
Hub secundário 1-1.1
(conectado em série ao principal): 3 portas, a porta 1
é usada para Ethernet+WiFi e as portas 2
e 3
são conectadas externamente.
️ Se o firmware do seu VL805 for anterior a00137ad
(verifique comsudo rpi-eeprom-update
), você deverá atualizar o firmware para fazer a troca de energia funcionar no RPi 4B.
Hub USB2 1
, 1 porta, conecta apenas o hub 1-1
abaixo.
Hub USB2 1-1
, 4 portas agrupadas, duplo para hub USB3 2
abaixo:
uhubctl -l 1-1 -a 0
Hub USB3 2
, 4 portas agrupadas, duplo para hub USB2 1-1
acima:
uhubctl -l 2 -a 0
Hub USB2 3
, 1 porta, controlador OTG. A comutação de energia não é suportada.
Raspberry Pi 5 possui duas portas USB2 e duas portas USB3 (total 4). Essas portas estão conectadas a 4 hubs USB distintos 1
, 2
, 3
, 4
em uma configuração realmente estranha (mas dependendo da revisão do sistema operacional e do HW, os hubs de interesse podem ser 2
, 3
, 4
, 5
). Se o dispositivo USB3 estiver conectado ao soquete azul, ele será detectado no hub USB3 2
ou 4
. Se o dispositivo USB2 estiver conectado a qualquer soquete ou dispositivo USB3 conectado ao soquete preto, ele será detectado no hub USB2 1
ou 3
. Independentemente do tipo de conexão USB2/USB3, os soquetes azuis são sempre a porta 1
e os soquetes pretos são sempre a porta 2
.
Cada um dos quatro hubs USB integrados é anunciado como compatível com comutação de energia por porta, mas isso não é verdade. Na realidade, todas as 4 portas do Raspberry Pi 5 estão agrupadas em um grupo, apesar de pertencerem a 4 hubs USB lógicos diferentes.
Para desligar a alimentação do VBUS, ela deve ser desabilitada em todos os hubs e portas integrados com:
uhubctl -l 2 -a 0
uhubctl -l 4 -a 0
Para ligá-lo novamente:
uhubctl -l 2 -a 1
uhubctl -l 4 -a 1
Observe que a energia do VBUS diminui apenas se todas as portas estiverem desligadas - ativar qualquer porta única ativa o VBUS de volta para todas as 4 portas.
Projeto | Descrição |
---|---|
Luz USB em código Morse | Flash uma mensagem em código Morse com luz USB |
Luz USB da webcam | Liga/desliga o LED quando a webcam está ligada/desligada |
Caixa de luz de cinema | Ativar/desativar Cinema Lightbox no aplicativo iOS Home |
Construir luz de status | Crie uma luz de status de compilação em menos de 10 minutos |
Construir luzes | Status de construção do projeto GitLab/GitHub como luz verde/vermelha |
Estação Meteorológica | Reinicialize a estação meteorológica quando ela congelar |
sysmoQMOD | Redefinir modems celulares quando necessário |
Sensor de poluição | Redefinição de energia do sensor de fumaça baseado em Raspberry Pi |
Aglomerado terrível | Ligue/desligue os nós do cluster Raspberry Pi conforme necessário |
Servidor de música ideal | Desligue as portas USB não utilizadas para melhorar a qualidade do áudio |
Unidades USB sem carga fantasma | Ligue unidades USB somente quando necessário para economizar energia |
Recuperação de dados de unidade USB | Recupere dados de disco rígido USB com falha |
Controle a energia da impressora 3D | Plug-in web OctoPrint para controle de energia USB |
Ventilador USB para Raspberry Pi | Controle o ventilador USB para evitar o superaquecimento do Raspberry Pi |
Roteador de reinicialização Raspberry Pi | Reinicialize automaticamente o roteador se a Internet não estiver funcionando |
Controle a lâmpada USB com voz | Controle de voz da lâmpada USB usando Siri e Raspberry Pi |
Controle de faixa LED USB | Controlando a faixa de luz LED alimentada por USB |
Faça cerveja com Raspberry Pi | Sistema automatizado de fabricação de cerveja usando Raspberry Pi |
Sinal de webcam no ar | Acende automaticamente um sinal quando a webcam está em uso |
Faça você mesmo PPPS | Solde fios em seu hub USB para suportar uhubctl |
Centro PPPS de código aberto | Projeto de hardware de código aberto para hub compatível com uhubctl |
Wrapper Python para uhubctl | Módulo para usar uhubctl com Python |
grade de laboratório | Estrutura para testar Linux embarcado em hardware |
Direitos autorais (C) 2009-2024 Vadim Mikhailov
Este arquivo pode ser distribuído sob os termos e condições da Licença Pública Geral GNU versão 2.