…Or how to brick your phone with an upgrade, and recover…

Earlier this month, Apple released the fifth beta of their 3.0 firmware for the iPhone. As usual, I raced to the site to download it.

I became very excited by the email that I got saying that submissions to the Apple store have to be compatible with iPhone OS 3.0, which to me means it won’t be long before this is a production OS. With that in mind, I strapped on my crazy cap and decided to upgrade my phone to beta 5.

Apple Announcement

After downloading the firmware and software for the new beta, I began the upgrade. According to the instructions, you needed the new beta of iTunes to do the upgrade, so that was the first thing that I installed.

Once that was ready, I followed the process that has become familiar to me for upgrading the phone:

  1. Launch iTunes
  2. Dock the phone
  3. Right click on the phone and choose backup
  4. After the backup click the “Restore” button while holding the option (alt) key.
  5. Browse for the new firmware and watch things roll.

As it turns out, the mistake I made at that point was clicking the “Restore” button, later I learned that beta 5 won’t install unless you click “Check for Update” while holding the option key.

The first thing I noticed was that there was an odd cartoon that flashed up on the screen with a pink background. I figured it was some developer’s Easter egg, so I didn’t worry too much. After the usual series of minutes of resetting the phone and iTunes validating the software, the upgrade told me it was done, and I waited for the final reboot. This is typically the point at which the phone reboots, and iTunes detects it and activates.

Instead I ended up with an endless wait, as the phone never rebooted. So I went through the usual tricks to get it to come back to life. Eventually it worked, and I got a pink screen that showed the graphic you see with a new phone.

I plugged it in again, only to find that it wasn’t recognizing the phone (which after several tries led me to believe that the upgrade was not complete).  Not only was the phone stuck, but I couldn’t seem to get it back into DFU to restore the software.

At this point it occurred to me that perhaps there was something nefarious going on: my phone had been jailbroken prior to the upgrade, so perhaps that was the issue. Luckily for me, I had my wife’s phone to play with, and it hadn’t been jailbroken, so I decided to try and upgrade it.

Unfortunately, that didn’t work, so now I had two phones that were basically useless. Digging around the web, I found some references to problems that people had with updating to beta 4, and a workaround for the pink screen problem. The workaround talked about the problem being related to a change in the USB drivers for OS X 10.5.6 that made getting a phone into DFU mode difficult, so I thought it was worth a try (see: http://gizmodo.com/5166029/how-to-install-unofficial-apps-on-your-iphone-3g-or-ipod-touch-easily-and-safely) .

After downgrading the USB drivers on my Mac, I was able to get it into DFU mode, and restore the 2.2.1 version of the firmware. Inspired by this, I tried upgrading my wife’s phone on a PC (figuring the problem was something in the USB drivers). Sure enough, her phone loaded the 3.0 software just fine.

So, once again, I tried upgrading my phone, and couldn’t get it to go. I tried it on the Mac, then on the PC, same results both times. For some reason it wouldn’t work. I could downgrade to 2.2.1, but not upgrade to 3.0.

More digging on the internet, and I found a posting on the iPhone developer forums that talked about installing beta 4 then upgrading to beta 5 if you have an old silver back phone (both of mine are the metal backed pre-3g phones). I figured it was worth a shot, so I downloaded a copy of the beta 4, and ran the upgrade. Eureka!  The beta 4 firmware upgrade worked !

At this point it had been a few days since I had my phone working, so I took a breath and decided to run with beta 4 for a while. I kept scouring the web and watching the discussion on the beta 5 upgrade problems to see what people were doing to get it to work.

In the mean time, I ran into an interesting (and scary) side effect of the USB driver downgrade. I forgot to upgrade the drivers after my successful downgrade of the firmware, not thinking that those drivers were actually for a different version of the OS. Whenever I plugged a USB stick into my machine, it would go into panic mode and shut down. I thought my hard drive was dying until I realized it only happened when I plugged in a USB stick, and remembered the driver downgrade. Upgrading to the current drivers fixed that issue.

Finally, I saw a post that talked about clicking the “Check for Upgrade” button while holding the option key instead of the “Restore” button. I decided to try this, and was amazed when it worked. So apparently, all along the secret was to use the upgrade button instead of the restore button. There’s some evidence that the reason this fails is because of part of the upgrade to the firmware, so it makes sense that there may be a difference in the way that iTunes processes an upgrade as compared to a restore.

At any rate, my current thinking of the process is as follows:

  1. Download the firmware and iTunes beta
  2. Install the iTunes beta
  3. Dock the phone
  4. Do a backup of the phone
  5. Option click the “Check for Update” button
  6. Choose the beta firmware IPSW file you downloaded
  7. Be happy if it works.
  8. If it doesn’t work, follow the link above to downgrade the USB drivers.
  9. Go through a normal restore (should put you back to 2.2.x)
  10. Repeat steps 5-7

Hopefully Apple will have this all figured out with the next release (and especially before the production update). As near as I can tell, this only affects the older phones, and doesn’t happen with the 3g iPhone.

I’ve been pretty happy with this iPhone OS, it seems to be quicker and more stable than the 2.2.1 was – still looking forward to the actual release.