After a number of years of roughly 200MB upgrades for my iPhone 3G and then iPhone 4 I was shocked when the latest iOS 4.2 update weighed in at just over 600MB. Added to the gut punch was the fact that I had to upgrade 2 iPhones now – yes, my wife has joined the cult.
What is iTunes actually downloading ?
iTunes makes it really easy to upgrade your iPhone but I wanted to be able to download the update once and use it to upgrade both phones.
iTunes hides all the details from you – so how was I going to get at the iOS 4.2 firmware update file (.ipsw) ?
Use the proxy luke !
An HTTP proxy is a tool every developer should know how to use. I use Charles on Mac OS X. Fire up Charles to force all the HTTP traffic through a proxy and then click on the Update button in iTunes to start the download.
The other major factor in downloading this update only once is clearly visible in the status column. My ADSL router was on its way out and I just couldn’t get decent download speeds at the time. Thank goodness those days of darkness are behind me now – I’m very happy with my new LinkSys Dual-Band Wireless-N ADSL2+ Modem Gigabit Router. But I digress …
The iOS 4.2 firmware update file (.ipsw) that iTunes was downloading is clearly visible in Charles:
We now have the complete URL for the file and can download it outside of iTunes. Stop the iTunes download as its purpose had now been served.
The "-C –" switch combination tells curl to automatically calculate where to resume the transfer. This ensures that if the connection drops or is reset you can resume the download where you left off.
The "-O" switch tells curl to save the download to a local file with the same name as the remote file.
Fire up iTunes and hold down the option key while clicking on the Update button.
The file selection dialog will open. Select the iOS 4.2 firmware update file (.ipsw) you have just downloaded.
All the next steps will be familiar since they are all part of the standard steps for iOS updates.
Confirm that your iPhone has been updated.
Now repeat the Install steps for each of your iPhones that you want to update.