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. I need the driver with reversed actions for the X axis, keeping Y axis actions the same.
    That is for the PC skiing game, where your turn left buy putting weight on the right foot, and vice versa, and for increasing speed you lean forward.
    Could you, please, provide that changed driver, or an instruction how to change it (with a source code), if it wouldn’t be too difficult to do it.

    Thank you,
    Michael

  2. Hello, i’ve made a recent discovery that the latest dolphin emulator’s “continuous scanning” feature helps connect the Wii controller to the computer much faster! And i was hoping maybe you could make a small update with a continuous scanning feature similar the Dolphin emu.

  3. By the way. I’m software developer and project manager since year 2000 and i know the effort that this require.

    Greetings from Mexico.

  4. Excelent work Julian, it’s working very fine and, for me, this approach is much better than methods like glovepie for some reasons.

    I think, your work worths a lot.

    is there any way to contribute with you?, i’m willing to contribute with some dollars to feel comfortable in further use of this driver.

  5. Hi,

    great project. Two questions:

    1) The Z axis of my Wiimote does not update, neither in Windows Gamecontroller test, nor in my application. Any idea on this? Does the Z axis need to be enabled separately or something?

    2) In a Wiimote “Motion Plus inside”, should I see the rotation separately from acceleration, or is this both mixed? Furthermore, I do not see a difference between the output of a normal Wiimote and a “Motion Plus inside” one. Any ideas on this?

    Thanks, Felix

    1. i am having this exact same problem, would love to know how to fix it. it’s been driving me crazy that i can’t use the remote properly

  6. “An error occured while running DPInst.exe”
    I’ve tried hid-wiimote, then touchmote, then wiinusoft/pro, now another attempt at hid-wiimote, didn’t even make it to driver install, last time I got stuck on test mode. Btw Touchmote also won’t connect my wiimote anymore, it’s all going downhill

    1. Update: Driver installed “successfully”. Didn’t actually happen. Blue lights keep flashing endlessly.

  7. So my wii remote pairs but has an exclamation mark on it and under it says “driver error”. I tried the update driver process but when you’re supposed to select “wiimote device” from the list it is not there – only “bluetooth device”. Originally I did not install the certificate so the driver install failed. I realized my mistake, installed the certificate, then the driver appeared to install just fine. But, as I stated to begin with, now I’m getting the driver error issue.

  8. Nevermind this tool successfully works with 4 nunchucks, all u gotta do is save one profile in cemu with the wiimote+nunchuck being used that has the analog stick mapped properly and then load that one profile for the following nunchucks under the other controller tabs for the specific controllers etc. Thanks!!

  9. Im able to connect 4 wiimotes and 4 nunchucks are DETECTED but the joystick on the nunchucks don’t work properly! please update or please help

  10. THANK YOU!!! it works just calibrate ur wiimote and nunchuck in windows control panel’s game controllers options and also disable motionplus in cemu and disable accelerometer in this control center app once its all setup it works no joke! I just got it after a few hours of research and trial and error works flawlessly..

  11. I cannot remove the driver signature verification. I change it in the installer, reboot my PC and it doesn’t work.
    I have also tried using the command line, and that doesn’t work either.
    Anyone know what to do?

    1. yes, do the same steps as u do to get into safe mode on windows 10 but instead press F7 you will see the option for it in the list that pop ups at POST screen to remove it

  12. I don’t see TEST or SETTINGS in the Properties dialogue box so the gamepad still does not work. It used to show before I installed your drivers though. Any help?

  13. So would like to ask if it could emulate it or make it so that it is recognized as Xinput?
    doesn’t work for other games that only recognize Xinput as a controller…

  14. i have the wiimote paired in windows 10 bluetooth settings but when i try connecting it just keeps flashing. there is a “Wiimote” entry in the control center but it doesnt update the battery level, say its connected or anything. also the driver under “Human Interface Devices” is set correctly

    1. Hey Tem had the same problem and could fix it for a Wii Motion Plus Remote!
      Don’t hit the 1 and 2 Buttons to pair the remote with Windows 10!
      Use the Sync Button on the back of the remote!

  15. Even after uninstalling the driver, I am no longer able to use the Wii remote in other software that worked before (e.g. GlovePIE). Not sure how to get the Wii remote back to working now.

  16. Hi,
    I know you probably won’t update this drivers but, How do I use the IR?
    I installed the IR-Mouse drivers and the D-Pad Mouse drivers and neither work…
    What I need is to use the IR pointer, I have an IR Sensor and it doesn’t work… :/

    1. I’m not exactly sure what data you are trying to get from the IR sensor, but I’m looking into modifying the drivers to provide more direct functionality than a calculated mouse pointer among other things.

  17. I found a workaround for connecting the wiimote without “removing device”

    just disable your Bluetooth on windows and you noticed that the HID Wiimote Settings Interface disconnected by itself, this is where you connect your Wiimote by holding the 1 & 2 buttons and re-enable bluetooth either from the action menu, or your own preference.

  18. Just recently found out about these wonderful wii remote projects on pc. Has there been a fix about the THIRD PARTY wii remotes not connecting. I have one such device which i use with my cousins console. however, the error says it did not migrate due to partial or ambiguous match. Any fix for that? was hoping to use this for teaching in class.

  19. Does it work connecting via USB? or charging cord or whatever, my pc doesnt have build in bluetooth soooooooooooooooooo

  20. may i ask , do it work on macbook pro that using window 10 and connect 3rd party wiimote on new version cemu?hope someone give me solution!thank you

  21. Thanks for getting us this fix but mine keeps saying an error occured while running DPInst.exe

    Any way to fix this?

    1. Also, it says it won’t work on dolphin emulator but I see others saying it does?
      Just trying to find the best route to play Super Mario Galaxy.

      1. Dolphin automatically connects to Wiimotes if you configure it in the settings correctly. First, connect the wiimote via bluetooth. Then, just switch a port to real Wiimote in the controller settings and switch on continuous scanning. There is no need for HID Wiimote if you’re trying to play Dolphin games.

  22. Would it be possible to add support for the uDraw tablet extension? It would be a cheap alternative drawing tablet and I think you could totally do it.

  23. It seems to work perfectly, but I could not make this work with two wiimotes, even though they appear separate in the Control Center, in game they work as One Wiimote. At the moment I don’t know if this is a problem or if actually the program doesn’t support multiple Wiimotes working at once.

    Where can I find info about this, or a fix in case they should be working together?

  24. make sure you guys press the sync button once and then click normal buttons during the pairing or else it may not work.

  25. mine wont install no matter what, it says it is a problem with dpinst.exe , any way i can fix this?

  26. Hello Julian Loehr. Pls is there a way to use your driver without having to disable driver signature verification? If there is, please let me know. Thanks!!

  27. Even after the uninstallation just how it is shown here, it still seemingly completely destroyed the function of my wiimote on my computer. Before, both TouchMote and the WiiMoteHook easily connected my WiiMote to my PC witihn seconds, now, they dont recognize my wiimote anymore. Thanks.

  28. Please help! I’ve got everything on the right settings, but the controller says it’s only paired and not connected. Although, I have the correct driver and it is working, I have the controller hooked up correctly, and the Control Center says the device is there. The controller’s lights also do not light up.

  29. I need help,
    I had installed this without disabling driver signature authentication. I realized that and did not want to turn it on so i deleted the drivers manually. I went to use the wiimote on Dolphin (a Wii/Gamecube emulator) and it no longer connects to it. Someone help me please. I enjoy using my wiimote on my computer in dolphin and it doesnt work

  30. Excellent work, Thank you Julian! Although there are quite a few steps in setup to establish the controller connection, the driver works. Now to find a use for this controller with some games… 🙂

  31. Thank you so much for doing this! This makes it much easier to use my Wiimote on my PC.

    Side note, could you add a feature for disconnecting/reconnecting Wiimotes? That would be really helpful.

    Again, thank you so much!

  32. Hi, when I switch to your driver, the lights on my wiimote turn off immediately – the wiimote has disconnected itself, which can be verified because the next button press will try to connect it to the last paired console

  33. I’ve managed to connect a Wii remote to my PC after installing this driver, but I cannot use the remote, because Windows tells me it cannot verify the digital signature (Code 52, as Windows puts it). I installed the 64 bit driver, which I know my PC can handle, and have enabled the certificate from the installer. I’ve attempted to troubleshoot this issue for over an hour and a half now, but I’m still stuck with a connected remote that refuses to be used thanks to an “invalid signature”. If anyone has any advice or can tell me where the hell I went wrong, I’d greatly appreciate it.

      1. Reboot by clicking shift and reboot in the windows menu, then troubleshoot, restart with options
        then you will be asked to select disable driver signature enforcement

  34. Hello, after I select my device on the control center If I click off of the control center the blue that appears on my device when I select it disappears and I can’t use it

  35. I try to connect the whammy on my guitar controller but it doesn’t work. I have 3.0.3 installed along with the drivers.

  36. Any change to get Third Party Wii U Pro Controller working with this? I just tried it with no luck.

    I have found it near impossible to get it working with my pc anyway… The problem seems to be that after controller is found via “devices and printers / add device” and driver installed, the controller cuts off the connection…

    My Raspberry Pie connects to it immediately when following this guide: https://github.com/RetroPie/RetroPie-Setup/wiki/Wii-U-Pro-Controller

    1. I want to use this with games that use battleye anticheat, but they don’t allow you to use it in test mode, and in order for the wiimote to even connect, I have to be in test mode. The only solution I could think of is that the driver gets signed! Please let me know if you have any other ideas.

  37. Thanks for HID Wiimote.

    At first, I was to able to sync two wiimotes to my Windows 8 PC with your driver. The first LED would light up for the first synced wiimote and the second LED would light up for the second synced wiimote with no problems. Now, the third and fourth LEDs light up for both controllers and only one wiimote works. Why?

    Also, I cannot sync one of the wiimotes to the Wii and I always have to re-sync the other wiimote to the Wii after using it with HID Wiimote 0.3.0.3 driver.

    Thanks for any help.

  38. Hello.

    I have been trying to pair my Wii MotionPlus (TR) to my windows 10 pc.
    Once I paired it, it said driver error. Then, I found this site.
    I followed all the steps, and the Wiimote Device no longer has a yellow triangle next to it.
    However, the device just says “Paired” and the led’s will not stay on.

    Any idea of how to fix this?

  39. i get driver error listed under bluetooth devices which seems to disappear when i uninstall the driver. but the wiimote still isnt detected regardless of the installation status of the driver. when not installed bluetooth devices says its connected and leds on the wiimote keeps on blinking and when i install the driver bluetooth devices says driver error and device manager displays a yellow warning icon on wiimote , the leds dont light up either.

  40. Hi Julian, thanks a big bunch for your drivers, a lot of fun ahead in public transports !
    However I had a bit of trouble configuring : I may not have looked hard enough but did I not found in the readme or tutorial that the drivers only work with the Microsoft Bluetooth stack (I was using BlueSoleil at the beginning).
    It may save a lot of hassle for any newcomer for this fact to be explicitly stated, don’t you think ?

    Thanks for everything !
    Take care,
    Jérémy

    1. Hi,
      I have a note on this site under “Known Issues”, but I probably should add those to the Readme as well. Thanks for the feedback.

    1. TinyInstaller has been removed and replaced by the HID Wiimote Control Center, which features an installer.

Leave a Reply

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