一个用于修补、修改和增强 soundcore Q 系列耳机固件的开源工具包,未来计划支持其他型号。
**注意:**这个项目是我个人踏入硬件逆向工程和嵌入式系统世界的旅程。它由一个青少年创建,我边做边学。请做好遇到 bug、错误和许多乐趣的心理准备。欢迎所有贡献和建议!
这个项目分为两个部分:
我还创建了一个演示项目——基于 DOOMBuds 项目的 DOOM 移植版。也去看看吧!=)
这个项目是从 soundcore life q35 开始的。如果你想帮助测试或为新型号添加支持,请提交一个 issue!
支持其他型号是未来的目标!
**注意:**基于
bes2300*、bes1502*、bes1600芯片组的设备最有可能成为未来支持的对象。
openqore 刚刚起步。以下是大致的未来计划:
本指南假设你的系统已安装 python 和 git。
1. 从 releases 下载并解压 zip 压缩包
2. 安装依赖
补丁工具需要 ffmpeg 进行音频转换,并需要 pybluez:
windows:
pip install git+https://github.com/pybluez/pybluez.git
winget install ffmpeg
macos:
pip install git+https://github.com/pybluez/pybluez.git
brew install ffmpeg
ubuntu/debian:
pip install git+https://github.com/pybluez/pybluez.git
sudo apt install ffmpeg
3. 获取你的固件文件
你可以在这里下载 OTA 镜像,或者通过 UART 读取闪存:
通过 ota(空中下载)读取闪存计划在未来的更新中实现。(如果可能的话 :D)
4. 恭喜!
你可以在这里找到使用说明
如果你从官方更新服务器下载了 ota 更新镜像,请选择“without ota boot”(不带 ota boot)选项
注意:如果你修补的固件不带 ota boot,你需要先将其添加到修补后固件的头部,然后再通过 UART 刷写。 如果你使用 besota 脚本,则不需要执行此操作!
本节包含逆向工程 q35 固件的一些初步发现。
这款耳机有几个隐藏的测试模式。其中一些可能对未来的更新或调试有用。
**工程模式:**要进入此模式,请按住电源按钮,在耳机开机之前通过 usb-c 将其连接到电脑,然后等待它们启动。
**rfcomm:**耳机有两个串行 com 端口。其中一个可写。到目前为止,我通过该端口唯一能触发的功能是 UFR(下文解释)。这似乎是一种安全措施,因为它是通过暴力尝试各种十六进制代码触发的,而不是某个特定命令。有趣的是,这不是标准重置(电源 + 音量+),而是另一种东西。
**测试模式:**进入此模式的方式与工程模式类似,但你需要在蓝灯亮起之前,于白色 led 第一次闪烁后立即松开电源按钮。然后耳机会以“device descriptor request failed”(设备描述符请求失败)错误的设备形式出现在电脑上。你可以通过白色 led 确认已进入此模式——它闪烁得比平时更快。其用途可能与固件刷写有关。此外,在此模式下,耳机可以在充电时开机!
**未记录的恢复出厂设置(UFR):**在耳机开机时快速多次按下电源按钮,或通过虚拟 com 端口(上文)发送某些内容,即可触发隐藏的恢复出厂设置。这会导致固件挂起,然后在大约 30 秒后强制重启。请注意,此操作将清除所有用户数据,包括均衡器设置、蓝牙配对和其他配置。
固件似乎是一个分为多个段的单体二进制文件。每个关键段都由 crc32 校验和保护。未来的补丁工具将在任何修改后自动重新计算这些校验和,以防止启动失败。
16khz, mono, SBC 音频流的形式存储。48khz, stereo 播放音频。这能显著提高自定义提示音的质量。bes2300p soc。通过搜索可以找到数据手册。uart 串行端口,它曾用于初步调试,也是设备刷写失败变砖后恢复的主要方法。 芯片本身有两个 uart 端口,但只有其中一个以易于接触的焊盘形式暴露在 pcb 上。贡献正是让开源社区成为学习、启发和创造的绝佳之地。你做出的任何贡献都非常感谢。
如果你有能改进这个项目的建议,请 fork 本仓库并创建 pull request。你也可以直接打开一个带有“enhancement”标签的 issue。别忘了给项目点个 star!再次感谢!
git checkout -b feature/amazing-feature)。git commit -m 'feat: add some amazing feature')。git push origin feature/amazing-feature)。如果你觉得这个项目有帮助,并想支持它的未来发展,你可以通过 boosty 请我喝杯咖啡或吃点零食!每一份贡献都深受感谢,并帮助我为 openqore 投入更多时间。
这个项目的诞生离不开对人工智能编程助手(如 claude 和 chatgpt)的大量使用。虽然核心逆向工程、研究以及架构决策均由作者完成,但人工智能在加速开发过程、编写样板代码和调试方面发挥了关键作用。
这是一个用现代工具打造的现代项目。
本项目采用 mit 许可证。你可以在 license 文件中找到完整的许可证文本。
| 型号 | 芯片组 | 状态 |
|---|
| soundcore life q35 | bes2300p | ✅ 已支持 |
| soundcore life q30 | bes2300p | ❔ 应该能用,但需要测试 |
| soundcore life tune pro | bes2300p | ❔ 应该能用,但需要测试 |
| soundcore life tune | bes2300p | ❔ 应该能用,但需要测试 |
| soundcore life q20i | bes2300p | ❔ 应该能用,但需要测试 |
| soundcore space one | bes1502x | ❌ 开发中 |
bes2300p