I managed to get synchronization over USB between my Nokia 6680 mobile phone and Evolution on Debian Linux (Lenny) working. It took me quite some time to get all the necessary information, but the following set-up and configuration was actually quite easy.
I found the following pages very useful:
- udev related stuff in order to get communication running even for non-root user – link
- Nokia-Evolution Ubuntu site – link
- msynctool-related info, filtering – link
The discussion in this post is based on the information I found in these links. Large parts of the document are taken from the pages above. I just want to have a copy here in case the original pages are not available any longer… and of course it’s easier for me to have all information on my web…
USB and udev
If you want to synchronize the phone using the USB cable, it is necessary to fix the permissions of the respective device. The first link shown above contains all the necessary information. Just brief:
- connect the phone, use
dmesgto see if it was somehow recognized. I am getting something likeusb 1-4: new full speed USB device using ohci_hcd and address 4 usb 1-4: configuration #1 chosen from 1 choice usb 1-4: New USB device found, idVendor=0421, idProduct=041e usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-4: Product: Nokia 6680 usb 1-4: Manufacturer: Nokia
lsusbprovides the list of all connected USB devices, for exampleBus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 004: ID 0421:041e Nokia Mobile Phones 6680 Bus 001 Device 003: ID 046d:c00e Logitech, Inc. M-BJ58/M-BJ69 Optical Wheel Mouse Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
This output indicates that the phone is the device 004 located on bus 1
udevinfo -ewill give you a long list of devices. Look for (in this case) usbdev1.4P: /devices/pci0000:00/0000:00:02.0/usb1 N: bus/usb/001/001 P: /devices/pci0000:00/0000:00:02.0/usb1/1-2 N: bus/usb/001/003 P: /devices/pci0000:00/0000:00:02.0/usb1/1-4 N: bus/usb/001/004 P: /devices/pci0000:00/0000:00:02.1/usb2 N: bus/usb/002/001 P: /devices/pci0000:00/0000:00:02.2/usb3 N: bus/usb/003/001
- use the respective “P”-line in order to get the device info from
udevinfo -a -p /devices/pci0000:00/0000:00:02.0/usb1/1-4. You will get something likelooking at device '/devices/pci0000:00/0000:00:02.0/usb1/1-4': KERNEL=="1-4" SUBSYSTEM=="usb" DRIVER=="usb" ATTR{configuration}=="Bulk transfer method configuration" ATTR{bNumInterfaces}=="10" ATTR{bConfigurationValue}=="1" ATTR{bmAttributes}=="80" ATTR{bMaxPower}=="100mA" ATTR{urbnum}=="73" ATTR{idVendor}=="0421" ATTR{idProduct}=="041e" ATTR{bcdDevice}=="0000" ATTR{bDeviceClass}=="02" ATTR{bDeviceSubClass}=="00" ATTR{bDeviceProtocol}=="00" ATTR{bNumConfigurations}=="1" ATTR{bMaxPacketSize0}=="64" ATTR{speed}=="12" ATTR{busnum}=="1" ATTR{devnum}=="4" ATTR{version}==" 2.00" ATTR{maxchild}=="0" ATTR{quirks}=="0x0" ATTR{authorized}=="1" ATTR{manufacturer}=="Nokia" ATTR{product}=="Nokia 6680"which is everything you need
- modify the udev rules (I am using /etc/udev/rules.d/local.rules). The file should contain (configuration is based on the udevinfo output)
BUS=="usb", SYSFS{idVendor}=="0421", SYSFS{idProduct}=="*", MODE="0660", GROUP="dialout"Then restart udev via
/etc/init.d/udev restart
Installation
- install necessary software:
aptitude install evolution multisync-tools opensync-plugin-evolution opensync-plugin-syncml libsyncml-utils - running
msynctool --listpluginsshould give you the following outputAvailable options: syncml-http-server syncml-obex-client evo2-sync
Configuration
- to get the synchronization running, several steps are required. Firstly, a group has to be created, defining the way how the synchronization is done. I am using groupname nokia-evo, but you can use whatever you want.
msynctool --addgroup nokia-evo msynctool --addmember nokia-evo evo2-sync msynctool --addmember nokia-evo syncml-obex-client
- The communication with the phone (syncml-obex) has to be further configured. Run
msynctool --configure nokia-evo 2and make the following changes to the file:identifier: PC Suite version: 1 wbxml: 1 usestringtable: 1 type: 5 recvLimit: 10000 maxObjSize: 10000
The recvLimit and maxObjSize work for me with the value of 0. Since there are problems with the synchronization of notes (probably not supported!), it is necessary to remove the contents of the
note_dbsection. The last setting to change is the value of theinterfacevariable. Runsyncml-obex-client -u. You should get something likeSuperuser privileges are required to access complete USB information. Found 2 USB OBEX interfaces Interface 0: Manufacturer: Nokia Product: Nokia 6680 Interface description: SYNCML-SYNC Interface 1: Manufacturer: Nokia Product: Nokia 6680 Interface description: PC Suite Services Use '-u interface_number' to connect
Use the number of the interface called SYNCML-SYNC, i.e., interface would be 0 in this particular case.
- Test the configuration using
msynctool --showgroup nokia-evo - Start evolution and perform the sync using
msynctool --sync nokia-evo. I encountered problems from time to time, particularly when synchronizing large amount of data. It proved useful to do the synchronization in parts (first contacts, then calendar).echo "contact" msynctool --sync nokia-evo --filter-objtype note --filter-objtype event --filter-objtype todo echo "calendar" msynctool --sync nokia-evo --filter-objtype note --filter-objtype contact --filter-objtype todo echo "todo" msynctool --sync nokia-evo --filter-objtype note --filter-objtype event --filter-objtype contact
It is not clear to me, what the todo object corresponds to, since it seems to do the same thing as calendar (event). Note that notes (I am not sure what is meant by this, probably notes not associated with the calendar…) can’t be synchronized at the moment – it’s not supported and the synchronization usually hangs. The notes associated with a given date in the calendar are synchronized and shown in evolution without any problems.
The synchronization can be pretty tricky and it doesn’t always work 100%. I have from time to time problems with the calendar. The birthdays are not synchronized and shown. The contact list is, on the other side, working without any problems. In case that the synchronization hangs, just press Ctrl-C and restart the sync. The so called slow-sync will be performed, which should remedy the trouble (but it doesn’t always work, unfortunately). There is still a long way to go in the synchronization business in order to work flawlessly…


