Bonjour à tous,
Voilà j’aimerais exposer mon problème qui peu peut être servir à plusieurs personnes.
J’utilise un Raspberry comme concentrateur USB réseau.
J’ai 2 machines qui ne fonctionnent que en USB et j’aimerais les rendre « IP », je me suis donc tourné vers le formidable outil USBIP, qui est assez facile à utiliser.
J’arrive à acceder au stockage de mes machines en réseau sans soucis mais voilà mon problème.
Quand j’arrête la machine, l’USB n’est donc plus reconnu par le raspberry et donc quand je remet en marche la machine, il faut que je remonte la machine dans USBIP
J’aimerais donc qu’a chaque fois que je branche un USB sur le raspberry, qu’il remonte automatiquement dans USBIP
Coté client je suis moins inquiet, il suffit de faire un petit script windows pour que l’USB remonte c’est assez simple mais coté serveur j’aimerais vraiment ne pas avoir à remettre les mains dans la raspberry a chaque redémarrage de machine et/ou du Raspberry.
Pour info j’utilise raspberry OS sur un Raspberry 1 (un vieux truc qui traine au fond d’un tiroir mais qui est je pense largement suffisant pour faire ca)
je vous joint les liens que j’ai utilisé pour faire ca : http://usbip.sourceforge.net
le paquet usblib se contente ( c’est déjà beaucoup ) de fournir le daemon (usbipd) , le(s) module(s) ( usbip_host …) et un programme qui permet de lister et attacher, détacher les périphériques à partager (usbip)
pour gérer l"insertion automatique il faudra donc trouver ou créer un script shell qui se « réveillera » lors de l’insertion - ça devrait pouvoir se faire en s’appuyant sur udev ! pas simple !
là c’est plus accessible il suffit de rajouter dans le service de systemd autant de ligne ExecStartPost que de clé en changeant simplement les numéros fabriquant:device que l’on obtient avec lsusb de la forme: NNNN:NNNN
ça fonctionne sur le serveur (usbidd) ça devrait aussi marcher sur le client service (usbip)
l’autre solution c’est d’utiliser dans un script bash ou en commande les fonction du programme usbip:
sur serveur ( adresse 192.168.1.17 )
lister les usb a partager
pi@hotspot:~ $ /usr/sbin/usbip list -p -l
busid=1-1.3#usbid=18a5:0243#
busid=1-1.4#usbid=154b:00d2#
busid=2-1#usbid=0781:5581#
voir a quoi ça correspond :
pi@hotspot:~ $ lsusb
Bus 002 Device 002: ID 0781:5581 SanDisk Corp. Ultra // disque system
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 154b:00d2 PNY // cle partageable
Bus 001 Device 005: ID 18a5:0243 Verbatim, Ltd Flash Drive (Store’n’Go) // cle partageable
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
on liste les périphériques partagés par usbipd
pi@raspberrypi3:~ $ usbip list -r 192.168.1.17
Exportable USB devices
======================
. 192.168.1.17 1-1.3: Verbatim, Ltd : Flash Drive (Store’n’Go) (18a5:0243)
: /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3
: (Defined at Interface level) (00/00/00)
on l’attache’ au client
pi@raspberrypi3:~ $ sudo usbip attach -r 192.168.1.17 -b 1-1.3
pour faire « propre » mais je ne suis pas sur que ça soit très utile il faudrait aussi pour retirer une clé:
sur le client
pi@raspberrypi3:~ $ sudo usbip port
Imported USB devices
Port 00: at High Speed(480Mbps)
Verbatim, Ltd : Flash Drive (Store’n’Go) (18a5:0243)
2-1 → usbip://192.168.1.17:3240/1-1.3
→ remote bus/dev 001/005
Port 01: at High Speed(480Mbps)
PNY : unknown product (154b:00d2)
2-2 → usbip://192.168.1.17:3240/1-1.4
→ remote bus/dev 001/004
puis en fonction de l’usb à virer la j’ai choisi la cle PNY :
pi@raspberrypi3:~ $ sudo usbip detach --port=01
usbip: info: Port 1 is now detached!
sur le serveur
apres un lsusb pour s’y retrouver
pi@hotspot:~ $ sudo usbip list -p -l
busid=1-1.3#usbid=18a5:0243#
busid=1-1.4#usbid=154b:00d2#
busid=2-1#usbid=0781:5581#
pi@hotspot:~ $ sudo usbip unbind --busid=1-1.4
usbip: info: unbind device on busid 1-1.4: complete