UIQ mobiles and the SyncML plugin

WARNING: This is still work in progress. If you have some comments or a better configuration then please add it or contact us at opensync-users@lists.sf.net.

This page is used to document the use of the SyncML plugin together with UIQ based phones. UIQ is a user interface for Symbian. The first releases of the software were named Quartz (but i don't know if this is meant by User Interface Quartz - UIQ).

Several UIQ phones of Sony-Ericsson have reduced support for SyncML transports. All UIQ phones support SyncML over HTTP but only a very small number supports SyncML over OBEX. This has two disadvantages - first you need a TCP/IP connection between the mobile and the computer and second you cannot used Server Alerted Notifications (SAN) to signal a required synchronization these phones. All UIQ phone support SAN for HTTP transport but this is only supported by OTA-HTTP where OTA means Over-The-Air. I asked on a support forum of UIQ if there is another way except of OTA-HTTP to signal an alert notification to an UIQ mobile but nobody answers :(

Mobiles

If you have an UIQ phone then please add it here or send a mail to opensync-users@lists.sf.net.

  • Sony-Ericsson M600i
  • Sony-Ericsson P-Series (P800, P900, P910, P990, P1i)
  • Sony-Ericsson W950

Bugs

This is developer information only.

  • The mobile (M600i) always sends the syncml:auth-md5 hash without nonce.
  • If you ask the mobile (M600i) for re-authentication with nonce then it replies correctly but does not repeat the commands (SyncML protocol violation).
  • If an item is splitted into two or more chunks then the second chunk is missing the CDATA encapsulation (M600i). It is unclear if this is a bug of Sony Ericsson or a problem of the libwbxml.

TCP/IP setup

This is the tricky part of the configuration.

Local computer configuration

Detect your hardware

First you have to check for a working bluetooth device.

localhost:~# hcitool dev
Devices:
        hci0    yy:yy:yy:yy:yy:yy

Second you have to check for the MAC address of you mobile. It is important that you close any bluetooth connections of your phone especially with your PC. If you have an open OBEX connection for file transfer then close it on the mobile. Otherwise the scan will not return any results.

localhost:~# hcitool scan
Scanning ...
        xx:xx:xx:xx:xx:xx       M600i...
Configure bluetooth (Linux)

Please check hcid.conf. Here is an example. Please note that the installed hcid.conf files always include documentation about the options.

options {
        autoinit yes;
        security auto;
        pairing multi;
        passkey "1234";
}
device {
        name "%h-%d";
        class 0x3e0100;
        iscan enable; pscan enable;
        lm accept, master;
        lp rswitch,hold,sniff,park;
}

Please check that your rfcomm devices are automatically binded to the correct files. Sometimes it is necessary to use sdptool before you can use the channels.

rfcomm1 {
    bind yes;
    device xx:xx:xx:xx:xx:xx;
    channel 1;
}

rfcomm2 {
    bind yes;
    device xx:xx:xx:xx:xx:xx;
    channel 2;
}

The last bluetooth step is the configuration of the PAN startup script. This script is on a Debia bix at /etc/bluetooth/pan/dev-up. It contains the following commands:

#!/bin/sh
ifdown $1 || echo $1 was not used until now
ifup --force $1
#echo 1 > /proc/sys/net/ipv4/ip_forward
sleep 3
/etc/init.d/dhcp3-server restart
Configure DHCP

You can see in the last Bluetooth step that there is a DHCP server in use. I only list here what is really important in /etc/dhcp3/dhcpd.conf.

  • option domain-name (only for normal DHCP startup)
  • option domain-name-servers (only for normal DHCP startup)
  • subnet configuration for Bluetooth PAN
    subnet 10.0.0.0 netmask 255.255.255.0 {
      range 10.0.0.2 10.0.0.10;
      option domain-name-servers 10.0.0.1;
      option domain-name "bluetoothap.int.yourdomain.com";
      option routers 10.0.0.1;
      option broadcast-address 10.0.0.255;
      default-lease-time 600;
      max-lease-time 7200;
    }
    

Perhaps you notice that I configured a DNS server at my local machine with an IP 10.0.0.1. So yes I have two additional configurations - one for TCP/IP and one for DNS.

TCP/IP on my computer

There is an entry for a bluetooth device in my /etc/network/interfaces.

iface bnep0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    post-up iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -j MASQUERADE
    post-up iptables -A FORWARD -i bnep0 -o eth0 -j ACCEPT
    post-up iptables -A FORWARD -o bnep0 -i eth0 -j ACCEPT
    post-up /etc/init.d/dhcp3-server start
    pre-down /etc/init.d/dhcp3-server stop
    pre-up  /bin/sh /etc/init.d/firewall start
    post-up /bin/sh /etc/init.d/firewall start
DNS on my local machine

This is quite simple on my machine. I installed dnsmasq and configured /etc/hosts in a way that it contains names for 10.0.0.1 and 10.0.0.2.

After this step and a restart of all daemons you should have a working Bluetooth PAN configuration on your PC.

Mobile configuration

  • Go to Connections / Bluetooth
  • set the name of your mobile
  • scan for a new device and pair it (please see the pin in /etc/bluetooth/hcid.conf
  • Go to Connections / Internet Accounts
  • Please check that the Ad-Hoc Bluetooth PAN is ready (pre-configured)
  • Go to Remote-Sync
  • Create a new profile
    • Server adress is a complete http address including port (e.g. http://10.0.0.1:5079/)
    • Username can be empty
    • Passphrase can be empty
    • Transport protocol is HTTP
    • Internet Account is the Bluetooth Ad-Hoc network
  • Activate database (datastores in SyncML terminology)
    • activate calendar
    • enable synchronization
    • set the name of the server database to Calendar
    • activate contacts
    • enable synchronization
    • set the name of the server database to Contacts

OpenSync setup

The OpenSync setup is simple. If you need a more secure setup please see the default configuration documentation?.

  • empty username and password
  • port 5079
  • usestringtable, onlyreplace and only onlyLocaltime should be set to 0
  • recvLimit and maxObjSize should be set to 0 too (libsyncml and the plugin handle this automatically)
  • two databases should be configured contact and event
      <!-- Contact database -->
      <database>
         <name>Contacts</name>
         <objtype>contact</objtype>
         <objformat>vcard21</objformat>
      </database>
    
      <!-- Calendar database -->
      <database>
         <name>Calendar</name>
         <objtype>event</objtype>
         <objformat>vevent10</objformat>
      </database>