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(“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, 云资产清单, 固件解析, 无后门, 硬件分析, 系统运维工具, 设备管理, 逆向工具, 逆向工程, 音频设备