==== Installation ==== ===sur le raspberry pi == ==Installation du programme== sudo apt install usbip ==Execution du programme== sudo modprobe usbip-core sudo modprobe usbip-host sudo usbipd -D ==Configuration du programme== on liste les ports usb que l'on peut diffuser via ip sudo usbip list -l On propose le transfert d'un périphérique usb dont le busid est 1-1.3 sudo usbip bind --busid 1-1.3 ===sur le client === ==Installation du programme== On installe aussi usbip sudo apt install usbip ou sudo apt install linux-tools-virtual hwdata et si besoin (si l'outil n'est pas installé) sudo update-alternatives --install /usr/local/bin/usbip usbip $(command -v ls /usr/lib/linux-tools/*/usbip | tail -n1) 20 ==Execution du programme== sudo modprobe usbip-core sudo modprobe usbip-host On liste les accès usb du périphérique distant dont l'adresse est 192.168.1.2 sudo usbip list -r 192.168.1.2 On associe le port usb du busid 1-1.3 du périphérique 192.168.1.2 sudo usbip attach -r 192.168.1.2 -b 1-1.3 ====Automatisation de usbip pour le raspberry pi en cas de redémarrage==== On va éditer le fichier /etc/modules pour y mettre les modules à démarrer automatiquement sudo nano /etc/modules On y ajoute usbip-core usbip-host On va exécuter le démon automatique en passant par le script rc.local. sudo nano /etc/rc.local On y ajoute avant a ligne **exit 0** (on remplace 1-1.3 par le bon libusb /usr/sbin/usbipd -D /usr/sbin/usbip bind --busid 1-1.3 Comme le script monte le périphérique au démarrage il faut aussi le démonter lorsqu'il s'arrête On va créer un service d'arrêt sudo nano /etc/systemd/system/usbipunbind.service y mettre en adaptant le busid 1-1.3 [Unit] Description=USBIP unbind [Service] Type=oneshot RemainAfterExit=true ExecStart=/bin/true ExecStop=/usr/sbin/usbip unbind –-busid 1-1.3 [Install] WantedBy=multi-user.target On installe et démarre le service et on vérifie son lancement sudo systemctl enable /etc/systemd/system/usbipunbind.service sudo systemctl start usbipunbind.service sudo systemctl status usbipunbind.service ====Automatisation de usbip côté client==== On va éditer le fichier /etc/modules pour y mettre les modules à démarrer automatiquement sudo nano /etc/modules On y ajoute usbip-core vhci-hcd Ensuite on va créer un script qui vérifie si le serveur est dispo et qui va gérer les commandes detach ou attach (on adapte les adresses 192.168.1.2 à celle du rpi et le 1-1.3 au busid du périphérique que l'on peut attacher sudo nano /usr/local/sbin/usbipzigbee.sh #!/bin/bash ENDLESS=true LANG=C SERVER='192.168.1.2' BUSID='1-1.3' 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 On rend le script executable sudo chmod +x /usr/local/sbin/usbipzigbee.sh On créé le service pour l'executer sudo nano /etc/systemd/system/usbip.service On y met [Unit] Description=USBIP Monte After=default.target [Service] ExecStart=/usr/local/sbin/usbipzigbee.sh [Install] WantedBy=default.target On installe et démarre le service et on vérifie son lancement sudo systemctl enable /etc/systemd/system/usbip.service sudo systemctl start usbip.service sudo systemctl status usbip.service