4

Cue the "I've tried nothing and I'm out of ideas"...


What do I want?:

I want to make a Unity game for Android using the Wii Balance Board as a controller.


What have I researched?:

The Wii Balance Board uses standard Bluetooth to connect to the Wii. The board does not have a passcode. All results for connecting the board to an Android device points to two apps FitScales and WiiScale both not compatible with my device. I can't find any other results than these two apps.


What's my question?:

Why can't my phone (Nexus 4, Lollipop) connect to a device with no pin? (It prompts me to put in a pin and "OK" is greyed until I enter a pin). So how can I get it to connect to my Bluetooth?

Other than Bluetooth, is there any other way to get information from the board to my phone?


Notes:

  • My Windows 8 can connect to my board flawlessly.
  • Yes, I've tried tuning my phone and Bluetooth "off and on again".
  • Yes, my Bluetooth works.
  • Yes, my board works (like I said I could get input from it on my pc).
  • My board does appear in my Bluetooth list.
  • Any information is welcome!
3

TL;DR

Currently it's impossible for Nexus 4 running on stock (AOSP) ROM to connect to Wii Balance Board via Bluetooth.

Reason: On JellyBean 4.2, Android changed its Bluetooth stack, and the new one doesn't "support" L2CAP which is used to connect to Wii peripherals.

Solution: Some custom ROMs (e.g. CyanogenMod) and custom kernels might fix this issue.

(Specific answer for your case: unfortunately, it's not a good idea to make a Unity game for Android using the Wii Balance Board as a controller)


Details

From FitScales's "what's new" and WiiScale's description:

  • Prevent installation on JellyBean MR1 4.2 due to Google replacing the Android Bluetooth stack. The new stack does not expose the functionality required by FitScales rendering it incompatible for now.

  • **DOES NOT WORK on NEXUS devices or JELLY BEAN or ANDROID 4.2 devices.

Using that clue as the starting point, I found a discussion on MoDaCo forum:

Post #4: Google broke/removed insecure L2CAP socket support in Android 4.2.x. Wiimotes and other Wii peripherals stopped working because of this. Tell Google to fix/restore this functionality.

And finally, the report on AOSP issue tracker confirms this: Issue #58164: Support Bluetooth L2CAP (consider starring that to follow the progress. Also, there are some constructive technical information posted there).

One thing that might interest you:

Post #50: Alright, so I'm on a Nexus 7 rooted and running the latest official build of CyanogenMod 11. Before I flashed CM, it always asked for a password when trying to connect a WiiMote via straight Bluetooth. Now that I'm running CM, it connects to on without asking for a PIN.

Also, post #113 mentions a link to Android code review which seems trying to support WiiMote (and possibly other Wii peripherals) on Android's next build. However, it still needs kernel that supports the following:

CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_WIIMOTE=y

3.4 based kernels support only the original WiiMote,
3.10 kernels should have native support for 2nd gen WiiMotes,
Wii U remotes did not make it in until 3.11 kernel release.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy