Outils pour utilisateurs

Outils du site


wiki:usbip

Ceci est une ancienne révision du document !


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
wiki/usbip.1694102302.txt.gz · Dernière modification : 2024/04/30 14:24 (modification externe)