“Nintendo WavePhoenix 是一套完全开源、从零复刻任天堂 WaveBird 无线手柄接收器的项目,目标是用极低成本让市面上大量「只剩手柄、丢了接收器」的 WaveBird 重新满血复活。”
概览原版 WaveBird(2002 年上市)被公认为 GameCube 时代最佳无线手柄之一:– 2.4 GHz RF 无线,无红外“对射”限制,官方 6 m、实测 20 m+ 稳定;
– 续航极长(2×AA 电池可达 100 小时);
遗憾的是,任天堂在十多年前就停止了 WaveBird 的生产,导致控制器,尤其是其接收器的存量日益减少,原装接收器价格已被炒到 50–80 USD。
WavePhoenix是一套 “5 美元 DIY 复活 WaveBird” 的开源方案,把 20 年前的射频协议搬到现代芯片上,让老手柄再战 10 年。以下是 WavePhoenix 的核心亮点:
维度 |
说明 |
协议实现 | 完整逆向并重写了 WaveBird 私有协议(15-chip DSSS + BCH 纠错),兼容原装手柄。 |
芯片平台 | Silicon Labs EFR32BG22(Wireless Gecko SoC),淘宝/得捷 3–4 USD 就能买到。 |
硬件方案 | 开源 PCB(KiCad/Gerber),1/3 原厂接收器体积; |
功能特性 | 虚拟配对:手柄 X+Y 即可自动扫描 16 个频道,不再需要拨轮; |
成本 | 物料 BOM < 5 USD;全套开源,可自己下单打板或购买社区成品。 |
项目仓库:
https://github.com/loopj/wavephoenix
硬件
WavePhoenix 迷你接收器是一款小巧、低成本的 WaveBird 手柄接收器替代品。其设计目标是尽可能降低成本(零件成本约4美元)并简化制作过程。
该接收器使用了一款价格低廉的现成无线模块(RF-BM-BG22C3),您可以手动飞线连接,也可以将其焊接到定制的PCB上。

特性
-
完全兼容原版无线“Wavebird”手柄
-
像现代无线设备一样的单键虚拟配对功能
-
状态LED灯,用于指示配对状态和无线活动
-
通过蓝牙进行固件的空中下载(OTA)更新
-
开源的硬件和固件
-
提供3D打印外壳文件
制作指南
所需元件
-
装配完的 PCBA - (参见PCB部分)
-
3D打印外壳 - (参见外壳部分)
-
GameCube公头连接器
-
带预压端子线的JST-SH 4针连接器
-
1.5mm PMMA光纤线或直径1.5mm x 4mm的导光管
-
压线钳或电烙铁(取决于您使用的连接器类型)
组装步骤
-
制作 JST-SH 转 GameCube 连接器线缆-(参见线缆部分)
-
刷写固件- (参见首次刷写固件部分)
-
将GameCube连接器插入外壳,直到听到“咔”的一声卡入到位。
-
将JST-SH连接器连接到PCB上。
-
将PCB插入外壳,确保LED和开关与外壳上的孔对齐,它应该会“咔”的一声卡入到位。
-
将导光管插入外壳前部的小孔中。如果使用PMMA光纤作为导光管,请先将其剪裁至合适尺寸(4mm)。
-
将3D打印的按钮插入外壳前部的大孔中。
-
将外壳的前盖和后盖合上。
PCB (印刷电路板)
WavePhoenix 迷你接收器 PCB 是一个简单的转接板,用于承载 RF-BM-BG22C3 模块、一个轻触开关、一个状态LED以及一个用于连接GameCube手柄端口的连接器。
物料清单 (BOM)
-
1x RF-BM-BG22C3 模块
-
1x 0805 绿色 LED
-
1x 5x5mm 轻触开关
-
1x 4针 JST-SH 连接器
-
1x 0402 100Ω 电阻 (可根据需要调整)
-
1x 0402 10uF 电容
-
1x 0402 0.1uF 电容
手工焊接
所有元件都应该可以手工焊接,最小的元件是 0402 封装的电容和电阻。如果您觉得焊接电容有困难,可以省略它们,但建议还是焊上。 我建议使用放大设备,并首先焊接 RF-BM-BG22C3 模块,因为一旦电容焊好后,模块就很难焊接了。
外壳
接收器的3D打印外壳文件可以在case
目录下找到。该外壳设计用于容纳组装好的PCB,并为GameCube连接器预留了插槽。 建议按以下方向打印各个部件:

线缆
虽然我们使用的是 4 针的 JST-SH 连接器,但接收器实际上只需要 3 根线。在下面的照片中,黑线是地线,红线是电源线,蓝线是数据线。然而,预制JST线缆的颜色差异很大,所以请务必核对引脚定义,不要依赖照片中的线缆颜色。
JST-SH 连接器上的引脚 1 由连接器外壳上的一个小三角标记指示。在我下面的照片中,我移除了 JST-SH 连接器引脚 4 上未使用的线,但如果您愿意,也可以保留它。
首先,将 JST-SH 连接器线缆的电线剪短至 30 mm:

剥去线头约 1mm 的绝缘层,然后将电线压接到 GameCube 连接器的针脚上。

将压接好的针脚按以下位置插入GameCube连接器外壳:

每个针脚上的“翅膀”应朝向插头的中心,针脚应一直插入直到听到“咔”的一声卡入到位。
接下来,我们需要剪掉并锉平 GameCube 金属外壳上的线缆固定片:

最后,我们可以将塑料连接器插入金属外壳中:

完成后的组件应如下所示:

首次刷写固件
注意
一旦您刷写了引导加载程序(bootloader),之后就可以使用蓝牙 OTA 更新来刷写未来的固件更新了!
WavePhoenix 接收器上运行着两个软件:引导加载程序(bootloader)和应用程序固件(application firmware)。引导加载程序允许我们通过蓝牙刷写未来的应用程序更新,而应用程序固件是处理 Wavebird 手柄通信的程序。
您可以在这里(https://github.com/loopj/wavephoenix/releases/latest)找到最新的引导加载程序和固件。迷你接收器需要使用固件的rf-bm-bg22c3
版本。
首次刷写固件需要一个调试探针(debug probe)和一些特殊软件。如果您的WavePhoenix板已经刷写了引导加载程序,可以跳过这一部分。
调试探针
您需要一个 SWD 调试探针来将初始固件刷写到接收器上。调试探针连接到接收器的 SWD 引脚,让您可以使用 OpenOCD 来刷写固件。 如果您还没有支持 SWD 的调试探针,可以用一个树莓派 Pico 来制作。关于如何使用树莓派 Pico 制作调试探针的说明可以在附录中找到。
引脚定义
如果您要刷写的是已组装好的迷你接收器板,SWD 引脚有两个位置可以连接:板子背面的焊盘,以及通过 4 针的 JST-SH 连接器。

JST-SH连接器的引脚定义如下:

OpenOCD
要刷写固件,您需要安装 Arduino 的 OpenOCD 分支版本,该版本增加了对 EFR32 Series 2 SoC 的支持。 预编译的二进制文件适用于Windows、macOS和Linux。 该分支的源代码可在GitHub上找到(https://github.com/facchinm/OpenOCD/tree/arduino-0.12.0-rtx5)。
刷写步骤
安装好 OpenOCD 后,您可以使用以下命令来刷写引导加载程序和应用程序固件:
擦除设备
首先我们需要进行一次完整的设备擦除:
# Linux / macOS
openocd-f"interface/cmsis-dap.cfg"
-f"target/efm32s2.cfg"
-c"init; efm32s2_dci_device_erase; shutdown"
# Windows (PowerShell)
openocd.exe-f"interfacecmsis-dap.cfg"
-f"targetefm32s2.cfg"
-c"init; efm32s2_dci_device_erase; shutdown"
重要提示
在进行下一步之前,请断开调试探针与接收器的连接,然后再重新连接。
刷写引导加载程序 (bootloader)
然后我们可以刷写引导加载程序:
# Linux / macOS
openocd-f"interface/cmsis-dap.cfg"
-c"transport select swd"
-f"target/efm32s2.cfg"
-c"init; halt; flash write_image erase bootloader.hex; exit"
# Windows (PowerShell)
openocd.exe-f"interfacecmsis-dap.cfg"`
-c"transport select swd"`
-f"targetefm32s2.cfg"`
-c"init; halt; flash write_image erase bootloader.hex; exit"
提示
从现在开始,您就可以使用蓝牙 OTA 更新来刷写新的应用程序固件了!
刷写应用程序
既然设备已经连接好了,我们也可以用 SWD 来刷写接收器应用程序:
# Linux / macOS
openocd -f interface/cmsis-dap.cfg
-c"transport select swd"
-f target/efm32s2.cfg
-c"init; halt; flash write_image erase receiver.hex; exit"
# Windows
openocd.exe-finterfacecmsis-dap.cfg `
-c"transport select swd"`
-ftargetefm32s2.cfg `
-c"init; halt; flash write_image erase receiver.hex; exit"
现在您应该拥有一个功能齐全的 WavePhoenix 接收器了!
使用方法
配对
WavePhoenix接收器使用“虚拟配对”,而非原版“波鸟”手柄的频道滚轮。要开始配对,请按一下接收器上的配对按钮。板载LED将开始闪烁,表示接收器已进入配对模式。在“波鸟”手柄上按住X + Y键即可与接收器配对。配对成功后,LED将停止闪烁并保持常亮。
进入引导加载模式 (Bootloader Mode)
您可以通过两种方式进入用于OTA更新的引导加载模式:
-
按住配对按钮超过3秒,直到LED熄灭。
-
在插入接收器时按住配对按钮。
升级固件
您总能在 GitHub 的latest release页面找到最新的接收器固件。固件提供两种格式:用于OTA更新的.gbl
文件,以及用于通过SWD刷写的.hex
文件。
迷你接收器使用rf-bm-bg22c3
版本的固件,这是专门为 RF-BM-BG22C3 模块设计的。
使用 WavePhoenix 网页应用
如果您的电脑有蓝牙功能或您有安卓手机,可以在谷歌Chrome浏览器中使用WavePhoenix 网页应用来刷写固件。
使用 WavePhoenix 命令行工具
如果您的电脑有蓝牙功能,也可以使用WavePhoenix 命令行工具来刷写固件:
wavephoenixflash firmware.gbl
使用 Simplicity Connect 应用
另一个选择是使用Simplicity Connect 移动应用来刷写固件。
通过SWD刷写
您也随时可以像首次刷写固件部分描述的那样,使用SWD来重新刷写固件。
附录
Pi Pico 调试探针
如果您有树莓派Pico,可以将其用作调试探针来刷写 WavePhoenix 固件。Pico是一款低成本(约4美元)的微控制器板,可以与OpenOCD配合用作调试探针。
从Raspberry Pi Debug Probe 仓库下载最新的debugprobe_on_pico.uf2
文件,然后将该文件拖放到Pico的USB驱动器中来刷写。刷写固件后,Pico就可以作为调试探针与OpenOCD一起使用了。
以下是用于SWD编程的引脚定义:

-
射频
+关注
关注
106文章
5785浏览量
170915 -
PCB设计
+关注
关注
396文章
4827浏览量
91204 -
任天堂
+关注
关注
0文章
227浏览量
19490 -
开源
+关注
关注
3文章
3779浏览量
44122
发布评论请先 登录
LE 发射器和接收器测试返回错误结果是什么原因导致的?
+5V供电的RS-232发射器/接收器HIN232数据手册

USB接收器的安装和使用
bq51013AEVM-764集成无线电源接收器EVM(WCSP封装)

评论