...or "Another Reason I'm Considering Switching to Android."
Yesterday evening, as I was leaving work, I was carrying on a conversation via text message with a friend of mine. Upon arriving home, I realized that she'd apparently stopped responding, so I pulled my phone out of my pocket to check if I'd missed a message. Instead of my usual lock screen, though, I was met a very unwelcome "Connect to iTunes" prompt. I'd been running the beta of OS 4, and it turns out that if your developer licence expires while you still have the beta installed, Apple will remotely lock you out of your device without so much as a warning. I guess I should have expected as much.
At this point I was mildly annoyed. Because it's such a slow an arduous process to sync an iPhone, I hadn't backed mine up since... probably about two weeks ago, when my developer license actually expired. "Go figure," I thought; "if only they'd locked me out of my device when my licence expired, I might not have lost as much data." Still, I don't keep much important information on my phone, so a two-week setback, while irksome, was not disastrous.
...Or at least it wouldn't have been if not for what happened next. In their infinite wisdom, Apple decided not to provide an officially supported way to downgrade from a beta operating system release to a stable release, despite their aforementioned policy of locking "expired" installations. Luckily, there exists a workaround, and if all goes well it's relatively uncomplicated. Unfortunately for me, all did not go well. The workaround relies on the libusb library in order to communicate with the iPhone. Its Windows port, libusb-win32, is ostensibly compatible with both 32 and 64-bit Windows Vista and Windows 7. The only problem is that there's a known issue which causes all of your USB drivers to stop working if the library isn't installed in Windows XP compatbility mode under those operating systems, and it's not mentioned anywhere in the installer or in any of the downgrade tutorials I saw.
So, yes... in an attempt to downgrade my iPhone, I managed to completely disable my computer's USB drivers. libusb breaks one's computer in particularly pernicious way, too. I'm anything but an expert on precisely how Windows handles drivers, so forgive me if the terminology here is incorrect, but I believe this is how it happens: since a number of USB devices are inevitably in use when it's installed, libusb's changes don't affect those drivers until the system is restarted. I didn't have my iPhone plugged in when I installed libusb, though, so when I did plug it in afterwards it failed to connect. My mouse and keyboard were still working at this point. I figured that perhaps I needed to reboot my computer. Upon rebooting, of course, I found that none of my USB devices worked at all. I couldn't so much as log in, let alone uninstall libusb.
I don't own any PS/2 devices, so switching to a different mouse and keyboard wasn't an option. I spent probably about an hour trying to find a way to restore my USB drivers from the Windows recovery console, but came up empty handed. Deleting the libusb sys and dll files did nothing, despite forum posts to the contrary. I couldn't find any registry keys which obviously pertained to the library, nor could I find any system files which appeared to have been modified recently (excluding those I'd already deleted, of course.) Ultimately I gave up, and since my operating system is installed on an SSD drive which is otherwise empty, I decided that reformatting would be the simplest solution. I had to reformat my computer because Apple locked my phone.
I did eventually manage to restore my iPhone, using my development Mac Mini. I probably should have done so in the first place, but since my iPhone is synced to my Windows PC (which has much larger hard drives and is therefore better suited to storing my music collection), I figured that it would be more convenient to do the restore process using the PC. Oh, how wrong I was! That said, I don't fault Windows for this; I'm sure that installing a bad device driver on a Mac would have much the same effect.
This is what I see as a typical case of Apple's "security" policies interfering with the usability of their products. Granted, I wasn't nearly as prudent as I should have been, so I can't blame all of my troubles on them. But really, if they're going to put out operating systems which simply "expire" under certain circumstances, could they not at least provide an officially supported method to downgrade to an older version?