WavePhoenix:从零复刻任天堂 WaveBird 无线手柄接收器

发烧友研习社 2025-08-07 08:00
资讯配图


 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上。

资讯配图

特性

制作指南

所需元件

组装步骤

  1. 制作 JST-SH 转 GameCube 连接器线缆 - (参见 线缆 部分)

  2. 刷写固件 - (参见 首次刷写固件 部分)

  3. 将GameCube连接器插入外壳,直到听到“咔”的一声卡入到位。

  4. 将JST-SH连接器连接到PCB上。

  5. 将PCB插入外壳,确保LED和开关与外壳上的孔对齐,它应该会“咔”的一声卡入到位。

  6. 将导光管插入外壳前部的小孔中。如果使用PMMA光纤作为导光管,请先将其剪裁至合适尺寸(4mm)。

  7. 将3D打印的按钮插入外壳前部的大孔中。

  8. 将外壳的前盖和后盖合上。

PCB (印刷电路板)

WavePhoenix 迷你接收器 PCB 是一个简单的转接板,用于承载 RF-BM-BG22C3 模块、一个轻触开关、一个状态LED以及一个用于连接GameCube手柄端口的连接器。

物料清单 (BOM)

手工焊接

所有元件都应该可以手工焊接,最小的元件是 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 的支持。 预编译的二进制文件适用于WindowsmacOSLinux。 该分支的源代码可在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 "interface\cmsis-dap.cfg"            -f "target\efm32s2.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 "interface\cmsis-dap.cfg" `            -c "transport select swd" `            -f "target\efm32s2.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"
# Windowsopenocd.exe -f interface\cmsis-dap.cfg `            -c "transport select swd" `            -f target\efm32s2.cfg `            -c "init; halt; flash write_image erase receiver.hex; exit"

现在您应该拥有一个功能齐全的 WavePhoenix 接收器了!

使用方法

配对

WavePhoenix接收器使用“虚拟配对”,而非原版“波鸟”手柄的频道滚轮。要开始配对,请按一下接收器上的配对按钮。板载LED将开始闪烁,表示接收器已进入配对模式。在“波鸟”手柄上按住 X + Y 键即可与接收器配对。配对成功后,LED将停止闪烁并保持常亮。

进入引导加载模式 (Bootloader Mode)

您可以通过两种方式进入用于OTA更新的引导加载模式:

升级固件

您总能在 GitHub 的 latest release 页面找到最新的接收器固件。固件提供两种格式:用于OTA更新的 .gbl 文件,以及用于通过SWD刷写的 .hex 文件。

 迷你接收器使用 rf-bm-bg22c3 版本的固件,这是专门为 RF-BM-BG22C3 模块设计的。

使用 WavePhoenix 网页应用

如果您的电脑有蓝牙功能或您有安卓手机,可以在谷歌Chrome浏览器中使用WavePhoenix 网页应用来刷写固件。

使用 WavePhoenix 命令行工具

如果您的电脑有蓝牙功能,也可以使用 WavePhoenix 命令行工具来刷写固件:

wavephoenix flash 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编程的引脚定义:

资讯配图

资讯配图

扫码加入资料分享群,定期分享硬件资料



资讯配图
研习社每周资料专题系列(点击下文获取)

资讯配图

声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
无线
more
利用无线信号预测山洪
拆解阿里智能无线模组
面向6G环境感知通信!西电开源3Dx3D无线电地图数据集与生成式基准框架
英国推出新型无线传输系统:传输速率超越WiFi
7.15发布 8300mAh大电池+80W无线充手机来了 | 红米K90Pro配置曝光 潜望安排
限时免费申请 | 三频无线神器NXP FRDM-RW612开发板
8100mAh+无线充,荣耀杀疯了!
无线电大佬列传:古列尔莫·马可尼(13)-圆梦诺贝尔奖
【行情】小米MIXFlip2配置曝光 5100mAh/67W有线充/支持无线充?
潮讯:华为鸿蒙电脑将支持侧载;OPPO测试真磁吸无线充;华为智选品牌升级为“鸿蒙智选”;苹果自适应电源模式只有部分机型能用
Copyright © 2025 成都科技区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号