Monday, May 25, 2009

Adventures in iPhone beta land

…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.

Tuesday, May 5, 2009

Oracle and Sun – Better Microsoft competition ?

I was thinking about this as I drove to work this morning: what is the real business value to Oracle of buying Sun ?

It occurred to me that part of the many benefits to Oracle are the products that help them compete better with the Microsoft offerings. Could this be another in a long line of acquisitions by Larry Ellison in his quest to make Oracle a more successful company than Microsoft ?

Microsoft has owned this market for some time now, and has had some tools that Oracle has tried to compete with over the years. Microsoft had Access, which is at a surface level a database, but has over the years served much better as a front-end tool for database access. Oracle has tried to  address this over the years, first with Oracle Forms, then with JSF and ADF, and now APEX (formerly known as HtmlDb).

These tools, while extremely capable, have never had the low entry to use that has been available in the Microsoft product line, and now with the rapid introduction of Silverlight, Microsoft is threatening to dominate the RIA market.

There is tremendous buzz (hype?) in the market about the RIA competition, with both Adobe and Microsoft claiming a market penetration of over 70%. Sun has similar figures with Java, and has recently entered this market full force with JavaFX.

JFX combined with MySQL looked to have the potential for introduction of new products that would displace both the rich media and rich data driven applications that have been dominated by Flash (Flex).

With the acquisition of Sun by Oracle, it is entirely possible that a solid Flex and Silverlight competitor could emerge due to the capabilities of the Java platform for producing UI, combined with the simplification in coding provided by JavaFX. This could also give rise to an easy to use tool that could replace Access as the easiest way to build an application, by integrating the JavaFX UI capabilities with the Oracle developer tools.

The only missing piece in this puzzle for me is that focus on the end user as being capable. Oracle has great tools for developers, and they help build applications extremely easily, but they haven’t done a great job with figuring out how to bridge the gap between the technical types and the consumers. I don’t think it’s a vast chasm to cross, but they would need to focus on improving the ease of use to compete head to head with Microsoft and Adobe.

Not only does the Sun acquisition continue to strengthen the web tools that Oracle has recently improved with their WebLogic tools, expand their hold in the database market, and solidify their place in the SOA market, but it also allows them to compete better in the hottest area of competition at the moment: Rich Internet Applications.

What will Oracle do with these capabilities ? Only time will tell.