Sync Evolution and GPE on N800
What Is This All About?
The Nokia N800 Internet Tablet is not a PDA. (Neither is its predecessor, the Nokia 770 ("N770") Internet Tablet.) However, it is an almost fully-featured Linux mobile system, with a capable development environment available, and so undoubtedly PDA-like software has arrived. Nokia's major omission, according to some folks, is the lack of PIM (Personal Information Management) software - calendar, todo, contacts: typical PDA things. However, the GPE Palmtop Environment applications (based on Gnome Mobile and Embedded software) have been ported to these devices, and works well.
(BTW - Maemo Product Manager Quim Gil suggests we move away from a false assumption that PIM means the same to everyone, and instead talk about functionality or programs - calendar, todo, universal contacts list. This makes sense to me - some people think PIM includes Internet browsing or multimedia player software, and my reply is that my Palm III never did that! :D )
I installed this software in hopes of being able to graft on the PDA-like PIM abilities I desired on to this slick gadget. I was able to do so, using existing software, and have documented it here so that other N800 and 770 users can find it more easily. These instructions show only how to sync the GPE software installable on the N800/Nokia 770 with Evolution, a standard GNOME desktop PIM suite for Linux. The software used for sync, OpenSync, also supports other programs/protocols (such as Google Calendar and SyncML) and so an enterprising user could certainly try to get those to work. This serves my needs well, however.
Those looking for more information on the GPE applications are advised to visit http://gpe.linuxtogo.org
and those looking for OpenSync info can head to http://www.opensync.org
. I used Ubuntu Linux 7.04 from http://www.ubuntu.com
in this documentation, but there is really nothing Ubuntu-specific: any Linux capable of running a recent Evolution and OpenSync 0.21 or later should be able to handle it.
Those of you who came here linked from elsewhere - feel free to poke around here and see what I'm working on with AbiWord, the N800/Nokia 770, and open source software in general. In particular, try looking at my N800 Zone
- I will gradually add more tutorials there if I see the need.
Without further ado, the instructions!
When I originally wrote this guide, you had to use OpenSSH and Evolution. Note that you can also sync GPE with KDE PIM software, using the same process! Just choose the correct backend when you get to the Evolution part of the instructions - it's pretty easy. I also have added instructions on how to use Dropbear SSH if you like - I don't use it, but I got feedback from a user that said it worked for them.
Prerequisites For Sync Setup:
Desktop PC: Linux and the Evolution PIM software (I used Ubuntu Feisty's version) - The Pimlico stuff for the desktop (Contacts, Dates, Todo) should also work, since they share a data store.
MultiSync must be v0.90 or higher - the below repository has 0.91 which works nicely.
These are the Ubuntu package names as built from that repository.
libopensync-plugin-gpe - Opensync gpe plugin
libopensync-plugin-evolution2 - Evolution plugin for opensync (you'll want the kdepim plugin package if you don't use Evolution)
multisync-gui - GTK Gui interface for OpenSync
python-opensync - Python bindings to the opensync synchronisation engine
libopensync0-dev - Headers and static libraries for libopensync
libopensync0 - Synchronisation framework for email/pdas/and more
libopensync0-dbg - Debug symbols for libopensync0
libopensync-plugin-evolution2-dev - Development files for Evolution plugin for opensync
opensync-doc - opensync synchronisation engine documentation
msynctool - Commandline interface for OpenSync
GPE installed on the N800/Nokia 770 - use install files from http://linuxtogo.org/~florian/maemo/
(Note: If the latest stable version is 2.8.0 (which it is as of 7 September 2007) and you need completed todo item syncing, you must use the experimental packages. See the note at the bottom of this page.)
Some SSH server installed on the N800/Nokia 770 - I used OpenSSH, dropbear should also work, just watch for the one dropbear-specific instruction
SSH client installed on desktop PC (almost always present - I have OpenSSH) Make sure you have ssh-keygen.
becomeroot and xterm installed on N800/Nokia 770 - this is to get us in over SSH. Both can come from www.maemo.org
(Recommended) A static IP for the N800/Nokia 770, at least on your home/office network: the steps require connecting to an IP, and short of having DynDNS or perhaps some Avahi thing that I don't yet understand, you need a reliable static IP on your network for the N800/Nokia 770.
Steps To Set Up
Install GPE on the Internet Tablet
Click each install file in turn, and follow the Application Manager prompts to install. It should go well.
Go into the Application Manager and make sure that in your installed packages, you see "gpesyncd" - it should be there, but if not, go to Browse Available Applications and install it - the install files from above will have added the right repository.
Open Xterm on the N800 and run
We now need to set a user password for the device: run
passwd user and enter a password of your choice. Remember it. (NOTE: this will not require you to enter the password to use the device - only to connect over SSH)
Test your SSH:
ssh email@example.com (where 10.0.0.30 is the IP address of your N800/Nokia 770) - enter the password when requested, and if you get a busybox prompt, you win!
Set up passwordless logon to N800 SSH
On your desktop, run
ssh-keygen -t and accept the default options. This will create a certificate on your computer that allows it to authenticate without a password. Do not enter a passphrase when asked, or you're basically making this step meaningless. (In theory, you should be able to use an SSH agent or something to let you do this, for better security. I wasn't that picky.)
Now, let's transfer the public certificate to the N800 and authorize it for access. From your PC,
scp ~/.ssh/id_dsa.pub firstname.lastname@example.org:/home/user/.ssh/authorized_keys2 (for OpenSSH aka SSH - if you use dropbear, the file is called
authorized_keys - thanks to Chris McNally for the tip!) where 10.0.0.30 is again your N800/Nokia 770 IP address. Use the user password you created before to authorize the transfer.
Let's test to make sure this works. Run
ssh email@example.com - it should log you on and give you a busybox prompt without asking for a password. If this worked, you're golden, move on. If not, well, I'm not sure what the deal is. Make sure /home/user/.ssh/ exists on the n800/Nokia 770, maybe.
Set up MultiSync-Gui/OpenSync on Desktop
multisync-gui on your desktop. (It might be under Applications, Accessories)
Click "Add" and name your new sync group something. (I called it N800)
Click "Edit" so we can add members to the sync group.
"Add Member", "Evolution 2.x" (this is where you'd choose KDE PIM if that's your app of choice)
"Add Member", "GPE" (it actually has a longer name, but you'll be able to figure out the right one)
Click on evo2-sync and choose the items you wish to sync. (The defaults work fine if you've used the defaults before.)
Click on the GPE sync to edit settings.
Use Local should be 0, Use SSH should be 1.
I have no idea what port is for: it doesn't seem to be using it for SSH, perhaps it refers to the GPESYNCD on the n800? I left it at the default.
Set the Handheld IP to the IP you've been using all along in place of 10.0.0.30.
Set the Handheld User to "user" (no quotes).
There, that should be set up. For safety's sake, back up your ~/.evolution directory before attempting anything.
Synchronizing Evolution And N800:
Run multisync-gui if it isn't already open.
Click the Refresh button under your sync group.
Wait. A while. (takes much longer the first couple of times.) (Make sure that your N800/Nokia 770 is connected to the network first! Opening the web browser and waiting till it shows your homepage is good enough - just sync before your connection turns off automatically if you have that set)
If you're really technically oriented, you could create a launcher or a script to run the command-line tool. I actually made a script to run the command line tool with Zenity to provide a notification (a status bar icon, click to get rid of it) when it's complete. Note that in case of a conflict this script will automatically pick the second device, which in my instructions is the Internet Tablet - the important lines are:
msynctool --sync n800 --conflict 2 |zenity --text-info --width 640 --height 480 --auto-close
zenity --notification --text "N800 Sync Complete"
Current Issues With Syncing:
When I sync twice/after a "dirty" sync, syncing them "back" brings up lots of conflicts. Primarily in Contacts, but also in the others, kind of weird. I don't really use contacts, so I just disabled it, but ideally this would not occur. It looks like simple markup differences - the guts of the transfered object are the same, there are just some "extras" on one side or the other. For most of them, clicking the "newer" button seems to be harmless. After such a sync, the Calendar will pop up reminders for a whole bunch of past appointments - just dismiss them all.
FIXED! It seems "completed" todo items don't make their way back into Evolution as completed, so they stay uncompleted on the desktop. As a matter of fact, completing todo list items at all seems to be mildly confusing to both parties - I'll look into it. If you need completed todo item syncing, you must use the experimental/daily version from 6 September or a newer daily or stable (none available as of 7 September) build. Thanks to Graham Cobb for implementing the feature to enable this in GPE.
Mine always says it wasn't clean, and so does a "slow sync" - this takes a long time. Not sure why.
old issues - haven't seen these my last couple of syncs
When the sync is complete, mine says Error while Disconnecting in the GPE sync status. Again, not sure why - this is probably related to the first item.
Acknowledgments And Thanks
Graham Cobb for fixing some of the issues I noticed (completed items in To Do list, etc.)
Chris McNally for letting me know the changes for DropBear SSH (instead of OpenSSH)
Jim Lebans for pointing out the change in the repository address for OpenSync for Ubuntu
Resources And Sources: