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:
- Database initialization — creating a valid iTunesDB for the model
- Feature detection — confirming artwork, video, and playlist support matches expectations
- 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
| Level | Meaning |
|---|---|
| ✅ Verified | Confirmed working with real hardware by a contributor |
| 🧪 Simulated | Has automated E2E test coverage with simulated database |
| ❔ Expected | Should 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:
| Device | Reason |
|---|---|
| iPod Nano 6th Gen | Different database format (touch screen square design) |
| iPod Nano 7th Gen | Different database format (tall touch screen) |
| iPod Shuffle 3rd Gen | Buttonless; requires iTunes authentication hash |
| iPod Shuffle 4th Gen | Buttonless; 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:
- No USB Mass Storage: iOS devices don’t mount as a filesystem
- Signed Database: The iTunesDB must be cryptographically signed by iTunes
- 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
| Generation | Music | Artwork | Video | Playlists | Smart 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:
- Report success: Open an issue or PR noting your model number and any observations
- Model number: Found in Settings > About on the iPod, or on the device’s back
- 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”:
- Check if
iPod_Control/Device/SysInfoexists on your iPod - If missing, create it with your model number:
Terminal window echo "ModelNumStr: MA147" > /Volumes/IPOD/iPod_Control/Device/SysInfo - 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
- Other Devices - Rockbox, standalone DAPs, and future device support
- iPod Internals - iTunesDB format and device quirks
- macOS Mounting Issues - Large iFlash troubleshooting