Synchronisation de Kontact (KDE) avec un Nokia Serie 60 (6630 – 6680 …) [Experimental] (Adaptable à Gnome et Evolution)

Ce très long article expose un début de solution pour synchroniser son téléphone portable avec son agenda sous KDE (korganiser ou kontact). Sur un ton d’article de blog, il tient beaucoup du tutoriel et développe la procédure à suivre via bluetooth. Le cable USB est cependant évoqué à la fin de l’article, mais les tests restent à faire.
Bonne lecture !!!


Que ce soit dans le forum d’ubuntu-fr, ou en général sur le net; on trouve beaucoup d’informations concernant une soit-disant synchronisation entre kde et un nokia. Mais très souvent (trop souvent !), il s’agit en fait que de transfert de fichiers, utilisant le protocole « Obex », et via Bluetooth.
Ceci reste insufisant, à moins de vouloir transférer un à un ses rendez-vous (Format vcalendar compatible -> Bon début).
J’ai biensur commencé mes recherches par un mail à Nokia, mais, alors que ce groupe compte utiliser linux dans ses futurs téléphones, rien n’est prévu pour linux concernant une synchronisation simple comme avec « PC Suites » sous Windows.
Il faut donc mettre la main à la pâte ! Une fois de plus… Mais c’est tellement plus passionnant quand on y arrive car on comprend mieux l’articulation des dialogues entre PC et téléphone. C’est ça, la magie de linux !
Cet article, je l’espère, va vous guider pour une synchronisation d’agenda, mais aussi des tâches et « plus chaotiquement » des contacts.
Je vous préviens d’avance : Tout ceci reste expériemental puisque utilisant des bibliothèques de logiciels encore en développement ! Mais ça marche !

1 – Le fil de mes recherches, pour mieux comprendre la suite…

Au départ, pas de Bluetooth, mais juste un cable USB fourni avec le téléphone. L’idée de vouloir synchroniser mes données ne me semblait pas insurmontable.
Tout à commencé avec ce post du forum de Comment ça marche. J’ai alors compris que cela n’allait pas être simple. Hors de question, dans un premier temps de « pirater » mon téléphone avec GNU Box. La piste à suivre était cette histoire de « Obex over bluetooth ». Pour cela, plus de recherche en français. Seuls des forums en langue de Shakespear ont pu m’aider. Multisync semblait être une solution. Mais « SyncML », le nouveau protocole de synchronisation de donnée utilisé par Nokia (entre autre) n’est disponible que par IP. On retombe sur l’histoire de déblocage du téléphone via GnuBOX.
Une nouvelle piste avec Opensync… En effet, le projet multisync est abandonné et les auteurs sont en justement sur opensync, qui est la même chose en plus souple, plus puissant, plus polyvalent. Opensync est juste un framework de synchro qui peut donc être intégré dans Gnome ou KDE. Pour KDE, l’interface s’appelle kitchensync-opensync (à ne pas confondre avec kitchensync tout cours !). Pour gnome, c’est la nouvelle version de multisync (0.9) qui sert d’interface. Sur le site d’opensync, on trouve tout notre bonheur, avec un dépot pour Dapper Drake, des exemples et des plugins en développement, avec notemment SyncML via Obex via Bluetooth et USB.
Pour conforter mes recherches, j’ai enfin trouvé un post sur un autre blog expliquant un début de démarche, et quelques corrections aux exemples du site Opensync…
Enfin, entre temps, j’ai investi dans une clé USB Bluetooth parfaitement reconnue sous Kubuntu, de marque Sitecom. On peut néanmoins configurer Opensync pour un cable USB

2 – Pré-requis : L’installation du Bluetooth…

Je ne développerais pas l’installation du Bluetooth sous kde. Il existe de bon documents pour cela.
Avant de continuer, assurez-vous que vous arrivez à transférer une image par exemple entre votre PC et votre téléphone (en utilisant un client Obex…).
Par la suite, on re-scannera les périphériques bluetooth en ligne de commande.

3 – Installation de Opensync

Ouvrez-votre sources.list dans un éditeur :

sudo kate /etc/apt/sources.list

Ajoutez conformément au wiki d’Opensync le dépot nécéssaire suivant :

deb http://www.in.fh-merseburg.de/~jahn/ dapper main
deb-src http://www.in.fh-merseburg.de/~jahn/ dapper main

Si nécéssaire, pour les clés GPG :

gpg –keyserver hkp://subkeys.pgp.net/ –recv-keys CB210090B029CB84
gpg –export CB210090B029CB84 | sudo apt-key add –

La liste des « packages » présents sur ce dépot est ici.

Installez maintenant à proprement dit les paquets nécéssaires :

sudo apt-get install libopensync0 libqopensync0 multisync-cli opensyncutils libopensync-plugin-syncml libopensync-plugin-kdepim libopensync-plugin-file kitchensync-opensync

Les 4 premiers paquets me sont pas très bien identifiés. Mais j’ai dû les installer… En revanches, le 5eme permet de faire du SyncML sur Obex via USB ou surtout bluetooth, mais aussi du SyncML via http. Le 6eme sert pour synchroniser kontact (Il existe un paquet pour evolution !) Le 7eme permet juste la synchro de fichiers (Cela me sert pour une sauvegarde !). enfin, le dernier paquet permet d’utiliser Opensync directement sous KDE (GUI). Mais je n’aime pas trop car pas assez souple.

4 – Configuration de Opensync :

Repérez en premier lieu l’adresse bluetooth de votre téléphone. Pour cela, faites dans une console :

$ hcitool scan

Cette commande doit répondre quelque chose du genre :

Scanning …
XX:XX:XX:XX:XX:XX Marc_6680

L’adresse XX:XX:XX:XX:XX:XX est à retenir.

Puis faites :

$ sdptool browse XX:XX:XX:XX:XX:XX

Cette commande vous renverra tous les services offerts via bluetooth pour votre téléphone. Pour notre affaire, on recherche le service SyncMLClient via Obex. Chez moi, cela donne ceci :

Service Name: SyncMLClient
Service RecHandle: 0x10003
Service Class ID List:
« Error: This is UUID-128 » (0x00000002-0000-1000-8000-0002ee000002)
Protocol Descriptor List:
« L2CAP » (0x0100)
« RFCOMM » (0x0003)
Channel: 11
« OBEX » (0x0008)
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
« Error: This is UUID-128 » (0x00000002-0000-1000-8000-0002ee000002)
Version: 0x0100

Repérez le canal (channel) du service… (ici 11)

Maintenant, passons à Opensync :
Consultez l’ensemble des plugins :

$ msynctool --listplugins

Réponse :

Available plugins:
syncml-http-server
syncml-obex-client
file-sync
kdepim-sync

Créez un « groupe » de service, c’est à dire la fonction que vous souhaitez. J’ai appelé mon groupe : nokiakde.

$ msynctool --addgroup nokiakde

Puis ajoutez les services voulus pour ce groupe (syncML et Kdepim):

$ msynctool --addmember nokiakde kdepim-sync $ msynctool --addmember nokiakde syncml-obex-client

Il faut enfin configurer les services:

$ msynctool --configure nokiakde 2

Le 2 est nécéssaire et correspond au deuxième service du groupe, c’est à dire SyncML.
Cette commande vous renverra dans un editeur en ligne de commande. Soit vous l’utilisez, soit, vous fermez cet éditeur pour utiliser kate :

$ kate $HOME/.opensync/group1/2/syncml-obex-client.conf

La configuration est :

<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>
<username></username>
<password></password>
<type>2</type>
<usestringtable>1</usestringtable>
<onlyreplace>0</onlyreplace>
<recvLimit>10000</recvLimit>
<maxObjSize>0</maxObjSize>
<contact_db>Contacts</contact_db>
<calendar_db>Calendar</calendar_db>
<note_db>Notes</note_db>
</config>

Vous êtes maintenant pret pour faire une synchronisation via la commande qui suivante :

$ msynctool --sync nokiakde

Mais je vous conseilles tout de même de lire la suite avant…

Précautions à prendre :

  • Sauvegardez vos données, et surtout vos contacts et vos rendez-vous de votre agenda. Pour KDE, exportez vos données classiquement. Pour votre nokia, le plus sûr est d’utiliser Nokia PC Suite sous Windows si vous possédez encore une partition Windows. Sinon, faites un deuxièmes groupe (nokiafile par exemple) avec comme services syncml-obex-client et file-sync. Le premier plugin sera configuré comme précédemment. Le deuxième aura comme configuration quelque chose du genre :

    <config>
    <path>/home/USERNAME/SaveNokia</path>
    <recursive>FALSE</recursive>
    </config>

    en ayant biensûr créé le répertoire auparavant…

  • Je vous conseille aussi de désactiver la synchronisation de vos contacts sur le téléphone car une fois sur deux, elle entre en conflit avec ceux du PC… Ceci n’est donc pas obligatoire mais il y a bien un risque. Pour désactiver la syncro des contacts, sur un nokia 6680, faites comme ceci :

    Menu -> Connectivité -> Synchr. -> PC Suite -> Modifier mode (menu) -> Onglet de droite -> Mettre non à contacts.

  • Enfin, pour bénéficier d’une synchronisation dans les deux sens, il faut éviter une synchronisation lente; je m’explique…
    Lorsqu’une synchronisation s’initialise, un fichier « lock » est crée dans le répertoire du « group » qui travaille (ex: $HOME/.opensync/group1/). Un fichier de base de donnée est aussi créé. A la fin de la synchronisation, ce fihcier est supprimé et la base de donnée mise à jour. Si la synchro ne s’effectue pas convenablement, ce fichier « lock » n’est pas supprimé et la synchro suivante sera alors en mode lent (slow-sync). Dans ce cas, chacuns des périphériques de synchro (Le tel et kontact) envoient l’ensemble de leurs données afin de les comparer. Le problème est que souvent, il existe une différence et donc un conflit. Régler le conflit par « le plus récent » (newest) est impossible car les évènements du Nokia ne sembles pas datés en terme de création. Régler en ignorant le conflit fera bien souvent ignorer l’ensemble des fichiers ! Pas de syncro en somme. Enfin, il existe « dupliquer », mais je vous laisse imaginer l’ensemble de vos rendez-vous insérés 2 fois, puis 4, puis 8 … (J’ai testé tout ça pour vous 😉 ) …
    En synchro rapide (normale), il ne gère que ce qui est inexistant chez l’un ou l’autre et ça me va ! En cas de conflit, je peux alors ignorer l’évènement (ou le contact). Mais pour ceci, le fichier « lock » doit être absent…
    J’ai donc créé le script suivant afin d’automatiser le lancement de syncro :

    #!/bin/sh #Script permettant, après confirmation via une fenêtre zenity (sudo apt-get install zenity), la synchronisation d'agenda avec opensync. if zenity --question --title "Confirmation" --text "Voullez-vous synchroniser votre agenda avec votre Nokia ?." then 	if test -f $HOME/.opensync/group1/lock 	then 	rm $HOME/.opensync/group1/lock 	fi msynctool --conflict i --sync nokiakde #conflict i pour ignorer les conflits else exit fi 

    N’oubliez pas de rendre votre fichier (script) executable !

  • Méfiez vous des horraires de vos rendez-vous. KDE pense systématiquement recevoir des évènement en heure GMT et les décale de deux heures. J’ai du imposer kontact à travailler en heure GMT (sans pour autant toucher aux paramètres systèmes) pour n’avoir aucun décallage horraire…
    Dans Kontact -> Configuration -> Configurer Kontact -> Calendrier -> Date et heure -> Fuseau Horaire -> « Aucune selection »

Pour allez plus loin :
Pour synchroniser votre téléphone en USB, la méthode est la même, mais le fichier configuration du plugin « syncml-obex-client » est different. A la place de « Bluetooth », on trouve « interface ». Cependant, il semblerai qu’il faille lancer la syncro en « superuser » car le plugin ne trouve par l’accés à l’interface USB. A confirmer, en espérant que celui parmis vous qui testera postera aussi un article ou me le fera savoir pour compléter celui-ci
Si quelqu’un souhaite adapter cet article pour le wiki d’ubuntu-fr, aucun problème ! Contactez-moi
Pour plus d’informations, vous trouverez un exemple ici : http://www.opensync.org/wiki/syncml-guide en langue anglaise.
Vous trouverez aussi le site qui m’a largement insipiré à cette adresse : http://blog.dukanovic.com/?p=5.
Sans oublier http://tuxmobil.org/ Ne perdez pas de vu que Kitchensync-opensync existe en mode fenêtre sous kde et pour gnome : multisync0.90 (en développement), mais pas encore assez souple.

J’espère avoir pû aider un grand nombre d’entre vous qui souhaitiez trouver un début de solution à ce problème. Je suis tout de même frustré de constater une fois de plus l’oubli du monde libre par un grand groupe commercial, comme nokia. La version Mac existe, alors pourquoi pas nous ???


Publié

dans

par

Étiquettes :

Commentaires

7 réponses à “Synchronisation de Kontact (KDE) avec un Nokia Serie 60 (6630 – 6680 …) [Experimental] (Adaptable à Gnome et Evolution)”

  1. Avatar de Yannux

    Super article ! J’avais déjà fait des recherches il y’as plusieurs mois, sans grand résultats hormis obex avec bluetooth.
    Je vais essayer ton tuto mais en adaptant pour l’usb. Si j’ai le temps aujourd’hui ou dans les prochains jours.
    Merci ! 🙂

  2. Avatar de Yannux

    Petit oublie, j’ai synchronisé récemment mon téléphone avec mon compte orange internet. Ils utilisent syncMl avec http je pense.

  3. Avatar de Dramces
    Dramces

    Effectivement, il s’agit de syncml sur http… Mais, pour SFR, l’accés http est forcé sur Vodaphone Live m’obligeant à payer une connexion 3G. Avec la GNUbox, on permet au téléphone de passer via Bluetooth au PC, puis à Internet… Gratos en somme.
    Contrairement à ce que j’avance dans l’article, j’ai essayé GNUbox, mais pas réussi à configurer. J’ai donc laissé tomber sans m’attarder dessus…

  4. Avatar de Xavier
    Xavier

    J’ai un téléphone SAGEM My401X qui semble fonctionner avec syncML, et le client Obex Bluetooth fonctionne parfaitement sous Linux…Je vais de ce pas essayer de transférer tout mon carnet d’adresse !

  5. Avatar de Longhorn

    Merci pour ton tuto…
    Hélas, il m’est impossible de synchroniser mes données… Mon Sagem myX6-2 firmware Orange me plante littéralement dès le début de la synchronisation. Mais ceci me fait pareil avec Windows :p

  6. Avatar de ninja21a
    ninja21a

    J’ai essayé ta méthode, mais j’ai un problème à la connexion :
    Synchronizing group "nokiakde"
    Member 2 of type syncml-obex-client had an error while connecting: There are no valid USB interfaces
    Member 1 of type kdepim-sync just connected
    Member 1 of type kdepim-sync just disconnected
    All clients have disconnected
    The sync failed: Unable to connect one of the members
    Error synchronizing: Unable to connect one of the members
    Pipe closed! Exiting.
    Pipe closed! Exiting.

    Une idée ?

    Merci.

  7. Avatar de Rumeur

    "il tient beaucoup du tutoriel et developpe la procedure a suivre via bluetooth", c’est tout 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *