Howto downgrade iPhone from iOS 4 to 2.2.1 or 3.1.3 and all other firmware versions

This evening I’ve downgraded an iPhone 3G from iOS 4 all the way back to 2.2.1. It was a little bit tricky but I finally figured it out. I’m back at 3.1.3 since not enough apps worked on 2.2.1 (for a brief iOS history on what has changed, see here).

Should you ever want to do it, this is how you do it. Note: The guides that were out there did not work for me, I kept getting Error 1600 all the time so this is what I did to make it work.

First off, at least for me, I could not jump straight from 4.0 to 2.2.1, you have to downgrade in steps. This means we first have to go from 4.0 to 3.1.3 and then to 3.0 and then to 2.2.1. Going from 3.0 to 2.2.1 also requires iTunes version 7.7, so if you’re on a Mac with the latest iTunes, you’re shit out of luck – get on an old PC or run windows through a VM. I had to run iTunes 7.7 on an old crappy XP machine to make it work right also, it didn’t vibe well with Windows 7 x64.. And YES, I really had to go from 3.1.3 to 3.0 and THEN to 2.2.1.

To get a hold of all the old firmware revisions for the iPhone visit this page and select the right one, remember, you have to do it in steps, so if you want to go from 4.0 to 2.2.1, first you got to hit 3.1.3.

You’re also going to be needing a tool called iRecovery to get the iPhone out of DFU mode. If you’re on a Mac, unpack the tool into some directory then navigate to that directory (for instance Downloads) and in terminal type:

./iRecovery -s

Yeah that’s right, I had to drop in an absolute path to make it fly. Oh and if you’re going to be using iRecovery on Windows, instead of in Mac, don’t forget to install this little bad boy (Microsoft Visual C++ 2008 Redistributable Package), otherwise the executable won’t work!

Anyway, to downgrade, you can follow this guide for instance, but don’t forget about the extra stuff I told you above – this is the shit that took me time to figure out.