ce tuto fait suite à HA déporter les clés USB, nous allons automatiser tout le processus.
On retourne sur le serveur, le Raspberry pi
Pour charger les modules il suffit d’éditer le fichier suivant /etc/modules et d’y ajouter ces 2 lignes :
usbip-core
usbip-host
Pour éditer le fichier avec nano :
1 | sudo nano /etc/modules |

Pour enregistrer dans nano il faut faire CTRL+O
Pour Quitter : CTRL+X
Ensuite tu vas modifier le fichier /etc/rc.local en ajoutant ces 2 lignes avant la ligne exit 0 :
1 2 | /usr/sbin/usbipd -D /usr/sbin/subip bind --busid=1-1.2 |
Pense à remplace 1-1.2 par le BUSID qui t’intéresse !
1 | sudo nano /etc/rc . local |

Tu viens de faire le nécessaire pour que tout se charge au démarrage du Pi mais si jamais tu redémarre il faudrait faire un unbind histoire de mettre au courant le client que le périphérique n’est plus dispo et qu’il puisse le récupérer dès que possible.
Pour ça tu vas créer un service, qui sera aussi démarré au boot du Pi mais qui n’aura qu’une action en cas d’arrêt du service .
1 | sudo nano /etc/systemd/system/usbipunbind .service |
Voici le contenu du fichier à créer, pense bien à modifier le BUSID, ici le 1-1.2:
1 2 3 4 5 6 7 8 9 10 | [Unit] Description=USBIP unbind [Service] Type=oneshot RemainAfterExit= true ExecStart= /bin/true ExecStop= /usr/sbin/usbip unbind –-busid=1-1.2 [Install] WantedBy=multi-user.target |
Maintenant que le fichier est créé on active le service et on le démarre, la 3ème ligne permet de vérifier qu’il est bien lancé:
1 2 3 | sudo systemctl enable /etc/systemd/system/usbipunbind .service sudo systemctl start usbipunbind.service sudo systemctl status usbipunbind.service |

Une bonne chose de faite, le serveur est normalement opérationnel, n’hésite pas à tester : un petit reboot et vérifier que la commande list -l retourne quelque chose, sans autre action de ta part, pour rappel :
1 | sudo usbip list -l |
Le client : Debian
Comme pour le serveur, on édite le fichier /etc/modules pour charger les modules :
usbip-core
vhci-hcd
1 | sudo nano /etc/modules |

Ensuite tu vas créer un script qui vérifie si le serveur est dispo et qui va gérer les commandes detach ou attach
Ce script n’est pas de moi mais de Ricobelo qui l’a posté sur les forums de la communauté Jeedom
1 | sudo nano /usr/local/sbin/usbipzigbee .sh |
Contenu du fichier, il faut modifier les 2 variables, SERVER doit avoir l’IP du Raspberry Pi et BUSID doit avoir l’ID de ta clé USB :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/bin/bash ENDLESS= true LANG=C SERVER= '1.2.3.4' BUSID= '1-1.2' trap_exit() { ENDLESS= false for PORT in $( /usr/sbin/usbip port | /usr/bin/grep ^Port | /usr/bin/cut -d ':' -f1 | /usr/bin/awk '{print$2}' ); do /usr/sbin/usbip detach -p $PORT done exit 0 } trap trap_exit SIGINT trap trap_exit SIGTERM trap trap_exit SIGKILL while $ENDLESS; do if ! /usr/sbin/usbip port | /usr/bin/grep "usbip:.*${SERVER}.*${BUSID}$" &> /dev/null ; then /usr/sbin/usbip attach -r ${SERVER} -b ${BUSID} fi sleep 30 done trap_exit |
une fois sauvegardé, il faut donner les droits d’exécution :
1 | sudo chmod +x /usr/local/sbin/usbipzigbee .sh |
Il ne reste plus qu’à créer un service qui va appeler ce script
1 | sudo nano /etc/systemd/system/usbip .service |
le contenu :
1 2 3 4 5 6 7 8 9 | [Unit] Description=USBIP Monte After=default.target [Service] ExecStart= /usr/local/sbin/usbipzigbee .sh [Install] WantedBy=default.target |
Pour les dernières lignes, il suffit d’activer le service et de le démarrer !
1 2 3 | sudo systemctl enable /etc/systemd/system/usbip .service sudo systemctl start usbip.service sudo systemctl status usbip.service |

Oufff, tu y es, c’est fini ! :D, une petite bière et fais quelques tests de reboot
Laisser un commentaire