Skip to content

Latest commit

 

History

History
53 lines (43 loc) · 2.83 KB

README.md

File metadata and controls

53 lines (43 loc) · 2.83 KB

Implementations

According to the protocol, USB/IP has two roles:

  • USB/IP Server: Providing USB Devices, usually implementing USB Device Controller (UDC) and device functions
  • USB/IP Client: Using USB Devices, usally implementing USB Host Controller Interface (HCI)

USB/IP Server

There are quite a few USB/IP Server implementations, with different layers of abstraction implemented.

  • usbip-host.ko: Linux Kernel USB device driver, not implementing UDC or device function
  • usbip-vudc.ko: Linux Kernel virtual UDC device driver, implementing UDC, device function attached using Linux USB Gadget
  • usbip_windows: Windows USB device driver, ten years ago from USB/IP homepage, signed driver (signed by ReactOS)
  • dorssel/usbipd-win: Windows USB device driver, not implementing UDC and device function, driver from VBox, signed driver
  • cezanne/usbip-win (usbip_stub): Windows USB driver, driver self written and self signed
  • jiegec/usbip: written in Rust
    • libusb backend: as if it is a USB driver in libusb compatible platform (e.g. MacOS, BSD, Android, Haiku, Solaris)
    • device: hid keyboard
    • device: cdc acm serial
  • Sawchord/usbip-device: written in Rust
    • device: serial echo
    • device: twitching mouse
  • ellerh/softfido: written in Rust
    • device: FIDO2/U2F authenticator
  • MarkOstis/USBIP-Virtual-USB-Device: wrriten in Python
    • device: keyboard
    • device: mouse
  • Gnuk: using Chopstx, which can emulate a whole MCU
    • device: OpenPGP Card V2.0
  • canokeys/canokey-usbip: written in C
    • device: U2F / FIDO2 with ed25519 and HMAC-secret
    • device: OpenPGP Card V3.4, Supported Algorithm List
    • device: PIV (NIST SP 800-73-4)
    • device: HOTP / TOTP

USB/IP Client

User space tools