• 2 min de lectura
uhubctl permite cortar la alimentación USB puerto por puerto
uhubctl controla la alimentación USB por puerto en hubs inteligentes compatibles en Linux, macOS y otros sistemas tipo Unix.

Imagen: Hacker News
uhubctl es una utilidad de línea de comandos para controlar la alimentación USB en puertos individuales de hubs inteligentes compatibles — hardware que admite el conmutado de alimentación por puerto en lugar de alternar todos los puertos a la vez.
El proyecto, alojado en GitHub por mvp, se inspiró originalmente en hub-ctrl.c de Niibe Yutaka. Su principal limitación es el soporte de hardware: el repositorio mantiene una larga lista de dispositivos compatibles, pero señala que no muchos hubs USB soportan correctamente el conmutado de alimentación por puerto, y algunos modelos compatibles ya están descatalogados. La lista abarca hubs independientes, monitores con hubs internos, docks, teclados, placas base y sistemas como el Apple Mac Mini M4, Raspberry Pi 5 y varios productos de Dell, Lenovo, LG, AmazonBasics, Anker y Plugable.
En hardware USB 3.0, la herramienta advierte que un hub puede aparecer como dos hubs virtuales — uno para USB2 y otro para USB3. En esos casos, a menudo hay que conmutar ambos lados para que el cambio de alimentación se aplique por completo, y uhubctl dice que intentará gestionarlo automáticamente salvo que se desactive con -e. Incluso así, algunos hubs pueden cortar los datos mientras dejan VBUS activo, por lo que un teléfono podría seguir cargándose desde un puerto que aparentemente está apagado.
La instalación es sencilla en macOS, Ubuntu/Debian/Raspbian, Redhat/EPEL/Fedora/CentOS, OpenSUSE y FreeBSD a través de gestores de paquetes estándar, aunque el proyecto advierte que las versiones empaquetadas pueden quedarse rezagadas respecto a la última versión. También puede compilarse desde el código fuente en Linux, FreeBSD, NetBSD, SunOS y MacOS usando libusb-1.0. En Windows, se compila, pero el conmutado de la alimentación USB no funciona porque libusb utiliza winusb.sys, que Microsoft indica que carece de las solicitudes de control USB necesarias.
El uso básico es simple:

Recomendado
CodeAlmanac convierte las conversaciones en un wiki vivo del código
- uhubctl lista los hubs compatibles
- uhubctl -a off -p 2 apaga el puerto 2 del hub inteligente predeterminado
Las acciones soportadas son off, on, cycle y toggle. Si hay varios hubs conectados, los usuarios pueden apuntar a uno específico con el parámetro -l (location).
En Linux, el proyecto recomienda ejecutar con sudo o configurar los permisos de udev. También señala que, a partir del Kernel de Linux 6.0, existe una interfaz estándar para habilitar o deshabilitar los puertos de hubs USB, que uhubctl intentará usar en lugar de libusb.
Una advertencia destaca: apagar los puertos USB integrados también puede cortar la alimentación de su teclado o ratón.
Computing Editor
Tomas lives in the terminal. He covers chips, laptops, and operating systems with a focus on performance and efficiency. He reads kernel changelogs the way other people read fiction, and he's always on the hunt for the perfect mechanical keyboard switch. If it processes data, Tomas has an opinion on it.
vía Hacker News


