runnerr0/dataflash-re

GitHub: runnerr0/dataflash-re

逆向还原经典 Dataflash 氙气频闪灯的专有控制协议,并提供 ESP32 桥接器使其接入现代 DMX / Art-Net / sACN 灯光控台。

Stars: 0 | Forks: 0

# dataflash-re 逆向工程原版 **Lightwave Research / High End Systems "Dataflash"** 氙气频闪灯控制链路——专有的 **"LWR"** 协议(*而非* 后来原生支持 DMX 的 AF1000),并构建一个 **ESP32 + RS-485 桥接器**,使这些灯具能由现代控制器(DMX / Art-Net / sACN / TouchOSC)驱动。 ## 为什么做这个项目 ### Lightwave Research 与 High End Systems 1985年,德克萨斯州奥斯汀的几个人——Richard Belliveau、Lowell Fowler、David Blair 和 Bob Schacherl——开始制造能够重塑俱乐部、舞台和音乐节视觉效果的灯光设备。**Lightwave Research** 是 Belliveau 旗下的工程与制造部门;而 **High End Systems** 是包装盒正面的品牌名称。他们合作创造了许多*首创*: - 他们建立了娱乐行业的**首个光学薄膜涂层实验室**,用于制造自己的二向色性玻璃——这种色彩极其鲜艳且不易褪色。 - **Color Pro** (1987年) 是他们的首款灯具。**Intellabeam** (1989年) 动镜扫描灯将自动化照明带入了俱乐部的天花板,到了1991年,它出现在了 Dire Straits 的世界巡演中——这个行业从此发生了翻天覆地的变化。 - 随后是一连串的创新——**Cyberlight**、**Studio Color**、**Trackspot**、**Technobeam**、**Showgun**——在2000年,**Catalyst** 媒体服务器帮助开创了整个数字照明/媒体服务器品类。 - 他们在1999年与 **Flying Pig Systems**(Wholehog 控台)合并,于2008年被 **Barco** 收购,最终在2017年被 **ETC** 收购,其传奇得以延续。 Richard Belliveau 的发明列表读起来就像是一部现代娱乐照明的发展史。**Dataflash** 也名列其中。 ### Dataflash Dataflash 是一款**氙气频闪灯**——真正的闪光灯管,而不是模仿它的 LED 面板。它能释放出 LED 根本无法重现的强烈、耀眼且瞬间的闪光:那种能在烟雾中穿透并在一瞬间定格整个舞池的耀眼白光。通过菊花链最多可以连接 **256** 台,为每台设备分配 4-bit 的亮度和 DIP 地址,你就可以通过本项目破解的专有 **"LWR" 控制链路** 在房间里制造一波波的光浪。内置的散热/冷却保护功能使得灯管能够长久耐用——它们生来就是为了高负荷运转,并且在数十年的实际使用中证明了这一点。 ### 让它们继续运转 这种长久的生命力正是本项目的核心意义所在。这些灯具外观精美、用料扎实,却日益面临无人支持的境地——原版控制器极其稀缺,而专有的控制链路将它们排斥在现代灯光系统之外。**这里的目标很简单:让 Dataflash 能够在现代控制系统中继续闪光。** 破解协议,构建一个桥接器(DMX / Art-Net / sACN / TouchOSC → 原版 9-bit/375k 链路),让这些频闪灯重新回归现代演出。 这正是 **Radiant Atmospheres** 的精神所在,这个项目也隶属于这个带有 anarchist 色彩的灯光团体——这是一个由来自加州湾区(甚至更远地区)的灯光极客组成的多元化群体,大家聚在一起是为了在地下派对和音乐节上分享灯光之美。我们让老式灯光继续闪耀,不是把它们放在博物馆的玻璃柜里,而是把它们留在现实世界中:依然震撼人心,依然创造着只有真实的、实体的、设计精美的灯光才能带来的瞬间。老灯光,新玩法,同样的魔力。 ## 协议是如何重构的 通过三个独立且相互印证的来源进行三角测量得出。[`protocol/dataflash-protocol-spec.md`](protocol/dataflash-protocol-spec.md) 中的每一项陈述都标记了来源:**[C]** 固件证实 · **[P]** 专利 · **[S]** 原理图 · **[?]** 需要实际抓包验证。 1. **US Patent 5,078,039** (Tulk & Belliveau, Lightwave Research, 1992年) —— 协议语义。属于公共领域(专利已过期)。 2. **灯具固件 Rev 2.82** —— 对频闪灯头 EPROM 的 8051 反汇编证实了其位级别的工作机制([`firmware-analysis/`](firmware-analysis/))。 3. **原始原理图** —— CPU、波特率、收发器以及连接器引脚分配([`firmware-analysis/03-schematic-findings.md`](firmware-analysis/03-schematic-findings.md))。 ## 协议概览 - **物理层:** RS-422/485 差分信号 (DS8921),3 针接口 —— **Pin 1 = GND, Pin 2 = Data−, Pin 3 = Data+**(符合 DMX 规范)。每台灯具都是一个带有关机继电器旁路的有源中继器。 - **串行层:** **375000 波特率,9 个数据位**(8051 UART Mode 2, SMOD=1, 12 MHz)。无 DMX break。 - **第 9 位 = 控制/数据标志**(1 = 控制,0 = 数据)。标记包含:`0x55`=ARM(准备), `0x7F`=START(开始), `0x00`=HEARTBEAT(心跳,~120 Hz), `0xF7`=STOP/FIRE(停止/触发), `0xFF`=CLEAR(清除)。 - **数据字节 = 两台灯具 × 4-bit 亮度**(16 个亮度级别)。通过 8 位 DIP 开关进行位置寻址:字节索引 = addr ÷ 2,半字节 = addr & 1(偶数 → 高半字节,奇数 → 低半字节)。 - **数据包结构:** `ARM, START, data×N, STOP`,中间穿插有心跳信号。 完整的细节以及桥接器的实现说明(由于传统的 UART 无法保持恒定的第 9 位,9-bit 的 TX 是通过 ESP32 的 **RMT** 外设完成的)都在规范文档和 [`bridge/README.md`](bridge/README.md) 中。 ## 仓库结构 ``` dataflash-re/ ├── protocol/ dataflash-protocol-spec.md ← the reconstructed spec (source of truth) ├── firmware-analysis/ 8051 disassembly notes + dis51.py (the OEM image itself is not included) ├── bridge/ ESP32 firmware: RMT 9-bit/375k TX, Art-Net/sACN/OSC in, WiFi STA+AP, web UI │ ├── src/ inputs/osc/patterns/dataflash_tx/net/webui │ ├── platformio.ini envs: esp32-poe-iso · esp32-s3-eth · esp32-c3 │ ├── PATTERNS.md CONTROL-TOUCHOSC.md BENCH-VALIDATION.md ├── tools/ dataflash_frame.py — golden framing reference + USB-RS485 capture/decode ├── captures/ logic-analyzer / serial captures + capture guide (raw dumps gitignored) └── assets/ MANIFEST.md (provenance). OEM firmware/manuals/schematics NOT included — see below. ``` ## 桥接器(ESP32 固件) 这是一个 Art-Net / sACN **接收端**,以及一个由 TouchOSC 驱动的 **控制器**,它可以将 DMX universe(或设备上的内置频闪模式)重新转化为 Dataflash 的 9-bit/375k RS-485 链路信号。 ``` cd bridge pio run -e esp32-s3-eth -t upload # or -e esp32-poe-iso (production) / -e esp32-c3 pio device monitor -e esp32-s3-eth ``` 首次启动时,如果没有保存的 Wi-Fi 信息,它会创建一个配置 AP(`dataflash-bridge` / `dataflash`,http://192.168.4.1);从 **Wi-Fi** 卡片设置你的网络后,它将以 Station 模式加入网络。输出测试模式(全亮 / 追逐 / 单闪)可以在没有控制器的情况下验证线路连接。引脚映射和开发板注意事项见 [`bridge/README.md`](bridge/README.md);硬件调试步骤见 [`bridge/BENCH-VALIDATION.md`](bridge/BENCH-VALIDATION.md)。 ## 工具 [`tools/dataflash_frame.py`](tools/dataflash_frame.py) —— 主机端运行,无需硬件即可进行自测: ``` python3 tools/dataflash_frame.py # print golden vectors + run framing self-test python3 tools/dataflash_frame.py --capture # decode a live USB-RS485 capture (8-data+parity) ``` 它完全复刻了桥接器的 `sendRefresh()` 函数,支持往返自测,并能根据黄金向量对抓取的数据进行解码。抓包的路径使用了 **8 个数据位 + 校验位** 的技巧,以便在普通的 USB 串口适配器上读取此 9-bit 协议(第 9 位的数据落在了校验位的位置,从而保持数据帧对齐)。详见 [`captures/README.md`](captures/README.md)。 ## 状态 - [x] 确认资产;提取并反汇编 EPROM(8051, Rev 2.82) - [x] 找到相关现有技术(US Patent 5,078,039);解读原理图(CPU, 12 MHz, DS8921, 引脚分配) - [x] **起草协议规范**([`protocol/`](protocol/)) - [x] **桥接器固件** 支持 3 块开发板;支持 RMT 9-bit/375k TX, Art-Net/sACN/OSC, WiFi STA+AP, Web UI - [x] 在 ESP32-S3-ETH 上通过 MAX485 → USB-RS485 环回**验证了 TX 链路**(137/137 次刷新字节完全一致) - [x] 使用非对称负载**验证了半字节打包**(偶数→高半字节,奇数→低半字节) - [ ] **抓取真实的原版控制器信号** —— 确认其顺序、心跳频率、`0xFF`/`0x12` 的用法,以及**与原厂(OEM)对比**的半字节映射方式(以解决规范中剩余的 `[?]` 项) - [ ] **端到端驱动真实的灯具**(确认频闪和寻址功能;如有必要,翻转 `nibbleSwap`) ## 资产与出处 原始的**固件镜像、用户/AF1000 手册和原理图受版权保护**,版权归 Lightwave Research / High End Systems / ETC 所有,因此**不包含**在本仓库中(它们已被 git 忽略)。[`assets/MANIFEST.md`](assets/MANIFEST.md) 记录了每个文件及其原始来源(ETC 的历史 High End Systems 下载存档),以便任何拥有合法副本的人都可以将它们放入 `assets/` 并重现分析过程。**US Patent 5,078,039 属于公共领域。** 这是对独立拥有的硬件进行的以互操作性为目的的逆向工程,并保持文档化和可复现性。 ## 安全提示(既然你已经读到了这里) 如果你已经深入到一个关于频闪灯逆向工程的仓库,并且读到了 README 的底部,你可能早就知道这一点了——但还是有必要声明一下:氙气频闪灯极其刺眼且闪光强烈,因此任何对光敏感或有癫痫发作倾向的人都应保持距离(或者干脆跳过这次体验)。此外,这些属于**高压**设备——这正是触发闪光管的方式——所以除非你非常清楚自己在做什么,否则不要在设备内部乱摸。小心点,玩得开心,别把你或者你的朋友给烤熟了。 ## 致谢 - **ETC (Electronic Theatre Controls)**,感谢他们让历史悠久的 High End Systems 下载资源得以保留——使这次重构成为可能的手册、原理图和固件至今依然可用,正是因为他们维护着这个存档。 - 感谢 Richard Belliveau、Steve Tulk 以及 Lightwave Research / High End Systems 团队,制造出了值得一直运转下去的灯光设备。 由 **Alex Moening** 为 Radiant Atmospheres 构建。 ## 许可证 [MIT](LICENSE) —— 涵盖了此处重构的规范、桥接器固件、工具和分析内容。第三方的 OEM 材料不在涵盖范围内,也不进行再分发。
标签:DMX, ESP32, UML, 云资产清单, 协议转换, 嵌入式开发, 物联网, 舞台灯光控制, 逆向工具, 逆向工程