Skip to main content

Open-source iPod Classic sync tool — manage your iPod media library without iTunes. Reads and writes iTunesDB directly.

Project description

iOpenPod

Ditch iTunes. Sync your iPod the open way.

License: MIT Platform: Win | Mac | Linux GitHub Release Discord ko-fi

iOpenPod is a free, open-source desktop app that lets you manage your iPod without iTunes. Plug in your iPod, and sync. FLAC, OGG, MP3, any file format, it automatically handles the conversion. Access to all the features your iPod makes possible. Works on Windows, macOS, and Linux.

Album Browser


Download

Grab the latest release for your platform. No Python required for the native builds, no setup wizards, just download, extract, and run:

➡️ Download iOpenPod here

Platform File Instructions
Windows iOpenPod-windows.zip Extract, and run iOpenPod.exe
macOS iOpenPod-macos.tar.gz Extract, and run iOpenPod.app, you will need to allow the unknown developer in System Settings.
Linux (All distros, recommended) iOpenPod-Linux-x86_64.AppImage Make it executable with chmod a+x ./iOpenPod-Linux-x86_64.AppImage and run.
Linux (Arch-based) iopenpodAUR Available in the AUR
Linux (All distros) iOpenPod-linux.tar.gz Extract, and run ./iOpenPod

Once installed, iOpenPod can check for updates automatically and can update itself right from the app. (Except when installed from AUR or a Python package manager.)

Install from PyPI

If you prefer a Python package install, iOpenPod is also available through pip, pipx, and uv tool. These options expose the same iopenpod command.

Method Install Run Upgrade
pip python -m pip install iopenpod iopenpod python -m pip install --upgrade iopenpod
pipx pipx install iopenpod iopenpod pipx upgrade iopenpod
uv tool uv tool install iopenpod iopenpod uv tool upgrade iopenpod

Requires Python 3.11+.

If iopenpod is not on your shell PATH yet, run pipx ensurepath for pipx installs or uv tool update-shell for uv tool installs.

Package-manager installs should be updated with the same tool you used to install them, not with the in-app binary updater.

Optional extras: Install FFmpeg for transcoding (FLAC to ALAC, etc.) and Chromaprint for acoustic fingerprinting needed for syncing.


How to Use

  1. Plug in your iPod — Make sure it is mounted as a drive
  2. Pick your device — Select your iPod in iOpenPod. If it detects the iPod incorrectly, please open an issue.
  3. Browse — Manage your iPod's library, modifying any existing tracks, playlists, podcasts, etc.
  4. Sync — Press sync, choose a folder on your PC to sync, decide what you want and what you don't, and you're done.

Device Picker


Features

🎵 Sync Music From Any Format

Drop in any file format and iOpenPod transcodes whatever the iPod can't play natively into ALAC or AAC. Converted files are cached so repeat syncs are fast.

📻 Podcasts

Subscribe to podcasts right inside iOpenPod with the built-in podcast manager. Search, subscribe, download episodes, and sync them to your iPod.

Podcasts

🎧 ListenBrainz Scrobbling

Sign into ListenBrainz and your listening history gets scrobbled automatically every time you sync.

📚 More Than Just Music

Audiobooks, movies, and TV shows are all supported. iOpenPod handles the different media types so your iPod sorts them correctly.

🖱️ Drag and Drop

Don't care about keeping your PC and iPod perfectly in sync? Just drag files into the app and they'll land on your iPod. No fingerprinting or file tracking.

Manage Tracks

📊 Play Counts & Ratings

Listen on your iPod, plug it in, and your play counts, ratings, and skip counts can sync back to your PC library.

🖼️ Album Art Just Works

Art gets extracted from your files, resized, and written in the iPod's native RGB565 format. No extra steps.

✅ Review Before You Commit

Every sync shows you exactly what's happening, adds, removes, metadata updates, all with checkboxes for each item. Nothing changes until you say so.

Sync Review

📋 Playlists & Smart Playlists

Browse and manage standard playlists. Smart playlists with rule-based filtering are supported too.

Playlists Smart Playlists

🛡️ Backup & Rollback

A snapshot of your iPod database is saved before every sync. If something goes wrong, roll back to any previous state.

Backups

⚙️ Configurable

Tweak transcoding settings, sync behavior, and more.


Supported iPods

Works with every click-wheel iPod Apple ever made. Shuffle support coming soon!

Device Status Notes
iPod 1G–5G, Mini, Photo ✅ Fully supported No hash required
iPod Classic (all gens) ✅ Fully supported Uses FireWire ID
iPod Nano 1G–2G ✅ Fully supported No hash required
iPod Nano 3G–4G ✅ Fully supported Uses FireWire ID
iPod Nano 5G ✅ Fully supported Needs one iTunes sync for HashInfo
iPod Nano 6G–7G ✅ Fully supported HASHAB via WebAssembly
iPod Shuffle 🔜 Coming soon
iPod Touch ❌ Not planned

For Developers

Want to help make iOpenPod? Here's how to get a dev environment running.

Prerequisites

  • Python 3.11+
  • uv (Python package manager)
  • FFmpeg (for transcoding)
  • Chromaprint (for fingerprinting)

Setup

git clone https://github.com/TheRealSavi/iOpenPod.git
cd iOpenPod
uv sync
uv run python main.py

That's it. uv sync installs all dependencies into a virtual environment automatically.

Project Layout

iOpenPod/
├── GUI/                    # PyQt6 interface
│   ├── app.py              # Main window
│   └── widgets/            # Album grid, track list, sidebar, sync review, etc.
├── iTunesDB_Parser/        # Reads iPod's binary iTunesDB
├── iTunesDB_Writer/        # Writes iTunesDB
├── ArtworkDB_Parser/       # Reads ArtworkDB binary format
├── ArtworkDB_Writer/       # Writes album art to .ithmb files
├── SyncEngine/             # Fingerprinting, diffing, transcoding, sync execution
├── PodcastManager/         # Podcast search, subscription, and download
├── SQLiteDB_Writer/        # SQLite DB for Nano 6G/7G
└── main.py                 # Entry point

How Sync Works

The sync engine matches tracks between your PC and iPod using acoustic fingerprints (Chromaprint). This means it can identify the same song even after re-encoding, format conversion, or metadata changes.

  1. Scan both the PC media folder and iPod's iTunesDB
  2. Compute or read cached fingerprints for each track
  3. Diff by fingerprint to classify: new, removed, changed, or matched
  4. Present the sync plan for review
  5. Copy/transcode files, update the database, sync artwork and play counts
  6. Rebuild the iTunesDB binary with the correct device-specific checksum

Areas Where Help Is Needed

  • Real hardware testing - Every iPod is a little different.
  • macOS and Linux testing - Primary dev is on Windows
  • Bug reports - Open an issue with steps to reproduce

Please open an issue before starting major changes so we can coordinate, or join the discord server.

Related Projects

  • libgpod — C library for iPod database access (the reference implementation this project learned from)
  • gtkpod — GTK+ iPod manager
  • Rockbox — Open-source firmware replacement for iPods

Support

iOpenPod is and always will be completely free and open source. If you like it and would like to support me, it is so very appreciated.

ko-fi

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iopenpod-1.0.47.tar.gz (23.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iopenpod-1.0.47-py3-none-any.whl (18.5 MB view details)

Uploaded Python 3

File details

Details for the file iopenpod-1.0.47.tar.gz.

File metadata

  • Download URL: iopenpod-1.0.47.tar.gz
  • Upload date:
  • Size: 23.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for iopenpod-1.0.47.tar.gz
Algorithm Hash digest
SHA256 c4de3f5e4df7fd515cb42f2401411f01bcd93f843e3cf47c970473f09191a942
MD5 a95c3d9154c62805d54aa8698cd18874
BLAKE2b-256 e931bc2330b248cc7a884748414c74e0fe303109ad46b78aec9efc12c5433497

See more details on using hashes here.

Provenance

The following attestation bundles were made for iopenpod-1.0.47.tar.gz:

Publisher: release.yml on TheRealSavi/iOpenPod

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iopenpod-1.0.47-py3-none-any.whl.

File metadata

  • Download URL: iopenpod-1.0.47-py3-none-any.whl
  • Upload date:
  • Size: 18.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for iopenpod-1.0.47-py3-none-any.whl
Algorithm Hash digest
SHA256 23d976b7318c14bd04d8246f8a4778690fd06607c9b28475b76a15b29a618cf9
MD5 6dd1ead4005acb99561996a539e281dc
BLAKE2b-256 9a325ad3ff1dc3bc32c0380cc06f676dd8404c0e21d7c8b63139b2d0eabdbcdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for iopenpod-1.0.47-py3-none-any.whl:

Publisher: release.yml on TheRealSavi/iOpenPod

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page