Afin de réaliser la synchronisation, il faut installer certains éléments.
- usb-rndis : Permet de créer l'interface réseau entre le PocketPC et l'ordinateur afin de communiquer ensemble
- odccm : envoi les données adéquates à Windows Mobile pour qu'il pense être connecté à ActiveSync
- synce : gère les envois et réception des données lors de la synchro
- opensync : gère la synchronisation entre les différentes sources (synce, kdepim, evolution, etc...)
Désactivation de NetworkManager
Pour communiquer avec le PocketPC, le driver créé une carte réseau virtuelle entre le pda et l'ordinateur. Cependant, NetworkManager saute dessus et essaye de trouver une adresse IP à cette interface. Il y arrive mais prend alors cette connexion comme connexion par défaut et coupe votre connexion normale.
Pour cela, on va configurer l'interface dans /etc/network/interfaces en rajoutant ceci à la fin du fichier :
auto rndis0 allow-hotplug rndis0 iface rndis0 inet dhcp
Connexion via usb
Installation et compilation
Afin de connecter le PocketPC par usb, il faut recompiler usb-rndis avec la version présente sur le dépôt de synce.
Pour cela, ajouter le dépôt suivant dans /etc/apt/sources.list et on en profites pour ajouter le dépôt d'opensync :
deb http://ppa.launchpad.net/synce/ubuntu gutsy main deb-src http://ppa.launchpad.net/synce/ubuntu gutsy main deb http://opensync.gforge.punktart.de/repo/opensync-0.21/ feisty main deb-src http://opensync.gforge.punktart.de/repo/opensync-0.21/ feisty main
Faites un update et installer le module à l'aide de module-assistant
sudo apt-get update sudo apt-get install usb-rndis-source cdbs sudo module-assistant auto-install usb-rndis
J'ai aussi été obligé de recompiler usb-rndis-lite :
sudo apt-get install linux-headers-generic build-essential subversion svn co http://synce.svn.sf.net/svnroot/synce/trunk/usb-rndis-lite/ make sudo ./clean.sh sudo make install
On fini en installant odccm et ses librairies :
sudo apt-get install odccm librra0-tools librapi2-tools
Test
Avant de tester et jusqu'à ce que je le mentionne, désactiver le code PIN de votre PocketPC pour la suite
Pour cela, allez dans Paramètres, Onglet Personnel, Verrouiller, puis décochez Demander le mot de passe...
Si tout ce passe bien, vous devriez être capable d'afficher le contenu de la mémoire du PocketPC en lançant pls
$ pls Directory 2006-03-04 11:00:10 Mes images/ Directory 2006-03-04 11:00:10 Modèles/ Directory 2006-03-04 11:00:10 Personnel/ Directory 2006-03-04 11:00:10 Bureau/ Directory 2006-03-04 11:00:10 Ma musique/ Directory 2007-04-27 01:05:24 briefcase/
Avant d'aller plus loin
Si pls ne vous a rien affichez, ça ne sert à rien de passer à l'étape suivante. Vérifiez les points suivants en regardant le résultat des commandes suivantes (branchez votre pocket pc avant de les lancer) :
$ lsmod | grep rndis rndis_host 8320 0 cdc_ether 7552 1 rndis_host usbnet 20104 2 rndis_host,cdc_ether usbcore 138632 8 rndis_host,cdc_ether,usbnet,gspca,usbhid,ehci_hcd,ohci_hcd $ ifconfig | grep rndis rndis0 Lien encap:Ethernet HWaddr 80:00:60:0F:BE:EF $ cat /var/log/syslog | grep rndis | grep kernel Apr 6 23:14:42 alexandre kernel: [12195.745146] rndis0: register 'rndis_host' at usb-0000:00:0b.0-1, RNDIS device (SynCE patched), 80:00:60:0f:e8:00 Apr 6 23:14:42 alexandre kernel: [12195.745294] usbcore: registered new interface driver rndis_host
Mise en place de la synchronisation
Installation d'opensync
Pour synchroniser les données, on utilise opensync. Opensync est un framework de synchronisation auquel on ajoute les plugins se chargeant de récupérer et d'écrire les données à synchroniser. On a déjà ajouté les dépôts d'opensync lors de la première étape, il ne nous reste plus qu'a installer les paquets :
sudo apt-get install libopensync-plugin-kdepim libopensync-plugin-python synce-sync-engine opensync-plugin-synce msynctool
Normalement pour evolution, installez ceci à la place devrait fonctionner (je n'ai pas testé car je n'ai pas gnome d'installé, n'hésitez pas à me dire si cela fonctionne) :
sudo apt-get install libopensync-plugin-evolution2 libopensync-plugin-python synce-sync-engine opensync-plugin-synce msynctool
Attention lors de l'installation des paquets, il existe opensync-plugin-xxx et libopensync-plugin-xxx. Le premier est une ancienne version du plugin qui ne sera pas détecté par opensync.
Creation du partenariat avec le Pocket PC
Commencez par récupérer le fichier de configuration (qui n'est pas créé automatiquement) :
mkdir -f ~/.synce cd ~/.synce wget http://synce.svn.sourceforge.net/svnroot/synce/trunk/sync-engine/config/config.xml
Vous pouvez alors lancer la commande sync-engine qui va initier la connection avec le pocket pc.
Créez ensuite le partenariat, attention : seul deux partenariats simultanés sur l'appareil sont autorisé. Vous pouvez vérifier et supprimer un partenariat en débranchant le pocket pc et en allant dans Programmes -> ActiveSync. Relancez ensuite sync-engine pour la prise en compte de la suppression d'un partenariat. Pour créer le partenariat, exécutez la commande suivante :
create_partnership.py "Linux desktop" "Contacts,Calendar,Tasks"
Linux desktop est la description du partenariat (tel quelle apparaîtra dans ActiveSync sur le pda) et qui est composé d'au plus 20 caractères (évitez les accents, on se sait jamais :p). Vous pouvez ensuite choisir ce que vous désirez synchroniser :
- Contacts
- Calendar
- Tasks
- Files
(Je n'ai pas testé les fichiers pour le moment)
Configuration d'OpenSync
A cause d'un problème de packaging, le plugin de synce pour Opensync n'est pas copié dans le bon répertoire. On va donc créer un lien afin de pouvoir l'utiliser
cd /usr/lib/opensync/python-plugins sudo ln -s ../plugins/python-plugins/synce-opensync-plugin-2x.py synce.py
Vérifiez que tous les plugins sont bien installés en exécutant la commande suivante :
$ msynctool --listplugins Available plugins: synce-opensync-plugin testmodule file-sync kdepim-sync
file-sync n'est pas obligatoire et bien sur kdepim-sync est remplacé par evo2-sync si vous souhaitez utiliser evolution.
Il faut ensuite créer un groupe de synchronisation contenant les différentes sources à synchroniser. Voici les commandes qu'il faut taper pour le faire :
msynctool --addgroup pocketpc msynctool --addmember pocketpc synce-opensync-plugin msynctool --addmember pocketpc kdepim-sync
(il faut toujours remplacer kdepim-sync par evo2-sync pour evolution)
Lancement de la synchronisation
On touche au but, commencez par fermer Kontact pour éviter tout blocage du fichier de contact et du calendrier par celui-ci.
Lancez ensuite :
msynctool --sync pocketpc
Au bout de quelques secondes, tout devrait être synchronisé :)
Si vous avez des problèmes d'accents dans vos contacts, vous devez convertir votre carnet d'adresse en UTF-8. Pour cela, vous pouvez utiliser recode :
recode iso8859-1..utf8 ~/.kde/share/apps/kabc/std.vcf
PocketPC protégé par PIN
A cause d'un bug de synce et d'un problème de packaging, on doit effectuer quelques modifications pour pouvoir connecter notre Pocket PC si celui-ci est protégé par un mot de passe.
On commence par télécharger l'interface de demande de passe :
sudo apt-get install python-gtk2 cd /usr/lib/python2.5/site-packages/SyncEngine sudo wget http://synce.svn.sourceforge.net/viewvc/*checkout*/synce/trunk/sync-engine/tools/authgui.py sudo chmod +x authgui.py
Il faut ensuite modifier un fichier python pour indiquer le bon chemin de l'interface :
kdesu kate /usr/lib/python2.5/site-packages/SyncEngine/auth.py #Modifier la ligne 20 de AUTH_TOOLS_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),"../tools") #en AUTH_TOOLS_PATH = os.path.dirname(os.path.abspath(__file__))
Encore une modification dans un fichier pour corriger un bug :
kdesu kate /usr/lib/python2.5/site-packages/SyncEngine/kernel.py #modifier ligne 278 if self.partnerships != None: #en if len(self.PshipManager.GetList()) != 0:
N'oubliez pas de remettre un pin, de relancer sync-engine. Il devrait lors du redémarrage vous demandez le code de votre pocketpc puis s'y connecter. Vous pouvez alors tenter de relancer une synchronisation avec msynctools.
On récapitule
Comme vous avez pu le remarquer, c'est pas super user-friendly, mais on fini par y arriver. Voici donc les différentes étapes a effectuer maintenant pour synchroniser votre Pocket PC :
- Branchez votre Pocket PC sur l'usb, attendez quelques secondes le temps que la carte réseau rndis0 soit montée et que l'initialisation de la connexion soit opérationnelle (une dizaine de secondes environ).
- Ouvrez un terminal, lancez la commande
sync-engineet tapez si nécessaire votre code PIN. Attendez ensuite que le log arrête de causer. - Fermez Kontact
- Ouvrez un autre terminal puis lancer msynctool --sync pocketpc
- Une fois la synchronisation terminée, vous pouvez débrancher votre pocket pc et coupez
sync-engine
Si vous le souhaitez, vous pouvez utiliser Kitchensync à la place de msynctool pour lancer la synchronisation de manière graphique, cependant vu que tout est plus ou moins en beta, je pense que c'est mieux de lancer ça dans une console histoire de voir ce qu'il se passe :)
C'est bien possible qu'il manque aussi des paquets pour la compilation de certains trucs vu que j'ai pas mal de paquet de dev déjà installé. Hésitez pas à me faire par de vos remarques ou bugs dans les commentaires.
Voici quelques liens qui m'ont aidé pour rédiger cet article :
* http://www.synce.org/ * http://en.opensuse.org/Synce