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 :
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 :
/usr/sbin/usbipd -D
/usr/sbin/subip bind --busid=1-1.2
Pense à remplace 1-1.2 par le BUSID qui t’intéresse !
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 .
sudo nano /etc/systemd/system/usbipunbind.service
Voici le contenu du fichier à créer, pense bien à modifier le BUSID, ici le 1-1.2:
[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é:
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 :
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
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
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 :
#!/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 :
sudo chmod +x /usr/local/sbin/usbipzigbee.sh
Il ne reste plus qu’à créer un service qui va appeler ce script
sudo nano /etc/systemd/system/usbip.service
le contenu :
[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 !
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