Partager un périphérique USB sur le réseau

Par Jean-François GAZET le 17 juillet 2018

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.

Installation

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.

Serveur

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.

Client

Installez usbip selon votre distribution Linux comme cela a été fait sur le serveur.
On charge les modules du noyau :

sudo modprobe usbip-core
sudo modprobe vhci-hcd

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

Référence

Tutorial – USB/IP


Partagez cet article


A lire également Tous les articles