◉ Pulse
giek2000 avatar
#39 today ▲ 31

giek2000/ipod-classic-firmware-research

Go AI

iPod Classic 7th Gen RetailOS 2.0.4 firmware research — decryption, analysis, and wInd3x Classic support patch

Created Jul 25, 2026
Stars
17
Today
+1
Forks
4
Quality
90/100
Momentum
34

README

Fetched from GitHub on Oct 30, 2026, 10:18 PM UTC · README.md

View original on GitHub

Third-party content — Open Source Pulse is not the owner of this repository.

This README belongs to giek2000/ipod-classic-firmware-research and its contributors. We fetch it directly from the project’s public GitHub repository and display it for reference only. All text, code, images and trademarks remain the property of their respective authors. See the repository for its license terms. Copyright / takedown policy.

iPod Firmware Research — Complete Analysis Archive

Overview

This repository documents the decryption and analysis of 39 iPod firmware binaries spanning every PortalPlayer and Samsung S5L-based iPod generation (2001–2014). This represents the most comprehensive publicly available firmware analysis of Apple's iPod product line.

All firmware binaries were extracted from official Apple IPSW files and — where applicable — decrypted using the device's hardware AES engine via the wInd3x BootROM exploit. Analysis performed using Ghidra and Capstone disassembly.


Analyzed Models

# Generation Model Firmware SoC Encrypted Spec
1 1st Gen (2001) iPod 5/10GB 1.1.5 PP5002 No Spec
2 3rd Gen (2003) iPod Dock Connector 2.2.3 PP5002 No Spec
3 Mini 1G (2004) iPod Mini 4GB 6.1.4.1 PP5020 No Spec
4 Mini 2G (2005) iPod Mini 4/6GB 7.1.4.1 PP5022 No Spec
5 4th Gen Mono (2004) Click Wheel 20/40GB 4.3.1.1 PP5020 No Spec
6 4th Gen Color (2004) Color/Photo 20-60GB 11.1.2.1 PP5020 No Spec
7 5th Gen Video (2005) iPod Video 30/60GB 13.1.2.1 PP5021 No Spec
8 5G Late 2006 iPod Video 30/80GB 20.1.2.1 PP5021 No Spec
9 5.5G Enhanced (2006) iPod Video Enhanced 25.1.2.1 PP5022C No Spec
10 Nano 1G (2005) iPod Nano 2GB 14.1.3.1 PP5022 No Spec
11 Nano 1G (2005) iPod Nano 4GB 17.1.3.1 PP5022 No Spec
12 Nano 3G (2007) iPod Nano 4/8GB 26.1.1.3 S5L8702 Yes (AES) Spec
13 Classic 6G (2007) iPod Classic 80/160GB 1.1.2 S5L8702 Yes (AES) Spec
14 Classic 6.5G (2008) iPod Classic 120GB 2.0.1 S5L8702 Yes (AES) Spec
15 Nano 5G (2009) iPod Nano 8/16GB 1.0.2 S5L8730 Yes (AES) Spec
16 Classic 7G (2009) iPod Classic 160GB 2.0.4 S5L8702 Yes (AES) Spec
17 Classic 7G (2012) iPod Classic 160GB 2.0.5 S5L8702 Yes (AES) Spec

Additional firmware dumps analyzed: iPod 4th Gen Mono (FamilyID 10), 4th Gen Color (FamilyID 5), 5G Video (13.1.3, 20.1.3), 5.5G (25.1.2.3, 25.1.3), Classic 7G (2.0.4 no-DRM variant).


Quick-Reference Feature Matrix

Feature 1G 3G Mini 4G Mono 4G Color 5G/5.5G Nano 1G Nano 3G Classic 6G Classic 6.5G Nano 5G Classic 7G
RTXC RTOS ✅ ✅ — — — — — ✅ ✅ ✅ ✅ ✅
Pixo OS ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
FreeType2 — — — — — — — ✅ ✅ ✅ ✅ ✅
MeCCA Codecs — — — — — — — ✅ ✅ ✅ ✅ ✅
SQLite — — — — — — — — — ✅ ✅ ✅
FairPlay DRM — — — — — — — ✅ ✅ ✅ ✅ ✅
Cover Flow — — — — — — — ✅ ✅ ✅ ✅ ✅
Nike+ iPod — — — — — — ✅ ✅ ✅ ✅ ✅ ✅
Voice Memos ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
Photos — ✅ — — ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
Games — ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
Video Playback — — — — — ✅ — ✅ ✅ ✅ ✅ ✅
Debug Menu ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
Disk Mode — ✅ ✅ ✅ ✅ ✅ ✅ — ✅ ✅ ✅ ✅
FM Radio — — — — — — — — ✅ ✅ ✅ ✅
Genius — — — — — — — — — ✅ ✅ ✅
Genius Mixes — — — — — — — — — ✅ ✅ ✅
Demo Mode — — — — — ✅ — ✅ ✅ ✅ ✅ ✅
EU Volume Limit — — — — — — — — — — — ✅ (2.0.5)
HW AES Encryption — — — — — — — ✅ ✅ ✅ ✅ ✅
Camera — — — — — — — — — — ✅ —
Pedometer — — — — — — — — — — ✅ —
VoiceOver — — — — — — — — — — ✅ —
Shake Gesture — — — — — — — — — — ✅ —
FM Live Pause — — — — — — — — — — ✅ —

Architecture Deep Dives

Document Description
Boot Chain Full boot sequence from BootROM → NOR → Disk → OSOS
Memory Map S5L8702 physical memory map, peripheral registers, DRAM layout
IPSW Format IPSW container structure, MSE sections, IMG1 header format
NOR Flash NOR flash memory map, SysCfg structure, boot image locations
RTOS Internals RTXC task table, scheduling model, kernel API
Codec Framework MeCCA pipeline architecture, audio/video decode flow
DRM Architecture FairPlay key hierarchy, AES hardware, game signing
Cover Flow Engine Rendering pipeline, fixed-point math, DMA double-buffering
RSRC Resources Resource partition format, contents, security model

IPSW Structure Overview

All iPod firmware is distributed as IPSW files (standard ZIP archives). Two formats exist:

Format Era Contents Encryption
Format A PortalPlayer (2001–2006) + Classic/Nano 2-3 Firmware-{ID}.{ver} + manifest.plist None (PP) / AES (S5L)
Format B Samsung S5L (Nano 4–7) {Board}.bootloader.rb3 + Firmware.MSE + manifest.plist AES-128-CBC

53 IPSWs cataloged across 18 generations. See architecture/IPSW_FORMAT.md for complete inventory.


Boot Chain Overview

Power On → BootROM (silicon, 64KB) → NOR Bootloader (IMG1) → AES Decrypt → RetailOS (OSOS) → RTXC Kernel → Application Layer

The S5L8702 boot chain has no post-decryption hash verification — encryption serves as the sole authentication mechanism. See architecture/BOOT_CHAIN.md.


NOR Flash Overview

Region Offset Size Content
SysCfg 0x00000 256 B Device identity (serial, model, HW revision)
Boot Image 1 0x08000 104 KB Primary IMG1 bootloader
Boot Image 2 0x22000 108 KB Backup bootloader
Extended 0x41D00 762 KB Bootloader data / disk mode

SysCfg tags: SCfg, SrNm, FwId, HwId, HwVr, SwVr, MLBN, MMod, Regn, Codc. See architecture/NOR_FLASH.md.


Memory Map Overview (S5L8702)

Address Range Size Description
0x00000000–0x0000FFFF 64 KB BootROM (mirrored)
0x08000000–0x0BFFFFFF 64 MB DRAM (main working memory)
0x20000000–0x200FFFFF 1 MB NOR Flash (bootloader, SysCfg)
0x22000000–0x2200FFFF 64 KB SRAM (RTXC kernel, DFU buffer)
0x38000000–0x3FFFFFFF 128 MB Hardware Peripherals (MMIO)

Peripheral reference counts from firmware analysis: GPIO (1,155 refs), LCD (0x38200000), Clock/Power (1,313 refs), Timer/IRQ (871 refs), AES Engine (866 refs). See architecture/MEMORY_MAP.md.


Documentation Structure

├── README.md                          ← You are here
├── DECRYPTION_GUIDE.md                All-model decryption/extraction guide
├── LICENSE                            MIT License
├── wind3x-patch/                      wInd3x device descriptor patch (code)
│   ├── README.md
│   ├── devices.go
│   ├── devices.go.patch
│   ├── BUILD.md
│   └── TESTED_OUTPUT.md
├── specs/                             Per-device firmware feature specifications
│   ├── iPod_1st_Gen_1_1_5.md
│   ├── iPod_3rd_Gen_2_2_3.md
│   ├── iPod_Mini_1st_Gen_6_1_4_1.md
│   ├── iPod_Mini_2nd_Gen_7_1_4_1.md
│   ├── iPod_4th_Gen_Mono_4_3_1_1.md
│   ├── iPod_4th_Gen_Color_11_1_2_1.md
│   ├── iPod_4th_Gen_Photo_5_1_2_1.md
│   ├── iPod_5th_Gen_Video_13_1_2_1.md
│   ├── iPod_5th_Gen_Video_Late_20_1_2_1.md
│   ├── iPod_5_5G_Video_Enhanced_25_1_2_1.md
│   ├── iPod_Nano_1st_Gen_2GB_14_1_3_1.md
│   ├── iPod_Nano_1st_Gen_4GB_17_1_3_1.md
│   ├── iPod_Nano_3rd_Gen_4GB_26_1_1_3.md
│   ├── iPod_Classic_6G_Initial_24_1_0_1.md
│   ├── iPod_Classic_6G_Initial_24_1_0_3.md
│   ├── iPod_Classic_6G_Initial_24_1_1.md
│   ├── iPod_Classic_6G_Initial_24_1_1_2.md
│   ├── iPod_Classic_6_5G_Rev_A_33_2_0.md
│   ├── iPod_Classic_6_5G_Rev_A_33_2_0_1.md
│   ├── iPod_Nano_5th_Gen_34_1_0_2.md
│   ├── iPod_Classic_7G_35_2_0_4.md
│   └── iPod_Classic_7G_38_2_0_5.md
├── comparisons/                       Version-to-version diffs
│   ├── Classic_Evolution_6G_to_7G.md
│   ├── Classic_6G_vs_6_5G_vs_7G.md
│   ├── Nano_3G_vs_Classic_6G.md
│   ├── Classic_204_vs_205.md
│   ├── Nano3G_vs_Classic.md
│   ├── iPod_4th_Gen_Mono_vs_Color.md
│   ├── iPod_5th_Gen_versions.md
│   └── iPod_Nano_1G_2GB_vs_4GB.md
└── architecture/                      Deep dive documents
    ├── BOOT_CHAIN.md
    ├── MEMORY_MAP.md
    ├── IPSW_FORMAT.md
    ├── NOR_FLASH.md
    ├── RTOS_INTERNALS.md
    ├── CODEC_FRAMEWORK.md
    ├── DRM_ARCHITECTURE.md
    ├── COVERFLOW_ENGINE.md
    └── RSRC_RESOURCES.md

Key Findings

Architecture

  • PortalPlayer era (2001–2006): PP5002/PP5020/PP5021/PP5022 SoCs running Pixo OS
  • Samsung S5L8702 era (2007–2012): S5L8702 SoC (ARM926EJ-S) running RTXC with "Silver" UI framework
  • Samsung S5L8730 era (2009): S5L8730 SoC (ARM Cortex-A8, ARMv7) — first iPod with ARMv7
  • All iPods use ARM cores (ARM7TDMI → ARM926EJ-S → Cortex-A8)
  • The Nano 3G and ALL Classic variants share the same S5L8702 SoC and N25C codename
  • Classic firmware grew from 9.47 MB (6G, 2007) to 10.14 MB (7G 2.0.5, 2012) — a 7% increase over 5 years

Classic Evolution (Same SoC, Same Codename)

  • Classic 6G Initial (2007): 21,203 functions, 67,349 strings — no Genius, no EU Volume
  • Classic 6.5G Rev A (2008): 22,810 functions (+7.6%), 71,744 strings — Genius added
  • Classic 7G Rev B (2009): 23,036 functions (+1.0%), 72,926 strings — minor refinements
  • Classic 7G Rev C (2012): 23,164 functions (+0.6%), 73,500+ strings — EU Volume Limit added

Nano 5G — Architecture Leap

  • First ARM Cortex-A8 iPod — transitions from ARMv5TEJ to ARMv7
  • First Thumb-dominant firmware — 94.9% Thumb-2 code (vs 76.5% ARM on Nano 3G)
  • Smaller binary, more features — 6.95 MB with camera, pedometer, FM Live Pause, VoiceOver
  • 30 RTOS tasks (vs 11 on Classic) — dedicated tasks for camera, pedometer, radio

Identical Binaries Discovered

  • iPod 4th Gen Mono: FamilyID 4 and FamilyID 10 are byte-identical
  • iPod 4th Gen Color/Photo: Color, Color FamilyID 11, and Photo FamilyID 5 are byte-identical
  • iPod Nano 1G: 2GB (FamilyID 14) and 4GB (FamilyID 17) are byte-identical

Hidden Features (S5L8702 Devices)

  • Debug Menu — Full internal debug interface with disk browser, memory viewer, unit tests
  • Demo Mode — Apple Store kiosk mode (TCDemoMode controller)
  • RTXCbug — Interactive RTOS debugger with task/object inspection
  • 22 Logging Channels — Disk, USB, playback, photo import telemetry
  • Unit Test Framework — Built-in test suite (TUnitTestSuiteCntlr)
  • MockupMode — Developer UI prototyping tool

Cover Flow — No GPU

The S5L8702 has no GPU or hardware 2D/3D accelerator. Cover Flow is achieved through highly optimized fixed-point ARM assembly rendering at ~30 FPS on a 200MHz CPU. Column-by-column affine texture mapping with DMA double-buffering.


Decryption Guide

See DECRYPTION_GUIDE.md for complete instructions covering all iPod models:

  • Unencrypted models (1G–5G, Nano 1G, Mini): Simple IPSW extraction
  • Encrypted models (Classic 6G/7G, Nano 3G+): Hardware AES decryption via wInd3x

wInd3x Patch

See wind3x-patch/ for the device descriptor patch that adds iPod Classic support to wInd3x.

Quick reference:

DFU PID: 0x1223 (Rev A/B) / 0x1250 (Rev C)
WTF PID: 0x1247 (Rev B) / 0x1250 (Rev C)
SoC:     S5L8702 (same as Nano 3G)
Protocol: DFUProtoVersion1

Build Codenames

Codename Device SoC FamilyIDs
N25C iPod Classic 6G / 6.5G / 7G (all revisions) S5L8702 24, 33, 35, 38
N46 iPod Nano 3rd Generation S5L8702 26, 27
N58s iPod Nano 4th Generation S5L8720 31
N33 iPod Nano 5th Generation S5L8730 34
N20 iPod Nano 6th Generation S5L8723 36
N31 iPod Nano 7th Generation S5L8740 37

Note: All iPod Classic variants (6G Initial, 6.5G Rev A, 7G Rev B, 7G Rev C) share the N25C codename because they use the same S5L8702 SoC and PCB design. The hardware revisions differ only in HDD capacity, minor board component changes, and USB PID assignments.


References

Legal

This research is conducted for educational and interoperability purposes under fair use principles. All analyzed iPod models are discontinued products. No copyrighted Apple code is distributed — only analysis results and documentation.

License

MIT License — see LICENSE.

Rendered by GitHub from the repository’s README. Scroll to read the full file.
First trending

Jul 25, 2026

first spotted on the list

Best rank

#10

highest position reached

Appearances

3

times on the trending list

Quality score

90

out of 100

Momentum

34

trend strength indicator

Star velocity

0.18

stars per day since creation

Activity — last 60 days

daily counts, collected every 6 hours
  • Stars
  • Forks
  • Merged PRs
  • Issues
  • Closed issues

Collecting activity data since launch — check back in a few days.

Star history

total stars per snapshot
12131415161718giek2000/ipod-classic-firmware-research · Jul 25, 7 PM UTC: 13 starsgiek2000/ipod-classic-firmware-research · Jul 26, 3 AM UTC: 16 starsgiek2000/ipod-classic-firmware-research · Jul 26, 8 AM UTC: 17 stars7 PM1 AM8 AM

Rank history

position on trending · lower is better
#1#10#20#30#40#50Jul 25, 7 PM UTC: rank #10Jul 26, 3 AM UTC: rank #48Jul 26, 8 AM UTC: rank #397 PM1 AM8 AM

3D card for your website

Live HTML card with a glass surface and pointer tilt. Paste the iframe on any website.

<iframe src="https://www.notionpulse.cc/embed/giek2000/ipod-classic-firmware-research" width="420" height="240" style="border:0;max-width:100%;background:transparent" loading="lazy" title="giek2000/ipod-classic-firmware-research — trending on Open Source Pulse"></iframe>

Stars badge

Show current stars in your README or profile. Auto-updates every 6 hours.

giek2000/ipod-classic-firmware-research stars badge
Markdown
[![giek2000/ipod-classic-firmware-research](https://www.notionpulse.cc/api/badge/giek2000/ipod-classic-firmware-research.svg)](https://www.notionpulse.cc/repo/giek2000/ipod-classic-firmware-research)
HTML
<a href="https://www.notionpulse.cc/repo/giek2000/ipod-classic-firmware-research"><img src="https://www.notionpulse.cc/api/badge/giek2000/ipod-classic-firmware-research.svg" alt="giek2000/ipod-classic-firmware-research stars badge" /></a>

Repository of the Day

#10 Repository of the Day

Repository of the Week

#10 Repository of the Week

Repository of the Month

#10 Repository of the Month