Ceci est une ancienne révision du document !
Table des matières
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
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/subip 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
