DS5Dongle 是什么?把 Pico 2 W 变身为 DualSense 无线适配器的完整入门指南
【免费下载链接】DS5DongleTurn your Pico 2 W into a DualSense 5 dongle.项目地址: https://gitcode.com/gh_mirrors/ds/DS5Dongle
DS5Dongle 是一个开源固件项目,能把一块树莓派 Pico 2 W 变成 DualSense(DS5)手柄的无线适配器:手柄通过蓝牙连到 Pico,电脑则把它当作"有线手柄"使用,同时保留 HD 震动、扬声器音频与麦克风功能。对新手来说,整个上手流程只有三步:拖入固件、配对手柄、开始游戏,本文带你完整走一遍。
一、DS5Dongle 能做什么?核心功能一览
传统方案里,DS5 手柄连电脑要么用 USB 线,要么走系统蓝牙(无法在 Windows 上获得 HD 震动)。DS5Dongle 的思路是让 Pico 2 W 充当一座"蓝牙桥":
- 🎮完整无线连接:DS5 经 Pico 蓝牙连接后,以 USB HID 身份出现在电脑上
- 🔊HD 震动支持:高级震动反馈可以透传给手柄
- 🎧耳机音频输出:手柄内置扬声器 + 3.5 mm 耳机孔都能出声
- 🎤麦克风输入:手柄麦克风被暴露为 USB 音频输入设备(Windows 中显示为 "Headset Microphone")
- 🔘BOOTSEL 按钮管理手柄:配对、重启、清空配对,全程不用拔线
- ⚡原生 150 MHz 频率运行:音频路径跑在 RAM 中,无需超频即可稳定处理完整音频链路
💡 本项目只实现核心"无线变有线"功能,社区还有 OLED 显示屏、音频模拟震动等扩展分支,适合进阶玩家。
二、开始前的准备:硬件清单与固件获取
2.1 你需要什么硬件
| 物品 | 说明 |
|---|---|
| Raspberry Pi Pico 2 W | 主角,带 Wi-Fi/蓝牙射频模块(Cyw43) |
| USB 数据线 | 连接 Pico 与电脑 |
| DualSense 手柄 | PS5 手柄,也支持 DualSense Edge |
其他兼容板卡也可以,比如Waveshare RP2350B-Plus-W(USB-C 口、16MB 闪存),编译时指定对应选项即可,板级定义见 boards/headers/waveshare_rp2350b_plus_w.h。注意:Pico W(一代)性能不足,只能支持震动、不支持扬声器。
2.2 两种固件获取方式
- 下载预编译固件:从项目的 Releases 页面获取最新的
ds5-bridge-<版本>.uf2文件(其他板卡的固件打包在同页的 other board.zip 中),全程不需要任何开发工具,最推荐给新手。 - 自己编译:适合想魔改参数的玩家,编译方法见第七节。如果通过仓库获取源码,clone 地址为:
git clone https://gitcode.com/gh_mirrors/ds/DS5Dongle三、三步刷入固件:BOOTSEL 拖拽法
Pico 的刷机非常直观,不需要烧录器:
- 按住Pico 上的BOOTSEL按钮不放
- 用 USB 线连接电脑,Pico 会挂载为一个U 盘(USB 存储设备)
- 把下载好的
.uf2固件文件直接拖进这个 U 盘,松开 BOOTSEL,固件自动烧录并重启
⚠️ 小提醒:配对手柄时如果发现 Pico 没反应,重新插拔一次 Pico往往就能解决。
固件还支持软件方式进入 BOOTSEL:在网页配置里点"Reboot to Bootloader",或运行 tools/reboot_bootsel.py,无需长按物理按键就能重新刷固件。
四、配对手柄:让 DS5 无线连上 Pico
刷好固件后,把 Pico 插到电脑上,然后:
- 长按手柄PS + Create/Share键,直到灯条快速闪烁,进入蓝牙配对模式
- 等待 Pico 检测到手柄并完成连接(首次连接可能需要重新插拔 Pico)
- 连接成功后,电脑才会枚举出该设备——手柄未连接前,Pico 对系统是不可见的,这是正常行为
配对完成后,DS5 就像插了一根"看不见的 USB 线",震动、声音、麦克风全部可用。🎉
五、BOOTSEL 按钮的隐藏玩法:一个按钮管所有事
固件运行期间,Pico 上的 BOOTSEL 按钮同时充当手柄管理键:
| 操作 | 效果 |
|---|---|
| 短按 | 已连接则断开当前手柄(保留配对);未连接则开始 30 秒配对扫描 |
| 双击 | 重启 Pico,恢复偶发的小故障 |
| 三击 | 重启进入 BOOTSEL,U 盘模式直接拖入新固件 |
| 长按约 1.5 秒 | 断开并遗忘所有已配对手柄(LED 闪 6 次确认),防止手柄自动重连 |
多手柄用户特别推荐:用短按切换不同手柄,用长按彻底清除配对列表,全程不用拔线、不用重刷。
六、自定义设置:网页配置页与命令行工具
6.1 网页配置页
Pico 提供网页配置界面(地址见 README.md 的 Configuration 章节),可以在浏览器里调整各项参数、一键重启进 BOOTSEL、重连 USB 设备等,是日常调参最省心的入口。
6.2 命令行工具 config_tool.py
不想开网页?项目自带 tools/config_tool.py,通过 USB HID 直接读写配置,无需重刷固件(依赖pip install hidapi)。常用示例:
python config_tool.py get python config_tool.py set speaker_volume=90 enable_wake=1 python config_tool.py fields值得关注的几个参数:
- haptics_gain(震动增益,1.0~2.0)、speaker_volume / headset_volume(音量)
- polling_rate_mode(轮询模式:0=250Hz,1=500Hz,2=实时模式)
- controller_mode(0=DS5,1=DualSense Edge,2=自动识别)
- enable_wake(PS 键唤醒电脑,实验性功能)
配置结构的源头在 src/config.cpp 与 src/config.h。
6.3 两个实用小开关
- PS 键 = Xbox Game Bar:打开后短按 PS 键发送
Win+G呼出游戏面板,长按发送Win+Tab - PS 键唤醒电脑:休眠时按手柄任意键即可唤醒(仅支持 S3 休眠),详见 README 的 Wake-on-PS 章节
七、进阶:从源码编译固件
想修改参数或适配其他板卡时,可以自行编译(核心构建脚本为 CMakeLists.txt):
- 安装 Pico SDK 2.3.0,并将其中的 TinyUSB 子模块更新到 0.21.0
- 初始化子模块:
git submodule update --init --recursive - 配置并构建:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DPICO_SDK_PATH=<sdk> cmake --build build --target ds5-bridge常用编译选项:
-DPICO_W_BUILD=ON:编译 Pico W 版本(仅震动、无扬声器)-DWAVESHARE_RP2350B_PLUS_W_BUILD=ON:编译 Waveshare RP2350B-Plus-W 版本(也可运行 boards/build_waveshare_rp2350b_plus_w.sh)-DENABLE_BATT_LED=OFF:关闭低电量 LED 提示(默认开启)
💡 性能亮点:音频编码(libopus)、重采样等热点代码通过 cmake/relocate_to_ram.cmake 移入 RAM 执行,消除了 Flash 取指停顿,因此标准 150 MHz 频率即可跑满全功能音频链路,不再需要早期 320 MHz 超频。
八、常见问题速查
- 声音轻微卡顿:当前已知问题,属于正常现象
- 麦克风没声音:Windows 常将新录音设备输入电平默认设为 0,请手动调高音量
- LED 在闪:手柄电量 ≤10% 时 LED 以 1Hz 闪烁报警,插上充电线即恢复常亮(逻辑见 src/battery_led.cpp)
- 部分设置要重连才生效:一些行为需要经历一次"断开-重连"周期后才会应用
- 设备列表里没有 Pico:手柄没连上之前 Pico 不会向系统枚举设备,先完成配对
九、项目结构与源码导读
| 路径 | 作用 |
|---|---|
| src/bt.cpp | 蓝牙协议栈接入,手柄数据收发 |
| src/audio.cpp | 音频链路:Opus 编解码、重采样 |
| src/main.cpp | 主循环,蓝牙数据到 USB HID 报告的桥接 |
| src/wake.cpp | PS 键 USB 唤醒功能 |
| src/usb_descriptors.cpp | USB 设备描述符(伪装 DS5 的关键) |
| tools/config_tool.py | 命令行配置工具 |
| CMakeLists.txt | 构建入口与编译选项 |
| README.CN.md | 中文说明文档 |
写在最后
DS5Dongle 用一块十几元的 Pico 2 W 就补齐了 Windows 平台上 DS5 无线连接的最大短板——HD 震动与耳机音频。刷固件、配对手柄,全程不超过十分钟。如果你正好有一块闲置的 Pico 2 W 和一个 DS5 手柄,这个项目值得立刻试试;想继续折腾的话,从网页配置页调参、再到源码编译,路径都非常顺畅。🚀
【免费下载链接】DS5DongleTurn your Pico 2 W into a DualSense 5 dongle.项目地址: https://gitcode.com/gh_mirrors/ds/DS5Dongle
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考