p910i and SyncML hell

I managed to get my p910i synced against my kde desktop pim. i wrote a little script so setup a ppp conection via bluetooth to my p910i mobile.I used multisync as application wich is able to use my kde addressbook resource.

Here is a list of the gentoo packages i have used

  • net-wireless/bluez-utils
  • net-wireless/bluez-libs
  • app-pda/multisync (USE=”kdepim”)
  • net-dialup/ppp
  • net-analyzer/ngrep

How it works:

  • turn on the USB Bluetooth on your computer. Stop any daemon like kbluetoothd because this will interfere the communication
  • create a sync pair in multisync:

    1. first plugin is KDE Addressbook
    2. second plugin is SyncML
    3. goto SyncML plugin option and select http as transport protocol
    4. enter some password for the connection
  • setup the sync profile on your p910i

    1. open Remote Sync application
    2. goto preferences dialog and enter username syncml and the passwd you used in the multisync plugin config
    3. enter the server address http://169.254.1.65:5079 and quit the dialog
    4. goto the main window click the sync task calendar
    5. enable this task and assign the database name addressbook
  • turn on the P900 Bluetooth and connect to your computer

  • look up baddr of the p910i: hcitool scan
  • run sdptool to add a serial port service: sdptool add SP
  • run rfcomm to listen on channel 1: rfcomm listen 0 1
  • run rfcomm to connect to the P900 bluetooth serial cable: rfcomm connect 2 xx:xx:xx:xx:xx:xx 1
  • the latter rfcomm will connect to the P900 but the P900 will disconnect immediately;
  • the P900 will then initiate a connection to the computer to connect to the rfcomm listening on channel 1;
  • run the as root /usr/sbin/pppd server using: pppd rfcomm0 noauth debug nodetach 169.254.1.65:169.254.1.1
  • just say connect on the p910i if you are asked to select an account for a new internet connection. i just used my standard gprs account. don’t worry this connection won’t be used actually for syncing. just to keep the symbian os happy.
  • as root start ngrep to watch network interface: ngrep -d ppp0
  • finally you click the sync button in the Remote Sync application
  • you should see immediately some http packets on console where you have started ngrep.if not there is something wrong.

    1. check if the pppd daemon is still runing and connected
    2. double check all ips in the mobile phone setttings

known problems:

  • KDE Address plugin doesn’t handle uft-8 encoding correct, so contacts with special chars will be broken on your phone but will not yield an sync conflict on the secound or third sync.Current CVS version of multisync should address this problem, but a didn’t try the most recents checkouts.
  • pppd connection seemed to be a little unstable, try you tweak connection settings using this pppd flasgs: lcp-echo-failure 10 lcp-echo-interval 86400

if you are familiar with all tools and settings you can use this script so that can avoid using 4 open terminal windows to sync your mobile 🙂


#!/bin/sh

baddr="00:0F:DE:85:E8:E1"
ip_local="169.254.1.65"
ip_remote="169.254.1.1"

cleanup()
{
        kill -TERM $pid_2
        sleep 0.1
        kill -TERM $pid_1
        ps ax | grep "rfcomm"
        exit -1
}

debug()
{
        echo "########################################################"
        echo $*
        echo "########################################################"
}


trap cleanup 2
sdptool add SP
debug "Listen RFCOMM"
rfcomm listen 0 1 &
pid_1=$!
sleep 0.2
debug "Connect RFCOMM  ${baddr}"
rfcomm connect 2  ${baddr} 1
pid_2=$!
sleep 4
failed=0
while true
do
        debug "try PPPD $failed"
        sudo  /usr/sbin/pppd rfcomm0 noauth debug nodetach ${ip_local}:${ip_remote}
        failed=$[$failed+1]
        if [ $failed -eq 10 ]
        then
                break
        fi
        sleep 1
done
cleanup

12 comments

  1. the latter rfcomm will connect to the P900 but the P900 will disconnect immediately;
    the P900 will then initiate a connection to the computer to connect to the rfcomm listening on channel 1;

    the p900 is not trying to connect back … some help please
    Am i missing out something

  2. Id had problems to setup rfcomm connect since i was uisng udev. I didn’t really debugged that very much. I just created rfcomm devices by hand.

    mknod /dev/rfcomm0 c 216 0
    mknod /dev/rfcomm1 c 216 1
    mknod /dev/rfcomm2 c 216 2
    mknod /dev/rfcomm3 c 216 3

    Maybe that helps.

  3. I tried your summary ( and the script ), but I always get

    “Couldn’t set tty to PPP discipline: Invalid argument”

    from “pppd rfcomm0 noauth debug nodetach ….”

  4. I quick google says, that might be ppp kernel modules are missing. What says a lsmod ?
    Are you using the step by step howto or the script? Maybe your sudo call doesn’t work, because you are not listed in /etc/sudoers.

  5. You were partly right… I compiled ppp into my kernel but forgot to copy it onto my boot partition ! 🙁

    Not there seem to be some kind of connection, but it’s still not stable. Is there a way to use the USB connector instead of Bluetooth, maybe there is something wrong with my Bluetooth setup ( AVM Bluefritz stick ).

    ( sudo is no problem because I run the script in a root console )

  6. Are you able to do pairing with the phone? Try to use a tool like kbluetoothd, which should assist you checking if bluetooth connections work properly.
    I used the usb cradle with the ‘ftdi-sio’ driver, but i never tried to sync via the usb serial dev.

  7. I can exchange informations between the phone and kde with the “Obex object push” protocoll, but KBluetoothD never shows a paired device…

    ( the phone shows the linux bluetooth stack on the “paired” list )

  8. Hi
    I’am beginning to play with this bluetooth syncro. I have a different answer from the P910i: when issuing second rfcomm, the P910 ask for a password to connect to my Laptop… Either the syncml pass or empty doesn’t work… do you have any idea ‘which’ password I’shall enter at the P910 prompt?

  9. Yes, you’re right… I was used that both devices ask for that password. The laptop was setting
    it in the config file. Now I’am able to create the ppp link. But my SuSE10.0 version of multisynk (yes with a k) doesn’t know about syncml, all plugin are Konnector plugins…
    The classic Gnome-multisync is available too. I tried with this one too. pppd seems to work correctly but the P910 keep saying “Connecting” and after 2-3 min the link is shut down.
    Still sth broken somewhere in the flow. I’ll re-check all the parameters and fetch the ngrep tool. Thank for your help

  10. Thanks for this information, but I am having 1 problem that seems to be stopping things.

    When I create the ppp connection, the phone then makes a GPRS connection and the route back the laptop doesn’t work, and the sync doesn’t happen.

    Any ideas.
    Thanks

  11. Have been playing with my p910. Can get solid ppp over BT or USB. I was having the same issue as PHiL where the phone disconnected after a short time. Using ethereal against ppp0 I could see the phone making DNS requests for the name mrouter. Once you can deliver the response the phone no longer disconnects. I set up named listening on ppp0 and in the /etc/ppp/ip-up.local I added ‘rndc reload’ so named picked up the now new ppp0. I suspect that mDnsdaemon (sp?) can do this as well, but I knew roughly how named worked. I got some stuff working with multisync, and also seperately with funambol. All seems really buggy and unstable. I even managed to crash something on my phone using ‘nmap x.x.x.x -p 1-65535’. Still trying.

    HTH
    John

Leave a Reply

Your email address will not be published. Required fields are marked *