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

Errore Python oxzep7: come risolvere
Sviluppo Python

Errore Python oxzep7: come risolvere

Recuperare file dopo aver svuotato il Cestino su Mac
Recupero dati

Recuperare file dopo aver svuotato il Cestino su Mac

Numeri falsi nelle sintesi AI: come proteggerti
Sicurezza

Numeri falsi nelle sintesi AI: come proteggerti

Usare iMessage su Android con AirMessage
Guide tecniche

Usare iMessage su Android con AirMessage

Avviare Windows Server 2019 in Modalità Provvisoria
Amministrazione server

Avviare Windows Server 2019 in Modalità Provvisoria

Collegamenti rapidi Snapchat: guida completa
Social Media

Collegamenti rapidi Snapchat: guida completa