Skip to content

Supported Devices

podkit targets Apple’s stock iPod firmware — the original operating system that ships on every iPod. By solving the hard problem of syncing with the iTunesDB database format, podkit builds a foundation that can extend to easier targets in the future (see Other Devices).

Overview

podkit uses libgpod for iPod database management. Our device support directly reflects libgpod’s capabilities. libgpod works with iPods that use USB Mass Storage mode with the iTunesDB database format.

Devices that use iOS sync protocols (iPod Touch, iPhone, iPad) or require iTunes-specific authentication (buttonless Shuffles) are not supported by libgpod and therefore not supported by podkit.

How We Test

podkit tests device compatibility using simulated iPod databases — real iTunesDB structures created in temporary directories. Each supported iPod generation has automated E2E tests that verify:

  1. Database initialization — creating a valid iTunesDB for the model
  2. Feature detection — confirming artwork, video, and playlist support matches expectations
  3. Track operations — adding tracks, reading them back, verifying database integrity

For models requiring authentication checksums (iPod Classic, Nano 3rd-5th gen), we simulate the authentication data:

  • Hash58 models (Classic, Nano 3-4): A test FirewireGuid is injected into SysInfo
  • Hash72 models (Nano 5): A synthetic HashInfo file is generated alongside the FirewireGuid

These simulated databases exercise the same libgpod code paths as real hardware — the only difference is the authentication data comes from deterministic test values instead of being read from physical device firmware.

Confidence Levels

LevelMeaning
VerifiedConfirmed working with real hardware by a contributor
🧪 SimulatedHas automated E2E test coverage with simulated database
ExpectedShould work based on libgpod support, but not yet tested

Device Compatibility

Generation Models Music Artwork Video Playlists Confidence
iPod (1st Gen) M8513, M8541 🧪 Simulated
iPod (2nd Gen) M8737, M8740, M8738, M8741 🧪 Simulated
iPod (3rd Gen) M8976, M8946, M9244, M9245, M9460 🧪 Simulated
iPod (4th Gen) M9282, M9268, M9787, M9788 🧪 Simulated
iPod Photo MA079, M9828, M9829 🧪 Simulated
iPod Video (5th Gen) MA002, MA003, MA146, MA147 ✅ Verified
iPod Video (5.5th Gen) MA444, MA446, MA448, MA450 🧪 Simulated
iPod Classic (6th Gen, 80GB) MB029, MB147, MB150 🧪 Simulated
iPod Classic (6th Gen, 120GB) MB565 🧪 Simulated
iPod Classic (7th Gen) MC293, MC297 🧪 Simulated
iPod Nano (1st Gen) MA004, MA005, MA099, MA107, MA350, MA352 🧪 Simulated
iPod Nano (2nd Gen) MA477, MA478, MA426, MA427, MA428 🧪 Simulated
iPod Nano (3rd Gen) MA978, MA980, MB245, MB249, MB261 🧪 Simulated
iPod Nano (4th Gen) MB598, MB654, MB732, MB903, MB909, MB911, MB913, MB915, MB918 🧪 Simulated
iPod Nano (5th Gen) MC027, MC031, MC040, MC049, MC050, MC051, MC054, MC062, MC064, MC066, MC068, MC075 🧪 Simulated
iPod Mini (1st Gen) M9160, M9436, M9435, M9434, M9437 🧪 Simulated
iPod Mini (2nd Gen) M9800, M9801, M9802, M9803, M9804, M9805, M9806, M9807 🧪 Simulated
iPod Shuffle (1st Gen) M9724, M9725, MA133 🧪 Simulated
iPod Shuffle (2nd Gen) MA546, MA564, MA565, MA947, MA948, MA949, MA950, MA951, MB225, MB226, MB227, MB228, MB229, MB518, MB519, MB520, MB522, MB523 🧪 Simulated

Unsupported Devices

The following devices cannot be supported by podkit:

DeviceReason
iPod Nano 6th GenDifferent database format (touch screen square design)
iPod Nano 7th GenDifferent database format (tall touch screen)
iPod Shuffle 3rd GenButtonless; requires iTunes authentication hash
iPod Shuffle 4th GenButtonless; requires iTunes authentication hash
iPod Touch (all)Uses iOS sync protocol; iTunesDB requires cryptographic signing
iPhone (all)Uses iOS sync protocol
iPad (all)Uses iOS sync protocol

Why Can’t iOS Devices Be Supported?

Starting with iPod Touch, Apple changed the sync architecture:

  1. No USB Mass Storage: iOS devices don’t mount as a filesystem
  2. Signed Database: The iTunesDB must be cryptographically signed by iTunes
  3. Proprietary Protocol: Sync uses Apple’s proprietary AFC (Apple File Conduit) protocol

libgpod cannot implement iTunes’ signing mechanism, making iOS device support technically impossible without reverse-engineering Apple’s authentication.

Testing Details

Generation Auth Type E2E Test Real Device
iPod (1st Gen) None ✅ Pass
iPod (2nd Gen) None ✅ Pass
iPod (3rd Gen) None ✅ Pass
iPod (4th Gen) None ✅ Pass
iPod Photo None ✅ Pass
iPod Video (5th Gen) None ✅ Pass @jvgomg (2026-02-22)
iPod Video (5.5th Gen) None ✅ Pass
iPod Classic (6th Gen, 80GB) Hash58 (simulated) ✅ Pass
iPod Classic (6th Gen, 120GB) Hash58 (simulated) ✅ Pass
iPod Classic (7th Gen) Hash58 (simulated) ✅ Pass
iPod Nano (1st Gen) None ✅ Pass
iPod Nano (2nd Gen) None ✅ Pass
iPod Nano (3rd Gen) Hash58 (simulated) ✅ Pass
iPod Nano (4th Gen) Hash58 (simulated) ✅ Pass
iPod Nano (5th Gen) Hash72 (simulated) ✅ Pass
iPod Mini (1st Gen) None ✅ Pass
iPod Mini (2nd Gen) None ✅ Pass
iPod Shuffle (1st Gen) None ✅ Pass
iPod Shuffle (2nd Gen) None ✅ Pass

Feature Support by Generation

GenerationMusicArtworkVideoPlaylistsSmart Playlists
1st-4th Gen
Photo
Video (5th/5.5th)
Classic (6th/7th)
Mini
Nano 1st-2nd
Nano 3rd-5th
Shuffle 1st-2nd

iFlash / SD Card Adapters

iPods with iFlash or similar SD card adapters are fully supported. These adapters replace the original hard drive but don’t change the iPod’s firmware or database format.

Note: Large capacity iFlash builds (>128GB) may have mounting issues on macOS. See macOS Mounting Issues for troubleshooting.

Confirming Your Device Works

If you have an iPod model marked as ❔ and successfully use it with podkit, please help us verify support:

  1. Report success: Open an issue or PR noting your model number and any observations
  2. Model number: Found in Settings > About on the iPod, or on the device’s back
  3. What to test:
    • Basic sync (adding tracks)
    • Artwork display
    • Playlist creation
    • Video sync (if applicable)

Troubleshooting

”Unknown” Model Detection

If podkit shows your iPod as “Unknown Generation”:

  1. Check if iPod_Control/Device/SysInfo exists on your iPod
  2. If missing, create it with your model number:
    Terminal window
    echo "ModelNumStr: MA147" > /Volumes/IPOD/iPod_Control/Device/SysInfo
  3. See iPod Internals for model number reference

Device Not Mounting

  • macOS: See macOS Mounting Issues
  • Linux: Ensure you have appropriate udev rules; see libgpod documentation

See Also