Homebrew Project Testers wanted: BtEmbedded, a new bluetooth stack

  • Thread starter Thread starter mudrik
  • Start date Start date
  • Views Views 1,792
  • Replies Replies 15
  • Likes Likes 9

mudrik

Well-Known Member
Newcomer
Joined
Nov 18, 2022
Messages
66
Reaction score
120
Trophies
1
Age
33
XP
697
Country
Turkey
Hi all!
In the last few months I've been writing a new Bluetooth stack from scratch, with the goal of supporting more devices than just Wiimotes, and be suitable for running in the ARM Starlet processor too (for things like Nintendont and Fakemote, since I plan to support more BT controllers). It's nearly complete, and I do have an example program which transfers a file from the Wii to another device (phone or PC), just to prove that the bluetooth controller of the Wii is capable of supporting standard bluetooth scenarios.

I've now reimplemented the WPAD API from the wiiuse library (which homebrews use to communicate with the Wiimotes) on top of BtEmbedded, and I'd like to have some kind people test it (better if on the Wii itself): in particular, while I do have a Nunchuck and a Classic Controller Pro, I would like to have people confirm that the Guitar Hero 3 controller, the Wii balance board and the Wii U Pro controller work too.

I've setup a build of the famous Visual Controller Test utility, recompiled to use the new Wpad2 library, and I've made the binary available here: https://github.com/mardy/VisualControllerTest/releases/tag/wpad2-0.1
You can run it with wiiload or copy it into your Visual Controller Test folder on the SD card and rename the file to "boot.dol" (make a copy of the original one, not to lose it). I'm not sure if this program can be used to test the balance board and the Wii U controller, though -- I guess not, since I don't see them drawn in the main screen. So, another favour I need to ask is to point me to some open source homebrew using these controllers, so that I can make a build using Wpad2+BtEmbedded, and update this post with the link to a test binary.
 
Wait, hold up!
You saying this connects any Bluetooth Device to the Wii?

If yes, later I could try my 8BitDo SN30 Pro!
 
Wait, hold up!
You saying this connects any Bluetooth Device to the Wii?

If yes, later I could try my 8BitDo SN30 Pro!
No, not yet. All the building blocks are there, and I will be definitely working on it, but we are not there yet. At the moment this doesn't add any new functionality.
 
No, not yet. All the building blocks are there, and I will be definitely working on it, but we are not there yet. At the moment this doesn't add any new functionality.
No worries, apreciate your effort.

Just speaking out of nowhere, what if you handle BT Controller Mappings the way RetroArch handles them?
It has already made .cfg files that communicates with every controller if it detects them.
It could save you lot of work (not sure how you're going to handle it) but I think it's helpful having dozens of already made BT Controllers mappings in .cfg format.
 
Consistently impressive stuff, mudrik.
point me to some open source homebrew using these controllers, so that I can make a build using Wpad2+BtEmbedded, and update this post with the link to a test binary.
Nintendont is the only Wii homebrew I'm aware of that supports the Wii U Pro controller (on its own, without later additions/modifications).

To be clear, I'm talking about the Wii U Pro controller. The Wii U (Gamepad) Controller I don't think has been implemented much if at all with non-WiiU platforms because it's such a weird beast.

As for the balance board, such homebrew exists, but it's not something I have personal experience with. Quick search turns up some very old stuff purporting to be open source (and the source download link works). https://wiibrew.org/wiki/Balance_Board_Tools

Let me know if any additional digging would be helpful to you.
 
  • Like
Reactions: Tarmfot and mudrik
As for the balance board, such homebrew exists, but it's not something I have personal experience with. Quick search turns up some very old stuff purporting to be open source (and the source download link works). https://wiibrew.org/wiki/Balance_Board_Tools
Thanks for the hint! I'm just a bit confused, because I don't see anything in the source code of that program that would appear to be handling the Wii balance board specifically. The libogc/wiiuse library defines a special handle for the board, WPAD_BALANCE_BOARD, whereas Balance Board Tools only uses the usual controllers from WPAD_CHAN_0 to WPAD_CHAN_3. It would be nice to hear from some user that the Balance Board Tools actually works in its current form. Also, one thing that I'm not sure about, is whether it's theoretically possible to have 4 Wiimotes and the balance board all connected and working at the same time.

If someone is able to answer these questions, that will help me a lot :-)
 
I don't see anything in the source code of that program that would appear to be handling the Wii balance board specifically.
Yeah, it appears Nintendo's implementation of the Balance Board as an input on Wii is equivalent to a Wiimote+attachment.

https://wiibrew.org/wiki/Wii_Balance_Board

Also, one thing that I'm not sure about, is whether it's theoretically possible to have 4 Wiimotes and the balance board all connected and working at the same time.
My guess is no. Unless there's an implementation of a WPAD_CHAN_4 (+).
 
It's 4 wiimotes + 2 extra slots for balance boards. The game/homebrew would need to be able to support more than 4 though to actually have all 6 connected at once.

Btw I don't really know what I'm talking about, but Zarithya had discussed this in Modmii's development discord while she was working on adding wiimote magic to libogc, so I'm just parroting what she said (as best as I can). She's probably the best person to ask about this stuff if u can find her on github or twitch or discord
 
The hardware is able to support seven like normal Bluetooth, but SYSCONF only stores six total entries for "active" controllers: four for Wiimotes, one for the balance board, and then one unknown/unused slot. Homebrew, of course, could just ignore what SYSCONF says and keep its own list.

Yes, the Wii U Pro Controller is supported in Visual Controller Test, I just never got around to adding it to the main screen image. The Balance Board is next on my list of controllers to support.
 
It's 4 wiimotes + 2 extra slots for balance boards. The game/homebrew would need to be able to support more than 4 though to actually have all 6 connected at once.
Yes, that's the number of slots reserved in the SYSCONF, but unless I'm misreading libogc's wiiuse code, in practice only 5 are used.
Yes, the Wii U Pro Controller is supported in Visual Controller Test, I just never got around to adding it to the main screen image.
Oh, nice! Is there a chance that you could try out my build, if you have the Wii U Pro controller? I tried to migrate your new code but I fully admit the possibility of having introduced mistakes.
The Balance Board is next on my list of controllers to support.
Wait, I thought it was supported already? libogc/wiiuse has some code for it; or is it just a relic of the upstream wiiuse library, and we are not using it on the Wii?
 
Yes, that's the number of slots reserved in the SYSCONF, but unless I'm misreading libogc's wiiuse code, in practice only 5 are used.
In libogc as it is, yeah.
Wait, I thought it was supported already? libogc/wiiuse has some code for it; or is it just a relic of the upstream wiiuse library, and we are not using it on the Wii?
Oh yeah it's supported in libogc, but not in Visual Controller Test. I want to add support for it in VCT and ensure that it's in a standard format in libogc. Then I also have to make MotionPlus work better, and then I might finally be done with all I wanted to do for controllers.
 
  • Like
Reactions: mudrik and XFlak
Hi all! I've got some good news to share: the Nintendo Switch Pro controller and the Joy-cons connect to the Wii and work!

I've written a very rough application to test them, you can download it from here: https://github.com/embedded-game-controller/egc-sdl-test/releases/tag/0.1 (it works on Dolphin, too, if you use the BT passthrough)

I haven't found a way to embed the video here in the forums, so if you want to have a quick glance at how this looks like without trying it, please head over to the blog post: https://mardy.it/blog/2026/04/teaser-connecting-nintendo-switch-controllers-to-the-wii.html

Next steps:
- clean up the WIP branches and merge them into embedded-game-controller
- try to get embedded-game-controller packaged into devkitPro
- write a backend so that embedded-game-controller can be run in the Starlet processor (for Nintendont)
- add more drivers!
- (HARD) get it to work into fakemote
 
Hi all! I've got some good news to share: the Nintendo Switch Pro controller and the Joy-cons connect to the Wii and work!

I've written a very rough application to test them, you can download it from here: https://github.com/embedded-game-controller/egc-sdl-test/releases/tag/0.1 (it works on Dolphin, too, if you use the BT passthrough)

I haven't found a way to embed the video here in the forums, so if you want to have a quick glance at how this looks like without trying it, please head over to the blog post: https://mardy.it/blog/2026/04/teaser-connecting-nintendo-switch-controllers-to-the-wii.html

Next steps:
- clean up the WIP branches and merge them into embedded-game-controller
- try to get embedded-game-controller packaged into devkitPro
- write a backend so that embedded-game-controller can be run in the Starlet processor (for Nintendont)
- add more drivers!
- (HARD) get it to work into fakemote

Truly incredible work! I don't have a Switch Pro controller but just hearing that it works on the Wii is truly mad, a controller made over 2 decades later! How's that for backwards compatibility?
 
  • Like
Reactions: jeannotte
Would it be possible to make WPAD2 its own library independent of libogc? It would make it easier for me to integrate.
Since WPAD (wiiuse) is part of libogc, it seemed (and still seems) logical to me that WPAD2 would also be part of libogc, since wiimotes are rather basic functionality for a Wii. However, some concerns have been raised that having it in libogc, while still keeping wiiuse (and it's unclear if we can get rid of it, since WPAD2 is only compatible with the WPAD_* APIs, which is only a subset of what wiiuse offers) would confuse and fragment the homebrew community, so I'm not very optimistic about my branch getting merged soon.

Maybe the best way forward is indeed to publish it as a separate repository, and then if libogc maintainers like it, they can still import it via cmake (it has its own equivalent of "git submodule") and deliver it as part of libogc, transparently to their users.

I'll give some more thought to the issue, but at the moment it doesn't sound like a bad idea.
 

Site & Scene News

Popular threads in this forum