Synchroniser un iPAQ 2210 et Evolution sous Lucid Lynx

Généralités

Le Pocket PC iPAQ HP iPAQ 2210 fait sans doute figure de dinosaure (Wince 2003!) mais il est increvable et un échange standard de batterie lui ayant redonné de la vigueur, l'auteur de cette page a souhaité continuer à l'utiliser en le synchronisant avec Evolution sur son nouvel eeePC 1005 P d'Asus, gréé en Ubuntu "Lucid Lynx".

Cette distribution ne manque pas de qualité (une fois qu'on a rétabli le GIMP, bien sûr :-). Cependant, elle apporte un certain nombre de changements dans les détails de structure des dossiers système et des applications gérant les communications avec le Pocket PC. Notamment, celui-ci étant ancien, il faut utiliser la connexion série et les utilitaires qui permettaient de faire cela antérieurement ont évolué voire disparu. La méthode décrite pour un eeePP 900 sous Hardy n'est donc plus valable.

Cela dit, les choses sont plus simples sous Lucid, personne ne s'en plaindra...

Installations

Avant toute chose, il faut vérifier la présence de quelques modules et les installer si ce n'est pas déjà fait. Synaptic se prête parfaitement à ce travail. Il s'agit des paquets suivants et de leurs dépendances éventuelles :

Sur le dernier point, on peut lire dans la page de manuel de synce la recommandation suivante:

"for older devices or to use serial with WM5, if synce-hal is not used you will require the synce-serial package. You will of course also need a dccm daemon, synce-hal or odccm is recommended"

Vu l'ancienneté du Pocket, on a ici opté pour odccm, en espérant une meilleure compatibilité.

Lorsque Synaptic procède à l'installation, de manière inhabituelle apparaît en cours de processus une fenêtre de configuration automatique de synce-serial :


Laisser les options par défaut et cliquer sur suivant pour que l'installation s'achève.

Mise en place de la connexion Lucid - iPAQ

Pour la phase de mise au point, il est préférable de désactiver le mot de passe sur le PDA, s'il y en a un.Ensuite, brancher le PDA sur un port USB de l'ordinateur, avec le câble ad hoc.

Sur l'eeePC, dans un terminal, il est possible de vérifier que l'iPAQ est vu par la commande :

$ lsusb

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 03f0:1016 Hewlett-Packard Jornada 548 / iPAQ HW6515 Pocket PC
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 13d3:5111 IMC Networks
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

On peut aussi voir que la machine est bien connectée à un port série de l'ordi :

$ dmesg | tail -8

[28115.014698] USB Serial support registered for generic
[28115.017232] usbcore: registered new interface driver usbserial_generic
[28115.017247] usbserial: USB Serial Driver core
[28115.037424] USB Serial support registered for PocketPC PDA
[28115.037700] ipaq 2-1:1.0: PocketPC PDA converter detected
[28115.040305] usb 2-1: PocketPC PDA converter now attached to ttyUSB0
[28115.040448] usbcore: registered new interface driver ipaq
[28115.040456] ipaq: v0.5:USB PocketPC PDA driver

Cette sortie montre que l'iPAQ est connecté au ttyUSB0. On va donc pouvoir lancer les opérations. Débrancher l'iPAQ de la prise USB de l'ordinateur et lui faire faire un redémarrage à chaud (bouton de soft reset à l'arrière).

Ces travaux préliminaires étant accomplis, on va dérouler à la main, dans l'ordre, une procédure complète de connexion et de mise en place de la liaison série. Pour cela, commencer par débrancher le PDA de la prise USB. Ensuite, les choses se passent en trois temps.

  1. Lancer l'utilitaire qui gère la communication avec le PocketPC et répond au besoin des applications clientes par la commande suivante, qui ne provoque pas de réponse du système :

    $ sudo odccm

    puis brancher le câble de l'iPAQ sur la prise USB de l'eeePC ;
  2. Configurer la liaison série par :

    $ sudo synce-serial-config ttyUSB0

    qui doit normalement répondre :

    You can now run synce-serial-start to start a serial connection.

  3. Enfin lancer la liaison série par :

    $ sudo synce-serial-start ttyUSB0

    qui doit normalement répondre quelque chose du genre :

    Serial connection established.
    Using interface ppp0
    Connect: ppp0 <--> /dev/ttyUSB0
    Cannot determine ethernet address for proxy ARP
    local IP address 192.168.131.1
    remote IP address 192.168.131.129

    synce-serial-start is now waiting for your device to connect

Dans le même temps, sur l'iPAQ, la fenêtre "Utilisateur authentifié" s'est affichée et la double flèche de connexion est apparue dans le bandeau supérieur. A ce stade, le canal de communication est établie entre les deux machines et des applications peuvent l'utiliser. Par exemple, il est possible d'obtenir l'état du Pocket PC par :

$ synce-pstatus

** Message: Device /org/freedesktop/Hal/devices/usb_device_3f0_1016_noserial_if0_serial_usb_0 not fully set in Hal, skipping Version
=======
Version: 4.20.1081 (Ozone: Pocket PC 2003 (?))
Platform: 3 (Windows CE)
Details: ""

System
======
Processor architecture: 5 (ARM)
Processor type: 2577 (StrongARM)
Page size: 0x10000

Power
=====
ACLineStatus: 01 (Online)

Status for main battery
=========================
Flag: 8 (Charging)
LifePercent: 100%
LifeTime: Unknown
FullLifeTime: Unknown

Status for backup battery
=========================
Flag: 1 (High)
LifePercent: 100%
LifeTime: Unknown
FullLifeTime: Unknown

Store
=====
Store size: 29868032 bytes (28 megabytes)
Free space: 29283916 bytes (27 megabytes)

Memory for storage: 29941760 bytes (28 megabytes)
Memory for RAM: 29941760 bytes (28 megabytes)

==============

L'affichage de ces informations montre qu'on est sur la bonne voie. Il faut maintenant créer un partenariat entre les deux machines. On peut commencer par regarder quels sont les partenariats existants par :

$ synce-matchmaker status

** Message: Device /org/freedesktop/Hal/devices/usb_device_3f0_1016_noserial_if0_serial_usb_0 not fully set in Hal, skipping
Current partner index: none

Si le PDA avait 2 partenariats, il faudrait en remplacer un des deux par le nouveau souhaité, comme indiqué dans cette page ($ 9). Dans le cas présent, l'iPAQ ayant été ré-initialisé à froid pour lui donner une nouvelle jeunesse, il n'existe pas de partenariat. On en crée un par  :

$ synce-matchmaker create

** Message: Device /org/freedesktop/Hal/devices/usb_device_3f0_1016_noseril_if0_serial_usb_0 not fully set in Hal, skipping
Partnership creation succeeded. Using partnership index 1.

L'ordi râle un peu mais l'important est que le partenariat est créé! La preuve :

$ synce-matchmaker status

** Message: Device /org/freedesktop/Hal/devices/usb_device_3f0_1016_noserial_if0_serial_usb_0 not fully set in Hal, skipping
Current partner index: 1
Partner 1 id: 0x043c5081
Partner 1 name: "gilles-1005"

Pour terminer la connexion :

$ sudo synce-serial-abort

synce-serial-abort-device has requested shutdown of synce-device0.

Sur l'ipaq la double flèche disparaît, il est possible de le débrancher de l'USB.

Automatisation des opérations

C'est tout simple. Au terminal, se rendre dans le dossier/etc/udev/rules.d/ par :

$ cd /etc/udev/rules.d

puis créer un lien symbolique dans ce dossier par :

$ sudo ln -s /usr/share/synce/synce-udev.rules 60-synce.rules

Ceci a pour effet de rendre visible par udev le fichier 60-synce.rules. Sans entrer dans les détails, il suffit de savoir que udev est une application qui permet de lancer automatiquement des actions lorsqu'un périphérique est connecté (ou déconnecté) et le fichier 60-synce.rules dit à udev ce qu'il faut faire dans le cas de la connexion série qui nous intéresse. Pour que udev s'en rende compte, il faut le forcer à redémarrer par :

$ sudo restart udev

udev start/running, process 12345

Voilà, c'est tout, au prochain démarrage, la liaison série devrait s'établir automatiquement.

Utilisation

Synchronisation de l'iPAQ avec Evolution

Juste après le démarrage suivant de l'ordinateur, la commande :

$ ps -e | grep dccm

974 ?     00:00:00 odccm

montre que odccm est déjà au travail en tâche de fond. Au branchement de l'iPAQ, la connexion s'effectue immédiatement et l'on peut suivre le déroulement de l'affaire sur l'écran du PDA.

Lorsque la liaison série est en route, l'application Multisync peut être lancée (menu Applications > Accessoires > Multisync).

Cliquer sur le bouton "New..." pour créer une nouvelle paire de synchronisation. Choisir les deux éléments de la paire comme suit :


Paramétrage de la paire de synchronisation.

puis cliquer sur le boutons "Options" du plugin Evolution pour cocher les informations à synchroniser et valider. Dans l'onglet "Synchonize options", choisir la méthode de résolution des conflits (source de référence ou interrogation de l'utilisateur). Après validation, de retour dans la fenêtre principale de Multisync, cliquer sur le bouton Sync.


La fenêtre principale de Multisync.

Les informations sont transférées. La petite flèche du PDA tourne en permanence. Une fois les opérations terminées, fermer Multisync et débrancher la prise USB du PDA.

puis cliquer sur le boutons "Options" du plugin Evolution pour cocher les informations à synchroniser et valider. Dans l'onglet "Synchonize options", choisir la méthode de résolution des conflits (source de référence ou interrogation de l'utilisateur). Après validation, de retour dans la fenêtre principale de Multisync, cliquer sur le bouton Sync.

Les informations sont transférées. La petite flèche du PDA tourne en permanence. Une fois les opérations terminées, fermer multisync et débrancher la prise USB du PDA.

Nota : Multisync offre en options la possibilité d'afficher un bouton pour les synchronisations autres que la première effectuée. L'emploi de ce bouton semble poser des problèmes (voir ici ou ici par exemple). Il semble donc préférable de ne pas l'utiliser, "Sync" faisant apparemment le travail attendu !

Gestion des fichiers

Après avoir installé synce-gnomevfs, on pouvait penser que nautilus pourrait accéder aux fichiers. Ce n'est pas le cas ! L'auteur de cette page a cherché une solution et écumé les forums... sans succès : il n'a pas réussi à faire fonctionner nautilus avec synce, le navigateur s'entêtant à répéter "nautilus ne reconnait pas les emplacements synce"...

Alors, il existe deux solutions.

Rétablissement et gestion du mot de passe

Lorsque le mot de passe est remis sur le PDA, une tentative de connexion se solde par une erreur. Si l'on tient à ne pas avoir à désactiver momentanément la protection par mot de passe, il faut qu'un logiciel client se charge de fournir le mot de passe à odccm.

D'après ce qu'on peut lire ici ou là, synce-trayicon peut faire ce travail. Toutefois, ceux qui ne veulent pas s'embarrasser d'un nouveau programme résident en tâche de fond peuvent utiliser le petit programme en python ci-joint, à lancer après avoir connecté le PDA sur la prise USB. Ce programme vérifie l'état de l'appareil connecté et, si nécessaire, demande le mot de passe à l'utilisateur puis le transmet au PDA pour le déverrouiller.

Pour l'utiliser :

Après connexion, le programme affiche dans le terminal les informations disponibles et demande d'appuyer sur Entrée pour terminer, ce qui referme la console. L'accès au PDA est alors possible.

NOTA 1 : si une connexion se passe mal et se termine par une erreur, avant de recommencer la procédure, il faut relancer le PDA (soft reset)

NOTA 2 : comme monté plus haut, les appels à synce produisent invariablement un message d'avertissement ésotérique du type : "** Message: Device /org/freedesktop/Hal/devices/usb_device_3f0_1016_noserial_if0_serial_usb_0 not fully set in Hal, skipping". Il est peut-être dû à l'emploi de odccm, méthode prétendue obsolète et destinée à être remplacée par synce-hal... En tout cas, ce message n'est pas bloquant.