Drop gecko-sdk-cmake, port to libjoybus and libwavebird
WavePhoenix
Open-source implementation of the Nintendo WaveBird receiver using Silicon Labs Wireless Gecko SoCs
Motivation
The WaveBird controller is, in my opinion, one of the best controllers ever made. It is wireless, has an insane battery life, and is very comfortable to hold. The WaveBird set a new standard for wireless controllers. It was the first major console controller to use radio frequency (RF) technology, providing a reliable, lag-free connection that didn't require line-of-sight, unlike infrared controllers.
Unfortunately, Nintendo stopped producing the WaveBird more than a decade ago, causing a dwindling supply of controllers and, especially, receivers. Given the decreasing supply of receivers and the increasing resale prices, I decided to design my own from scratch.
Features
The reference implementation of WavePhoenix includes the following features:
- Full compatibility with the original WaveBird controller
- One-button virtual pairing, like modern wireless devices
- Status LED to indicate pairing status and radio activity
- Over-the-air firmware updates via Bluetooth
- Open source hardware and firmware
- 3D printable case
Buying a WavePhoenix
Don't want to build your own? A number of vendors are now selling pre-assembled WavePhoenix receivers!
- Laser Bear Industries - US-based seller, custom enclosure and PCB by Greg
- Colester Productions - US-based seller, uses my original PCB and SadSnifit's fantastic case
- Various AliExpress sellers
Building a WavePhoenix
The bare minimum hardware needed to build a WavePhoenix is a EFR32BG22 radio module (such as the RF-BM-BG22C3), a GameCube controller connector, and 3 wires!
Since most people prefer a more streamlined solution, I designed a custom PCB and 3D-printable case called the Mini Receiver.
You can find detailed build instructions in the hardware/mini-receiver directory.
Firmware Components
The firmware for WavePhoenix is composed of the following components:
libwavebird- my implementation of Nintendo's WaveBird protocol for Silicon Labs Gecko SoCslibjoybus- my implementation of the Joybus protocol used by N64 and GameCube controllersfirmware- reference implementation of firmware for a WaveBird receiverbootloader- bootloader for updating application firmware via Bluetooth
Worklog
Check out the worklog for a detailed history of the development of the WavePhoenix project.
Special Thanks
- Sam Edwards for his incredible WaveBird reverse engineering documentation, which was essential in getting this working
- Jeff Longo - for his detailed GameCube controller protocol documentation
- Aurelio Mannara - for open sourcing GC+, another great reference for the GameCube controller protocol
- YveltalGriffin - for help and advice along the way, and helping me figure out those mysterious origin packets
- piotref1 - for being the very first person to build a WavePhoenix receiver and provide feedback, a true early adopter!
- Everyone in the incredible BitBuilt community for their support and encouragement throughout this project
License
WavePhoenix is a permissively licensed open source project.
The firmware is licensed under the MIT License.
The hardware is licensed under the Solderpad Hardware License v2.1.
