Today I decided to upgrade my iPhone 4 from iOS 5.1.1 to iOS 6.1. Since I am on the AT&T network, I had no fear of baseband updates or even losing my jailbreak by going through a completely stock Apple update. Big mistake.
No sooner had I put my faith in Apple’s update process that I discovered a “The iPhone could not be restored. An unknown error occurred (-1)” error in iTunes. I saw my iPhone go through an endless cycle of turning on with the Apple logo and displaying the iTunes logo with connector cable screen. Even putting the device into DFU mode (iTunes logo indicates recovery mode) and restoring did no good. It just yielded a different error code.
I then figured it was because of my Windows configuration so I disabled the antivirus and turned off the firewall. I also checked to see if my Windows host file was re-routing gs.apple.com… it wasn’t… and it still didn’t work.
Thinking it was Windows I then tried booting into Mountain Lion and updating through there. Though iTunes detected that the iPhone had the latest 6.1 firmware installed, it would perform an update and restore for 30 minutes before spitting out an error on its own. I even busted out my old Macbook to try with similar results.
The error codes I encountered on this excruciating journey to update my iPhone 4 included: (-1), (1600), (1601), and (3194) at some point or another. I ended up restoring and updating my iPhone maybe five more times before I realized I had seen this problem before.
In past updates when this happened, I used TinyUmbrella’s “Fix Recovery” and “Exit Recovery” features to boot it out of the broken recovery loop. I downloaded the latest TinyUmbrella and while it did seem to load some text on the console regarding greenpois0n, it didn’t fix the problem.
I then downloaded redsn0w knowing it had the same capability. As of this writing the latest version was 0.9.15b3. It won’t do an untethered jailbreak for you (leave that to evasi0n) but it did have the same feature to kick it out of recovery mode using “Recovery Fix.”
Unfortunately when I used the featured, that’s when I discovered a “Missing Keys.plist data for this build” error pop up in redsn0w. I had never seen this error before. I elected to use the “Select IPSW” feature thinking that perhaps it would somehow solve the problem. The only thing was when I pointed redsn0w at my 6.1 IPSW file from Apple, it said that it did not support it.
Being a bit desperate I downloaded 6.0.1 and 6.0 IPSW’s as well. 6.0.1 didn’t work either but redsn0w did take 6.0. After trying the recovery fix again it went through this time and my iPhone sprang back to life, fresh and anew on iOS 6.1.
Apparently the Keys.plist data is present in the iOS 6.0 IPSW package which redsn0w needs to perform the recovery fix. Even if you are updated to 6.1 already, the 6.0 data can be used to “trick” redsn0w into behaving properly.