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 IP packets and transmits them between computers. Download the latest code.

about

The 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 IP packets and transmits them between computers. Original USB device drivers and applications can be also used for remote USB devices without any modification of them. A computer can use remote USB devices as if they were directly attached; for example, we can ...

  • USB storage devices: fdisk, mkfs, mount/umount, file operations, play a DVD movie and record a DVD-R media.
  • USB keyboards and USB mice: use with linux console and X Window System.
  • USB webcams and USB speakers: view webcam, capture image data and play some music.
  • USB printers, USB scanners, USB serial converters and USB Ethernet interfaces: ok, use fine.

It is currently implemented as Linux device drivers and available under the open source license GPL. Its I/O performance is enough practical in local area network for all types of devices, including isochronous devices, without any modification of Linux-original USB device drivers.

Documentation

Overview

In a client host, the VHCI (Virtual Host Controller Interface) driver is implemented as a USB host controller driver. The VHCI driver emulates a real USB host controller interface for virtual attachment/detachment, enumeration and initialization of remote USB devices. It encapsulates USB request blocks and then transmits USB/IP packets to remote server hosts. In a server host, the Stub driver is implemented as a USB per-device driver. The Stub driver decapsulates USB/IP packets into USB requests and then submit them to real USB devices.

usbip-design

USB/IP Design Overview

The project Wiki is here. See also source code and below papers.

  • USB/IP - a Peripheral Bus Extension for Device Sharing over IP Network. Takahiro Hirofuchi, Eiji Kawai, Kazutoshi Fujikawa, and Hideki Sunahara. In the Proceedings of the FREENIX Track: USENIX Annual Technical Conference, pp. 47-60, April 2005. (Awarded FREENIX Track Best Paper!)
  • USB/IP: A Transparent Device Sharing Technology over IP Network. Takahiro Hirofuchi, Eiji Kawai, Kazutoshi Fujikawa, and Hideki Sunahara. IPSJ Transactions on Advanced Computing Systems, Vol. 46, No. SIG11(ACS11), pp. 349-361, August 2005. (Also appeared in IPSJ Digital Courier.)

Install

You need to compile both kernel modules and utility programs. See READMEs in tarball.

Usage

See READMEs in tarball.

TODO & Future Plan

Read Todo list in the project Wiki.

FAQ

Read FAQ in the project Wiki.

  • "client" and "server" are confusing...
    A server host has physical USB devices which are exported to a client host. In the server host, load usbip_common_mod.ko and vhci-hcd.ko, and then use usbipd. The client host imports a USB device virtually; the client host may not have a real USB device. In the client host, load usbip_common_mod.ko and usbip.ko, and then use usbip.
  • USB/IP is stable ?
    It basically works for most USB devices under LAN (Gb Ethernet is better). It has minimum features (e.g., attach/detach) and your contribution is welcome.
  • Do you have a plan to develop the MS Windows client of USB/IP ?
    Some people are trying to develop it. But, the Host Controller API of MS Windows is not well-documented. This issue was discussed in the project forum in sourceforge.net.
  • Does your USB/IP implementation have compatibility with other similar products?
    No, currently.

Screenshots

usbview

A remote USB webcam with an ov511 chip is virtually attached to a computer. We can see ov511 under USB VHCI Root Hub.

usbview screenshot

Desktop

xawtv is working for a remote USB webcam. A remote USB-HDD is also attached to the computer.

xawtv screenshot

Download

Latest Release

Download is available from sourceforge.net.

SVN Repository

See this instruction.

Community

Mailing Lists

Public Forums

Links

Contact

Normally, please use the above mailing lists and forums.

  • usbip-devel (the character) lists.sourceforge.net (Recommended)
  • Takahiro Hirofuchi < hirofuchi (the character) users.sourceforge.net >