Recently I noticed that my iPhone 4 started acting really, really badly. It wouldn’t unlock when a call was coming in, I couldn’t swipe between screens on the desktop, I couldn’t scroll within mail, clicks in the calendar weren’t working.
What was really strange is that it was Apple’s apps that weren’t working right, the regular store purchases were for the most part. And that’s when I noticed that things seemed to lock up hard when the phone was doing networking, even more so when going over AT&T’s instead of WiFi, though both did it.
What changed? MobileMe, specifically it’s calendars.
When I did the famous upgrade process on the MobileMe site, it never finished; I got the script is running too slow dialog. Later visits to the site threw up dialogs asking if I’d like to let Apple know there’s something wrong.
Eventually my calendar on the website came back, but there were dozens and dozens of repeating events that had happened years ago. I suspect this was a data log jam like no other, and worse, it wanted to push it all to my little phone. There appears to be no online web facility for bulk management. I tried on my laptop as well, but that too became borked as Apple synchronized its new calendar data to me.
I speculate, simply because the GUI would not respond to any input at this time, that perhaps Apple’s own applications may violate the rule about doing updates on the GUI thread. Either that, or that the message pump got so backed up, the GUI just couldn’t respond. How I wish there was an “abort” other than a violent shutdown.
While I’ve reset MobileMe in the past for other reasons, I ended up having to do a bit more.
By pulling the plug on the Internet and rebooting, I was able to come up in an isolated environment where I could shutdown all MobileMe syching and preferences. That let me peek at what was going on.
My thought: if I could recover the calendar on my laptop, I could push the valid subset back onto the MobileMe server.
With Calendar shutdown, my trip began by going to ~/Library/Calendars. Insider there are a bunch of GUID based folders. I deleted anything that had Cache in the name, as well as Calendar Sync Changes.
Then, I went through each folder. The Info.plist files had a Title entry followed by the name of the calendar. If it wasn’t a calendar I wanted, or was suspicious of, I deleted the GUID-looking folder completely.
If it did warrant keeping, I then went into the Events subfolder and looked to see how many .ics files there were. Casual browsing with Apple’s built-in previewer showed what the events were.
In my case, I found one folder related to MobileMe with over two thousand entries. Sure enough there were repeats of the same event, like a synchronization gone wrong, rather than a single event marked for repeation. So, I nuked that GUID-folder as well.
Sometimes there’d be no Events folder, but the .plist file looked like it was going to some external server. Sometimes there’s be an addition subfolder with a GUID-looking name, and maybe even an Inbox subfolder, these seemed to be more associated to GMail. I kept those.
When I restarted iCal, it knew something changed; it announced it was doing an upgrade for the folder formats, and then it presented me with some empty calendars that I knew I had gotten rid of. I deleted those from the application.
Once I was sure I could start and stop iCal without it hanging or requiring a Force Quit, I reset MobileMe.
Some fast tips here on how to do this.
- Hold down OPTION which clicking the Sync icon in your toolbar. You can reset the Sync services that way. Apple tells how.
- There’s a python script you’ll want to run at the Terminal, it’s inside that “Apple Tells How” link above.
- Finally, you want to deregister all your machines from MobileMe via the System Preferences, the machine you’re using last. When you do, it will offer to let you delete all the data off their servers.
- Then, when you re-register, you put yourself in Manual mode first, and use the Advanced… button to push all your data at their server first.
- Then, and only then, can you start putting things back to normal.
Andrew Robulack has a wonderful write-up about how to reset MobileMe. It’s an excellent guide.
All that said, apparently when I re-synced, there was some cruft left when I let iCal resync with MobileMe.
Then I read these horrible words from Apple: Resetting Syncing or SyncServices will not impact the new MobileMe Calendar and should not be used as a troubleshooting step for the new MobileMe Calendar.
Some support articles, after winding through their Support Express Lane wizard:
- MobileMe: Resolving Duplicate Calendars in iCal with the new MobileMe Calendar — this recommends resyncing with MobileMe and letting it figure out there are duplicates; problem is, it’s MobileMe that’s giving me data I don’t want, and there’s so much data MobileMe gives Safari the spinning pinwheel of death (incidentally, something I thought Snow Leopard and Safari were both designed to prevent).
- MobileMe: Troubleshooting upgrading to the new MobileMe Calendar — this one says wait and try again later.
- MobileMe: Using Mac OS X Leopard v10.5.x with the new MobileMe Calendar — this one says have you tried upgrading?
- MobileMe: Troubleshooting new MobileMe Calendar issues — this one actually has technical information in it, though it says to delete your MobileMe account from iCal, it doesn’t quite address how you do that if iCal locks up because it’s talking to MobileMe.