0
mirror of https://github.com/loopj/wavephoenix.git synced 2026-01-11 23:11:29 +00:00
James Smith d0e36f24e9
Merge pull request #22 from loopj/slcp
Drop gecko-sdk-cmake, port to libjoybus and libwavebird
2026-01-11 15:11:12 -08:00
2026-01-11 13:09:18 -08:00
2026-01-10 12:58:33 -08:00
2026-01-11 14:51:57 -08:00
2025-05-27 13:33:58 -07:00
2026-01-10 12:50:54 -08:00
2026-01-11 14:51:57 -08:00
2026-01-11 14:51:57 -08:00

WavePhoenix

Open-source implementation of the Nintendo WaveBird receiver using Silicon Labs Wireless Gecko SoCs

Discord

WavePhoenix

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!

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 SoCs
  • libjoybus - my implementation of the Joybus protocol used by N64 and GameCube controllers
  • firmware - reference implementation of firmware for a WaveBird receiver
  • bootloader - 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.

Description
Open-source implementation of the Nintendo WaveBird protocol using Silicon Labs Wireless Gecko SoCs
Readme 5.4 MiB