cmadds/line6-reverse-engineering

GitHub: cmadds/line6-reverse-engineering

通过逆向工程分析 Line 6 POD XT 硬件的固件格式和 USB 通信协议,提供无需旧版软件即可恢复出厂设置的解决方案。

Stars: 0 | Forks: 0

# 在现代 macOS 上重置 Line 6 POD XT 我有一台旧的 Line 6 POD XT 需要恢复出厂设置。问题在于:Line 6 用于管理它的软件是 2000 年代后期的 32 位 Intel Mac 软件,它无法在 macOS Mojave 之后的任何系统上启动。没有官方工具,也没有明显的入口。 于是我深入挖掘——拆解了旧的应用程序、驱动程序和固件文件,以弄清楚它究竟是如何与计算机进行通信的。这个代码库就是以此为基础诞生的:其中包括了我的笔记、我在此过程中编写的工具,以及最有用的——结果发现根本不需要计算机就能完成的恢复出厂设置的方法。 ## 只是想将你的 POD XT 恢复出厂设置? 你不需要任何软件。直接在设备本身上执行此操作: 1. 将 POD XT **关机**。 2. 同时按住 **SAVE** 键和所有四个 **UP** 键。 3. 保持按住,然后将其**开机**。 4. 当 Line 6 logo 出现时松开。 5. 等待出现 **"standard model set loaded."** 就这样。出厂预设已恢复,你保存的任何自定义内容都已被清除。 ![POD XT 按键组合](https://raw.githubusercontent.com/cmadds/line6-reverse-engineering/main/images/podxt_buttons.jpeg) **适用于哪些设备?** 已在我的 POD XT(“bean”型号)上确认。POD XT Live 和 POD XT Pro 运行相同的固件系列,且广泛报道指出使用相同的 SAVE + UP 组合同样有效,尽管我个人尚未测试过它们。这些设备的按键*布局*有所不同,因此“所有四个 UP 键”指的是你设备上那四个用于切换 model/preset 的 UP 键。 ## 包含哪些内容 ``` docs/ Write-ups: full analysis, a shorter summary, and a reset guide tools/ Python scripts for parsing the firmware and poking at the hardware scripts/ The shell script I used to extract and set up the old software images/ Photos, including the button combo above ``` 注意:Line 6 的软件和固件文件不包含在此代码库中——它们归 Line 6 所有,我无权重新分发。脚本需要你提供自己的副本(`Line 6 Monkey 1.78.dmg` 及相关文件需放在 `~/Downloads` 目录下)。可以从 Line 6 官方的软件页面获取:(按 POD XT 筛选)。Line 6 Monkey 和旧版驱动程序仍然列在那里。 ## 相关工具 - `tools/line6_analysis_tools.py` — 解析 `.xtf` 固件(一种被 Line 6 称为 L6FF 的 IFF 变体)并检查旧的 Mach-O 二进制文件。 - `tools/podxt_factory_reset.py` — 我尝试过的最精简的通过 USB 触发重置的脚本。作为参考版本保留;上面提到的按键组合才是最终真正起作用的方法。 - `tools/attempts/` — 早期的试错重置脚本(USB、MIDI SysEx、各种方法)。没有哪一个能可靠地重置设备,但其中几个记录了 Line 6 SysEx 命令和 USB product ID,所以我保留了它们。 - `scripts/line6_extraction_script.sh` — 将旧版 DMG 挂载并解包到一个分析文件夹中。 ## 我的发现 - **POD XT 的 USB vendor 为 `0x0e41`,product 为 `0x5044`。** - **固件**(`PODxt_3_01.xtf`)是一个带有 `L6FF` 签名的 IFF 容器——大小为 394,130 字节,版本 1.0.769.0,固件版本 3.01。前面有二十个小的设备信息块,随后是约 393 KB 的实际固件。 - **Line 6 Monkey**(管理应用程序)是一个 32 位 i386 二进制文件,需要 macOS 10.5+,并在 10.15 停止运行。 - 重置功能存在于硬件中,而不是软件中——开机时的 SAVE + UP 组合完成了全部操作。 ## 自行探索 你需要 `pyusb` 和 `libusb`: ``` pip3 install pyusb brew install libusb ``` 然后,使用你自己的固件文件: ``` git clone https://github.com/cmadds/line6-reverse-engineering cd line6-reverse-engineering python3 tools/line6_analysis_tools.py path/to/PODxt_3_01.xtf ``` 一句警告:原来的 Line 6 软件非常老旧、是 32 位的,并且没有签名。我是在一个一次性的 macOS 10.14 虚拟机中而不是在主力机上完成那些比较繁杂的操作的,我建议你也这样做。 ## 文档 - [固件格式(.xtf / L6FF)](docs/firmware-format.md) — 固件文件的结构布局 - [完整分析](docs/line6_reverse_engineering_analysis.md) - [简短摘要](docs/line6_reverse_engineering_summary.md) - [恢复出厂设置指南](docs/podxt_factory_reset_guide.md) ## 许可协议 此处的代码和文档基于 [MIT 许可协议](LICENSE)——你可以随意使用。这是一项出于研究和互操作性目的的工作,分享出来是希望它能帮助其他人让旧的 Line 6 设备重新工作。逆向工程是在合理使用的原则下出于互操作性目的进行的;Line 6 的软件、固件和驱动程序本身归 Line 6 / Yamaha 所有,此处不提供分发。
标签:Cutter, Python, Shell, 云资产清单, 固件解析, 无后门, 硬件分析, 系统运维工具, 设备管理, 逆向工具, 逆向工程, 音频设备