VIIPER Documentation
Welcome to the VIIPER documentation!
VIIPER is a tool to create virtual input devices using USBIP.
Quick Links
What is VIIPER?
VIIPER creates virtual USB input devices using the USBIP protocol.
These virtual devices appear as real hardware to the operating system and applications, allowing you to emulate controllers, keyboards, and other input devices without physical hardware.
VIIPER uses USBIP to handle the USB protocol layer, so device emulation happens in userspace code instead of kernel drivers.
This means you install USBIP once (built into Linux, usbip-win2 for Windows), and VIIPER can emulate any device type without installing additional drivers.
New device types can be added with pure Go code, no kernel programming required.
Beyond device emulation, VIIPER can proxy real USB devices for traffic inspection and reverse engineering.
All devices can and must be controlled programmatically via an API.
Key Features
- ✅ Virtual input device emulation over IP using USBIP
- ✅ Xbox 360 controller emulation (virtual device); see Devices › Xbox 360 Controller
- ✅ HID Keyboard with N-key rollover and LED feedback; see Devices › Keyboard
- ✅ HID Mouse with 5 buttons and horizontal/vertical wheel; see Devices › Mouse
- 🚧 Extensible architecture allows for more device types (other gamepads, specialized HID)
- ✅ USBIP server mode: expose virtual devices to remote clients
- ✅ Proxy mode: forward real USB devices and inspect/record traffic
- ✅ Cross-platform: works on Linux and Windows
- ✅ Flexible logging (including raw USB packet logs)
- ✅ API server for device/bus management and controlling virtual devices programmatically
- ✅ Multiple client SDKs for easy integration; see Client SDKs
MIT Licensed