在 QEMU 中复活 iPod Classic 6G
iPod Classic 6G in QEMU

我花了数月时间,终于成功在 QEMU 中模拟了 iPod Classic 6G,并让 Apple 原始的 retailOS 成功启动。面对 Samsung S5L8702 芯片缺乏数据手册和固件加密的双重挑战,我利用 emCORE 提取闪存内容并自行解密。虽然导航、屏幕和音乐库已能运行,但音乐播放器仍存在渲染不全和无声音的问题。这次经历充满了试错,甚至因为反复重启导致设备多次死机,但看到熟悉的界面在模拟器中亮起,这一切努力都变得值得。
在 QEMU 中成功启动未经修改的 Apple retailOS,这绝对是纯粹的魔法。
- dmonterocrespo
我一直在开发一个用于 iPod Classic 6G(Samsung S5L8702)的 QEMU 模拟器,能够启动原版、未修改的 Apple retailOS。导航、转盘、屏幕和音乐库曾短暂正常工作,但音乐播放器显示渲染不完整且没有声音。过程中出现了四个不同的错误,最后一个错误某种程度上是我自己造成的,我觉得挺有意思,所以决定写下来。
几个月来,我一直试图模拟我抽屉里那台 iPod Classic 6G,但一直未果。经过漫长的努力,我终于让它跑起来了,尽管目前还略显粗糙。在 QEMU 中,我成功启动了原版、未修改的 Apple retailOS。导航、转盘、屏幕和音乐库曾短暂正常工作,但音乐播放器显示渲染不完整且没有声音。
有一点我们已经知道:固件来自 Apple 且经过加密,因此没有合法的下载渠道。我有一台 2008 年的 iPod Classic 6G。借助 Claude Code,我编写了代码,利用 emCORE 提取了固件。我提取了闪存内容并自行解密了镜像。
此外,启动 ROM 无法从运行中的设备读取。我通过惨痛的经历证实了这一点,过程中我的 iPod 重启了好几次(按住中间键和菜单键 5 秒即可重启)。
该 SoC 没有数据手册。每个允许解锁部分 Guest 功能的模型寄存器,都是从 Guest 自身执行的写入操作中推导出来的。
代码和笔记,包括 […]
- dmonterocrespo
让我头疼不已的事情之一是解锁音乐播放器。逆向工程它真的非常困难。我调查了许多可能的变体,尝试在 https://freemyipod.org 上搜索内存寄存器信息,但找不到任何能帮我解决这台特定 iPod 音乐播放器问题的资料。现在,我正在尝试解锁 Cover Flow,这是我第一次在 iPod 上看到它时非常喜欢的功能。
- ChrisRR
在 r/emulation 版块看到评论区不是充斥着对 AI 代码的无尽叫嚣,这真是稀罕事。