HID Wiimote 0.3.0.3 & Control Center Issues

Control Center Issues

This smaller update is intended to combat the Control Center issue some users have. For some users it silently crashes when it tries to open the Main Window. Which after doing the driver package install is the default Window to be launched.  Unfortunately, on all my machines and systems the Control Center is working as expected. Right now, I have only some little guessing, where the issue may come from, but do not have any clue about the why and how to fix it.

As I am unable to reproduce the issue, I call for your assistance to help me find the cause of that issue. For that reason, I added an error handler, that’ll catch all errors and display an error message with some (hopefully) useful information. It still does crash, but at least it is not silent anymore. I’d like you to try out the new version.  Report back with the resulting error message and some additional information. See below on what additional information I need. Hopefully that feedback will lead me to the fix. You can report back either under this post or directly post it on the Github issue.

The newest update is available on the HID Wiimote page.

Error Reporting additional information

  • Windows Edition, Version and Build, e.g. Windows 10 [S/N/Pro], 1706, 16299.309
  • System language
  • Time zone of your system
  • Single or multiple user accounts
  • Current account is administrator
  • Antivirus program used (Name and Version)

Changes

  • 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

HID Wiimote 0.3.0.2

Recently some users were asking about compatibility and related issues. However it took some time until one was finally dropping a name and i figured all issue were about the same game. Just to make things quick in the future, if you have any game/tool/program that HID Wiimote does not work with, state its name along with the issue in detail. That way i can specifically look into it. If the particular piece of software is either still in active development or open source, there is a good chance i am able to fix it.

So this update is mainly for Clone Hero and Rewired, along with a minor fix for some rare Nunchuk regression. The update is available on the HID Wiimote page.

Extension Subtypes

Extensions for the Wii Remotes are using a six byte long identifier in a format of 0xXXXX A420 ZZZZ. The ZZZZ part is the extension type, as in class of extension. It is different for all the various extensions (Nunchuk, Classic Controller (Pro), Balance Board, Guitar Hero Accessory). The XXXX part is for most extensions just 0x0000 and does not need any special attention. However the Classic Controller and Classic Controller Pro are using the same extension type identifier (the ZZZZ part) and differ in their XXXX part. Classic Controller are using 0x0000, whereas the Classic Controller Pro reports 0x0100. So the XXXX can be viewed as subtype identifier, to distinguish between the normal and Pro variant. Another example are the Guitar Hero accessories, as they’re all using the same extension type identifier of 0x0103. Their subtype is different though (Guitars 0x0000, Drum Sets 0x0100 and Turn Tables 0x0300).

With 0.3.0.0 i changed the extension identification process. For the bumper and trigger mapping the driver needs distinguish between the Classic Controller and Pro variant. The non-Pro variant  has some analog triggers and therefore needs some special handling. So the identification process was changed to check against a composite identifier composed of the extension type and subtype parts. However one user reported a regression, that his Nunchuck doesn’t work anymore (it works in pre 0.3.0.0 and other Nunchucks work fine in 0.3.0.0+). It seems some other extensions are also using the subtype identifier for purposes that are unknown. In order to fix the regression, the identification process was reverted back. An explicit subtype check is only used for the Classic Controller (Pro) extension type.

Product and Serial String

As mentioned users were reporting that the driver wasn’t working with the game Clone Hero. I tried it myself and indeed for some reason it wasn’t working at all. You can tell by its directory layout that it is obviously made with Unity. In the past i already tested compatibility with Unity and verified it. So that was weird. After looking through the game folder i found some DLLs named Rewired. Rewired is a third-party Unity package for extensive input support. It adds various controllers, native APIs and their support, as well as button remapping tools.

Rewired provides a Trial. After downloading and doing some tests, its DirectInput mode was working fine. However RawInput was not at all, as in the controller didn’t even show up. A simple RawInput implementation was working fine though. I contacted the developer of Rewired about any special handling or filtering done by the package. They did some tests themselves and reported back quite quickly, so props for them.

The Windows HID API provides methods to retrieve a Product, Manufacturer and Serial string from the device. Apparently the default HidBth minidriver simply reports back the Bluetooth address as serial number. This can then be used to retrieve additional information about the actual Bluetooth device node. Rewired relies on that particular behavior and therefore was ignoring the controllers. The implementation of those strings were on the feature list for HID Wiimote. Though somewhere down the list at “Implement when necessary”. That case was apparently now. After adding support for the Product and Serial strings HID Wiimote is now compatible with Clone Hero, Rewired and any other that relies on that behavior.

Changes

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

HID Wiimote 0.3.0.1

Just a small update for HID Wiimote to fix the Guitar Hero stuff. I somehow messed up some indices in the first place. And later messed up some other again when refactoring some code. In the end the Whammy and Touch Bar (RX and RY axes) and the buttons were mapped to the X and Y axes. That’s why some buttons were permanently reported as pressed. So changing four lines of code (one index each line) fixed it.

I’ve also changed the default settings for new devices, that have never been connected yet. The default settings should now reflect the behavior of pre 0.3.0.0.

In case you have 0.3.0.0 installed, you can simply update the driver by downloading the newest version and running the new Control Center binary. It’ll automatically detect the old version and replace it for you. However 0.2.7.4 and below have to be removed manually before updating.

Download available on the HID Wiimote page.

Changes

  • 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

HID Wiimote 0.3.0.0

Long time no see/read/update….

So far my development and release strategy for the multi driver mode feature was to design, implement and release it in one go. However such multi mode driver design isn’t that trivial. Combine that with my lack of development time for this project and the result was being stuck for a long time.

But that is changing now. I am going to release the multi driver mode feature in multiple steps as i progress development. The benefit is that new features are available earlier. On the downside development time may increase, as i need to reimplement and refactor the codebase. Furthermore settings  are not guaranteed to be stable among releases. But slow progress is better than no progress at all.

What’s new?

This update introduces the Control Center. That is an user mode application, that’ll act as installer and device settings tool. The installer let’s one easily enable and disable Driver Signature Verification (via Test Mode) and install and remove the HID Wiimote device driver. Furthermore for future updates it will automatically detect whether the device driver is installed and replace it (This does not work with pre 0.3.0.0 drivers, so for this update one has to manually remove any previous driver version). The Control Center shows all connected Wiimotes and let’s one apply device specific settings. Those settings include disabling a Wiimote’s accelerometers and some Classic Controller/Wii U Pro Controller mapping variations.

Installer Window
HID Wiimote Installer Window
HID Wiimote Control Center
HID Wiimote Control Center

Upcoming & Roadmap

The current release only includes the gamepad mode. The following updates are going to resolve around adding further driver modes. The goal is to finally have one driver supporting all kinds of different mode, i.e. IR mouse, DPad mouse, etc.

Next up is the raw/passthrough mode. That’ll make HID Wiimote compatible with third party applications, by letting them access the Wii Remote through my driver. So no more annoying driver switching. After that the mouse modes will be added. So long the old mouse version are still available, but won’t get any updates.

Final Words

As said the current release only includes the gamepad mode. So no update for people that use the Wiimote as mouse. Also to simplify the development process a Control Center is only compatible with its accompanied device driver version.

Before updating please remove any previous HID Wiimote Version.
As always downloads are available on the HID Wiimote page.

Change Log

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

HID Wiimote Gamepad 0.2.7.0

Rather small technical changes for HID Wiimote. First one is primary a fix for Unity3D, when you want to use the Wiimote as gamepad. Unity3D uses RawInput instead if DirectInput, when reading from generic non XInput Gamepads. It seems RawInput has some issues with axes that have a negative value range, e.g. -127 to 127. So the change is to simply use a value range from 0 to 255.

The support for the Balance Board and Guitar Hero Guitar are completely untested and therefore pure experimental. I do not have a Balance Board nor a Guitar, therefore i am not able to test it(i might get a Balance Board in February). So use on your own risk, but you are welcome to report any issues and i’ll attempt to fix them.

Downloads are available on the HID Wiimote page.

Changes

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

HID Wiimote 0.2.6

New Year; i am back in Berlin and can continue to work on HID Wiimote. Yay!

Rather small update with just one and a half fix. Regarding the connectivity issue on Windows 10 Version 1511, i had no issues while testing. Therefore i assume either the updated WDK or another Windows update fixed it. If the problem persists, please report back, so i can take another look at it.

Direct Download Links: Gamepad, IR-Mouse, DPad-Mouse

Links have been replaced with Hotfix 0.2.6.1 0.2.6.2: The installer had some problems on non English Windows Systems (and then i messed up the installer config).

Changes

  • 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)

HID Wiimote Windows 10 Builds

Nyhet!

HID Wiimote Windows 10 Builds

Some more information

From now on there will be a unified build for Windows Desktop systems. The new WDK 10 makes it possible and in return it means less mess with different packages.

This build has nothing new except that is has been rebuild with the newest Visual Studio 2015 and Windows Driver Kit 10. So for non Windows 10 users there is no urgent need to download/update it. But you can if you like to, just make sure to uninstall the previous/old driver.

This new build was tested on a Windows 10 system with a build-in Bluetooth adapter and a separate Bluetooth Dongle, as well as on a Windows 8.1 system with a Bluetooth Dongle. I wasn’t able to test it on Windows 7, because i have currently no Windows 7 system here around, so please report back if there is any issue.

Windows 10 Universal Driver: Coming Soon™

So this is a multi-system Desktop build and not an Universal Driver. I am going to provide an Universal Driver as well soon, but there is some work to be done. The driver compiles fine and without any error. The only issue is that i have to make an universal .inf file, which simply requires me to read through the MSDN documentation.  However, i am currently not able to test the Universal Driver on a Windows Phone nor on an IoT-System, so the build is going to be purely experimental and for people that just want to give it a try.

I am also not quite certain about the driver signing regarding the Universal Driver. I have no clue whether it is possible to deactivate the driver verification on Mobile and IoT-Systems and get an unsigned driver loaded. I would assume there is some way, because devs need the ability to test drivers on the device, but that might require additional test modes, which in turn may have side effects.

Changes

  • Windows 10 Desktop Build

HID Wiimote Update – 13.07.15

Just two small fixes.

Changes

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

HID Wiimote Source Code available

Wuhu! I have published the Source Code of HID Wiimote on Github.
Some have already asked for it, now i finally did it!

Check it out: https://github.com/jloehr/HID-Wiimote

I am going to fill it with Issues and Milestones in the next days.
But you can add Issues on your own, when encountering a bug.
If you manage to fix a bug, or come up with a cool feature, feel free to contribute.
Fork it, fix it, send a Pull Request!

 

IR-Mouse HID Wiimote Hotfix

Small hotfix for the IR-Mouse version of HID Wiimote. I stupidly removed the Hardware ID from the .inf file, thinking the IR-Mouse doesn’t need it, because the “-TR” Wii Remote shares it with the Wii U Pro Controller.

Added it back to the .inf file and made a new package batch. When you want to use the newer Wii Remotes with the IR-Mouse driver, uninstall the old one and get the fresh packages from the download page.

Since the Wii U Pro Controller has the same Hardware ID as the newer Wiimotes, the IR-Mouse driver gets also loaded for the Wii U Pro Controller, although it doesn’t have an IR-Sensor.

Changes to IR-Mouse

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