Guida alle tecnologie

Installazione e uso di USB/IP sul client

6 min read Guida tecnica Aggiornato 27 Sep 2025
Installare e usare USB/IP sul client
Installare e usare USB/IP sul client

Questo articolo spiega come installare e usare usbip su un client OpenSUSE, caricare il modulo kernel vhci-hcd, connettersi a un server USB/IP, montare un dispositivo remoto e staccarlo in sicurezza. Include comandi, output di esempio, checklist rapida e suggerimenti per risolvere i problemi più comuni.

Scopo e varianti di ricerca

Scopo primario: Come installare e usare USB/IP sul client Varianti correlate: configurare usbip client OpenSUSE, montare USB remoto con usbip, vhci-hcd modprobe, collegare dispositivo USB via rete, dissociare dispositivo USB remoto


1 Requisiti preliminari

  • Accesso root sul client.
  • Il server USB/IP deve essere raggiungibile in rete (es. 192.168.0.100).
  • Pacchetto usbip disponibile nei repository (es. OpenSUSE 11.2).
  • Conoscere il BUSID del dispositivo sul server (es. 2-5).

Importante: l’esempio usa OpenSUSE 11.2 come riferimento; su altre distribuzioni i nomi dei pacchetti e i percorsi possono variare.

2 Installazione di usbip sul client

client1:

Per prima cosa installiamo usbip sul client. I passaggi sono gli stessi del server:

yast2 -i usbip

Su OpenSUSE 11.2 usbip si aspetta il file usb.ids in /usr/share/hwdata, ma nella distribuzione di riferimento si trova in /usr/share/usbip/usb.ids — perciò creiamo un collegamento simbolico:

mkdir /usr/share/hwdata
ln -sf /usr/share/usbip/usb.ids /usr/share/hwdata/

3 Caricare il modulo vhci-hcd

Dopo l’installazione carichiamo il modulo kernel vhci-hcd:

modprobe vhci-hcd

Per verificare che il modulo sia stato caricato eseguire:

lsmod | grep vhci_hcd

L’output dovrebbe essere simile a questo esempio:

client1:~ # lsmod | grep vhci_hcd
vhci_hcd 26576 0
usbip_common_mod 25232 1 vhci_hcd
client1:~ #

Per fare in modo che il modulo venga caricato automaticamente all’avvio, aggiungetelo alla variabile MODULES_LOADED_ON_BOOT in /etc/sysconfig/kernel:

vi /etc/sysconfig/kernel

| [...] ## Type: string ## ServiceRestart: boot.loadmodules # # This variable contains the list of modules to be loaded # once the main filesystem is active # You will find a few default modules for hardware which # can not be detected automatically. # MODULES_LOADED_ON_BOOT="vhci-hcd" [...] |

Eseguire quindi:

SuSEconfig

Nota: lasciare inalterato il contenuto del blocco di configurazione quando lo incollate nel file di sistema.

4 Collegarsi al server e enumerare i dispositivi USB

Ora connettiamoci al server usbip e otteniamo la lista dei dispositivi disponibili:

usbip -l 192.168.0.100

(192.168.0.100 è l’indirizzo IP del server usbip.)

Dovreste trovare la pen drive SanDisk nell’output (BUSID 2-5):

client1:~ # usbip -l 192.168.0.100

  • 192.168.0.100
    2-5: SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
    : /sys/devices/pci0000:00/0000:00:04.1/usb2/2-5
    : (Defined at Interface level) (00/00/00)
    : 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

client1:~ #

Per collegare il dispositivo remoto al client, eseguire:

usbip -a 192.168.0.100 2-5

Esempio di output:

client1:~ # usbip -a 192.168.0.100 2-5
8 ports available

port 0 attached
client1:~ #

A questo punto verificate che il dispositivo sia visibile con lsusb:

lsusb

Dovreste vedere il dispositivo USB remoto nell’elenco del client:

client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
client1:~ #

A questo punto potete usare il dispositivo remoto come se fosse locale (montarlo, formattarlo, leggere/scrivere, ecc.).

5 Disconnessione di un dispositivo USB remoto

Per staccare un dispositivo remoto dal client, prima troviamo la porta che usa:

usbip --port

Nell’esempio la porta è 00:

client1:~ # usbip –port
8 ports available

Port 00: at High Speed(480Mbps)
SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
1-1 -> usbip://192.168.0.100:3240/2-5 (remote devid 00020002 (bus/dev 002/002))
1-1:1.0 used by usb-storage
/sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host4/scsi_host/host4/device
Port 01:
Port 02:
Port 03:
Port 04:
Port 05:
Port 06:
Port 07:
client1:~ #

Usiamo il numero di porta per staccare il dispositivo:

usbip -d 00

Esempio di uscita:

client1:~ # usbip -d 00
8 ports available

port 0 detached
client1:~ #

Sul server, per fare in modo che il dispositivo sia nuovamente gestito dal kernel locale (e non esposto in rete), si usa il BUSID (2-5) con l’opzione –other:

server1:

bind_driver --other 2-5

Esempio di output sul server:

server1:~ # bind_driver –other 2-5
(process:3484): DEBUG: write “del 2-5” to /sys/bus/usb/drivers/usbip/match_busid Message: bind 2-5 to other drivers than usbip, complete!
server1:~#

Tornando sul client e rieseguendo lsusb il dispositivo non dovrebbe più essere elencato:

client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
client1:~ #

6 Checklist rapida per l’amministratore

  • Verificare con ping che il server sia raggiungibile.
  • Installare il pacchetto usbip sul client.
  • Creare il symlink per usb.ids se necessario.
  • Caricare vhci-hcd con modprobe e controllare con lsmod.
  • Eseguire usbip -l per trovare il BUSID.
  • Collegare con usbip -a e verificare con lsusb.
  • Per staccare, usare usbip –port per identificare la porta e poi usbip -d .
  • Sul server usare bind_driver –other per riprendere il controllo del dispositivo.

7 Cosa fare quando qualcosa va storto

  • Nessun dispositivo trovato da usbip -l: controllare firewall e che il demone usbip (o lo script server) sia in esecuzione sul server.
  • Modulo vhci-hcd non caricato: rieseguire modprobe e verificare i log di kernel (dmesg).
  • Dispositivo visibile ma non montabile: controllare che non sia già in uso localmente sul server e che i driver appropriati siano presenti sul client (es. usb-storage).
  • Permessi: eseguire i comandi come root o con sudo.

8 Alternative e approcci diversi

  • Samba/NFS/FTP: se lo scopo è solo condividere file, il file-sharing di rete è spesso più semplice e robusto.
  • iSCSI: per dispositivi di storage più complessi o performance più prevedibili su blocchi.
  • Soluzioni commerciali di virtualizzazione USB: offrono interfacce grafiche e gestione centralizzata.

9 Modello mentale e limitazioni

Mental model: usbip crea un canale kernel-to-kernel che trasporta pacchetti USB su TCP/IP; il client vede virtualmente il device come se fosse connesso localmente. Limitazioni comuni: latenza di rete, compatibilità driver, e dispositivi che non tollerano la connessione remota (es. dispositivi con funzioni di alimentazione o sincronizzazione a bassa latenza).

Quando non usare usbip: dispositivi audio in tempo reale o periferiche che richiedono latenza garantita.

10 Glossario rapido (una riga ciascuno)

  • BUSID: identificatore del dispositivo USB sul server (es. 2-5).
  • vhci-hcd: driver kernel per l’emulazione di host controller USB virtuale sul client.
  • bind_driver: comando per associare un dispositivo USB ai driver locali sul server.

11 Note di sicurezza

  • Il traffico USB/IP non è cifrato di default. Se attraversa reti non affidabili, valutare tunnel VPN o SSH.
  • Limitare l’accesso ai server USB/IP tramite firewall e regole di rete.

12 Comandi rapidi (cheese-cut cheat sheet)

  • Installare: yast2 -i usbip
  • Caricare modulo: modprobe vhci-hcd
  • Elencare dispositivi server: usbip -l
  • Allegare dispositivo: usbip -a
  • Verificare porte: usbip –port
  • Sganciare dispositivo: usbip -d
  • Riprendere dispositivo sul server: bind_driver –other

Collegamenti utili

Riepilogo

Seguendo i passi descritti potete installare e usare usbip su un client OpenSUSE, montare dispositivi USB remoti e staccarli in modo controllato. Se operate in reti non fidate, proteggete il traffico USB/IP con VPN o SSH.

Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/