Originally published 2026-06-26.
Years ago I experimented with putting flash cards in 1st-gen iPods and had partial success. Through some now-forgotten series of almost magical incantations, I prepared a CompactFlash card with the 1st-gen firmware on it — I think it involved prepping the card on a 3rd-gen iPod, loading songs that way, then updating the firmware down to 1st-gen. Crazy process, but it proved the point: a 1st-gen iPod will accept a flash card and play music off it.
There was an Achilles' heel, though: it couldn’t sync over FireWire. Nobody quite knew why. Theories abounded. I set it aside for years, then recently picked it back up — and after a lot of experimentation, I’m back to report that 1st/2nd-gen iPods can sync over FireWire with flash, given two conditions:
-
The card has to support DMA mode. Some flash cards do, some don’t. This is the half nobody had isolated. The iPod’s disk-mode reads/writes go through ATA DMA, and a card that doesn’t honor the DMA handshake hangs the transfer cold. Luckily, plenty of cards do support DMA.
-
The host computer has to slow down. The 1st-gen FireWire bridge is fragile about transfer size and command pipelining, and every OS’s default settings blow right through those limits. On Linux you can fix this with OS-level tweaks (a udev rule capping
max_sectors_kb, killing read-ahead, and forcing queue depth 1) — and then the iPod’s data partition (music + the "iTunes" database) mounts and is fully readable/writable. macOS, unfortunately, doesn’t expose those knobs; a flash-converted iPod isn’t even recognized with default settings.
But you don’t have to use the defaults. I wrote a utility called flashpod that reads and writes the iPod while bypassing as much of the OS as possible — talking to the FireWire device as a raw block device with no buffering or caching, so it controls the exact size and timing of every read and write. Same idea as the udev rule, but portable, and it works where macOS won’t mount anything.
So the recipe for a usable flash-converted 1st/2nd-gen iPod:
-
Use flash storage that supports DMA (many cards do), and
-
Either set a udev rule on Linux to throttle the FireWire transfers, or use a raw-access tool like flashpod to talk to it on the iPod’s terms.
flashpod
I wrote flashpod to handle the whole process of putting flash cards in early-generation iPods. It’s a command-line tool that works without iTunes — it writes the firmware to the card, creates the music database, and loads music. Once the card is in the iPod, flashpod also manages the library, letting you add and remove songs directly on the device.
flashpod works with generations 1, 2, and 3 (and likely 4). It runs on Linux and macOS, and was deliberately written to work on vintage hardware like an old MacBook with FireWire.
For 1st and 2nd gen iPods, flashpod is essential. It reads and writes the iPod’s partition directly over the raw device, bypassing the OS mount entirely. This lets it work around the FireWire bridge limitations that prevent macOS or modern Linux from mounting a flash-modded iPod. For 3rd and 4th gen iPods, flashpod is still useful for managing music, even though they sync over USB and don’t need the raw access workaround.
You can find flashpod on GitHub: https://github.com/davidbarnhart/flashpod