From ArchWiki
Jump to navigation Jump to search

From the USB/IP site:

USB/IP Project aims to develop a general USB device sharing system over IP network. To share USB devices between computers with their full functionality, USB/IP encapsulates "USB I/O messages" into TCP/IP payloads and transmits them between computers.


Install usbip.


Server setup

The server should have the physical USB device connected to it, and the usbip_host USB/IP kernel module loaded. Then start and enable the USB/IP systemd service usbipd.service.

List the connected devices:

$ usbip list -l

Bind the required device. For example, to share the device having busid 1-1.5:

$ usbip bind -b 1-1.5

To unbind the device:

$ usbip unbind -b 1-1.5

After binding, the device can be accessed from the client.

Binding with systemd service

In order to make binding persistent following systemd template unit file can be used:

 Description=USB-IP Binding on bus id %I usbipd.service
 ExecStart=/usr/bin/usbip bind -b %i
 ExecStop=/usr/bin/usbip unbind -b %i  

So, e.g., to share the device having busid 1-1, one should start and/or enable usbip-bind@1-1.service.

Client setup

Make sure the vhci-hcd kernel module is loaded.

Then list devices available on the server:

$ usbip list -r server_IP_address

Attach the required device. For example, to attach the device having busid 1-1.5:

$ usbip attach -r server_IP_address -b 1-1.5

Disconnecting devices

A device can be disconnected only after detaching it on the client.

List attached devices:

$ usbip port

Detach the device:

$ usbip detach -p port_number

Unbind the device on the server:

$ usbip unbind -b busid
Note: USB/IP by default requires port 3240 to be open. If a firewall is running, make sure that this port is open. For detailed instruction on configuring the firewall, go to Category:Firewalls

Man page

See usbip(8).

See also