Oh, the joys of getting to the gate at the airport 3.5 hours before your scheduled takeoff… $7.95 to use the wireless network? Really? FINE! See if I ever fly through here again, DTW. In any case, I’d been putting off upgrading my iPhone to the 3.0 software due to a fear of bricking my phone in the midst of three weeks of travel. What better thing to do with my 3.5 hours? Sprung the money, bricked my iPhone… FAIL.

I had a nagging feeling that this might happen. I’m running Ubuntu Linux as the host OS on my laptop. You can’t install the iTunes software under Linux, so I’m running it under WinXP as a guest OS on VMWare. Theoretically this should be fine, but somewhere in the back of my mind something was saying “don’t do it!”. I did it anyway, albeit at a point in time where the nuisance of bricking my phone was minimized. I won’t say it was a mistake, but things didn’t go as smoothly as I had hoped.

I plugged my iPhone into a USB port and iTunes suggested that I update the software so I got on with it. After a gigantic download on a not-so-fast network, iTunes got to the business of doing the flash. That’s when things went wrong. Apparently the update process causes the iPhone to reboot, which in turn causes a reconnect to the attached system, thus precipitating a pissing contest between the host and guest OSes. iTunes under WinXP saw the device go away (which it did), then VMWare started throwing errors/warnings about a module on the host OS having claimed the device, requiring manual intervention to reconnect it to the guest OS. By this time the flash had failed and I was the proud owner of a brick. iTunes informed me that I could do a recover operation. Gritting my teeth, I proceeded. I got the same conflict again. Also, VMWare managed to wedge my whole machine, requiring a battery-pull and unplugging to recover.

I did a Google search on the terms “iphone”, “vmware”, and “upgrade”. I ended up here which gave me the hint that I needed to give my kernel modules a stern talking-to. Another Google search on the terms “linux”, “prevent”, “kernel”, “module”, and “load” yielded this. Following my nose, I added the following two lines to /etc/modprobe.d/blacklist.conf:

  • blacklist usbhid
  • blacklist snd-usb-audio

After this I gave the recovery process another whirl and, voila, I had an iPhone that allows portrait-mode text messaging as well as copy-paste, albeit an iPhone suffering amnesia and still unwilling to tether. I’d been meaning to clean up my contact list for a few years. There was even a number for a friend who died a couple of years ago that I couldn’t bring myself to delete. Now it’s done.

Expected task time: 15 minutes

Actual task time: about 1.5 hours

Also, my flight is delayed for another hour. The bar down the hall is looking awfully tempting but that would likely cost me my power outlet. Decisions, decisions…


Leave a Reply