Awesome, side channels for the win. That said, I'm really surprised that JTAG couldn't read out the ROM, in theory that is how you would program it. And given that you couldn't program it, if instead of a minimal USB driver you wrote a program that read a 16 bit word at a time from ROM and stored it in a static variable you should be able to use the JTAG data watch function to stream out the words as you read them.
> That said, I'm really surprised that JTAG couldn't read out the ROM, in theory that is how you would program it.
I'm no embedded expert, but I would assume some devices let you write to them and upload new code using the JTAG interface, but still prevent you from reading if the author have signalled that he wants his code protected.
Quick DDGing seems to suggest this is indeed a vendor/chip-specific capability:
https://web.archive.org/web/20070126061215/http://ipodlinux....