Here is how I successfully downgraded my iPhone 3G from 3.1 to 3.0.1, following the method at
http://www.blogsdna.com/3911/how-to-...1-to-30-os.htm
1. Firstly download the .ispw file for 3.0 or 3.0.1 (its called iPhone1,2_3.0.1_7A400_Restore.ispw) and stick it on your desktop.
2. Download the irecovery folder that contains a terminal icon thing called iRecovery, and another file called libusb-0.1.4.dylib. Take them both out of the folder and stick them straight onto the desktop.
3. Plug iPhone into Mac, launch iTunes (I used 8.2 so I don't know about V.9) and then put iPhone into DFU mode by holding home(front) and top buttons for ten seconds, then releasing top button but continuing to hold home button for a further ten seconds.
At this point the screen should be black (and its slightly terrifying) and iTunes will flash up that its detected a phone in recovery mode. It offers to restore your phone.
4. Click on restore button while holding option (or alt button) down. This tells iTunes that you want to choose your own install file. Select the .ispw file you downloaded and stuck on the desktop earlier and click ok.
After a stomach churning pause where nothing happens it will then start to restore, both by telling you on screen and then giving a progress bar on the phone screen.
5. When that is finished iTunes will flash up the error 1015. Don't panic! The clever bit comes next!
6. Launch a program called Terminal (you've got it in the Utilities folder).
Cut and Paste the following instructions line by line, pressing return after each line and (entering your password and then pressing return when asked):
cd /usr
sudo mkdir local
cd /usr/local
sudo mkdir lib
cd /usr/local/lib
sudo cp /users/YOURNAME/desktop/libusb-0.1.4.dylib .
sudo chmod 755 libusb-0.1.4.dylib
cd /users/YOURNAME/desktop
./iRecovery -s
fsboot
Don't forget to put your login name* in where it is written YOURNAME!
* it will be the name (without the dollar sign) at the beginning of each line of code after pressing return
Right! The iPhone will now reboot itself, and then to your horror it looks exactly like it did before... except it now has a slider and offers emergency calls. Hang on a minute.....iTunes is offering to activate the phone... let it, and we are nearly there. The phone will boot, show that its picked up a network, and if you check it will have loaded 3.0.1! Hurrah!
Hold your horses, we're not quite finished yet!!!! If you switch on or reboot the phone, it will need you to reactivate every time, which is no good at all.
Now plug it back in, and reenter DFU mode. Ignore the itunes moan (click cancel or quit it.)
Go back to Terminal, and either relaunch it or open another window.
Type (or cut and paste) the following instructions (entering return after each line like before):
cd desktop
./iRecovery
setenv auto-boot true
saveenv
fsboot
The phone will then reboot and should be ok. (fingers crossed)
Now resync and reload apps etc.
Good luck.
Thanks to everyone who wrote or left comments at:
http://www.blogsdna.com/3911/how-to-...1-to-30-os.htm
who found this solution.
P.S. This is pretty much how I did it, but I really was way in over my head. If you get stuck I can't help. Follow this advice at your own risk!