Linked by Eugenia Loli-Queru on Mon 17th Mar 2008 21:20 UTC, submitted by AdamW
PDAs, Cellphones, Wireless The upcoming Mandriva Linux 2008 Spring release will boast the easiest ever support for synchronizing with Windows Mobile 5 and 6 devices in any distribution. The adventurous can already try out the support in the current 2008 Spring pre-release repositories, by following the instructions here. Mandriva has uploaded a video demonstrating how easy it is to synchronize with a Windows Mobile 6 device right out of the box with Mandriva Linux 2008 Spring. Support is included for synchronizing with both KDE (KDE PIM) and GNOME (Evolution). Similarly easy synchronization is also possible with many Nokia phones and with Blackberry devices.
Thread beginning with comment 305438
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE: I wonder on other Distros...
by AdamW on Mon 17th Mar 2008 23:12 UTC in reply to "I wonder on other Distros..."
AdamW
Member since:
2005-07-06

This doesn't actually depend on any terribly new code. The opensync version used is 0.22, which has been around since early 2007. Current development version is 0.36, but using this in production is *not* recommended by the OpenSync developers (or me - I tested it, and the KDE and Evolution backends don't work). SynCE used is 0.11, which has also been around for a while.

KitchenSync - the GUI front end you see in the video taking care of the actual sync - is somewhat newer, but has still been around for a while, and MultiSync (the GTK+ alternative) has been around for ages.

synce-kpm is probably the newest bit of code in use in that video: that's the application used to create the initial sync partnership with the phone. A 0.11 version is available from SynCE project, but the Mandriva package is using the current SVN head.

What I really had to do to make it all work like you see in the video was a succession of minor things. None of them is really hard to fix on its own, but the cumulative effect of all of them is to make this a real slog to do if your distribution doesn't do it for you.

#1, the usbnet /rndis_host / cdc_ether drivers in the kernel.org kernel and most distributions does not support WM5/6 devices. SynCE have a patched build of the module that fixes this but it's not yet been accepted upstream. So the Mandriva 2008 Spring kernel has this patched version included. With previous MDV and all other distros I know of, you'd have to build these versions of the modules yourself.

#2, sync-engine (the tool that actually handles partnerships between the devices and SynCE) has a couple of bugs I fixed by backporting fixes from SVN.

#3, sync-engine doesn't run automatically when it's needed, in the default upstream configuration. You have to run it manually, or you can't create any partnerships, and you have to make sure it's running whenever you want to synchronize. I created a dbus activation profile for it, so that it gets run automatically when anything tries to access it via dbus. (I'm indebted to John Carr for this idea).

#4, synce has a bug which prevents a default configuration being created the first time you try and do anything with it, if there isn't one already. This stops anything working. This is partially fixed in upstream SVN, but the distro's synce packages have to make sure to package the default configuration file in the correct place to be copied, which I fixed in ours.

there's a bunch of other little things like this I had to fix. As I said, it's all small things that add up. And then the other big thing is to make it easy to put it all together, which is what the metapackage does in Mandriva. Without the task-wm5sync metapackages that make it easy to install all the necessary stuff, it's not actually easy to know that what you need for all this to work is synce, opensync, odccm, libopensync-plugin-synce , libopensync-plugin-kdepim , synce-kpm and kitchensync. It took me quite a lot of research and reading to figure this out. ;)

it wouldn't be super-hard to implement this in most distros; all it needs is a maintainer with a test device and the willingness to put it all together. I started working on this around Tuesday last week, just to get my own device working, but it became obvious that it would be reasonably easy and very nice to implement a system so it'd work for most Mandriva users. I'm going to push as many of my changes upstream as possible, and I'm happy to answer any questions any maintainers for other distros have if they try to implement this stuff for their own distro and get into trouble anywhere. Of course, all the patches and changes in the MDV packages are available in our SVN repository.

Reply Parent Bookmark Score: 9

WorknMan Member since:
2005-11-13

Wow, that sounds like a pain in the ass. Even with the packages making it easy in Mandriva, there's probably going to be nothing in the phone's manual telling people using Linux how to do that, so I would hope that when you plugged in the phone without any of these packages installed, there would be at least something popping up, informing users what they need to do.

I don't think I would ever go through what you just said you did. I'm getting too old for that sh*t ;)

Reply Parent Bookmark Score: 3

AdamW Member since:
2005-07-06

worknman: the point is that with MDV from 2008 Spring you don't have to go through all that stuff, that's the stuff I had to go through to fix it in the packages so no-one *else* has to go through it. =)

It would indeed be nice for something to pop up and offer to install the metapackage when you plugged in an appropriate device. This is probably too big a thing to get into 2008 Spring, but I had already thought of it and we'll look at getting it into 2009.

Reply Parent Bookmark Score: 5

Schmeggma Member since:
2006-01-14

#3, sync-engine doesn't run automatically when it's needed, in the default upstream configuration. You have to run it manually, or you can't create any partnerships, and you have to make sure it's running whenever you want to synchronize. I created a dbus activation profile for it, so that it gets run automatically when anything tries to access it via dbus. (I'm indebted to John Carr for this idea).

Could you point me in the right direction to do this please?

I've been playing with synce and WM6 sporadically for a while but this article has prompted me to get it working properly. I don't know if knotes is supposed to sync properly but contacts, tasks and appointments seem to work perfectly. It's just such a pain having to rebuild the drivers every time my kernel is updated and having to manually kick start the back end every time I want to sync.

Reply Parent Bookmark Score: 1

AdamW Member since:
2005-07-06

schmeggma: all you need is a file /usr/share/dbus-1/services/org.synce.service with these contents:

[D-BUS Service]
Name=org.synce.SyncEngine
Exec=/usr/bin/sync-engine

that's it. Now if something tries to access org.synce.SyncEngine and nothing is providing it, d-bus will run sync-engine. d-bus activation is great. ;)

For the modules, I know there are unofficial packages of the fixed modules for some distributions; you might want to ask in #synce on Freenode if there are any for yours, that might save you the trouble of manual rebuilds (assuming the packages are updated swiftly when the distro's kernel is updated).

Reply Parent Bookmark Score: 4