jloehr / HID-Wiimote

Windows Device Driver for the Nintendo Wii Remote
GNU General Public License v3.0
215 stars 45 forks source link

Rumble / Speaker / etc. #9

Closed larsiusprime closed 9 years ago

larsiusprime commented 9 years ago

Sorry to load you down with issues :)

I was wondering what the interface for accessing various features on the Wiimote where instead of receiving input from the device, you're sending input to the device. This includes rumble and the wiimote speaker. I imagine the first is much easier than the second.

Is this functionality possible with the driver?

jloehr commented 9 years ago

AFAIK Rumble is not supported by HID.

See http://www.usb.org/developers/hidpage/Hut1_12v2.pdf for the usage pages.

For the other features like Speaker and the LEDs (which are internally used for another purpose) there are some usage pages that may fit, but i think nobody uses them. Especially in their games. And i think DirectInput does not have support for anything like them as well.

larsiusprime commented 9 years ago

Ah well, that's okay then I guess. How do they do rumble on the X360 I wonder?

jloehr commented 9 years ago

The Xbox 360 Controllers have a different class driver (XUSB), that exposes an interface for the XInput API. So the communication with the device is proprietary (But i am working on that so my driver serves the XUSB class driver as well, see #4)

programminghoch10 commented 8 years ago

Can you make it like that you can use the speaker as an audio output device and that the leds can do a little bit more than showing the connection status like batery status or something? And it would be cool if you could use the axis(es) from motion plus? (maybe wrong here but i wanted it to be mentioned)

jloehr commented 8 years ago

Speaker or Sound Output is not part of the HID Specs, so that won't be implemented anytime soon. Additional the Wiimote Speaker only supports certain Audio codecs, as well as those are not fully reverse engineered. So implementing such, would require a huge amount of work.

Regarding the LEDs it would be possible to provide an Output report, however no game excepts and therefore uses LEDs on a Gamepad. So they won't be used by anything, but programs specifically written for the Wiimote. The goal of this project is to make the Wiimote available as generic Gamepad and not to provide another API.

The Motion Plus Extension is kind of on my list. However it is just a three axis gyro sensor. Such gyro sensor reports angular motion, no orientation. So directly mapping the data to axes won't be useful. It would be only useful to make the orientation more accurate on the short term. Additionally the Motion Plus needs some additional care regarding activation, data reading and data passing, when another extension is connected. So currently it is not worth it, as there are more important tasks.