Fixing the Nokia N82 iSync Plug-In

Posted on March 4, 2008
Filed under Mac, Miscallaneous

N82 and iSync buddy picture I Recently updated my cell phone to a Nokia N82. The most positive points about it are the relative snappiness of the user interface (most Symbian S60 devices are dog slow in that department) and the quite exhaustive feature list. The build quality feels alright and the camera takes excellent pictures for a phone. One of the biggest things that I enjoyed with my previous phone (a Nokia 3230) was the nicely working synchronization with Apple’s iSync, so naturally I made sure that this would also work with the N82. Apple has included built-in support for syncing the 3230 in the iSync that ships with Leopard (it was in the Tiger version as well,) so I didn’t need to install anything extra to get it to work. The N82, on the other hand, is not supported out of the box, so I needed to get an iSync plug-in for it from Nokia.

Update (Jan 30, 09): A little birdie told me that the issue detailed in this post has been fixed in the latest version of the official plugin from Nokia.

The Problem

The N82 iSync plug-in implements syncing features through the SyncML protocol that Nokia has been supporting in its phones for a while now, as opposed to the built-in support for the 3230, which was implemented via a piece of “sync agent” software that had to be installed on the phone. The installation of the plug-in went well, and I was quickly on my way to synchronizing my contacts and calendars onto the phone from my MacBook. When I looked at the results, though, I soon found out that all-day events from iCal were synchronized to the phone as meetings starting at 00:00 and ending at 23:59, instead of memos, which is how the phone calendar handles the concept of an “all-day event”. Additionally, when I tried to edit one of these all-day events (ones that were created in iCal, that is) on the phone and sync the changes back to the Mac, I got an error message from iSync saying that changing all-day events on the phone is not allowed. This was not the case with the 3230, which interpreted all-day events created in iCal properly and allowed for changing them on the phone as well (thanks to Apple’s sync agent software, I guess.) This would not fly.

N82 calendar screenshot with default settings + iSync error message about editing all day events on the phone

Research

I Started to research the issue with my BFF Google, and found out that this was a pretty common problem with recent S60 phones and their iSync plug-ins. Some suggested workarounds for other S60 phones included mentions of the MetaClasses.plist file in the iSync plug-in bundle (and some keys therein,) so this is what I started to look at next. Apparently the iSync plug-ins that Nokia offers are created with the “iSync Plug-in Maker” software that Apple ships with OS X (it’s in the Developer Tools package that you have to install manually,) so I fired that up to investigate further. In the “Advanced options” section of that software I found an interesting option called “All-day event format” that seems to correspond with the AllDayEventFormat key in the MetaClasses property list.

iSync Plug-in Maker

The description for that key in iSync Plug-in Maker offers two example values. By browsing the web and going through the MetaClasses.plist files of other (built-in) iSync plug-ins for S60 phones I collected a couple more possible values:

Some Testing, More Research and a Revelation

I then started testing each of these. After each time I saved a new value in the property list for this key, I added all-day events for the current date in both iCal and the phone calendar, and then synced. This produced some initial results, but I also wanted to test editing the events, so I proceeded to edit the event made on the phone in iCal, and the event made in iCal on the phone, syncing again afterwards.

The results were varying, but none of the values I tried solved the problem completely. The most promising was AllDayEventCategoriesAndMidnight, which kept the original behaviour but allowed for editing the events created in iCal on the phone. This was not enough for me, of course, so I started googling a bit more to find some other things to try out with this property list. Then I managed to stumble upon this post on a Finnish Mac-themed message board (sorry, it’s in finnish.) It seemed “juksu” had fixed this same problem for his Nokia N90 by merging some of the key/value pairs from the Apple-provided Nokia N73 iSync plug-in’s MetaClasses.plist onto the corresponding file in his phone’s plug-in bundle.

I took a look at some of the property list keys juksu mentioned in his post, and started copying the ones that seemed to somehow make sense (with regard to the issue) into the N82 plug-in’s plist. After some trial and error I managed to find the keys and values I had to use in order to get the thing to work.

The Conclusion

It seems I have the problem solved now: all-day events created in iCal show up on the phone as memos and editing them on the phone doesn’t result in an error message anymore:

Working N82 iSync plugin screenshots

Otherwise the thing seems to function as usual (as in: I haven’t found this hack to result in any sort of collateral damage,) although I haven’t really been using the calendars properly after doing this. I will report here if I notice any weird behaviour, though. Below I’ve summarized the steps needed to apply this hack to the plug-in:

  1. Install the N82 iSync plug-in
  2. Make a backup copy of the MetaClasses.plist file somewhere (you can find it in /Library/PhonePlugins/Nokia_N82_1v1.phoneplugin/Contents/Resources/MetaClasses.plist)
  3. Open the original file in a text editor
  4. Make the following edits under “com.apple.pimsync.parser.vCal”:
    • Change the value of the “AllDayEventFormat” key to “AllDayEventCategoriesAndMidnight”
    • Add the following below the “AllDayEventFormat” key/value combo:
    • <key>PropertyNameMapping</key>
      <dict>
          <key>CATEGORIES</key>
          <string>X-EPOCAGENDAENTRYTYPE</string>
      </dict>
      <key>AllDayCategories</key>
      <array>
          <string>EVENT</string>
          <string>ANNIVERSARY</string>
      </array>
      <key>TimedCategories</key>
      <array>
          <string>APPOINTMENT</string>
      </array>
  5. Save the file
  6. Open iSync, purge the calendar data on your phone and then sync

You can also just download the MetaClasses.plist file that I’ve been using: N82iSyncPluginFix-MetaClasses.plist.zip

Bookmark and Share

Comments

38 Responses to “Fixing the Nokia N82 iSync Plug-In”

Show/hide comments & reply form: