Syncing with Samsung SGH-D600

Update!

Please have a look on this mail first: http://article.gmane.org/gmane.comp.misc.opensync.devel/2010

It's about the initial support for the Samsung mobiles.

Background

According to http://www.traud.de/gsm/samsung.htm, the phone has an "internal OBEX server". So I figured using the opensync "syncml-obex-client" (with libsyncml-0.4.3) would be the right choice for accessing the phone.

Actually it was wrong choise. syncml-obex-client works via OBEX bluetooth profile. As noted in http://www.traud.de/gsm/samsung.htm sasmsung phones work differently. To start SyncML session you should connect to the COM or DUN bluetooth profile and send specific AT command (http://www.traud.de/gsm/mobileleader.htm). Unfortunately there is no opensync plugin for that :(

First, pair the phone and make sure that e.g. "sdptool browse" or "hcitool scan" show it. Then create the syncgroup:

msynctool --addgroup samsung
msynctool --addmember samsung file-sync
msynctool --addmember samsung syncml-obex-client

And configure the file-sync plugin. To do this, simply specify a path to the file-sync-dir:

msynctool --configure samsung 1

Then, configure the syncml-obex-client plugin:

msynctool --configure samsung 2

Here, I defined the following settings:

<?xml version="1.0"?>
<config>
  <!-- (Only for bluetooth) The bluetooth address if the bluetooth mode is selected -->
  <bluetooth_address>Yo:ur:BT:Ad:dr:es:ss</bluetooth_address>

  <!-- (Only for bluetooth) The bluetooth channel to use. `sdptool browse $MAC` to search for the correct channel -->
  <bluetooth_channel>3</bluetooth_channel>

  <!-- (Only for USB) The usb interface number of the SYNCML-SYNC target. use syncml-obex-client -u (you will need access to the USB raw device) to find it. -->
  <interface>0</interface>

  <!-- The string that the plugin will use to identify itself. Some devices need a special string here. -->
  <identifier></identifier>

  <!-- The syncml version to use: 0 for 1.0, 1 for 1.1 and 2 for 1.2 -->
  <version>1</version>

  <!-- if the plugin should use wbxml -->
  <wbxml>1</wbxml>

  <!-- The username to use. Leave empty to not require a username -->
  <username></username>

  <!-- the password for the username -->
  <password></password>

  <!-- sets the connection type to use. 5 means obex over usb, 2 means obex over bluetooth -->
  <type>2</type>

  <!-- If wbxml is enabled, defines wether the wbxml should use string tables -->
  <usestringtable>0</usestringtable>

  <!-- Never send ADD command, but send REPLACE (not needed normally) -->
  <onlyreplace>0</onlyreplace>

  <!-- Workaround around for mobile phones which only use local timestamps and _no_ UTC timestamps! -->
  <onlyLocaltime>0</onlyLocaltime>

  <!-- Sets the maximum allowed size in bytes of incoming messages (some device need this option set). Example: 10000 -->
  <recvLimit>0</recvLimit>

  <maxObjSize>0</maxObjSize>

  <!-- The name of the contacts db. Must be the same as the phones sends -->
  <contact_db>CONTACTS</contact_db>

  <!-- The name of the calendar db. Must be the same as the phones sends -->
  <calendar_db>Calendar</calendar_db>

  <!-- The name of the note db. Must be the same as the phones sends -->
  <note_db>NOTES</note_db>
</config>

NOTES and CONTACTS are written uppercase, because http://www.traud.de/gsm/samsungAlert.xml seems to imply this is correct. I might be wrong though.

Anyway, now's the time to issue

msynctool --sync samsung

which gives me

Synchronizing group "samsung"
Member 1 of type file-sync just connected
Member 2 of type syncml-obex-client had an error while connecting: Request not successfull: 0
Member 1 of type file-sync just disconnected
All clients have disconnected
The sync failed: Unable to connect one of the members
Error while synchronizing: Unable to connect one of the members

Even when I define

export OSYNC_TRACE=/tmp/logs/
export SYNCML_TRACE=/tmp/logs/

and then restart the sync, I don't get any files in /tmp/logs, so I'm stuck.

Setting <wbxml>0</wbxml> strange-reboots the phone. Strange, because you don't have to enter the PIN when restarting...

For reference, this is what "sdptool browse" says about the phone:

Inquiring ...
Browsing 00:15:B9:62:10:77 ...
Service Name: WBTEXT
Service RecHandle: 0x10000
Service Class ID List:
  "Error: This is UUID-128" (0xdb1d8f12-95f3-402c-9b97-bc504c9a55c4)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Error: This is UUID-128" (0x1cdb1d8f-1295-f340-2c9b-97bc504c9a55)
    Version: 0x0100

Service Name: Serial Port
Service RecHandle: 0x10001
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 2
Profile Descriptor List:
  "Serial Port" (0x1101)
    Version: 0x0100

Service Name: Dial-up Networking
Service RecHandle: 0x10002
Service Class ID List:
  "Dialup Networking" (0x1103)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 3
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100

Service Name: Voice GW
Service RecHandle: 0x10003
Service Class ID List:
  "Headset Audio Gateway" (0x1112)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 4
Profile Descriptor List:
  "Headset" (0x1108)
    Version: 0x0100

Service Name: Voice GW
Service RecHandle: 0x10004
Service Class ID List:
  "Handfree Audio Gateway" (0x111f)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 5
Profile Descriptor List:
  "Handsfree" (0x111e)
    Version: 0x0101

Service Name: Advanced audio source
Service RecHandle: 0x10005
Service Class ID List:
  "Audio Source" (0x110a)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 25
  "AVDTP" (0x0019)
    uint16: 0x100
Profile Descriptor List:
  "Advanced Audio" (0x110d)
    Version: 0x0100

Service RecHandle: 0x10006
Service Class ID List:
  "AV Remote Target" (0x110c)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 23
  "AVCTP" (0x0017)
    uint16: 0x100
Profile Descriptor List:
  "AV Remote" (0x110e)
    Version: 0x0100

Service Name: OBEX File Transfer
Service RecHandle: 0x10007
Service Class ID List:
  "OBEX File Transfer" (0x1106)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 6
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX File Transfer" (0x1106)
    Version: 0x0100

Here is a very incomplete listing of Samsung AT commands that I couldn't verify.

This guy also tried opensync, but (I think) used the wrong bluetooth channel. When I set the bluetooth channel to 6, I get the same error he got.

If you need someone to do tests with this phone, contact me at gmx dot net, my username is "benadler".