Archiv/OpenSync/Plugin-SyncML

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Achtung!

Aufgrund von Abhängigkeitsproblemen wurde das Plugin in Ubuntu 10.04 Lucid Lynx aus den Paketquellen gelöscht (s. 524938 🇬🇧).

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Installation von Programmen

  2. ⚓︎ Ein Terminal öffnen

  3. ⚓︎ Root-Rechte

  4. ⚓︎ Einen Editor verwenden

Inhaltsverzeichnis
  1. SyncML über einen http-Server
    1. Einrichtung mit KitchenSync
    2. Einrichtung im Skript
    3. Beispiel-Konfiguration
  2. SyncML über einen OBEX-Client
    1. Einrichtung mit KitchenSync
    2. Einrichtung im Skript
    3. Synchronisierung über USB
    4. Beispiel-Konfigurationen
  3. Erfolgreich getestete Geräte
    1. via http-Server
    2. via OBEX-Client und USB
    3. via OBEX-Client und Bluetooth
  4. Links

SyncML ist ein Standard der Open Mobile Alliance 🇬🇧, der inzwischen von einer Vielzahl von Hardware-Anbietern unterstützt wird (u.a. Nokia, Palm, Motorola, Sony Ericsson und Samsung). Der Vorteil ist, dass SyncML weder auf eine bestimmte Plattform noch auf eine bestimmte Netzwerkarchitektur festgelegt ist - entsprechend bestehen auch in OpenSync [1] verschiedene Möglichkeiten, den Standard zu nutzen: Über einen http-Server, über einen OBEX-Client via USB-Kabel oder über einen OBEX-Client via Bluetooth. Alle Möglichkeiten greifen aber auf dasselbe Paket zurück[2]:

Befehl zum Installieren der Pakete:

sudo apt-get install opensync-plugin-syncml 

Oder mit apturl installieren, Link: apt://opensync-plugin-syncml

Das Plugin lässt sich in KitchenSync [1] bereits über eine graphische Oberfläche einrichten; Benutzern von Multisync-GUI [1] steht bisher nur dasselbe Skript zur Verfügung, über das auch im Terminal die Konfiguration abläuft [3].

SyncML über einen http-Server

Die Synchronisation über einen http-Server ist die allgemeinste Form des Datenabgleichs über SyncML. Sie sollte mit allen Geräten möglich sein, die SyncML unterstützen; das gilt insbesondere für Nokia-Mobiltelefone. Als Plugin-Typ ist "SyncML over HTTP-Server" zu wählen, das Plugin selber heißt syncml-http-server.

Einrichtung mit KitchenSync

OpenSync/SyncMLhttpKitchenSyncConf.png Fügt man einer Gruppe ein SyncML-Plugin hinzu, so nennt KitchenSync das zugehörige Mitglied automatisch Mobile Phone. Es darf aber nach Belieben umbenannt werden. Wird das Mitglied im Editier-Fenster markiert, so erscheint nebenstehende Oberfläche:

Im Reiter "Connection" ist der Port zu wählen, der verwendet werden soll. Standard-Einstellung ist 8080. Dieser Port muss auch auf dem externen Gerät eingestellt werden.

Im Reiter "Databases" ist anzugeben, wie die abzugleichenden Datenbanken auf dem externen Gerät heißen. Manchmal beginnen diese Namen mit Großbuchstaben.

Im Reiter "Options" könnten ein beliebiger Benutzername und das zugehörige Passwort angegeben werden. Beides müsste auch im externen Gerät eingetragen werden; beides kann normalerweise aber leer gelassen werden. Falls WBXML verwendet wird, kann es sinnvoll sein, bei "Use String Table" ein Häkchen zu setzen; die Option "Only Replace Entries" bleibt aber normalerweise abgewählt. Zudem könnte hier eine URL angegeben werden, die auch im externen Gerät stehen müsste, auch dies ist aber nicht notwendig. Schließlich kann es vor allem bei älteren externen Geräten sein, dass deren Speicherkapazität eher gering ist, weshalb auch noch die Möglichkeit besteht, die maximale Größe eines Datensatzes und die maximale Größe aller zu transferierender Daten zusammen festzulegen. Stehen diese Werte auf Null (Standard-Wert), so werden alle Daten transferiert.

Einrichtung im Skript

Nach Aufruf des Konfigurations-Befehls im Terminal [2] bzw. nach Markierung des Plugins in Multisync-GUI [1] erscheint folgendes Skript:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?xml version="1.0"?> 
<config>
  <username></username>
  <password></password>
  <url></url>
  <port>8080</port>
  <usestringtable>0</usestringtable>
  <onlyreplace>0</onlyreplace>
  <onlyLocaltime>0</onlyLocaltime>
  <recvLimit>0</recvLimit>
  <maxObjSize>0</maxObjSize>
  <contact_db>contacts</contact_db>
  <calendar_db>calendar</calendar_db>
  <note_db>notes</note_db>
</config>

Die Optionen lassen sich wie folgt konfigurieren:

Beispiel-Konfiguration

Beispiel einer funktionierenden Konfiguration (zu einem Nokia 6680, das Beispiel stammt von opensync-Wiki 🇬🇧).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<config> 
  <username></username>
  <password></password>
  <url>/</url>
  <port>8080</port>
  <usestringtable>1</usestringtable>
  <onlyreplace>0</onlyreplace>
  <recvLimit>10000</recvLimit>
  <contact_db>Contacts</contact_db>
  <calendar_db>Calendar</calendar_db>
  <note_db>Notes</note_db>
</config>

SyncML über einen OBEX-Client

Ob über ein USB-Kabel oder via Bluetooth, als Plugin-Typ ist SyncML over OBEX Client zu wählen, das Plugin selber heißt syncml-obex-client.

Einrichtung mit KitchenSync

OpenSync/SyncMLobexKitchenSyncConf.png Fügt man einer Gruppe ein SyncML-Plugin hinzu, so nennt KitchenSync [1] das zugehörige Mitglied automatisch Mobile Phone. Es darf aber nach Belieben umbenannt werden. Wird das Mitglied im Editier-Fenster markiert, so erscheint nebenstehende Oberfläche:

Im Reiter "Connection" ist zuerst zu wählen, ob die Verbindung via USB oder via Bluetooth laufen soll. Bei einer USB-Verbindung ist danach anzugeben, an welchem Interface das Verbindungskabel eingesteckt ist. Wie sich dies allenfalls im Terminal ermitteln lässt, ist weiter unten, bei der Skript-basierten Einrichtung erklärt. Bei einer Verbindung via Bluetooth ist einerseits die 12-stellige MAC-Adresse des externen Geräts, andererseits der Kanal anzugeben, über den die Verbindung laufen soll. Dies ist normalerweise Kanal 11; wie dies und wie die MAC-Adresse im Terminal herausgefunden werden kann, steht ebenfalls weiter unten bei der Skript-basierten Einrichtung und im Artikel zur Bluetooth-Einrichtung.

Im Reiter "Databases" ist anzugeben, wie die abzugleichenden Datenbanken auf dem externen Gerät heißen. Manchmal beginnen diese Namen mit Großbuchstaben.

Im Reiter "Options" könnten ein allfälliger Benutzername und das zugehörige Passwort angegeben werden. Entsprechendes müsste auch im externen Gerät eingetragen werden, dies kann normalerweise aber leer gelassen werden. Falls WAP Binary XML verwendet wird, sollte dort ein Häkchen gesetzt werden, hierzu kann es sinnvoll sein, auch "Use String Table" anzuwählen; die Option "Only Repalce Entries" bleibt aber normalerweise abgewählt. Zudem muss hier angegeben werden, welche Version von SyncML verwendet wird (Standard ist momentan 1.1). Unter "Identifier" ist ein Ausdruck einzutragen, den manche Geräte verlangen, um sich zu identifizieren. Wenn der Geräte-Hersteller eine eigene Synchronisations-Software anbietet, sollte deren Identifier verwendet werden (meist der Name der Software). Schließlich kann es vor allem bei älteren externen Geräten sein, dass deren Speicherkapazität eher gering ist, weshalb auch noch die Möglichkeit besteht, die maximale Größe eines Datensatzes und die maximale Größe aller zu transferierender Daten zusammen festzulegen. Steht dieser Wert auf Null (Standard-Wert), so werden alle Daten transferiert.

Einrichtung im Skript

Die Konfiguration des OBEX-Plugins läuft im Terminal [2] und in Multisync-GUI [1] für die USB- und die Bluetooth-Variante über dasselbe Script. Diese liegt in /home/benutzername/.opensync/ und dann, je nach dem wie viele Gruppen man hat, unter group1/ und dann entweder unter 1/ oder 2/ Das Skript sieh dann folgendermaßen aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0"?> 
<config>
  <bluetooth_address></bluetooth_address>
  <bluetooth_channel></bluetooth_channel>
  <interface>0</interface>
  <identifier></identifier>
  <version>1</version>
  <wbxml>0</wbxml>
  <username></username>
  <password></password>
  <type>5</type>
  <usestringtable>0</usestringtable>
  <onlyreplace>0</onlyreplace>
  <onlyLocaltime>0</onlyLocaltime>
  <recvLimit>0</recvLimit>
  <maxObjSize>0</maxObjSize>
  <contact_db>contacts</contact_db>
  <calendar_db>calendar</calendar_db>
  <note_db>notes</note_db>
</config>

Die Optionen lassen sich wie folgt konfigurieren:

hcitool scan 

sdptool browse BLUETOOTH_ADRESSE 

Die Ausgabe ist recht lang, gegen Ende sollte ein Block 'Service Name: SyncML Client' kommen, dort steht in der 6. Zeile der verwendete Kanal (normalerweise Channel 11).

syncml-obex-client -u 

Die Einstellungen bei USB-Geräten, ob WBXML unterstützt, wird man so testen:

sudo syncml-obex-client -u 0 --wbxml --slow-sync text/x-vcard contact 

Es sollte eine Ausgabe etwa in folgender Form erscheinen

Codeconnection with device succeeded
Received an Alert for the DS Server at contact: Type: 200, Last 1501, Next 1501
Slowsyncing
Just received a new session with ID 1
Received the DevInf
Session 1 reported final. flushing
Received an reply to our Alert
Going to receive 0 changes
Received a modified entry 677 of size 217 and type text/x-vcard
                Data: BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:abh=C3=B6ren;Mailbox
FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:abh=C3=B6ren, Mailbox
TEL;CELL:+49145643000333
X-IRMC-LUID:0002000002A5
END:VCARD

Received a modified entry 633 of size 289 and type text/x-vcard
                Data: BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8:Nachname;Vorname
FN;CHARSET=UTF-8:Nachname, Vorname
ORG;CHARSET=UTF-8:Firma
TEL;CELL:+49163689843611

Synchronisierung über USB

Für den usbraw-Zugriff sind Root-Rechte[4] notwendig, eine Synchronisierung mit Evolution ist allerdings mit sudo sehr unschön. Beheben lässt sich dieser Umstand durch das Anlegen einer udev-Regel. Zunächst für das angeschlossene USB-Gerät Hersteller (idVendor) und Produkt-ID (idProduct) ermitteln

lsusb 

danach in einem Editor[5] mit Root-Rechten eine Datei /etc/udev/rules.d/99-symbian-usb.rules mit folgendem Inhalt anlegen:

BUS=="usb", SYSFS{idVendor}=="????", SYSFS{idProduct}=="????", MODE="0660", GROUP="plugdev"

zuletzt udev aktualisieren

sudo reload udev 

Beispiel-Konfigurationen

Beispiel einer funktionierenden Konfiguration via Bluetooth (zu einem Nokia 6103)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?xml version="1.0"?> 
<config>
  <bluetooth_address>XX:XX:XX:XX:XX:XX</bluetooth_address>
  <bluetooth_channel>11</bluetooth_channel>
  <identifier>PC Suite</identifier>
  <version>1</version>
  <wbxml>1</wbxml>
  <type>2</type>
  <usestringtable>1</usestringtable>
  <onlyreplace>0</onlyreplace>
  <onlyLocaltime>0</onlyLocaltime>
  <recvLimit>0</recvLimit>
  <maxObjSize>0</maxObjSize>
  <contact_db>contacts</contact_db>
  <calendar_db>calendar</calendar_db>
  <note_db>notes</note_db>
</config>

Beispiel einer funktionierenden Konfiguration via Bluetooth (zu einem Nokia 5800 XpressMusic. Achtung: Channel kann sich von selbst ändern! (Siehe 376845))

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0"?>
<config>
  <bluetooth_address>XX:XX:XX:XX:XX:XX</bluetooth_address>
  <bluetooth_channel>4</bluetooth_channel>
  <interface>0</interface>
  <identifier>PC Suite</identifier>
  <version>1</version>
  <wbxml>1</wbxml>
  <username></username>
  <password></password>
  <type>2</type>
  <usestringtable>1</usestringtable>
  <onlyreplace>0</onlyreplace>
  <onlyLocaltime>0</onlyLocaltime>
  <recvLimit>50000</recvLimit>
  <maxObjSize>0</maxObjSize>
  <contact_db>Contacts</contact_db>
  <calendar_db>Calendar</calendar_db>
  <note_db>Notes</note_db>
</config>

Beispiel einer funktionierenden Konfiguration via Bluetooth (zu einem Nokia Communicator 9500)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?xml version="1.0"?> 
<config>
  <bluetooth_address>XX:XX:XX:XX:XX:XX</bluetooth_address>
  <bluetooth_channel>10</bluetooth_channel>
  <interface>0</interface>
  <identifier>PC Suite</identifier>
  <version>1</version>
  <wbxml>1</wbxml>
  <type>2</type>
  <usestringtable>1</usestringtable>
  <onlyreplace>0</onlyreplace>
  <onlyLocaltime>0</onlyLocaltime>
  <recvLimit>0</recvLimit>
  <maxObjSize>0</maxObjSize>
  <contact_db>Contacts</contact_db>
  <calendar_db>Calendar</calendar_db>
  <note_db>RcntTask</note_db>
</config>

Beispiel einer funktionierenden Konfiguration via USB-Kabel zu einem Nokia 6680, das Beispiel stammt von hier.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<config> 
  <interface>0</interface>
  <identifier>PC Suite</identifier>
  <version>1</version>
  <wbxml>1</wbxml>
  <username></username>
  <password></password>
  <type>5</type>
  <usestringtable>1</usestringtable>
  <onlyreplace>0</onlyreplace>
  <recvLimit>10000</recvLimit>
  <contact_db>Contacts</contact_db>
  <calendar_db>Calendar</calendar_db>
  <note_db>Notes</note_db>
</config>

Beispiel einer funktionierenden Konfiguration via USB-Kabel zu einem Nokia 5320 XpressMusic, das Beispiel stammt von hier.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<config> 
  <interface>0</interface>
  <identifier>PC Suite</identifier>
  <version>1</version>
  <wbxml>1</wbxml>
  <username></username>
  <password></password>
  <type>5</type>
  <usestringtable>1</usestringtable>
  <onlyreplace>0</onlyreplace>
  <recvLimit>0</recvLimit>
  <contact_db>Contacts</contact_db>
  <calendar_db>Calendar</calendar_db>
  <note_db>Notes</note_db>
</config>

Beispiel einer funktioniierenden Konfiguration des Nokia N97 mini via Bluetooth

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<config>
    <bluetooth_address>'Bluetooth-Adresse'</bluetooth_address>
  <bluetooth_channel>7</bluetooth_channel>
  <interface>0</interface>
  <identifier>PC Suite</identifier>
  <version>1</version>
  <wbxml>1</wbxml>
  <username></username>
  <password></password>
  <type>2</type>
  <usestringtable>0</usestringtable>
  <onlyreplace>0</onlyreplace>
  <onlyLocaltime>0</onlyLocaltime>
  <recvLimit>0</recvLimit>
  <maxObjSize>0</maxObjSize>
  <contact_db>Contacts</contact_db>
  <calendar_db>Calendar</calendar_db>
  <note_db>Notes</note_db>
</config>

Beispiel einer funktionierenden Konfiguration des Nokia X6 via USB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<config>
  <bluetooth_address></bluetooth_address>
  <bluetooth_channel></bluetooth_channel>
  <interface>0</interface>
  <identifier>PC Suite</identifier>
  <version>1</version>
  <wbxml>1</wbxml>
  <username></username>
  <password></password>
  <type>5</type>
  <usestringtable>1</usestringtable>
  <onlyreplace>0</onlyreplace>
  <recvLimit>0</recvLimit>
  <maxObjSize>0</maxObjSize>
  <contact_db>Contacts</contact_db>
  <calendar_db>Calendar</calendar_db>
  <note_db>Notes</note_db> 
 </config>

Erfolgreich getestete Geräte

via http-Server

via OBEX-Client und USB

via OBEX-Client und Bluetooth