How to Downgrade iOS 4.0.x to 3.1.x on iPhone and iPod Touch


iPhone 3G and iTouch users were the one who suffered a lot after upgrading to iOS 4.x. And if you were previously jailbroken then you can easily downgrade to iOS 3.1.x. Just follow the below steps:
Note:
For iPhone 3GS, iPod Touch 3G and iPod Touch 2G (MC) you MUST have SHSH blobs of the older Firmware, if your SHSH Blobs are saved on saurik’s server then follow this steps to get it on your computer:

  • Connect your Device and Launch TinyUmbrella (Download below) then Check on Advanced Options
  • Now select your Device, Firmware and Location (Choose Cydia)
  • Click on “Save My SHSH” button.


Prerequisites:
– Download iOS 3.1.3 / 3.1.2 from here.
– Download TinyUmbrella, latest version from here.
– iTunes 9.2.
Steps:
Step 1: Put your iPhone in DFU Mode.
Step 2: This Step for iPhone 3GS, iPod Touch 3G and iPod Touch 2G (MC), If you are on iPhone 3G or iPod Touch 2G then skip this Step.

  • Run TinyUmbrella (download above), and Hit Display SHSH (If you have already saved SHSH on your computer, then just drag and drop it in TinyUmbrella)
  • Now Hit on “Start TSS Server” button
  • Locate “C:\Windows\System32\drivers\etc\” for Windows and if you are using Mac “/etc/” directory, then locate “hosts” file andOpen it in Notepad (for Windows) or TextEdit (for Mac OS X) and add this at the bottom of the file.

74.208.105.171 gs.apple.com

Step 3: Now open iTunes 9.2  and do the following to Restore your iOS.

  • Hold down “Alt” button on Mac or if you are using Windows then “Shift” button and click on “Restore” then release the Alt / Shift button
  • Locate the Downloaded iOS FW from the Required above, and let iTunes Restore your Device.
  • After several process, iTunes will bring error 1015, 1013 or 101 message, just ignore it and Click ok

Step 4: You will find your Device in Recovery Mode, To Exit Recovery Mode using TinyUmbrella (download above) just click on “Kick Device Out of Recovery” just below “Start TSS Server”
That’s it,  Enjoy the smooth running iOS 3.1.x