GithubHelp home page GithubHelp logo

jloehr / hid-wiimote Goto Github PK

View Code? Open in Web Editor NEW
216.0 216.0 45.0 1.36 MB

Windows Device Driver for the Nintendo Wii Remote

License: GNU General Public License v3.0

C 63.72% C# 24.92% C++ 9.55% JavaScript 1.81%

hid-wiimote's People

Contributors

jloehr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hid-wiimote's Issues

Minor HID descriptor issue

In HID-Wiimote/HID Wiimote/HIDDescriptors.c I think the following:

0x65, 0x12, // UNIT (SI Rot:Angular Pos)

...should be:

0x65, 0x14, // UNIT (English Rot:Angular Pos in Degrees)

...given that the logical values that the usage can have is 1 to 8, and the corresponding physical values are 0 to 315 in 45 degree increments i.e. physical = (logical - 1) * 45

The SI rotational unit is radians not degrees. Probably doesn't matter much...just sayin' :)

Verify Read Memory Data size on third party devices

Third party Wii Remotes and Balance Boards may report a wrong size for the valid bytes in a read memory reports (0x21).

BigBen Balance Board seems to always set the size nibble to 0xF, i.e. 16 Bytes, even if non multiple of 16 is requested. For the calibration data that results in writing additional 8 Bytes beyond the array and Balance Board State. Though that needs verification, if that causes any issues.

Windows 10 Connectivity Issues

Hi Julian, I just wanted to say thank you for such awesome work so far on getting the Wiimote working in Windows, it's very much appreciated.

I looked around previously for GlovePIE and couldn't find it, and FreePIE sort of worked at least with buttons but didn't include IR camera support, which is what I'm looking to use. I'm really wanting to use the Wiimote as an IR Mouse in Windows 10 on a 3 monitor setup. I'm running Windows 10 on 2 Desktop PCs, a tablet, and a MacBook Pro (via Bootcamp) at home.

The issue I'm having is I can't seem to get the Wiimote working right in Windows 10 on any PC in the mix. Also this is an older non -TR Wiimote, it's an RVL-CNT-01.

Steps:

  • Downloaded the IR-Mouse 0.2.6.2 64-bit package.
  • Went to cmd terminal as administrator and ran Bcdedit.exe -set TESTSIGNING ON
  • Rebooted (now I get "Test Mode" in the lower right of Windows)
  • Ran TinyInstaller as admin.
  • Everything looks like it installs fine.
  • I go to pair it, press 1 and 2 rapidly on the Wiimote, it takes several minutes for it to pick up that the Wiimote is there, eventually I get the pairing screen, hit next, by this point it MAY have already turned off, and if so that looks like it causes a lot of problems with pairing, sometimes I have to repeat the pairing process.
  • After the first install it got stuck on loading the drivers, eventually ended. I was getting no results still, so I attempted to reboot.
  • When I go to either Bluetooth screen (under Devices and Printers under the old Control Panel, or under Settings / Bluetooth), it looks as though the device is paired, but it's not working, no blue light to show connectivity after the first time.
  • Under Device Manager it shows the Wiimote Device with your driver loads fine under Human Interface Devices, looks like the Bluetooth device it's still using Microsoft's drivers, but when I look under Devices and Printers at the hardware properties it shows HID-compliant mouse, Nintendo RVL-CNT-01, then Wiimote Device (your driver).
  • Despite that things look fine (or at least I assume they are), no movement occurs with the mouse and none of the buttons seem to work (also I don't know which one should be the left click).

Also I tried downloading the source from here and compiling in VS2015 Community. After some work I got things compiling everything up to the BuildAndZip project. I'm having issues with the BuildAndZip project on both Debug and Release. It simply doesn't find the right directories on Debug because the project is hardcoded to look for a Release directory somewhere it looks like, and on Release it's looking for a DpInst.exe that seems to no longer be included in the Windows 10 WDK, and all of my SDKs are targeting Windows 10 SDK/WDK since I'm on Windows 10. I'd like to also be able to use the debugger but I have no idea yet how to get this going on my machine(s) as this is my first time ever delving into Windows drivers.

If I can get all this to work, I want to delve into some other gaming related things, like turning my Windows 10 tablet into a virtual mouse/keyboard/joystick/midi/flightsim controller as well for my desktops via somehow making a virtual USB driver (not as an RDP client, but being able to design button/axes layouts for controls on the tablet itself and have it generate the HID and communicate with the desktops as a virtual controller).

IR-Mouse and Gamepad simultaneous

If possible, it would be great to have the IR Camera pointer mapped to two independent analog axes, would be most useful in "just wiimote" and "wiimote + nunchuk" combinations. Not really necessary for pro controller if the two analog sticks are eating up axes, though if there's room would be good there too in case you need to quickly use the wiimote as a screen pointer to click something.

Configuration Tool: Basic

Extent the installer to an all round configuration tool:

  • Show certificate installation status
  • Button to reinstall certificate
  • Show Testsigning/Driver Validation Signature status
  • Check and button to install driver package
  • Show connected Controllers
  • Switch Driver Mode for each Controller individually
  • Rotation-Axes(Motion-Sensors) deactivation toggle
  • Wii U Pro/Classic Controller Shoulder/Trigger toggle
  • Toggle to have DPad as normal Buttons
  • Toggle to switch DPad and Analog Stick

Cannot sync Wiimote model PT BR 04FC under Windows 10 v1709

I'm running the Windows 10 Fall Creators Update (v1709) on my laptop, and while the driver appears to install correctly, and I can get the Wiimote added to my list of devices using the "Join a Personal Area Network" solution, the controller settings show nothing, and attempting to update the driver claims I have the latest version.

I'm using Test Mode when attempting to use the Wiimote, and my laptop's Bluetooth chipset is Intel Wireless Bluetooth, with driver version 20.0.0.11.

Guitar Hero "Guitar" support: whammy, tilt and axis

Hi,

I tested a Gibson Guitar Hero III controller and "whammy bar" and "tilt" are not recognized/working.

Standing to wikipedia and some other web resources both should be implemented as axis.

I don't know if "tilt" or "whammy bar" are connected to additional axis inside the guitar shell or they're just bond to one of the wiimote's internal axis rotation, but here will follow some observations that may be useful for debug purposes:

  1. X and Y axis movement seems to be bond to their respective rotation, so when i move the little joystick on the guitar, X and Y rotation move along (see images at bottom) instead of when nunchuck is plugged in, where X and Y rotation are indipendent from the nunchuck joystick and follow wiimote internal axis.
  2. Z axis and rotation a constantly on 0.
  3. Not much of an issue but... home button is not working (with guitar plugged 1, 2 and A are remapped to 11, 12 and 13 and don't replicate "green", "red" and "yellow"...so there is no much button left to use...maybe it's a feature)

joystick still
image

Joystick at bottom
image

Joystick at top
image

Joystick at left
image

Joystick at right
image

Guitar Hero Extensions Not entirely functional

One button on the Guitar Hero Drum Kit and Guitar Hero Guitar extensions are not being recognized by the device driver. On both extensions, I believe that the 3rd button is not being recognized. The Drum pad has 5 pads. These pads represent buttons one through 5. The 3rd pad (Blue Pad) does not trigger a button press in the Game Controller Test dialog. The same applies to the guitar. The 5 finger buttons represent 1 through 5, and the 3rd button (Yellow Button) does not trigger a button press in the Game Controller Test Dialog.

I have used both instruments with GlovePIE which maps the Game pad buttons to keyboard key presses, and all of the guitar buttons and drum pads work using it.

Wiimote as Gamepad

I have discovered that when trying to play with a game without controller support, the wiimote never works. This is odd to me because I have tried using it with programs like Xpadder or JoytoKey, which emulate the wiimote with keyboard keys, but i guess the games still view it as a controller. I was just wondering if there was any way that the wiimote could be viewed as a keyboard device rather than a game controller or mouse. Or maybe is there some way i can remap the d-pad mouse option for the buttons on the wiimote.

Fix Whammy Bar and Touchbar

Change mapping of those two from Rotation (RX & RY) to Z and RZ.

Also on

GuitarState->WhammyBar = 0xFF & ((0x1F & GuitarData[2]) << 3);

GuitarState->WhammyBar = 0xFF & ((0x1F & GuitarData[2]) << 3);
GuitarState->TouchBar = 0xFF & ((0x1F & GuitarData[3]) << 3);

Index 2 is the TouchBar and Index 3 is the Whammy Bar. So swap those.

Wii MotionPlus Inside supported?

I have a wiiremote with motion plus connected with your driver. But I can't find the additional axis of the motion plus gyros. Is MotionPlus (inside the remote) supported?

Guitar Hero Buttons are mapped incorrectly

I'm using the Wii Guitar to try to play GH3PC, but the buttons aren't mapped in the right order.
The game detects red as orange and orange as red, and all other fret buttons don't work. Strum bar doesn't work, and the rest of the buttons on the guitar work in some cases. This issue can be solved by using Joy2Key or similar program, but Joy2Key doesn't work in every menu and as a result sometimes you can't navigate the game at all.

XUSB Support

Let the Wii Remote appear as Xbox 360 Controller, so it can be accessed by XInput.

Direct/Raw/PassThrough Mode

Haven't decided on the final name yet.

Let third party application have access to the Wii Remote as they would if no driver was installed.

  • Add original Wii Remote HID Descriptor to Gamepad.
  • Add Mode Selector and Device Interface Setter
  • Implement Mode Switching (reset Wii Remote, etc.)

Wii U Pro Controller LEDs

The LEDs of the Wii U Pro Controller are not representing the battery level correctly.

For the Wii U Pro Controller the 0x20 Status Information Report does not report valid battery information, instead the battery information of its extension data must be used.

Separate Shoulder Trigger Axis

Each shoulder trigger for the Classic Controller and Wii U Pro Controller should have it's own analog axis. Currently they cancel out.

Can't use balance board

Wiimote+nunchuck works fine on my Win 8.1 x64 system, but the balance board doesn't. The front button registers as button 3, but joy.cpl doesn't show any movement on any of the axes.

Power button

Hey I got a short simple question:
Can you make use of the power button?
It would be nice as an extra button or to start a specific game.

Rumble / Speaker / etc.

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?

Doppelbelegung "WiiMote + Nunchuck"

Wenn an die WiiMote ein Nunchuck verbunden wird, ist die A-Taste der WiiRemote als auch die Hometaste auf den "Virtuellen Button" 1 gemappt.

Nunchuck

There is a little problem:
When i plug in the nunchuck then all the buttons change and the nunchuck and controller button field (i don't know how it's called) also change witch means that it isn't calibrated and is a little bit at the right so i can't use the nunchuck properly

Control Center silent crash

For some users the Control Center silently crashes on start up if the driver package is installed.
It seems to also occur right after installing the package and then closing the Installer window. So it can be narrowed down to some issue with the Control Center Main Window. A silent crash usually means some unhandled exception is thrown.

Change Balance Board Implementation to use relative Values

Current Implementation is using the calibrated sensor data. However the sensor data are absolute weight values. Therefore a minimum body weight is needed to achieve the max or min value for an axis.

The implementation should be changed to take the body weight into account and transform the sensor data into relative values.

One Idea would be to interpolate the sensor data to the body weight (accumulated value of all four sensors). Additionally it might be good to use 0.5 as max value, so the person does not have to move its full body weight to achieve the max value.

Again about Dolphin bar

Your project is very good. VERY GOOD! But the support of the dolphin bar will make it superb. Unfortunately I'm very bad at c and c ++. But you already have a ready project and I'm sure that there are a lot of ideas. In the fourth mode, the dolphin bar generates 4 sub-devices. It would be very cool for everyone to create a virtual mouse in the system. you have already implemented it in ir-mouse. And connection to dolphin bar I think so it is possible to look in projects touchmote and wiihook. but the first works better with respect to accuracy. And it creates a virtual joystick, not a mouse. Some retro game emulators, for example retroarch, added work through the row driver. So there is support for multi-mouse. There remained the problem of translating the dolphin bar into this very multi mouse. And thanks to you people will be able to use multi light guns with wiimotes without problems. And after visiting many forums in search of solutions to the problem of multi light guns, I concluded that the problem is very urgent. I really wanted you to become a pioneer in this field. And looking at your programming abilities, I think for you this is not a very big problem. But I can not say this 100%. My language is delphi. And I can not properly assess this task.

Also I apologize in advance(sorry) for my English. English is not my native language either. And thanks for taking the time to read this message.

Cannot Install driver

When I try to run the installation wizard for the driver, the installation fails. I have tried installing around 5 or 6 times and it failed every single time. I am trying to install the 64 bit version for windows 10

Driver Signing

Hey there! I'm very interested in this tool, I work with the HaxeFlixel team and I'm currently working on adding Wii Remote support. I was previously using the DolphinBar accessory's built-in support, but it has some limitations when used in Gamepad Mode (Mode 3) and I'm wondering if your tool might be the best option. That said, for us to really use this project "officially" it would have to be something that a HaxeFlixel game developer could ship with their game as part of the installation process, and that means a properly signed driver -- I certainly don't mind booting into safe mode, but a regular end-user can't be expected to do that.

I understand that getting a signed driver can be a bit of a challenge so I'd just like to step in and offer to help -- what's standing in your way to getting an officially signed driver? Paperwork? Money?

There's probably enough people interested in seeing this solution be more widely available that I could try to make some connections to speed the process up. Just let me know what you need.

Configuration of Wiimote (Mouse, Keyboard, Joypad -> DirectInput, XInput, Raw)

I read a about a configuration application to configure the wiimote.
The configuration shall include button mappings (Directinput and Xinput).
However I would like to know if it is possible to add a mouse/keyboard configuration.
Means to adjust the dead zone of the mouse pointer, to map mouse/keyboard keys to the wiimote buttons and movement/tilt sensors.
Especially the mouse pointer would be interesting. Many applications like browser, apps, games could be controlled via wiimote. However no solution (dolphin bar or Touchmote) have an appropriate configuration to have a smooth mouse cursor movement. The mouse cursor is always shaking due to the sensitivity of the wiimote.

Code 52 when selecting driver

I have test mode enabled, and I followed the instructions on the website carefully, but after selecting "Update Driver" > "Browse my computer for driver software" > "Let me pick from a list of available driver software" > "Wiimote Device" > "Next"

I get
"Windows cannot verify the digital signature for the drivers required for this device. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source. (Code 52)"

Not too sure how to handle this.

Dolphin Bar Support

Would it be possible to support the dolphin bar.
Currently the Wiimote connects as directinput device, if the dolphin bar is used.
Would be great if the HID driver together with the configuration tool can be also used with the dolphin bar.

Unable to change driver

I installed it successfully and even managed to pair my Wiimote, but it's still using the old driver from Microsoft. However, when I go to "Update Driver" and select to pick from a list of available driver software, only "Bluetooth Device" (Microsoft driver) is showing up, rather than "Wiimote Device". I have also disabled Driver Signature Verification.

Retry to detect the Extension on failing to do so

Sometimes the Extension type is not reported back correctly by the Wii Remote. This seems due to a hardware glitch and a "partially connected" state. Current workaround is to re-plug in the extension multiple times. However this hardly occurs when playing on the Wii/Wii U, so there is a solution to that.

Attempt is to constantly retry to detect the extension type until a correct one is detected or the extension is removed.

Installation issue

im on windows 10 64bit after running installation it showed that "Julian Lohr (HID Wiimote) Install Failed".
I have tried to install multiple times i would appreciate any help.

Guitar Hero World Tour Drums

The current Guitar Hero Guitar implementation covers the drum set partly. However it seems the Bass pedal and some other features are not working.

"bundled" axis input for Classic Controller analog triggers

(just putting this here for reference)

The analog triggers on the classic controller (L and R) are currently bound to "z rotation" (axis 4?) such that L is half the range (-1,0) and R is the other half (0,1). This could be worked around in a framework API, but it does mean both inputs can't be pressed at once unambiguously. Recommend splitting into two inputs, each of the full (-1,1) range.

Driver error when connecting to Windows 10

Everytime I try to add/pair a wiimote, it gives me this driver error (after it logs as successfully configured):

Device BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002057e_PID&0306\7&34e2c4fd&0&0021BD21F413_C00000000 had a problem starting.

Driver Name: oem78.inf
Class Guid: {745A17A0-74D3-11D0-B6FE-00A0C90F57DA}
Service: HIDMiniport
Lower Filters: HIDWiimote
Upper Filters: 
Problem: 0x34
Problem Status: 0xC0000428

Incomplete DJ Hero Turntable mapping

The following DJ Hero turntable functions do not have button/axis mappings:
Effects dial (should be a 1D axis)
Turntable scratch (should be a 1D axis)
Red and blue buttons.

If I were to add these functions to the driver, which files should I look at? I imagine there needs to be a new "DJState" at least.

Check the Balance Board implementation

The Wii Balance Board reports its sensor data with 2 bytes each sensor. The driver only uses the most significant byte and this may be too less sensitive.
Either each primary axix is using a 2 byte data range or the sensor data is cropped to the least significant byte.

Haptic Feedback

How about adding Haptic Feedback?
Might also be called Force Feedback.
Some Steering Wheels Support Force Feedback to let the Wheel vibrate on rough Terrain or during a curve.
Is it possible to implement such behavior to the WiiMote?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.