Ever since Apple released iOS4 three days ago, I have been trying day and night to update my iPhone 3GS to the new operating system. Every time I tried updating from iTunes, the download would start, progress extremely slowly and then abort. I guess the Apple servers just could not handle all that traffic. Besides, the resume feature of iTunes quite simply did not work and I had to start from scratch ever time the download aborted. I finally got fed up and decided to update my iPhone manually. To do that I needed the IPSW firmware file for iOS4. A Google search led me to this German web site where I downloaded the firmware (387 MB) for my device.
IMPORTANT: Before starting the restore process be sure to backup your iPhone.
iTunes does not have a readily visible method of installing firmware through IPSW files. You need to Shift-Click (Option-Click in case of Mac) the Update or Restore buttons in iTunes. This asks you to select a IPSW file. After selecting the file you will get the following message.
Click the Restore button. iTunes will first connect to the iPhone activation server, verify the restore with Apple and then proceed to restore the iPhone. After its done you will see the normal restore completion message.
After the iPhone restarts restore all your data from your backup and you are good to go.
For the past couple of days I have been reading horror stories of how people have lost their contacts, email accounts, apps and other stuff after upgrading their iPhones to iOS4. Fortunately that didn’t happen to me. Everything seems to be in order. It seems like I upgraded normally through iTunes itself. Actually iTunes does the same thing. It downloads the IPSW file from the Apple server, stores it locally on your hard drive and begins the restore once the download completes.
So although this method may appear to be the “wrong” one, it definitely worked for me. I guess the IPSW files on the web site I mentioned above are authentic Apple IPSW files because my iPhone passed all the verification and authentication tests that the Apple servers put it through.