mchardysam/magene-l308-taillight

GitHub: mchardysam/magene-l308-taillight

逆向文档化 Magene L308 智能尾灯的 BLE 协议,并提供 Web Bluetooth 工具和 Python CLI 来替代官方 App 进行图案自定义与设备控制。

Stars: 0 | Forks: 0

# Magene L308 — 非官方互操作工具

The L308's 10×10 LED panel rendering a heart, an alert arrow, and a scrolling-text glyph

通过 Bluetooth LE 直接控制 Magene **L308** 智能尾灯 —— 选择图案、设置亮度、切换刹车警示、更改自动休眠超时时间,并上传你自己的图案库 —— 无需官方 App。同样适用于有区域锁的设备(区域锁是在 App/云端实施的,设备端并未强制执行)。 ## L308 是什么 L308 不是普通的闪烁灯。它的后面板是一个 **10×10 网格的 96 颗红色 LED** —— 一个小型的可编程点阵显示屏。除了常见的常亮/闪烁/脉冲之外,你还可以显示**自定义像素图、多帧动画和滚动文字**,并且它具有加速度计**刹车警示**(减速时高亮闪烁)以及**自动休眠**超时功能。这种可编程性使其与几乎所有其他尾灯截然不同 —— 这也正是开发一款专用控制工具的价值所在。 **规格概览** *(根据 Magene 公布的数据 —— 购买前请核实最新详细信息):* | 规格 | 详情 | |---|---| | **显示屏** | 10×10 矩阵中的 96 颗 COB LED —— 完全可绘制(像素图、动画、滚动文字) | | **亮度** | 高达约 30 流明,号称可见距离约 800 米 | | **刹车警示** | 加速度计检测刹车 → 约 3 秒高强度闪烁 | | **自动休眠/唤醒** | 运动感应;闲置 1-10 分钟后休眠(可配置),运动时唤醒 | | **电池** | USB 可充电;最长约 50 小时(复杂动画约 10 小时),约 1.5 小时充至 80% | | **构造** | 23 克,IPX6 防水 | | **支架** | 提供座管和坐垫导轨版本 | ## 为什么会有这个项目 1. **更好、更简单的控制。** 所有这些可编程功能都深埋在 OnelapFit App 中。我希望能在几秒钟内从浏览器中绘制图案、设置亮度并将其推送到车灯上 —— 无需账号,无需安装应用商店的软件,无需繁琐的菜单操作。因此,我解码了 BLE 协议并基于此开发了一个专注的工具。 2. **区域锁定的设备。** 一些 L308 *在 App 中* 受到区域限制,尽管设备本身并未强制执行此限制。这些工具直接与车灯通信,因此只要你拥有该硬件,就可以不受限制地使用它。 这是为了让你能够与自己拥有的硬件进行互操作 —— 就这么简单。本项目与 Magene 无任何附属关系;如果他们希望更改某些内容,我很乐意听取他们的意见。 ## 包含内容 - **[`spec/`](spec/L308-ble-protocol.md)** —— BLE + `light_mode.bin` 协议参考(事实来源)。 - **[`web/`](web/)** —— 免安装的 **Web Bluetooth** 管理工具:连接、绘制/编辑图案(常亮 · 闪烁 · 脉冲 · GIF · 滚动文字)、管理设置并推送到车灯。可在 Chrome/Edge(桌面端或 Android)中运行;可将其部署到 GitHub Pages。 - **Python CLI**(`l308_send.py`、`l308_upload.py`、`l308_explore.py`)—— 需要 `bleak`。 **Garmin Connect IQ** App(从手表/Edge 设备循环切换图案)正在开发中。 ## 快速入门 — Python ``` python3 -m venv .venv && .venv/bin/pip install bleak .venv/bin/python l308_send.py --name read-settings # brake / sleep / timeout .venv/bin/python l308_send.py --name list-patterns # stored ids + current slot .venv/bin/python l308_send.py --name pattern 3 # show slot 3 (1-based) .venv/bin/python l308_upload.py store.bin --name # replace the on-device store ``` `` 是车灯广播名称的任意子字符串(例如 `L308_4B91`)。`l308_explore.py` 会扫描并输出设备的 GATT。 ## 快速入门 — Web App ``` cd web && python3 -m http.server 8753 ``` 在 Chrome/Edge 中打开 `http://localhost:8753` 并点击 **连接车灯**。或者将 `web/` 推送到 GitHub Pages 网站 —— 该 `https://` URL 满足 Web Bluetooth 的安全上下文要求。(Web Bluetooth 适用于 Chrome/Edge 桌面端 + Android;**不支持** iOS Safari。) ## 协议 完整文档请见 **[`spec/L308-ble-protocol.md`](spec/L308-ble-protocol.md)**:GATT 映射、命令帧、设置、图案列表/选择、分块文件上传序列,以及 `light_mode.bin` 记录格式(常亮/闪烁/脉冲/gif/文字,亮度 + 时序字段)。通过观察我们自己的硬件推导得出;`web/` 和 `garmin/` 客户端均实现了此协议。 ## 安全警告 - 仅重放已知安全的字节 —— 禁止模糊测试 (fuzzing)。 - **切勿**写入 SMP/DFU 服务(`8d53dc1d…`)—— 它可能会刷新或重置固件(**存在变砖风险**)。这些工具仅涉及供应商命令/数据特征。 - 车灯**无法读取回图案**:上传会直接替换整个存储库且无法撤销,因此请妥善保留 `.bin` 备份(Web App 的库是你的数据真相来源)。 ## 支持 这是一个免费的非官方业余项目。如果它为你节省了时间,你可以[赞助开发](https://github.com/sponsors/mchardysam) —— 完全自愿,无论是否赞助,这些工具都将保持免费。 ## 许可证 代码:**MIT**(`LICENSE`)。协议规范:**CC-BY-4.0**(`spec/LICENSE`)。
标签:Web蓝牙, 云资产清单, 后端开发, 数据可视化, 智能硬件控制, 物联网, 自行车配件, 蓝牙低功耗, 逆向工具, 逆向工程