HowTo Sync GPE PIM data with Evolution using OpenSync
Requirements
-
you need ipaq with familiar and gpe, ask around h2200-port mailing list until we get wiki updated.
-
you need a linux box, with evolution or kdepim, mine is fedora core 5
-
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
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
-
Right here this is the final step. You passed thru it, it is sync'ed, and I envy you!
Mine core dumped right here.
If anyone can use this as comparison, here is the output from the last command:
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
-
This will be hopefully updated to report success. As it is, it is better than nothing.
-
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.