The XWiimote software stack is an approach to write Linux drivers for the Nintendo Wii Remote. Long time cwiid and wiiuse were the only choices to use Wii Remotes under Linux. However, both tools very badly designed. They require the application that uses the device to perform a Bluetooth inquiry, connect to the device and run a user-space driver instead of adding the device to the Linux input devices and let applications use them with well-defined APIs like linux-input / evdev. An application does not need to connect to keyboards by itself so why should it need to connect to Wii Remotes? Also the libraries provided by both projects either required threads or global objects which is horrible to use in most applications. This is why the XWiimote project was created.
The XWiimote project consists of:
- hid-wiimote.ko: This is the kernel HID driver for Wii Remotes. It is available upstream since linux-3.1. With linux-3.11 full extension support is also available. Development takes place at firstname.lastname@example.org. See the source code for more information. The driver provides generic access to the Wii Remote protocol and needs no configuration. It is available in most distributions by default. Load it with `modprobe hid-wiimote`.
- BlueZ wiimote plugin: The BlueZ stack is the official Linux Bluetooth stack. It is available in all major distributions. Since bluez-5 it contains a wiimote plugin. It allows pairing with Wii Remotes like with any other Bluetooth device. Wii Remotes do not follow the Bluetooth specification recommendations so this plugin is needed. If you run an older BlueZ version or if your Wii Remote is not detected as a Wii Remote, you can simply connect without Pairing/Bonding and everything should work fine without that plugin.
- xwiimote tools: The xwiimote-tools are the user-space part of the driver. They are not required but can hide the complex kernel API behind an easy library API (libxwiimote). They also provide handy tools like xwiishow which help testing Wii Remote connections. I includes several man-pages about the software and should be the main entry point if you want more information about the whole XWiimote software stack.
- xf86-input-xwiimote: Wii Remotes can be used as input devices for all kind of applications. However, most Linux systems use X.Org as desktop environment. Therefore, we wrote an input driver for X.Org. It can provide mouse-emulation and several other handy features based on Wii Remotes. See its man-page (man xorg-xwiimote) for the many configuration options.
The software is extended regularly and all contributions are welcome. Following a collection of useful links about XWiimote: