Outils pour utilisateurs

Outils du site


wiki:usbip

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
wiki:usbip [2023/08/21 16:16] adminwiki:usbip [2024/04/30 14:24] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-=== Installation ===+==== Installation ====
  
-==sur le raspberry pi ==+===sur le raspberry pi ==
  
-Installation du programme+==Installation du programme==
 <code> <code>
 sudo apt install usbip sudo apt install usbip
 </code> </code>
-Execution du programme+==Execution du programme==
  
 <code> <code>
Ligne 16: Ligne 16:
  
  
-=Configuration du programme=+==Configuration du programme==
 on liste les ports usb que l'on peut diffuser via ip on liste les ports usb que l'on peut diffuser via ip
  
Ligne 22: Ligne 22:
  
 On propose le transfert d'un périphérique usb dont le busid est 1-1.3 On propose le transfert d'un périphérique usb dont le busid est 1-1.3
-<code> sudo usbip bind --busid=1-1.3</code>+<code> sudo usbip bind --busid 1-1.3</code>
  
 +
 +===sur le client ===
 +==Installation du programme==
 +On installe aussi usbip
 +<code>
 +sudo apt install usbip
 +</code>
 +ou
 +<code>
 +sudo apt install linux-tools-virtual hwdata
 +</code>
 +et si besoin (si l'outil n'est pas installé)
 +<code>
 +sudo update-alternatives --install /usr/local/bin/usbip usbip $(command -v ls /usr/lib/linux-tools/*/usbip | tail -n1) 20
 +</code>
 +==Execution du programme==
 +
 +<code>
 +sudo modprobe usbip-core
 +sudo modprobe usbip-host
 +</code>
 +On liste les accès usb du périphérique distant dont l'adresse est 192.168.1.2
 +<code>
 +sudo usbip list -r 192.168.1.2
 +</code>
 +On associe le port usb du busid 1-1.3 du périphérique 192.168.1.2
 +<code>
 +sudo usbip   attach -r 192.168.1.2 -b 1-1.3
 +</code>
 +
 +
 +====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
 +<code>
 +sudo nano /etc/modules
 +</code>
 +
 +On y ajoute 
 +<code>
 +usbip-core
 +usbip-host
 +</code>
 +
 +On va exécuter le démon automatique en passant par le script rc.local.
 +
 +<code>
 +sudo nano /etc/rc.local
 +</code>
 +
 +On y ajoute avant a ligne **exit 0**
 +(on remplace 1-1.3 par le bon libusb
 +<code>
 +/usr/sbin/usbipd -D
 +/usr/sbin/usbip bind --busid 1-1.3
 +</code>
 +
 +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
 +<code>
 +sudo nano /etc/systemd/system/usbipunbind.service
 +</code>
 +y mettre en adaptant le busid 1-1.3
 +<code>
 +[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
 +</code>
 +On installe et démarre le service et on vérifie son lancement
 +
 +<code>
 +sudo systemctl enable /etc/systemd/system/usbipunbind.service
 +sudo systemctl start usbipunbind.service
 +sudo systemctl status usbipunbind.service
 +</code>
 +
 +====Automatisation de usbip côté client====
 +On va éditer le fichier /etc/modules pour y mettre les modules à démarrer automatiquement
 +<code>
 +sudo nano /etc/modules
 +</code>
 +
 +On y ajoute 
 +<code>
 +usbip-core
 +vhci-hcd
 +</code>
 +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
 +
 +<code>sudo nano /usr/local/sbin/usbipzigbee.sh</code>
 +
 +<code>
 +#!/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
 +</code>
 +On rend le script executable
 +<code>
 +sudo chmod +x /usr/local/sbin/usbipzigbee.sh
 +</code>
 +
 +On créé le service pour l'executer
 +<code>sudo nano /etc/systemd/system/usbip.service</code>
 +On y met
 +<code>
 +[Unit]
 +Description=USBIP Monte
 +After=default.target
 +
 +[Service]
 +ExecStart=/usr/local/sbin/usbipzigbee.sh
 +
 +[Install]
 +WantedBy=default.target
 +</code>
 +On installe et démarre le service et on vérifie son lancement
 +
 +<code>
 +sudo systemctl enable /etc/systemd/system/usbip.service
 +sudo systemctl start usbip.service
 +sudo systemctl status usbip.service
 +</code>
wiki/usbip.1692627360.txt.gz · Dernière modification : 2024/04/30 14:24 (modification externe)