Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time


Emulating usb devices with python using the USB/IP protocol.

This work is heavily based on this repository. However, there a many differences, mainly because this new version supports any number of devices. It is still missing a proper detach protocol.


The whole USBIP code is in the file. The best way to understand how to implement a device is to look at how the wiimote example is implemented or to see the example of lcgamboa's repository.

Using with Windows

Using USBIP on Windows can be a huge pain. I have done a lot of research before finally getting it to work correctly. Therefore, here are the things you should know :

  • If you've already installed the USBIP driver, uninstall it, it causes BSODs
  • If you've already downloaded the USBIP binary, remove it
  • Use this driver & binary instead (the driver is located in the output folder)
  • This is not directly related to this post, but if you're having issues attaching a device from Windows to a linux host, this is because usbip has been merged into the kernel since 3.14. However, no need to downgrade, there is a fix !

Wiimote example

This repository contains a fully functional USBIP wiimote example. It uses cwiid to communicate with the wiimotes. Everything is implemented, including using multiple wiimotes and using a nunchuk. All wiimotes are represented as a Generic USB Joystick with USBIP, they are therefore accessible without any specific driver. In order to use it, launch python and follow the instructions.

Wiimote menu

Pressing the HOME button on a wiimote will put it into a "menu" mode. There are four entries that can be selected using the MINUS and PLUS buttons. Activating the selected entry is made by pressing the A button :

  1. If nunchuk is plugged, send its values instead of the values of the accelerometer
  2. Easy "Mario Kart" switch. Remaps some buttons to use the wiimote as a steering wheel
  3. Trigger a new wiimote scan to add new wiimotes (useful in a "headless" system)
  4. Disconnect this wiimote


USBIP protocol fully implemented in python + Full wiimote support using cwiid







No releases published


No packages published