Earlier this summer, I had the mixed enjoyment of upgrading my jailbroken first generation (“2G”) iPhone from OS version 2.2.1 to 3.0. The upgrade/jailbreak worked as expected without problems using the QuickPwn/redsn0w tool from the dev-team. The new iPhone functionality in version 3.0 is described all over the net, so I don’t need to reiterate here. It was better. I quite liked it.
Now, what Apple of course did again was to break existing compatibility with available free software tools. They changed the iPod database format again. I had a quick look at the files generated from iTunes, and found that it is now based on sqlite with some propriatory functions added. Sqlite is not the worst format to work with, so over time, this may be a change for the better. Worse, but not unexpected, was that they have kept the scramble algorithm they introduced in 2.x, and removed the hacked support for older versions of the library. There was also another file that looked like it kept some cryptographic info. I found Héctor Martín Cantero on IRC and presented some of the files, and he produced a blog posting with his views on the changes.
While we may hope for more openness from Apple in the time to come (yeah, right), or that the always busy hackers either hack the iTunes DB format again, patch around the changes or produce a good alternative player (yes, I very well know about PwnPlayer and dTunes), I’ll stay with 2.2.1. So I downgraded.
And that was quite a bit of work, and took me some hours. I got friendly help on one of the many iPhone related IRC channels, and found a forum post with some of the information needed. It had some errors, but had enough information to get me through.
The downgrade path, which probably will only work on first generation (“2G”) iPhones, is:
Use the 3.0 beta 5 QuickPwn jailbreak toolkit from the dev-team on the device upgraded to 3.0. This will give you a non-working device that will ask you to connect to iTunes on a pink (indicates a beta version, I guess) background. Then use iTunes in normal repair (not DFU mode as described in the forum post) to downgrade (restore) to beta 3, then beta 2, then back to 2.2.1, and finally re-jailbreak that.
The main problem here was of course to find that I had to use a “normal” iTunes restore, and not DFU mode to do the downgrade. Secondly, finding the files necessary took quite a bit of time. They are still available on the web, and Google will find them for you, but it was quite a pain to get the all the parts needed.