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, usually implementing USB Host Controller Interface (HCI)
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
- chegewara/esp32-usbip-poc: written in C++
- usbip client can access it via a Wifi named "esp32"
- device: simple usb device (like serial) attached to the ESP32S2/S3 SoC (acting as a USB host)
- Sawchord/usbip-device, trussed-dev/pc-usbip-runner and Nitrokey/nitrokey-3-firmware: written in Rust
- device: FIDO
- device: CCID
- vhci-hcd.ko: Linux Kernel virtual HCI driver
- cezanne/usbip-win (usbip_vhci): Windows virtual HCI driver, driver self written and self signed
- forensix/libusbip: C library on top of libusb
- usbip/usbipd inside Linux source tree: get info and manipulate usbip kernel module
- alunux/usbip-service-discovery: GUI
- USBIPManager: GUI