uhubctl - Couper le courant d'un port USB en une commande
Votre clé 4G ou Wifi que vous avez connectée en USB sur un vieux serveur situé au fond du garage, plante une fois ou deux fois par semaine et à chaque fois faut aller débrancher la clé et la rebrancher pour la réveiller / ressusciter ? Et bien c'est fini la galère les amis, puisque uhubctl règle ça en une commande. Cet outil coupe puis rallume le courant d'un port USB précis, sans que vous n'ayez à toucher au moindre câble.
C'est donc un petit utilitaire en ligne de commande, écrit en C par Vadim Mikhailov, qui pilote l'alimentation électrique de vos ports USB un par un. uhubctl -a off -p 2 éteint le port 2, -a on le rallume, et -a cycle enchaîne les deux avec une petite pause au milieu. C'est pile-poil ce qu'il faut pour rebooter par exemple un modem 4G figé ou une webcam qui ne répond plus.
Par contre, désolé mais ça ne fonctionne pas sur n'importe quel hub USB. Il vous faut un hub intelligent qui gère le per-port power switching, autrement dit capable de couper le jus d'un seul port sans toucher aux autres. Rassurez-vous, si vous ne savez pas quoi acheter, le projet maintient une liste de modèles compatibles que vous pouvez consulter ici .
Après y'a certains hubs qui coupent bien la connexion data mais laissent passer le courant (le fameux VBUS). Du coup vous croyez avoir éteint le port, et le téléphone branché dessus continue tranquillement de charger. Alors pour vérifier, branchez un ventilo ou une petite lampe USB et lancez la coupure. Si ça s'arrête vraiment, votre hub est bon. Sinon il sait uniquement couper la data, et pas l'alim.
Mais en tout cas, une fois le bon matériel entre les mains, les usages deviennent vraiment sympas ! Par exemple, avoir un disque dur USB alimenté seulement quand vous en avez besoin, histoire de tuer le phantom load qui bouffe du courant pour rien (pensez juste à bien le démonter avant de couper le jus, sinon bonjour la corruption ^^).
Y'a aussi le cluster de Raspberry Pi que vous allumez et éteignez nœud par nœud. Ou encore un plugin OctoPrint qui coupe l'alim USB de l'imprimante 3D une fois l'impression finie. Y'a même des bidouilleurs qui pilotent un ventilo ou une guirlande LED avec.
Côté installation, rien de méchant : apt install uhubctl sur Debian, Ubuntu et Raspbian, brew install uhubctl sur Mac. Sous Linux il faudra passer par sudo ou poser une règle udev pour les permissions, sinon l'outil râlera. Sur Windows par contre, laissez tomber pour la coupure d'alim. Le driver USB de Microsoft ne laisse pas passer la commande, donc uhubctl compile mais n'éteint rien du tout.
Et si vous visez le Raspberry Pi, gardez un œil sur ses bizarreries car sur pas mal de modèles, tous les ports sont liés. Si vous en coupez un, vous les coupez tous. La parade classique, c'est donc de brancher un vrai hub compatible sur le Pi et de piloter ses ports à lui.
Et si vous cherchez quoi en faire côté DIY de votre Pi, j'avais listé 130 idées pour votre Raspberry Pi qui se marient bien avec ce genre de contrôle à distance.
Bref, si vous bricolez de la domotique ou un rack de Raspberry Pi, vérifiez d'abord votre hub, puis foncez. C'est gratuit, open source et ça évite pas mal d'allers-retours vers la multiprise.
