How To Set Up A USB-Over-IP Server And Client With Ubuntu 10.04 - Page 2

3 Installing And Using USB/IP On The Client


We must install usbip on the client as well:

aptitude install usbip

Afterwards we load the vhci-hcd kernel module:

modprobe vhci-hcd

To check if it really got loaded, run:

lsmod | grep vhci_hcd

The output should be similar to this one:

[email protected]:~# lsmod | grep vhci_hcd
vhci_hcd               19800  0
usbip_common_mod       13605  1 vhci_hcd
[email protected]:~#

To make sure that the module gets loaded automatically whenever you boot the system, you can add it to /etc/modules:

vi /etc/modules


Now connect to the usbip server and get a list of available USB devices:

usbip -l

( is the IP address of the usbip server.)

You should find the SanDisk USB flash drive in the output (BUSID 1-1):

[email protected]:~# usbip -l
     1-1: SanDisk Corp. : Cruzer Micro Flash Drive (0781:5151)
        : /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1
        : (Defined at Interface level) (00/00/00)
        :  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

[email protected]:~#

To attach that device to the client, run:

usbip -a 1-1

[email protected]:~# usbip -a 1-1
8 ports available

port 0 attached
[email protected]:~#

Now run...


... and you should find the remote USB device in the output on the client:

[email protected]:~# lsusb
Bus 001 Device 002: ID 0781:5151 SanDisk Corp. Cruzer Micro 256/512MB Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[email protected]:~#

You can now use the remote USB device as if it was a local USB device (e.g. mount it, format it, write to it, read form it, etc.).


4 Detaching A Remote USB Device

A remote USB device can be detached as follows:



usbip --port

... to find out the port that the remote USB device uses on the client - in this case it's port 00:

[email protected]:~# usbip --port
8 ports available

Port 00: <Port in Use> at High Speed(480Mbps)
       SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
       1-1 -> usbip://  (remote devid 00010002 (bus/dev 001/002))
       1-1:1.0 used by usb-storage
Port 01: <Port Available>
Port 02: <Port Available>
Port 03: <Port Available>
Port 04: <Port Available>
Port 05: <Port Available>
Port 06: <Port Available>
Port 07: <Port Available>
[email protected]:~#

We need the port number to detach the device:

usbip -d 00

[email protected]:~# usbip -d 00
8 ports available

port 0 detached
[email protected]:~#

On the server, we use the BUSID (1-1) to bind the USB device to the local system (the --other switch binds the device to the local system so that it is not available over the network anymore):


usbip_bind_driver --other 1-1

[email protected]:~# usbip_bind_driver --other 1-1
** (process:7333): DEBUG: write "del 1-1" to /sys/bus/usb/drivers/usbip/match_busid
** Message: bind 1-1 to other drivers than usbip, complete!
[email protected]:~#

Now go back to the client and check if the remote USB device is still available:



If all goes well, it shouldn't be listed anymore:

[email protected]:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[email protected]:~#


Falko Timme

About Falko Timme

Falko Timme is an experienced Linux administrator and founder of Timme Hosting, a leading nginx business hosting company in Germany. He is one of the most active authors on HowtoForge since 2005 and one of the core developers of ISPConfig since 2000. He has also contributed to the O'Reilly book "Linux System Administration".

Share this page:

Suggested articles

0 Comment(s)

Add comment