17 juillet 2018 · 2 min de lecture
Linux permet d’utiliser un périphérique USB connecté à une machine distante comme s’il était connecté directement sur votre ordinateur. Le module natif se nomme USB/IP. Le but est de partager un appareil (dongle, webcam, imprimante, scanner…). Il existe des solutions logicielles et matérielles payantes… c’est pourtant simple et gratuit.
Le serveur et le client sont des machines Linux avec un noyau 3.17 ou supérieur. Pour un client Windows il n’existe malheureusement que des solutions propriétaires, ou un projet USB/IP non maintenu depuis 2011.
Sur une distribution Debian ou Raspbian installez le paquet usbip
. Sur Ubuntu, installez linux-tools-generic
:
sudo apt-get update
sudo apt-get install linux-tools-generic
Chargement des modules du noyau et démarrage du service :
sudo modprobe usbip-core
sudo modprobe usbip-host
sudo usbipd -D
Le paramètre -D
permet de lancer le programme en tâche de fond (daemon). Listons les périphériques USB connectés :
sudo usbip list -l
Le paramètre -l
est pour “local”. Car on peut également lister les périphériques USB distants. Le résultat est :
On peut voir qu’une clé de marque Kingston est branchée. Pour information, le serveur n’a pas besoin d’identifier, d’accéder, ni de pouvoir lire le périphérique. Ce sera le rôle du client.
Pour partager la clé identifiée sur le bus 1-1.4, la commande est :
sudo usbip bind --busid=1-1.4
Pour la détacher ultérieurement on utilisera la même commande avec unbind
.
Installez usbip
selon votre distribution Linux comme cela a été fait sur le serveur. On charge les modules du noyau :
sudo modprobe usbip-core
Pour lister les périphériques USB partagés par le serveur, tapez :
sudo usbip list -r <ip>
Remplacez ip
par l’adresse IP ou le nom d’hôte du serveur (pi2
dans cet exemple).
Le périphérique 1-1.4 est trouvé. Montons le sur le client :
sudo usbip attach -r pi2 -b 1-1.4
Tout se passe comme si la clé USB venait d’être branchée physiquement sur l’ordinateur. S’agissant d’une clé de données, elle est montée automatiquement par le système et les fichiers qu’elle contient sont accessibles.
Pour le démontage, on cherche le port sur lequel est monté le périphérique :
sudo usbip port
Et on détache :
sudo usbip detach -p 00