└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Implementations 2 | 3 | According to the protocol, USB/IP has two roles: 4 | 5 | * USB/IP Server: Providing USB Devices, usually implementing USB Device Controller (UDC) and device functions 6 | * USB/IP Client: Using USB Devices, usually implementing USB Host Controller Interface (HCI) 7 | 8 | ## USB/IP Server 9 | 10 | There are quite a few USB/IP Server implementations, with different layers of abstraction implemented. 11 | 12 | * usbip-host.ko: Linux Kernel USB device driver, not implementing UDC or device function 13 | * usbip-vudc.ko: Linux Kernel virtual UDC device driver, implementing UDC, device function attached using Linux USB Gadget 14 | * [usbip\_windows](https://sourceforge.net/projects/usbip/files/usbip_windows/): Windows USB device driver, ten years ago from USB/IP homepage, signed driver (signed by ReactOS) 15 | * [dorssel/usbipd-win](https://github.com/dorssel/usbipd-win): Windows USB device driver, not implementing UDC and device function, driver from VBox, signed driver 16 | * [cezanne/usbip-win (usbip\_stub)](https://github.com/cezanne/usbip-win): Windows USB driver, driver self written and self signed 17 | * [jiegec/usbip](https://github.com/jiegec/usbip): written in Rust 18 | + libusb backend: as if it is a USB driver in libusb compatible platform (e.g. MacOS, BSD, Android, Haiku, Solaris) 19 | + device: hid keyboard 20 | + device: cdc acm serial 21 | * [Sawchord/usbip-device](https://github.com/Sawchord/usbip-device): written in Rust 22 | + device: serial echo 23 | + device: twitching mouse 24 | * [ellerh/softfido](https://github.com/ellerh/softfido): written in Rust 25 | + device: FIDO2/U2F authenticator 26 | * [MarkOstis/USBIP-Virtual-USB-Device](https://github.com/MarkOstis/USBIP-Virtual-USB-Device): wrriten in Python 27 | + device: keyboard 28 | + device: mouse 29 | * [Gnuk](http://www.fsij.org/doc-gnuk/index.html): using [Chopstx](https://salsa.debian.org/gnuk-team/chopstx/chopstx), which can emulate a whole MCU 30 | + device: OpenPGP Card V2.0 31 | * [canokeys/canokey-usbip](github.com/canokeys/canokey-usbip): written in C 32 | + device: U2F / FIDO2 with ed25519 and HMAC-secret 33 | + device: OpenPGP Card V3.4, [Supported Algorithm List](https://docs.canokeys.org/userguide/openpgp/#supported-algorithm) 34 | + device: PIV (NIST SP 800-73-4) 35 | + device: HOTP / TOTP 36 | * [chegewara/esp32-usbip-poc](https://github.com/chegewara/esp32-usbip-poc): written in C++ 37 | + usbip client can access it via a Wifi named "esp32" 38 | + device: simple usb device (like serial) attached to the ESP32S2/S3 SoC (acting as a USB host) 39 | * [Sawchord/usbip-device](https://github.com/Sawchord/usbip-device), [trussed-dev/pc-usbip-runner](https://github.com/trussed-dev/pc-usbip-runner) and [Nitrokey/nitrokey-3-firmware](https://github.com/Nitrokey/nitrokey-3-firmware): written in Rust 40 | + device: FIDO 41 | + device: CCID 42 | 43 | ## USB/IP Client 44 | 45 | * vhci-hcd.ko: Linux Kernel virtual HCI driver 46 | * [cezanne/usbip-win (usbip\_vhci)](https://github.com/cezanne/usbip-win): Windows virtual HCI driver, driver self written and self signed 47 | * [forensix/libusbip](https://github.com/forensix/libusbip): C library on top of libusb 48 | 49 | 54 | 55 | ## User space tools 56 | 57 | * [usbip/usbipd inside Linux source tree](https://github.com/torvalds/linux/tree/master/tools/usb/usbip): get info and manipulate usbip kernel module 58 | * [alunux/usbip-service-discovery](https://github.com/alunux/usbip-service-discovery): GUI 59 | * [USBIPManager](m-antonov/USBIPManager): GUI 60 | --------------------------------------------------------------------------------