HID Wiimote – A Windows Device Driver for the Nintendo Wii Remote (Bachelor Thesis)

This driver, called HID Wiimote, was developed and elementary implemented as my bachelor thesis in a 6-month period.

What is it?

When you normally connect your Wii Remote to a PC using Bluetooth, you can’t use it properly out of the box. The problem is that Windows don’t know how to handle it properly and does not expose any input buttons or axis. My Bachelor theses was to attempt a solution to that kind of problem. There are many programs which are mapping the Wii Remote buttons to keyboard keys, so for Windows it looks like a key is pressed. This solution is not applicable when it comes to local multiplayer games like FIFA. My driver fixes this issue, since every Wii Remote is recognized as a native game controller, as they should be.

The driver supports the Nunchuck, Classic Controller, Classic Controller Pro Extensions. Furthermore it is Working with the Wii U Pro Controller, Wii Balance Board and some Guitar Hero accessories. The button and input mapping dynamically changes when an Extension is plugged in or out. For update notifications follow me on Twitter.

Download

HID Wiimote (gamepad mode)

The project is under no active development and won’t receive any further updates. Existing binaries may cease to work anytime in the future and install instructions may be out of date.

64 Bit32 Bit
Windows 10 (v0.4.0.0)
Windows 7, 8, 8.1, 10 (v0.3.0.3)Windows 7, 8, 8.1, 10 (v0.3.0.3)

Latest Changes (v0.4.0.0)

  • Final release
  • Upgrade to Visual Studio 2022, Windows SDK 11 and Windows WDK 11
  • Removed support for Windows 7, 8, 8.1, because Windows WDK 11 only allows for Windows 10 and higher
  • Fix Apps and Features uninstall button not working
  • Fix zip step if path contains spaces

How do I use it?

Install Instructions for HID Wiimote

The project is under no active development and won’t receive any further updates. Existing binaries may cease to work anytime in the future and install instructions may be out of date.

  1. Make sure you have the Microsoft Visual C++ Redistributable 2017 installed (64 Bit Download, 32Bit Download)
  2. Download the HID Wiimote driver package matching your Windows.
  3. Unpack the files.
  4. Run “ControlCenter.exe”. That will bring up the HID Wiimote Installer.
  5. Optionally enable “Test Mode” (requires reboot)
  6. Install the certificate.
  7. Install the “Device Driver”.
  8. Afterwards close the Installer to bring up the Control Center.
  9. Connect your Wii Remote or Wii U Pro Controller to your PC. Leave the PIN empty. If Windows doesn’t allow an empty PIN see skip PIN request.
  10. If Windows still uses the default driver, see below to change the driver.
  11. Select one device in the Control Center and apply settings.
  12. Start using your Wii Remote like a generic game controller.

Uninstall Instructions

  • Open the HID Wiimote Control Center. Bring up the Installer Window via Tools -> Installer. Uninstall the driver package.
  • Or open Windows “Programs and Features” settings. On Windows 10 open “Apps and Features” and scroll down to Related settings. It seems the “Apps and Features” entry is currently not working. Search for “HID Wiimote 0.X.Y.Z” and uninstall it.

Known Issues

  • When powering off the Wii Remote or moving out of the Bluetooth range, Windows won’t recognize the Wii Remote is gone.
  • When shutting down Windows, the Wii Remote Device won’t be ejected and is still present on next start up.
  • You have to manually remove the Wii Remote device from Windows Devices each time it has disconnected.
  • If the HID Wiimote Control Center shows an error or doesn’t start at all, make sure you have the Microsoft Visual C++ Redistributable 2017 installed  (64 Bit Download, 32Bit Download)
  • When using other Bluetooth devices, they may stop working, until the Wii Remote is disconnected.
  • Other Programs that need to communicate directly with the Wii Remote may not work (e.g. Dolphin Emulator).
  • Incompatible with Toshiba Bluetooth Stack or any other Bluetooth Stack with proprietary API.
  • Driver Signature Verification may be a hard requirement for certain AntiCheat engines.

Driver Signature Verification

Unfortunately I do not own a Code Signing Certificate. So on 64 Bit Systems you have to disable the Driver Signature Verification. Otherwise Windows won’t load the driver. The Driver Signature Verification can either be deactivated permanently or for a single restart (after an additional restart it is active again).

Permanently deactivate Driver Signature Verification

Start the HID Wiimote Control Center. Open the HID Wiimote Installer via Tools -> Installer. On the installer Window enable Test Mode and reboot your system.

Alternatively you can also manually enable Test Mode. Open a CMD Window with Admin Rights. Then run the following command and restart your System.

Bcdedit.exe -set TESTSIGNING ON

One Time Deactivation

To disable the Driver Signature Verification some steps are necessary. Those are different on Windows 7 and Windows 8.1 and above.

Save all of your work, because you have to reboot you computer!

Windows 7:

  1. Restart you computer
  2. After the BIOS, before Windows initialize its booting, press F8 to enter the “Advanced Boot Options” for Windows (like when you try to enter the “safe mode”)
  3. Choose “Disable Driver Signature Enforcement”

Windos 8.1 & Windows 10:

  1. Open the Charms Bar
  2. Chosse “Settings” and then “Change PC settings”
  3. Switch to “Update and recovery” and open the “Recovery” tab
  4. Click on “Restart Now” under “Advanced Startup”
  5. After restart click “Troubleshoot”
  6. Pick “Advanded options”
  7. Choose “Startup Settings”
  8. Click on “Restart”
  9. Press the number for “Disable driver signature enforcement” (Number 7)

Now Windows starts in a Testing Mode and might display a small watermark in the bottom right corner.

After an additional restart Windows changes back to its normal mode, so you have to disable the Driver Signature Verification each time you want to use the driver.

Skip PIN Request

On Windows 10 Creators Update and above the “Settings – Bluetooth & other devices”  panel does not let one skip the PIN input. In order to pair your Wii Remote nonetheless, scroll down to “Related Settings” and open “Devices and Printers”. Its “Add a device” dialog still accepts an empty PIN entry. The “Devices and Printers” Window can also be opened by right clicking the Bluetooth system tray and select “Join a Personal Area Network”.

Switch driver

Because Windows internally ranks all possible drivers for a device mainly by their signing, the default driver might be still used for the Wii Remote. This driver ranking will be performed each time the device is added. So you have to change it every time you connect the Wii Remote. Therefore it is recommended to install the certificate to push its ranking.

  1. Connect the Wii Remote to the Computer and constantly tap a button, so the Wii Remote won’t turn off.
  2. Open the Device Manager and locate the “Bluetooth-HID-Device” representing the Wii Remote.
  3. Right click on it and choose “Update Driver Software…”.
  4. Pick “Browse my computer for driver software”
  5. Then “Let me pick from a list on my computer”
  6. Now choose “Wiimote Device” from the list and click “Next”
  7. When the LEDs of the Wii Remote switch from flashing to constantly on, the driver is installed properly.

Changelog

Expand

0.3.0.3

  • Final release
  • Upgrade to Visual Studio 2022, Windows SDK 11 and Windows WDK 11
  • Removed support for Windows 7, 8, 8.1, because Windows WDK 11 only allows for Windows 10 and higher
  • Fix Apps and Features uninstall button not working
  • Fix zip step if path contains spaces

0.3.0.3

  • Upgrade to Visual Studio 2017 and current Fall Creators Update SDK and WDK (10.0.16299)
  • Add an unhandled exception handler to the Control Center
  • Fix #38: Change unit from Radians to Degree
  • Fix #40: Change guitar whammy bar and touchbar mapping from RX and RY to Z and RZ
  • Fix #41: Home button mapped to wrong output when using Nunchuck

0.3.0.2

  • Change checking Extension subtype
  • Add Product and Serial string support
  • Add minor delay to update process for UX
  • Change wording from “Switch” to “Swap”

0.3.0.1

  • Fix #24 & Fix #31: Fix Guitar Hero Buttons, Whammy and Touch bar
  • Fix not detecting certain GH Accessories
  • Change default settings for new unknown devices to have accelerometer and trigger axis enabled

0.3.0.0

  • Implement #2: Basic Tool for device specific settings, including an installer replacing TinyInstaller
  • Fix phony button presses when connecting extension

0.2.7.4

  • Fix Balance Board not beeing detected correctly and reporting any input

0.2.7.3

  • Fix #15: Yellow Guitar Hero Button not working

0.2.7.2

  • Change Balance Board Axes

0.2.7.1

  • Fix Balance Board Axes

0.2.7.0

  • Fix RawInput not reading the primary axes correctly
  • Add experimental untested Balance Board support
  • Add experimental untested Guitar Hero Guitar support

0.2.6.2

  • Fix non English languages for the Driver Package Installer.

0.2.6.1

  • Installer has been reverted to Multilingual, since there have been issues with non English Windows Systems.

0.2.6

  • Fix #11: Improved Extension Controller detection
  • Package now includes EULA and Readme file
  • Replaced Multilingual Driver Package Installer with only-English one
  • Introduced proper versioning, starting with 0.2.6
  • Build with WDK 10.0.10586.15, to hopefully fix connectivity issues with Windows 10 Version 1511 (November Update)

08.09.2015

  • Windows 10 Desktop Build

13.07.2015

  • Fixed LED Battery Level display for Wii U Pro Controller
  • Each Classic Controller (Pro) & Wii U Pro Controller Trigger has its own input axis

16.06.2015

  • Hotfix for IR-Mouse to enable “-TR” Wii Remotes

01.06.2015

  • Input State is reset, when the connection is lost
  • New IR-Mouse Version
  •  Lets you control your Mouse Pointer by pointing at your screen
  • IR-Source like Sensor Bar is needed

20.04.2015

  • Nunchuck, Classic Controller (Pro) and Wii U Pro Controller are now supported
  • Added more Axis, Buttons and a Hat Switch
  • Unfortunately no more Vista Builds
  • Windows 8.1 Build

12.10.2014

  • Added another installer, so Windows will use HID Wiimote as default driver for the Wii Remote
  • PDad-Mouse Build (See this Blog)
  • There will be Vista builds from now on as well.

01.07.2014

  • Added support of the newer Wii Remotes (RVL-CNT-01-TR)
  • Added second X/Y axes representing tilt (Currently only tracked by the accelerometer) 

26.06.2014

  • D-Pad is now represented as X/Y-axis.
  • LEDs now represent the battery level.
  • Added an Installer.

20.06.2014

  • Fixed the binaries (there was some test code left when building, last time, so the old binaries aren’t working)

Download List

Source Code

The archived Source code is available on Github:
https://github.com/jloehr/HID-Wiimote

How does it work?

This Part is for those of you, who does not only want to use HID Wiimote, but want to take a peak inside a driver and how i fixed the problem.

Detailed Problem

The communication of the Wii Remote with its host is based on HID. HID is a protocol for input devices without a fixed setup. The protocol is self describing, which means every device is telling the host what kinds of input and outputs it got. E.g. one game controller can have only four buttons, whereas another can have two analog sticks without any buttons, both are using HID and are handled by the same driver.

As said the Wii Remote communication is just based on it, but not strictly followed. So the protocol standard is violated at some points, for example the Wii Remote does not describes itself properly. That’s the reason why Windows knows its a game controller but does not know what kinds of input and output the Wii Remote has.

Solution

So the solution is to put a driver somewhere between the Wii Remote and the HID Class Driver to fix the communication. This driver presents a HID conform game controller to the upper HID Class Driver. Fortunately the HID Class Driver is paired with a minidriver. Those minidrivers handle the transport specific communication with the device. E.g. if the device is connected via USB the HIDUSB driver is loaded to handle the USB specific communication, or if it’s Bluetooth HIDBTH is loaded, to do all the Bluetooth stuff.

The HID Wiimote replaces the minidriver for the Wii Remote and adds the additional functionality to have a fully supported game controller. It consists of three layers.

Diagram of the Driver

The lower Bluetooth layer handles all the Bluetooth specific stuff, like the direct communication. The middle layer Wiimote saves the Wii Remotes state and handles its specific needs in form of what kind of responses and request and how those have to be handled. The upper Layer HID is handling all request from the HID Class Driver and is translating the current state to a HID conform format.

Further reading

631 Replies to “HID Wiimote – A Windows Device Driver for the Nintendo Wii Remote (Bachelor Thesis)”

  1. Microsoft Windows [version 10.0.14393]
    (c) 2016 Microsoft Corporation. Tous droits réservés.

    c:\Program Files\Support Tools>devcon hwids “@BTHENUM\DEV_0019FDC2774C\7&196F3170&0&BLUETOOTHDEVICE_0019FDC2774C”
    BTHENUM\DEV_0019FDC2774C\7&196F3170&0&BLUETOOTHDEVICE_0019FDC2774C
    Name: Nintendo RVL-CNT-01
    Hardware ID’s:
    BTHENUM\Dev_0019FDC2774C
    Compatible ID’s:
    BTHENUM\GENERIC_DEVICE
    1 matching device(s) found.

    c:\Program Files\Support Tools>devcon updateni C:\Users\example\AppData\Local\Temp\HID-Wiimote_Win-7-8-8.1-10_64Bit\HIDWiimote.inf “BTHENUM\Dev_0019FDC2774C”
    Updating drivers for BTHENUM\Dev_0019FDC2774C from C:\Users\example\AppData\Local\Temp\HID-Wiimote_Win-7-8-8.1-10_64Bit\HIDWiimote.inf.
    devcon failed.

    YEs, I also disbaled driver signature enforcement

    1. It seems like you are using the wrong Device Node. The “Nintendo RVL-CNT-01” under “Bluetooth” is some dummy node for the Bluetooth Stack. The correct Device Node is under “Human Interface Devices”. It is eiter labeled “Bluetooth HID Device” or “Wiimote Device” depending on whether my driver is loaded or not.

  2. Hi there. I tried getting this working on Windows 10 and couldn’t. Whatever did happen, I can no longer use my WiiRemote in Dolphin. So I want to completely remove anything that might be installed for your driver. How can I do that?

    1. Hi, sorry for your issues. You can remove the driver via “Programs and Features”, there should be an entry along the lines “Driver Package – HID Wiimote” (or sort by Publisher and search for my name). That’ll remove everything that was installed.

  3. I did my best to go through the steps although I am currently lost. I’m using Windows 10 by the way.
    I installed the driver and disabled the verification although the wiimote now does not connect properly. Before this, I was able to use Touchmote to connect it to my computer and the wiimote would say it was player one (how I know it was connected). Now, it will keep blinking and won’t connect at all.
    I tried reverting the verification back and now it says there is a driver error when I try to connect.
    Do you know what I did wrong? Is there a way I can uninstall/redo what I have done and try again from scratch?
    By the way, I’m trying to set up my computer for Mario Kart 8 using CEMU.
    Thanks

    1. Something I left out,
      When I try switching drivers, the only option that is available is “bluetooth device” and in the properties it says that there is no driver installed.

    2. Hi, you can uninstall the driver via “Programs and Features”. After removing it all other third-party programs should work again.
      The driver error means, that it was successfully paired but the driver signature verification failed (as you reverted it). Sometimes pairing is slightly buggy and needs multiple tries or a reboot.

        1. (Update) Nevermind… I didn’t scroll through the comments thoroughly to find the same exact problem and solution. Thanks for the wonderful driver!

  4. Well , I really like your driver.but , It would be better if you make something like a mapper (like touchmote) and add a little customizability . anyways , great work

  5. Hi, great work. I have only one problem. I use wiimote as mouse for “lightgun” games with gun shell. But I need to switch A and B buttons for this. House of the dead 2 not accept the switch software in mouse option. Can you help me? Glove pie doesnt work.

  6. Julian,

    I know it is a lot to ask, but would you consider contributing to the FreePie project? They already have a working Wiimote support, but without Balance Board… The guy who did it has already left the project, so he will not be finishing that and you know the innards of the Wii controllers better than most.

  7. This is awesome, great job! Hope you got highest marks for this project. I was just curious if you ever planned on adding Wiimote Plus support to the motion controls? I have a wireless IR bar, so it’s less importnat to me, but it would still be nice – it’s more precise on the Glovepie program, at least. Idk if it would help, but I have the Glovepie script to work the roll-yaw-tilt controls for the Wiimote Plus; I’m under the impression that Glovepie is jsut built with Python, but that’s probably more complex than my basic understanding lets me grasp. XD

    1. Thanks, indeed i got a very nice mark 😀
      On the long run utilizing Plus Sensors would be nice, for the Roll-Tilt, as well as IR-Mouse. But Motion Plus requires initialization and some special handling that isn’t that trivial. Also using the sensor data in addition to the other sensors, requires some work, as one has to figure out how to fuse them. Next step would be to introduce proper data filtering, to smoothen the output.

  8. Hello Julian,

    Thank you for your usefull work !
    I’ve tried your drivers and it installs fine on Windows 10 64-bit.
    But I have two questions after some time of experimentation :
    – Do you know why each time the wiimote go to sleep I have to delete the BT wiimote pairing and create a new one to make it work again ? If I don’t, Wiimote is blinking forever on power ON and even if I press sync, Windows is staying on “PAIRED” state, not “CONNECTED”.
    – You’ve said in a previous answer “Wii Remote Plus (Motion Plus inside) is supported, but the driver does not utilize the Motion Plus sensors”. I don’t understand that. I need to get the Motion Plus gyroscope output … Can I do that thanks to your driver or not ?

    1. Hi,

      your first issue is related to how Wiimotes implement their reconnect to known host and how Windows just assumes certain devices as paired. Wiimotes need proper authentication (the correct Bluetooth PIN) to actually save the last known Bluetooth Host and enable reconnect. Otherwise they only switch into discovery mode. Windows on the other hand thinks the Wiimote was properly paired on the first connect and just tries to use reconnect instead of doing a full pairing process. That reconnect attempt is not answered by the Wiimote, so nothing happens. You then have to first delete the Wiimote device on Windows, so it thinks it is a new device and starts the pairing process.

      Regarding your second question; my driver doesn’t provide any raw readings/data from the Wiimote. Furthermore it hides certain data and processes it internally. If you need to read raw data and interpret it your way look into other libraries. The driver is no Library/API for developers. The aim of this driver is to make the Wiimote available as generic gamepad for arbitrary games.

  9. Intersting. It’s funny though, right I posted that comment I got my controller to work with my project. And its working without extra drivers or controller emulators. Modern technology was being funny at thr time causing not to work.
    But back to the point, thanks to your driver and Steam I am able play 4 player Xinput games like Overcooked without tons of configuration. Thanks so much.

  10. This works great. I’ve actually been using this for about a year now with no problems.
    To me, it seems that the exact same thing should be done for DS4 controllers. When they’re connected via bluetooth the pc controller settings doesn’t identify input just like the Wiimote before your driver is added.

    1. I already talked about DS4 controller with nefarius (the guy that is maintaining the ScpToolkit and doing other driver stuff for the Playstation controllers). He is already providing a DS3/4 driver for USB (https://github.com/nefarius/FireShock).
      The issue about DS4 and Bluetooth is, that you need to connect the controller once per USB and send a special message with the host’s Bluetooth address or something along that. Furthermore it uses some custom communication protocol that seems to not be compatible with the Windows Bluetooth driver.

  11. Okay, so I’ve run into some sort of dilemma with connecting a Wii Remote.
    For some reason, my RVL-CNT-01 has trouble connecting to Windows, because Windows will recognize it and attempt to connect to it, but the Wii Remote will never show that it’s connected. The device adds, but the Wii Remote never connects. However… It works fine in other cases, like using the Microsoft Bluetooth Stack with WiinUSoft on Windows 10 Pro 64-bit, or the Toshiba Bluetooth Stack on Windows 7 Ultimate 32-bit, but not the Microsoft Bluetooth stack by itself on either operating system. All it does on either operating system is attempt to connect, and either fail or succeed, but never do anything, even when I follow the directions and troubleshooting specified above. Any ideas?

    Oh, and my internal Bluetooth hardware is a Qualcomm Atheros QCA9565 Bluetooth 4.0 Adapter, if that helps any.

    1. By “Microsoft Bluetooth stack by itself on either operating system” you also mean without my driver? The Wii Remotes require the host to send them any message after connecting. Otherwise they’ll turn off after few seconds.
      As the Windows Bluetooth driver doesn’t know about that, Wii Remotes don’t stay connected to Windows PCs without the help of a third-party program.

  12. Hey, I just started downloading this once my Wii remote (RVL-CNT-01) just randomly stopped showing as player 1, and I’ve ran into a few problems:

    1. I tried disabling Driver Signature Verification the first way, and I didn’t get a “Test Mode” watermark. Also tried the permanent disable, but when i typed it in, I got an error “An error has occurred setting the element data. The value is protected by Secure Boot policy and cannot be modified or deleted.”

    2. I installed TinyInstaller, and when my Wii Remote finally stops blinking or doesn’t turn off when it’s paired, it shows 3 lights on player 2,3, and 4, but not 1.

    Is all the problems because of Driver Signature Verification? My bluetooth adapter is 4.0 btw. I’m just confused because it worked when I first used it and randomly stopped.

    Hope this is enough information, thanks.

    1. Hi,
      is it just that the player one LED isn’t working anymore or the controller itself?
      As long as it worked once Driver Signature Verification shouldn’t be an issue. Unless you updated/upgraded your Windows System.

      The player LEDs are used to show the battery level. All four lit is fully charged, it then starts to turn off LEDs from the left until only the rightmost is left alone. So if LED 2,3 & 4 are on, you have ~3/4 battery charge left.

      1. Thanks for the reply, Julian! It’s really weird. I’ve been having random experiences so far.

        Shortly after posting, I started getting a “device error” message under the device on the Bluetooth Screen. Only way I could get it to finally show as Player 1 was to uninstall, and search for a device via WiinUPro when it shown it was connected and the HID was there. Unfortunately, it wasn’t responsive to my game (I’m using it for GH3). Every now and then I could get it to work fine.

        Now, it won’t work at all since I’ve updated Win10 to the Creator’s update. It REQUIRES a PIN and I can’t just bypass it. So now I can’t get it to pair at all to my blutooth. I tried installing the TinyInstaller again, but it says Windows must restart (I’m guessing because of the DSV?) but nothing changes and I get some error about one of the HIDWiimote files.

        Also, side not I’ve changed the batteries a few times just to make sure, and they’re all full.

        1. Yeah i heard about the PIN issue from various people. I have yet to update and therefore havent’t figured out some solution.
          Have you uninstalled the driver prior to the Windows Creator Update? Those major Windows Updates are basically reinstalling Windows, then copying over your settings and programs etc. Side effect is, that it messes up my driver, as it is not copying over the driver (or only partwise) but still keeps the entry in programs and features.

        2. Ok, i did the upgrade and i encounter the same issue as you. My workaround is to not use the new fancy “Add Device” Dialog. Instead open the old regular “Devices and Printers” Window, click on “Add a device”. It will also ask for a PIN, but i am able to click “Next” without entering one.

          You can find the old “Devices and Printers” Window by opening the new fancy “Bluetooth & other devices” Window, scroll down to “Related Settings”.

  13. Hi Julian,

    just tried it on Windows 10 x64 with my Wii U Pro Controller but after a few tries all I can accomplish is a connected bluetooth device which identies as a mouse. I can open the Mouse Settings for the controller which identifies as Nintendo RVL-CNT01-UC. However no Gamecontroller settings are available and it makes my normal mouse absolutely useless :/

    1. It sounds like you downloaded the wrong driver package. Uninstall that one and try to download the gamepad package again.

      1. Same issue with me just last night. Your links to the 64 bit mouse drivers and gamepad drivers seem to point to the same zip file. I thought this was on purpose, that you bundled the recent release. If I’m missing something let me know.

    1. I did try some 3rd party Wiimotes. Some may work, others do not.
      Most important the 3rd party Wiimote needs to use the correct Hardware ID. Otherwise my driver won’t be loaded at all.

  14. Using this driver on a very old Asus tablet that I installed Win 10 32 on to play Sega Geneses emulators. Works well, thanks for your work.

  15. I’m having problems. I’ve downloaded the correct file (Windows 10, 64x) and I ran the “tinyinstaller.exe” after disabling the Driver Signature Verification. I don’t know how to connect the Wiimote though. Any help with that and/or steps after that would be very helpful.

  16. Hi. First of all, I would like to say great work. Your driver is very useful. However, I have 2 questions.
    1) It does read the nunchuck buttons, but not its accelerometer sensor correct?
    2) I have 4 variables: X-axis, Y-axis, Z-axis, Z-rotation. what does Z-rotation stands for? I have values on X and Y, but nothing on the Z-axis nor rotation.

    I will try it out with another Wiimote to see if the problem is mine. Ill let you know.

    Thank you

    1. Hi, thanks!

      1) Nunchuck accelerometer data is not used as of now
      2) Depending on the connected extension different input mappings are used. So only for some extensions Z-axis and/or Z-rotation is used.
      The mapping is designed to mimic the Xbox controller mapping. i.e. primary analog input is X/Y-axis, secondary analog input is X/Y-rotation, etc.
      Some configurations, like Wiimote+Nunchuck, have more analog inputs than the Xbox controller layout. Therefore some are not mapped at all.

      1. The issue with this is that Windows doesn’t automatically give it an input value of 0. If your driver could do that, then it wouldn’t be any issue and it just wouldn’t be used.
        In the meantime, I would bet that if you did find a Wiimote extension that does use the Z axis and rotation, you could then use it to calibrate it in the Windows Game Controller Settings, like you can with X and Y mappings.

        1. My driver actually assigns them default values when no input is mapped. Depending on the axis it is either 0 or midpoint.

        2. My driver actually assigns them default values when no input is mapped. Depending on the axis it is either 0 or midpoint.

    1. Hi, i did the upgrade. My workaround is to use the “Add a device” button on the old “Devices and Printers” Window. It will ask for a PIN as well, but you are able to click next without actually entering one.

  17. Hi, I installed this program correctly and was working great. I am currently on windows 7 and am having a hard time reconnecting my wiimote every time I turn it off. The only solution I found was to just forget the device in control panel and reconnecting it through my bluetooth. Is there a way so that I can just press power on my wiimote and then it connects? Thank you

    1. Programmatically there is a way to set up reconnect on button press. Though my driver has no access to set it up from where it runs.
      In detail you have to provide a special pairing pin (the host Bluetooth address byte reversed).

  18. Trying to install this so I can run Rockband 3 Wii drums on a laptop with Windows 10.
    I’m not seeing any kind of Bluetooth
    what I do see is a Harmonix Drum Controller for Wii, and in the device manager I get a HID Game Controller, for which I replaced the windows driver with yours.
    I’m stuck there though…

    1. How do you connect the Rockband Wii Drums? Per connector to your Wii Remote or is it USB?
      My driver only works, when they connect to a Wii Remote and then you pair that Wii Remote via Bluetooth to you computer. After installing my driver, pair the Wii Remote. It should then show up as “Wiimote Device”. Make sure to use a official Wii Remote, as counterfeit ones may not work with my driver.

      1. The Rockband 3 drums are wireless, but they don’t use a wii remote; they use a USB dongle. I tried using the old “joy2key” program, and it does recognize hits but they get mapped to keyboard keys; several show up as 2 keys at once.
        Perhaps my problem is that I’m not using an “official” Wii Remote.

  19. Can I use this driver for “Wiimote” interactive whiteboard? As when connecting wiimote to the laptop, it does not show in the HID list on device manager even though the “add to device / bluetooth” says it is connected and added as a device.

    1. The driver is not designed for Whiteboard applications. So it lacks any calibration and setup functionality, you’d have to do that by yourself. Though there are other programs specifically designed as Whiteboard application, so i’d recommend using those.

  20. Thank you for this!

    Will you figure out a way to have both the IR and gamepad work together in one driver? I wanted to use your drivers as a way to play games like I’m playing on a Wii. I was using your gamepad driver to use my nunchuck as a mouse, but it’s pretty hard for games like League of Legends. It would be awesome if you could use IR to control the mouse and then use the nunchuck and all the buttons on the Wiimote to play. I don’t know if this would be possible, but it would be cool if you had any future plans for this.

    1. Thanks for your comment. Yes, IR-Mouse and Gamepad at the same time combined is on the feature list. However i am currently under heavy workload for my studies, so there is no ETA 🙁

  21. im sorry but i do need help, i cant uninstall this at all, i need to uninstall this, windows 10, its not anywhere on my devices or hidden drivers and i also cannot use it on dolphin anymore, what do i do

    1. Check “Programs and Features” (where you uninstall other software as well). Search for something along “Driver Package HID Wiimote..” (may be translated to your OS language), Publisher “Julian Löhr” and just uninstall that.

      1. sadly thats the problem, it wont show on anything, not there, not the device manager, nothing, but i still cannot connect controllers trough dolphin, i think this is odd because i dont see anyone has had this problem

        1. Have you done something to uninstall beforehand? Is my driver still loaded for Wiimotes when you pair them?

          Open a Command Prompt (as Admin) and run “pnputil.exe -e”. That’ll list all installed PnP-Drivers. Check it for any package published by me. You can then remove that package by running “pnputil.exe -d oemXX.inf” (oemXX.inf being the respective “Published Name”). If you can’t find any package, my driver isn’t installed.

  22. Hi, great academic work. Well, i’m using the classic controller and I have a issue. The L and R buttons (5 and 6) are being recognized like Z axis too. So, the Z axis stay always unbalanced (even trying to calibrate it). Is possible disconnect the axis from the buttons?

      1. That’s how XBox Controllers do their Input mapping. One of the older driver versions does use two different axes for the triggers/shoulder buttons.
        Anyways with the current version there is no way to separate them.

          1. Yes, exactly. It should work with Windows 10 but there may be issues. Just try it.
            The next update will feature a switch to change it. But as of now there is no ETA for the next update.

          2. Ah, I can’t wait for the next version, then. I set this up today to play Tales of Berseria, but the camera just spins and spins. I switched to this from Touchmote, which doesn’t allow controller scale and threshold to be changed and thus doesn’t work with the Wii Classic Controller.

            I really like this driver . . . I just wish I didn’t have to have a Z axis.

  23. so why did I have to permanently disable driver signing to get this to work? windows won’t load the driver if I have signing on. also, is there a way to disable the driver so that dolphin can access the remote like it need to? or does it work fine in dolphin with the drivers?

    1. The issue is, that Microsoft requires Driver Developers to sign their drivers with proper certificates (for security reasons). Those proper certificates start at around $450 per year, that i am simply not able to afford right now. Moreover it seems like individuals aren’t eligible for those.

      Right now there is no easy way to enable/disable the driver (expect for uninstalling, or manually changing it via Device Manager). Dolphin isn’t able to access the Wiimotes as long as my driver is loaded.

        1. Signing would be free if it were open source. Have you considered that? Just tried out the drivers and they work brilliantly on my W10 64-bit (14393) build.

    1. Nope, Windows XP is way too old. It would require a lot of special treatment in regards of code and deployment. That is simply not worth the work for the handful of users that still use XP.

  24. Your 64 bit download had a trojan virus, that’s just not right dude. You should probably let people know they waive their right to complain when they download your software or at least warn users to perform a virus scan after installing to prevent any harmful changes to their computers.

    TL;DR. Your software nearly gave me a virus, not cool dude.

    1. Hi,

      i checked the 64 Bit files with VirusTotal and none of it had a single hit. Additionally i checked my server logs and the files on the server and didn’t find any suspicious behavior nor that the files were modified.
      What AV do you use, what kind of Trojan did it detect and can you confirm for sure it was no false positive (when it was something with “generic” it is a heuristic and no signature hit)? Also did you download from my page?

      Anyways no one waives its right to complain. This comment section is meant for feedback.

  25. Wiimote works great under Dolphin. Your participation has been recognized as one of the reasons for such success. So I guess that Dolphin includes your solution.

    In addition, I didn’t need to install anything so as to run Dolphin under Windows.

    I guess that there would be something inside Dolphin that recognizes the Wiimote actions and translates them into actions understandable for Windows.

    So I wonder if there is anything inside Dolphin that could be picked and help us to allow using your solution without the need of disabling Windows signature.

    Said differently, if a portion of Dolphin understands and translates Wiimote action; is there a way to pick such portion and use it for other Windows usage?

    Thanks in advance

    1. Hi,

      Dolphin is a slightly different case. Dolphin does not interpret the Wiimote Data and changes it for Windows to use. Instead is just communicates directly with the Wiimote Device and passes the raw data to the Wii Game. The Wii Game in turn does the interpretation as it uses some built-in Nintendo Library. However the Wii Game (and its emulation) it kind of a black box, so at no point does Windows nor Dolphin actually have the Wiimote Data in Controller-like standard format. It’s just binary, though the actual used format for the Wiimote data is known.

      So if you are writing a program or game yourself, you can also directly communicate with the Wiimote and get its raw data. Then use the knowledge of the format to do your own Interpretation (or use some lib that has that already implemented). You can check out my reference implementation to get the raw data from the Wiimote (https://github.com/jloehr/Wiimote-HIDAPI) and the Homebrew Wiki for the Wiimote data format (http://wiibrew.org/wiki/Wiimote), which i used for my driver as reference.

      So now comes the case where you have a third party game/application, that does not implement any of this, but instead uses the DirectInput/XInput API for communication with controllers. One way would be to change that program to add User-Mode Wiimote support. But that is not easy as you won’t have the source code, etc. and most developers don’t care about special controllers (that’s the purpose of a standard API like XInput, so you don’t have to care about the exact controller). So the better way is to provide some software that fixes your controller, so it is compatible with that API. That way you won’t need to change all games, but instead all games supporting that API are instantly working. Most applications (also for other controllers, like the DS4) do use the User-Mode communication and Interpretation concept, but are paired with another driver that creates a virtual XBox-Controller and are just feeding it.
      I am just cutting that part short and do all the Interpretation on a driver level.

  26. I wonder if it would be possible to add a feature that would be specific for Balance Board: diagonals. That is, a third axis would depend on the difference between the corners: if left/down and right/up corners were fully depressed and left/up and right/down corners were fully released, the axis would be all the way left. If the left/up and right/down corners were fully depressed and left/down and right/up corners were fully released, the axis would be all the way right.

    That would be immensely useful for „walking” control – the Y axis could be used for forward/backward, X axis could be used for strafing left/right and diagonals could be used for turning left/right.

    1. What controller are you using (Nunchuck, Pro Controller, etc.)? And when does it change (randomly, if you do a specific motion, …)?

        1. Can you give me a more detailed description? Is it a genuine controller? Is it just for a split second or for a longer time period? Does the Analog Stick/X Axis still work? Is the trigger input mapped to both axes or just the X axes? Etc.

          I have no fix for that right away. Never heard of such an issue, so it seems like a bug that needs to be properly debugged.

          1. I’m using a genuine controller. Sometime the X-axis+ turns into z-rotation+ and it doesn’t change back. I have to go into the controller profile to change it back to X-axis. This only happens to the X-axis.

    1. Wii Remote Plus (Motion Plus inside) is supported, but the driver does not utilize the Motion Plus sensors

  27. Hi there,
    thanks for this great work. I am able to connect the Wiimote to Windows 10 and and use it as IR Mouse and as Lightgun in Mame 🙂
    But I have a big Problem: The Wiimote Cursor is not really good calibrated to my Screen. Is there a way to adjust the Setting, because when i move the Wiimote to the Center of the Screen, the coursor will shown at the Bottom of the Screen.

    1. Hi, the IR-Mouse driver is just very basic and doesn’t provide any settings. There was a bug, that the courser was jumping to one of the corner, but i thought i fixed that. The mouse driver definitely needs some rework.

  28. Is it possible to connect just a Balance Board without the controller? I have installed the drivers, but the board is not connecting to the computer. It is not an issue with the board, as it has been working correctly with the Balance Walker.

    1. The driver does support the Balance Board. You need to connect it by using the Sync button under the battery cover. Then continuously tap the front button, to keep it on until the pairing finishes.

      1. Yes, I have managed to solve that problem. However, the connectivity seems to be much worse than before.

        Is it possible to remove your drivers without reinstalling Windows? When I just remove the driver files themselves (from the Device Manager), the board is still identified as a gaming device (and it shows in Game Controllers when trying to connect), so I cannot use it as I did before. How can I make it visible as a generic Bluetooth input device (and not a gaming device specifically)?

        1. Just answered your mail. The device is also identified as gaming device by the default driver. Windows will enumerate it as Bluetooth Device (under the Bluetooth group in Device Manager), then query its profiles. One of which is HID. Each profile again will be enumerated as device nodes and then Windows loads an appropriate driver for it. That is either the default MS driver or mine (if installed). So also the default driver identifies it as gaming device, but just doesn’t expose its inputs. Anyway regardless of the HID driver it is enumerated as Bluetooth device.

    1. IR-Mouse enables the Wiimote IR Sensor to use it as a mouse by pointing it at two IR sources (i.e. Sensor Bar). As of now it’ll show up only as mouse and won’t be available as gamepad.

  29. Hi,

    I have some issue with my wiimote :/
    I followed your instructions for installation:
    -Extracted the gamepad 2.7.4 folder
    -disabled the Driver Signature Verification permanently (I have a 7- 64bits)
    -ran tinyInstaller
    -connected my wiimote (RVL-CNT-01) to my PC

    Everything all right. (I see the Nintendo RVL-CNT-01 in my bluetooth device)

    However, when i go to the game controllers menu, window does’nt found my wiimote. Futhermore, my wiimote react like a disconneted wiimote. (LEDs are on flashing mode, after a input)

    Strange

    1. Hi,
      when connecting the Wiimote try to continuously tap a button to keep it on until the pairing finishes. Sometimes i turns off before the pairing is complete. Then check the Device Manager under Human Interface Device, whether it shows up as “Wiimote Device”.

    1. Hi, can you check the Windows USB game controller settings. Maybe the calibration is off? Or the mapping in TF2 uses some axis that doesn’t have its null state in the middle.

  30. This software worked great for me. I’m using it for my Pro controller. However I noticed that the left stick and d-pad have switched controls (Left Stick responds the X/Y axis while d-pad responds to Point of View Hat). That is a problem since the game I play only works with the d-pad (and works better with the d-pad) and I have to use the stick intead.

  31. You have done a glorious thing here, good sir! Seriously, this is impressive and sought-after work, so thank you. I dabble in game development, and this opens up a very exciting range of possibilities. I fully intend to take a look at your source when I get a chance; I don’t have much experience with drivers, but I would love to contribute if I can, particularly towards implementing XInput support. Would it ultimately be possible to include input data from the nunchuk’s accelerometer as well?

    1. Hi. Adding to the nunchuk discussion: I found out that the button identifier for many buttons change when the nunchuk is connected. Would it be possible to add the nunchuks buttons at the end of the list?
      And speaking of more features 🙂 …. would it be possible to add the vibration feature of the controller? (maybe You should consider creating a business case here)

      1. Hi,

        that behavior is intentional. The idea is to hold the Wiimote sideways without any extension. When plugging in the Nunchuk one would hold the Wiimote and Nunchuk in two hands. The mapping tries to put the important, as in where your finger reside, buttons first. Also some games like GTA V do support DirectInput controllers, but don’t allow custom mapping. Instead they just assume the fixed XInput to DirectInput mapping (i.e. A is button 1, B is button 2, etc.).
        About force feedback; the issue is HID does not support force feedback that well (it does provide some physical feedback usage but it does not seem trivial). Furthermore i would need to reverse engineer how DirectInput implements force feedback. And given that just a small fraction of games support force feedback i think it’s not worth the work.
        Nevertheless XInput will support rumble.

    2. Hi,

      HID only supports up to a certain amount of axes and i think DirectInput limits that to 6 (X, Y, Z, RX, RY, RZ). However the Wiimote + Nunchuck provides more than 6 analog inputs (2x 3-way Accelerometer, 1x Analog Stick, IR). So i had to choose which to map. My original concept includes providing button input when shacking or on single swing. But that is yet to implement. In the far future there shall be custom input mapping, so the user can set his mapping up himself.

      I haven’t thought much about how to handle contribution yet.

  32. Hello, really nice work! Unfortunately the driver will not install anymore with the Win10 anniversary Update 🙁
    It seems that some of the IDs have changed since the driver is not recognized as such.
    We hope there is a simple fix for that.

    1. To specify the problem a bit more: one machine with the driver already installed still works with the Anniversary Update and a WiiMote. On another machine the driver will not install with Windows complaining “The folder you specified doesn’t contain a compatible software driver ….”. Any idea on how to solve this?
      Best regards!

      1. So you have one computer where the driver was installed and then did the Anniversary Update. That one is still working. Whereas on another also with the Anniversary Update the driver was not installed yet and that gives you the error message?
        I am currently setting up a new VM with the Anniversary Update and’ll check that out.

        1. It seems that the Driver Signature Verification was deactivated or broken or something. We had to deactivate that again and all of a sudden your driver worked again. A bit strange since we tried that several times. Any how: now it works again also with the anniversary update.

          1. Ah ok, nice. The major Windows Updates (November Update, Anniversary Update) are basically installing a complete new Windows on your system. So every non trivial changes made, like driver signature verification, needs to be made again.

  33. Hello. I just stumbled upon your project and I have to say excellent job on making it much easier to use the Wiimotes and Controllers in a much easier method compared to the other alternatives. With that, I do have a bit of a problem with my setup.

    So I’ve followed the directions given: Installed the drivers, snyc my Wii U Pro controller and presto the drivers are working properly. However, anytime when I try to run a game or to experiment with a few of my game projects, none of them either recognize the controller or I have to do a workaround via x360ce or a joystick emulator. I was wondering if I did something wrong within the process or I just need to do a fresh start once more.

    1. Hi, my driver is currently only serving the older DirectInput API. Modern Games are using the XInput API (used for XBox Controllers). Some games still also have support for DirectInput, but those are rare.
      Anyway XInput support is on the list of future features, but that’ll take some time.

  34. Why not just get Microsoft to give you a proper signature. I’m sure if you did it for a college thesis as you said, you shouldn’t have too much trouble getting Microsoft to sign it for you. I mean just find a Microsoft employee, tell him your situation and then ask him to create a cert for your driver. I DO NOT want to compromize my security by having to boot into a less secure mode EVERY TIME I use this driver. If I got a virus on my PC, it could take advantage of this less secure mode, and install a malicious driver on my PC and cause major damage. And your driver uses a self-signed certificate, it obviously will require using this less safe mode of WIndows operation, EVERY time I want to use the Wiimote on my PC.

  35. Hello there,
    I haven’t touched games for a few weeks and yesterday, I put myself back to it (my family was watching the Olympics on my HTPC), I noticed that I need to force your driver on the Bluetooth HID device. I did rerun the tinyinstaller but it remains the same. There was no change in configuration except maybe for the Windows Anniversary update. I recon that I did not use the wiimote since it was updated and yesterday was the first time.
    So now, I do the usual, push on the sync button, wait for it to appear, request to pair, and click next when it asks for a passcode, then while it’s pairing, go to the system device manager and switch the driver.
    After that it works, but I am curious if anyone has the same issue as I have, how can I be sure the tinyinstaller is correctly pushing the driver ranking?
    Thanks

    1. Hi,
      i have not yet upgraded to the Anniversary update, so i have not encountered such problem.
      When pairing the Wiimote (without changing the driver) you can check the Events Tab of the Device Properties for details about the driver ranks.
      It may be the case that they either change the ranking system or the default driver now is simply a newer one and therefore gets a higher rank.

  36. I use dolphin emulator to play my Wii games on pc but it doesnt detect the wiimote when these drives are installed, I have to map everything and there are features that this driver is missing such as shaking, what can I do so i dont have to uninstall this driver to play Dolphin and install it again to play pc games with my wiimote? Is it possible to have 2 bluetooth recievers on my pc so that one is for Dolphin and the other one for pc games?

    1. Yeah, in its current state it blocks access to the Wiimotes for third-party applications. The next updates will include modes to grant third-party applications access.
      Until then there is currently no workaround 🙁

  37. Hello. I have been working on getting this installed. I have everything done, but for some reason in the Apps & Features it says that the driver is “Unavailable.” Do you possibly know what’s causing this, and how to fix it….?

    1. That “Unavailable” is referring to the App/Package size, that is simply not set by the installer. The driver should work anyways.

      1. Thank you.

        The reason I thought that might be a problem is because the driver is not sowing up when I try to update the driver software….

        1. On Windows 8 and above the driver should be used automatically as default driver. The correct device node is under “Human Interface Device”. Either as “Wiimote Device” or “HID-compliant game controller”, the former one means the driver was successfully picked as driver. There is also a “Nintendo RVL-CNT-01[-TR/-WB-/UC]” node under Bluetooth but that is not the correct one.

  38. Hi,
    I’m trying to connect my Wii Remote (with MotionPlus), but it keeps on telling me that I need a passcode in order to pair. Any ideas on what’s happening?

    1. Hi, just leave the text field empty and press next. It simply works without any PIN. Sometime the next button is inactive, in that case simply press cancel and retry the pairing.

  39. Hello, I have a problem, and I´m not good at english, but maybe you can understand this, I´m using BlueSoleil on a windows 10 pc, but It stills having the problem with the code 10, and I don´t know why, I already tried all the ways that I know.

    1. Hi, my driver only supports the Microsoft Bluetooth Stack.
      I haven’t tested the BlueSoleil stack, but i would guess it is providing its own API (as the Tohsiba Stack does as well). Therefore drivers written for the Microsoft Stack won’t work.
      As long as you don’t need the BlueSoleil stack for other devices you should change back to the Microsoft one.

  40. This is an awesome piece of software! I was trying to figure out how to use an older Wii Guitar Hero World Tour drum set on the PC and this is by far the easiest solution. It’s pretty challenging to track down all of the other software that I would need to make this work however with your driver I no longer need any of that stuff.

    The only issue that I’m having is that Windows 10 will not recognize the bass pedal input. I’m using a USB Bluetooth adapter and the LED light on it flashes, indicating an input, when the bass pedal is hit but Windows doesn’t register a button press. Any help would be greatly appreciated.

    1. Hi, thanks for your feedback.
      The drums set is not fully supported yet (it seems the Guitar implementation covers the Drum Set in some parts but not all). So there is work required on my side to implement the missing features. I’ll put that on my list.

      1. Hello. I’m having some trouble attempting to play Guitar Hero. When I pair my Wii remote, first thing I notice is weird is that the first LED on the remote is off and the rest are solid on. Don’t know if that’s supposed to happen, but when I try to go into the game, only my red button works and that’s the ‘Continue’ button that the green is supposed to be and no other buttons work at all. If you could possibly help, I’d be very appreciative. If it’s any help for you, I’m running on Windows 10. Thank you!

        1. The LEDs represent the level of battery left (ie. all four lid -> fully charged, just the right one left -> almost depleted). What Guitar Hero are you trying to play? For PC or through some Emulator?

Leave a Reply

Your email address will not be published. Required fields are marked *