Raspberry Pi - Gérer l'alimentation des ports

Raspberry Pi - Gérer l'alimentation des ports

Il y a trois ans, j’avais acquis un Raspberry Pi (le premier) modèle B pour mettre en place un petit NAS fait maison. J’avais alors acheté deux magnifiques disques durs de 3To chacun que j’avais mis dans un boitier pour réaliser un magnifique RAID 1. Cette installation était bien mais elle comportait un inconvénient douloureux… Mes disques durs ne s’éteignaient jamais ! Comprennez, ils ne se mettaient jamais en veille, pas même quand il n’avait pas servis depuis plusieurs heures.

Devant ce problème, j’avais cherché en vain une solution permettant de contrôler moi-même l’alimentation de mes ports USB… À l’époque, le Raspberry était presque plus à l’état de prototype et la communauté n’était pas aussi importante qu’aujourd’hui.

Raspberry Pi 3, te voilà !

Ces derniers jours, j’ai voulu investir dans un modèle plus puissant. Ayant entendu beaucoup de bien du modèle 2, j’avais dans l’espoir que ce problème de gestion de l’alimentation de l’USB serait réglé et me suis donc décidé à acheter un nouveau modèle. Fort heureusement, le Raspberry Pi 3 est sortie au même moment, et ni-une, ni-deux j’ai passé commande.

Mise en veille des périphériques USB

Après quelques tests, je me suis rendu à l’évidence que mon problème initial n’avait pas été réglé avec cette nouvelle carte. J’ai donc cherché à jouer avec l’alimentation et BINGO ! cette fois-ci, j’ai trouvé de quoi faire.

Gestion manuelle de l’alimentation

Dans un premier temps, voici le ticket qui m’a permis de changer l’alimentation.

Et voici, le projet en C permettant d’influer sur l’alimentation des ports USB.

Un petit peu de command line

$ git clone https://github.com/codazoda/hub-ctrl.c.git
$ cd hub-ctrl.c
$ sudo apt install -y libusb-dev $ gcc -o hub-ctrl hub-ctrl.c -lusb

Nous voilà bon. Le projet de Joel Dare a été compilé et nous sommes désormais prêt à allumer/éteindre nos périphériques USB.

Schéma d’organisation des ports USB

Schéma d'organisation des ports USB sur un Raspberry Pi 2/3

Jouer avec les ports

À savoir que le port USB 1 ne peut être éteint individuellement.

Éteindre

  • Port USB 2

    1
    sudo ./hub-ctrl -h 0 -P 4 -p 0
  • Port USB 3

    1
    sudo ./hub-ctrl -h 0 -P 5 -p 0
  • Port USB 4

    1
    sudo ./hub-ctrl -h 0 -P 3 -p 0
  • Le port Ethernet !

    1
    sudo ./hub-ctrl -h 0 -P 1 -p 0
  • Les 4 ports USB d’un coup

    1
    sudo ./hub-ctrl -h 0 -P 2 -p 0

Allumer

  • Port USB 2

    1
    sudo ./hub-ctrl -h 0 -P 4 -p 1
  • Port USB 3

    1
    sudo ./hub-ctrl -h 0 -P 5 -p 1
  • Port USB 4

    1
    sudo ./hub-ctrl -h 0 -P 3 -p 1
  • Le port Ethernet !

    1
    sudo ./hub-ctrl -h 0 -P 1 -p 1
  • Les 4 ports USB d’un coup

    1
    sudo ./hub-ctrl -h 0 -P 2 -p 1

Conclusion

Ce bref article montre une solution que j’ai longtemps cherché. J’espère que le travail de la communauté retranscrit ici en Français vous aura été utile.