Handhelds.org - Open source for handheld devices

UserPreferences

HpIpaqH2200gpesync


HowTo Sync GPE PIM data with Evolution using OpenSync

Requirements

  1. you need ipaq with familiar and gpe, ask around h2200-port mailing list until we get wiki updated.

  2. you need a linux box, with evolution or kdepim, mine is fedora core 5

  3. you need both machines talking to each other thru TCP/IP (be it ppp or usb, whatever. In my example 192.168.0.200 will be pc, 192.168.0.202 will be ipaq), check [UsbNet] for details.

In PC you will install (sorry for using fedora rpm names, that's the best I can offer)

multisync-0.90.18-5.fc5
libopensync-plugin-file-0.18-4.fc5
libopensync-0.18-6.fc5
libopensync-plugin-evolution2-0.18-6.fc5
multisync-gui-0.90.18-5.fc5
libopensync-plugin-gpe-0.18-2.fc5

In Fedora you install everything with yum, so use  yum install multisync  and so on. I use fedora-extras, dag and livna repositories together, I know I should use only livna or dag. If yum complains about missing packages, check on those repos.

Configuration

Here are the steps for the PC, quoted almost literally from [WWW]http://handhelds.org/cgi-bin/cvsweb.cgi/%7Echeckout%7E/gpe/base/gpe-opensync/INSTALL?rev=1.3

- add a synchronization group:

msynctool --addgroup gpe-evo

- list your groups with:

msynctool --listgroups

- add members to this sync-group:

msynctool --addmember gpe-evo gpe-sync
msynctool --addmember gpe-evo evo2-sync 

- setup the conection to the ipaq, this is a xml file, put 192.168.0.200 and your ipaq username

msynctool --configure gpe-evo 1

- on this one you choose the evolution categories you want to sync with. I recommend using other categories for ipaq to help deal with multisync duplicates it generates sometimes.

msynctool --configure gpe-evo 2

keyfile SSH authentication

Ok, we're almost there. First, on the PC you must generate a ssh public key to transfer to the ipaq, so it allows ssh sessions without requesting password. If you know how to do this skip to the synchronization part below. Use:

ssh-keygen -t 1024 -t dsa

Now you need to transfer it to the ipaq.

scp ~/.ssh/id_dsa.pub <username>@<ip of PDA>:/tmp

Finally, you must add your PC public key to the authorized keys for the ipaq user. We will login then

ssh <username>@<ip of PDA>
mkdir -p ~/.ssh
cat /tmp/id_dsa.pub >> ~/.ssh/authorized_keys

Notice that on the last step we ssh'ed into the ipaq. Adjust permissions to play safe:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

If you want to test your automatic ssh login, use CTRL-D to end your ssh session and start it again. It should login without requesting password.

Synchronization

This is piece of cake with sugar, you can sync it with

msynctool --sync gpe-evo

marcosu@wanderer ~ $ msynctool --sync gpe-evo
Synchronizing group "gpe-evo"
The previous synchronization was unclean. Slow-syncing
Member 1 of type gpe-sync just connected
Member 2 of type evo2-sync just connected
All clients connected or error
Received a entry pas-id-4448C09100000000 with data of size 4 from
member 2. Changetype ADDED
Member 2 of type evo2-sync just sent all changes
marcosu@192.168.0.202's password:
Received a entry gpe-contact-1 with data of size 4 from member 1.
Changetype ADDED
Received a entry gpe-contact-2 with data of size 4 from member 1.
Changetype ADDED
Received a entry gpe-contact-3 with data of size 4 from member 1.
Changetype ADDED
Received a entry gpe-contact-4 with data of size 4 from member 1.
Changetype ADDED
Received a entry gpe-contact-5 with data of size 4 from member 1.
Changetype ADDED
Received a entry gpe-contact-6 with data of size 4 from member 1.
Changetype ADDED
Member 1 of type gpe-sync just sent all changes
All clients sent changes or error
All conflicts have been reported
*** glibc detected *** msynctool: munmap_chunk(): invalid pointer: 0x002b5c1b ***
======= Backtrace: =========
/lib/libc.so.6(__libc_free+0x17b)[0x16851f]
/usr/lib/libglib-2.0.so.0(g_free+0x31)[0x667f5a1]
/usr/lib/opensync/formats/xml-vcard.so[0x2aeb9d]
/usr/lib/opensync/formats/xml-vcard.so[0x2af786]
/usr/lib/opensync/formats/xml-vcard.so[0x2adc9d]
/usr/lib/libopensync.so.0(osync_converter_invoke+0xeb)[0x5e0ffb]
/usr/lib/libopensync.so.0(osync_conv_convert_fn+0x16a)[0x5e1bea]
/usr/lib/libopensync.so.0(osync_change_convert_member_sink+0x5d)[0x5e240d]
/usr/lib/libopensync.so.0(osync_member_commit_change+0xcb)[0x5dcdbb]
/usr/lib/libosengine.so.0(client_message_handler+0x196)[0x4ec1e6]
/usr/lib/libosengine.so.0(_queue_dispatch+0x95)[0x4eb745]
/usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x16d)[0x667815d]
/usr/lib/libglib-2.0.so.0[0x667b3ef]
/usr/lib/libglib-2.0.so.0(g_main_loop_run+0x1a9)[0x667b799]
/usr/lib/libglib-2.0.so.0[0x6695a1f]
/lib/libpthread.so.0[0xd6f3b6]
/lib/libc.so.6(__clone+0x5e)[0x1c933e]
======= Memory map: ========
<lots of garbage then from core dump>

notes

  1. This will be hopefully updated to report success. As it is, it is better than nothing.

  2. If you got success, you don't need to use commandline, although I like it best. You can use multisync-gui and do it graphically.