FROM A COLOR TO A LIGHT

你选的颜色,
怎样走进应援棒?

浏览器把颜色变成六个字节,经蓝牙送到棒子。下面的实验完全在本页计算,不会连接或操作任何设备。研究对象:HE-750G24 / 固件 V4.1.8。

01 · 拖动试试

颜色是三个数

模拟预览,不代表实际灯珠亮度或色彩。

02 · 看它变成一帧

先绿,再红,最后蓝

常见颜色是 RGB,这根棒子的 GATT 写入顺序是 GRB。第二字节在固件中未使用,我们固定为 00。

R、G、B 相等且非零时,固件切换到独立白光通道,并非三色灯同时混白;全零则关灯。

一次连接,四步完成

电脑蓝牙直接连接你选中的设备。FA02 是写入通道,FA01 是通知通道。共享口令来自固件明文,不是设备所有权验证。

01 / SELECT

选择棒子

浏览器设备选择器
广播名 JFKJ-FBFB
02 / AUTH

写入口令

8 秒内向 FA02 写
JFKJ-20250421
03 / WAIT

等蓝灯闪完

三次蓝灯约 0.9 秒
网页预留约 1.2 秒;CLI 1.5 秒
04 / COLOR

发颜色帧

FA02 接收六字节
FA01 返回处理通知

灯效,其实是一串颜色

呼吸、渐变和律动由网页计算,然后反复发送 01 设色帧。浏览器用时间、音频频谱或节拍决定下一帧颜色。

低频变化 → 节拍判断 → 颜色 / 亮度 → 蓝牙写入 → 灯珠。蓝牙传输有延迟;本地音频可以延后播放来对齐,麦克风听到的声音无法倒回去延后。

网页灯效不等于固件内置灯效。命令 02–0c 的确切参数与效果仍未逐项确认。

现场广播是另一条路

静态分析发现固件绕过常规 GATT,在 2478 MHz 收取特殊射频包。它使用 RGB 顺序、另一种加和校验和 XOR 混淆。

这一链路尚未完成空口实测。普通网页蓝牙不能发送它;本项目广播脚本只生成字节。

不要在活动现场尝试广播。它可能影响别人的棒子;类型 6 还会永久改写分组号,掉电不恢复。

我们知道多少?

证据层级已有结论边界
历史硬件实测口令握手、GRB 设色、原版网页灯效与音乐律动针对研究样机;新版网页仍需设备验收
静态逆向函数地址、射频包结构、分组持久化代码分析不等于实际发射或接收测试
仍未知02–0c 完整参数、白化实际初值、其他批次兼容性不编造稳定接口或成功率

往下读

为什么校验是负数?

先把前五个字节相加为 S,再取 (256 − (S mod 256)) mod 256。加上它后,总和的低八位就是 0。这种校验可以发现部分传输错误,不能防止恶意控制。

固件里哪些函数在处理?

写回调 0x1fff4290 把输入复制到 0x1fffc343;约 10 ms 后由 0x1fff6774 做口令、校验与命令分发。灯效任务入口是 0x1fff7c60。这些是研究描述,不是厂家提供的函数名,也不是跨版本稳定地址。

我能接着开发吗?

仓库提供自己的控制 SDK、离线字节测试和 Ghidra 工程重建脚本。厂家固件、第三方工具和厂家 SDK 不随仓库分发。请先读仓库中的 docs/SDK.md、docs/FUNCTIONS.md 与 re/README.md,并遵守社区源码许可:免费使用、二次开发与分享,禁止销售、付费托管和付费捆绑。不要向 OTA 服务 5833ff01 写入。