jloehr / hid-wiimote Goto Github PK
View Code? Open in Web Editor NEWWindows Device Driver for the Nintendo Wii Remote
License: GNU General Public License v3.0
Windows Device Driver for the Nintendo Wii Remote
License: GNU General Public License v3.0
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' :)
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.
Seems Raw Input has issues with IR- & DPad-Mode. Might be similar to the gamepad axes issues when using Raw Input.
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:
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).
The idea is to have a mode, that'll enable the Classic Controller and the connected Wiimote to be two separate Controllers.
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.
Extent the installer to an all round configuration tool:
I'd like to use more than one wiimote at the same time, e.g. to use it with MAME-Multiplayer games.
Is this possible? (Update: Next time Ill read something through before asking ;)
If not this would be a killing feature!
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.
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:
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.
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.
Change mapping of those two from Rotation (RX & RY) to Z and RZ.
Also on
HID-Wiimote/HID Wiimote/WiimoteState.c
Line 451 in e064a81
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.
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?
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.
Add more to the configuration Tool:
Let the Wii Remote appear as Xbox 360 Controller, so it can be accessed by XInput.
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.
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.
edit: fixed now, just had to force device reinstallation
Each shoulder trigger for the Classic Controller and Wii U Pro Controller should have it's own analog axis. Currently they cancel out.
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.
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.
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?
Wenn an die WiiMote ein Nunchuck verbunden wird, ist die A-Taste der WiiRemote als auch die Hometaste auf den "Virtuellen Button" 1 gemappt.
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
I recorded the error and posted on youtube, you can see in this link:
https://www.youtube.com/watch?v=fwXpb1Aqmek&feature=youtu.be
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.
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.
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.
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
Have two axis (rotation?!) assigned to diagonal difference
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.
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.
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.
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.
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.
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.
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.
The current Guitar Hero Guitar implementation covers the drum set partly. However it seems the Bass pedal and some other features are not working.
(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.
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
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.
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.
I'd like to help you crowdfund a driver certificate if possible, I'm sick of having to reboot Windows 10 to load this :)
My wiimote won't detect classic controller pro even though I plugged it in. Is there something wrong, or is it just me?
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?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.