Open-source iPod Classic sync tool — manage your iPod without iTunes.
iOpenPod reads and writes the iPod's native iTunesDB and ArtworkDB binary formats directly, giving you full control over your music library. Sync tracks, metadata, play counts, ratings, and album art between your PC and iPod — no iTunes required.
- No iTunes dependency — Syncs directly with the iPod's database files
- Format agnostic — Automatically transcodes FLAC, OGG, and other formats to iPod-compatible ALAC/AAC
- Acoustic fingerprinting — Uses Chromaprint to reliably match tracks even after re-encodes or metadata changes
- Two-way sync — Play counts, ratings, and skip counts sync back to your PC library
- Cross-platform — Built with Python and PyQt6 (Windows, macOS, Linux)
- Smart library diffing — Detects new, removed, and changed tracks using acoustic fingerprints
- Automatic transcoding — Converts FLAC, OGG, WMA, and other formats to ALAC or AAC on-the-fly
- Transcode caching — Optionally cache converted files for faster repeat syncs
- Metadata-only updates — Tag changes sync without re-copying audio files
- Bidirectional play count sync — Reads the iPod's Play Counts file and merges with your PC library
- Rating strategies — Choose pessimistic (keep lower) or optimistic (keep higher) for conflicts
- Skip count tracking — Skip counts sync alongside play counts
- Visual sync review — See exactly what will change before syncing (add, remove, update)
- Selective sync — Check/uncheck individual tracks or entire categories
- Duplicate detection — Identifies duplicate tracks via acoustic fingerprinting
- Integrity checks — Detects orphan files, stale mappings, and missing tracks automatically
- Artwork sync — Extracts and writes RGB565 album art to iPod
.ithmbfiles - Automatic resizing — Generates all required artwork sizes (140×140, 56×56, etc.)
- Storage estimates — Shows space required/freed before syncing
- Checkpoint & rollback — Automatic pre-sync backups with one-click restore
- ETA tracking — Real-time progress estimates during sync operations
- Desktop notifications — Get notified when long syncs complete
| Device | Read | Write | Notes |
|---|---|---|---|
| iPod 1G–5G, Mini, Photo | ✅ | ✅ | No hash required |
| iPod Nano 3G–4G | ✅ | ✅ | HASH58 (FireWire ID from SysInfo) |
| iPod Classic (all gens) | ✅ | ✅ | HASH72 (requires one iTunes sync for HashInfo) |
| iPod Nano 5G | ✅ | ✅ | HASH72 |
| iPod Nano 6G–7G | ✅ | ❌ | HASHAB not reverse-engineered |
Screenshots coming soon — contributions welcome!
- Python 3.13+
- uv (recommended) or pip
- Chromaprint / fpcalc — for acoustic fingerprinting
- FFmpeg — for transcoding non-native formats
# Clone the repository
git clone https://github.com/TheRealSavi/iOpenPod.git
cd iOpenPod
# Install dependencies with uv
uv sync
# Launch the app
uv run python main.pypip install -e .
python main.py- Connect your iPod — Plug in via USB and mount it (it should appear as a drive)
- Select device — Click the device button in the sidebar to scan for connected iPods
- Browse your library — View albums, tracks, and metadata in the album grid or list view
- Start a sync — Click Sync, select your PC music folder, and review the proposed changes
- Apply changes — Check/uncheck items as needed, then click Apply to sync
iOpenPod uses a fingerprint-based sync engine to reliably track identity between your PC files and iPod tracks:
- Scan — Reads your PC music folder and the iPod's iTunesDB
- Fingerprint — Computes acoustic fingerprints (Chromaprint) for each track
- Diff — Compares fingerprints to find new, removed, changed, and matched tracks
- Review — Shows a detailed sync plan with categories (add, remove, update metadata, etc.)
- Execute — Copies/transcodes files, updates the iTunesDB, syncs artwork and play counts
- Write — Rebuilds the entire iTunesDB with proper checksums for your device generation
iOpenPod/
├── GUI/ # PyQt6 user interface
│ ├── app.py # Main window, device management
│ ├── notifications.py # Desktop notification support
│ └── widgets/ # UI components (grid, list, sidebar, sync review)
├── iTunesDB_Parser/ # Binary parser for iTunesDB format
├── iTunesDB_Writer/ # Binary writer with hash/checksum support
├── ArtworkDB_Parser/ # Binary parser for ArtworkDB format
├── ArtworkDB_Writer/ # Album art extraction and writing
├── SyncEngine/ # Core sync logic
│ ├── fingerprint_diff_engine.py # Acoustic fingerprint-based diffing
│ ├── sync_executor.py # Executes sync plans
│ ├── transcoder.py # FLAC→ALAC, OGG→AAC conversion
│ ├── checkpoint.py # Backup & rollback system
│ └── eta.py # ETA time estimation
└── main.py # Application entry point
Contributions are welcome! Areas where help is especially appreciated:
- Testing on real hardware — Especially iPod Nano models
- macOS / Linux testing — Primary development is on Windows
- UI polish — Dark theme refinements, accessibility
- Documentation — Usage guides, wiki pages
Please open an issue first to discuss major changes.
- libgpod — C library for iPod database access (reference implementation)
- gtkpod — GTK+ iPod manager
- Rockbox — Open-source firmware replacement for iPods
This project is licensed under the MIT License — see LICENSE for details.
iPod sync tool, iPod Classic manager, iTunes alternative, iTunesDB reader writer, iPod music sync without iTunes, open source iPod manager, iPod database tool, manage iPod on Linux, manage iPod on Windows, iPod FLAC sync, acoustic fingerprint sync