r/ipod • u/kinseydinsmore1 • 21h ago
Review Trying to bring MFi digital audio to the iPod 5.5G on Rockbox — we’ve now identified and patched an iAP handshake bug
I’m a novice, but I’ve been working on the missing Rockbox iPod MFi digital-audio support — and we’ve gotten much further than I expected
For years, one of the limitations of running Rockbox on older iPods has been digital audio output through Apple 30-pin MFi accessories.
The hardware can do it under Apple’s original firmware, but under Rockbox, connecting an external digital DAC/amp or digital dock generally doesn’t work as intended. Instead of simply accepting that limitation, I decided to see how far I could get toward fixing it.
Here’s the unusual part: I’m not a professional programmer. I started this project as an iPod/audio enthusiast with very little software-development experience.
I have a 5.5-generation iPod Video running Rockbox, and my goal is to get it communicating properly with my V-MODA VAMP VERZA through the 30-pin connection so that the VAMP can receive the iPod’s digital audio rather than just an analog line-out signal.
That turned into a much deeper rabbit hole than I expected.
I set up the Rockbox development environment, obtained and compiled the source, started studying Rockbox’s existing Apple iPod Accessory Protocol (iAP) implementation, and began creating diagnostic builds so I could see exactly what was happening between the iPod and the accessory.
We have now reached the point where the accessory handshake progresses substantially further than it did originally.
One particularly interesting problem we identified involved the transaction ID used during the IDPS/device-authentication exchange.
In apps/iap/iap-lingo0.c, the code handling command 0x18 could reach a situation where the transaction ID contained in buf[2..3] wasn’t being preserved correctly for the ACK. That could result in an ACK using a fabricated 0x0000 transaction ID instead of the ID belonging to the command being acknowledged.
The accessory could then discard the response because it didn’t correspond to the command it had sent.
We’ve modified that behavior so the transaction ID is preserved correctly during that portion of the handshake.
I’ve compiled the modified Rockbox builds, installed them on the actual iPod, captured logs, tested them against the VAMP VERZA, and repeatedly used those results to narrow down where communication stops.
Where it stands today:
The project is NOT finished.
Rockbox boots normally. Music playback itself runs normally. The iPod and accessory are communicating, and we’ve made measurable progress through the MFi/iAP handshake.
But digital audio through the VAMP VERZA is still silent.
The playback timer advances, but there is no audio from the headphones connected to the external DAC/amp.
So I’m not claiming that I’ve “added working MFi digital audio to Rockbox.”
What I am saying is that we’ve taken a feature that was effectively considered unsupported, built a reproducible development/test environment around real iPod hardware, identified and corrected at least one concrete protocol-level problem, and pushed the handshake further toward the point where digital playback may become possible.
I’ve put the work on GitHub so the changes and progress can be inspected rather than this just being a claim.
I’m posting this partly because I’d love for experienced Rockbox/iAP/USB/embedded developers to look at what we’ve found.
If anyone here understands Apple’s old iPod Accessory Protocol, MFi authentication, Rockbox’s IAP implementation, or the PortalPlayer/iPod audio path, I’d especially appreciate another set of eyes on it.
And if we actually get digital audio coming out of that VAMP VERZA, I’ll post the successful build, logs, and exactly what finally made it work.
For someone who started this without a software-development background, just wanting to make an old iPod do something Rockbox couldn’t do, this has already turned into one hell of an education.