Palm et Linux II :Synchroniser son Visor sous Linux sur USB

< Précédent
Haut
Palm et Linux
Sommaire
Restaurer son Palm sous Linux

v1.0 - mar 2001    v1.1 - juin 2001

federico GONZALEZ

gonzalez.federico@free.fr
Ou quoi faire pour synchroniser son palm sous GNU/Linux
Remarque préalable : Ce document s'intéresse à la synchronisation d'une machine tournant sous Palm OS ( ie : Visor DeLuxe, Visor Prism, Visor Platinum; etc... ) et branchée sur un port USB ( remarque : les palm m500 et m505 ne sont pas supportés encore sur le port USB mais en passant par un craddle série, tout marche correctement ). Pour les machines branchées sur port série, veuillez cliquer sur le lien suivant :
machines sur port série et Linux
NB : afin de nous mettre d'accord et que les commandes soient claires pour vous, je précise que l'invite de l'ordinateur sera unix$. Dans mon ordinateur, lorsque je suis dans mon répertoire personnel (/home/federico) alors l'invite unix$ correspond à [federico@ouranos federico] $.
Rappel : pour connaitre le chemin exact du répertoire courant, la commande pwd vous permet d'afficher ce chemin.
Nous ferons aussi la différence entre l'utilisateur normal unix$ qui a un accès réduit à la machine et le super-utilisateur (root) qui a droit de vie et de mort sur la machine unix#.

Remarque importante : Sur le CD de la distribution mandrake, les paquetages se trouvent dans le répertoire :
/mnt/cdrom/Mandrake/RPMS ( pour le CD1 ) et /mnt/cdrom/Mandrake/RPMS2 ( pour le CD 2 ).

ajout 15/06/2001 : Je précise que le matériel testé ici est le suivant : un ordinateur portable Toshiba© satellite Pro 4290, un visor DeLuxe (PalmOS 3.1.H3) sur craddle USB, un visor Platinum (PalmOS 3.5.2H) sur craddle USB ( le même que le DeLuxe ) et GNU/Linux Mandrake 7.2. - Ce Document a été en partie réalisé sous Netscape Composer et sous Gvim le tout sous XFCE3/ICEWm. Dans ce document je ne traite pas du Visor Prism ni du Edge puisque je ne les ai pas. Par contre, si un lecteur a quant à lui un tel Visor et le synchronise par cette méthode, alors il peut m'envoyer un petit mail pour me prévenir, j'ajouterai à ce document son expérience...

ajout du 24/12/2001 : Etant passé à une mandrake 8.1 ( ça m'évite d'avoir à transporter un CD rien que pour le serveur graphique SVGA qui supporte ma carte graphique ), je me suis trouvé confronté à devfs et à l'impossibilité de synchoniser mon visor autrement qu'en étant root. J'ai cherché ( et trouvé ) la solution en errant dans le répertoire /etc. Tout ce qu'il faut savoir ( après avoir lu cette page ci ) afin de synchroniser un visor sur le port usb lorsque devfsd ( le démon de devfs ) est activé en cliquant ici !


0 - Préalable

Au préalable, il faut d'abord vérifier que le système contient les éléments suivants :
  1. Un PC tournant sous Linux et ayant un port USB libre
  2. Un organiseur tournant sous PalmOS de marque HANDSPRING ( Visor DeLuxe ou Platinum
  3. Une station d'accueil sur port USB
  4. Le CD#1 de la distribution Mandrake 7.2, distribution avec laquelle j'ai fait mes tests, et qui contient le kernel 2.2.17.

1 - Vérification du matériel

Il faut avoir le matériel suivant :

2 - Configuration du noyau

Avant toute chose il faut aller voir dans le répertoire /lib/modules/2.yy.xx/usb si les modules suivant sont disponibles : En effet ce seront les modules que nous devront charger dans le noyau pour que la synchronisation puisse fonctionner.
Pour cela logguons nous en tant que root :
unix$ su
et on obtient ( après entrée du mot de passe de root ) :
unix#
puis tapons la commande lsmod pour savoir quels sont les modules déjà chargés en mémoire ( NB : il se peut qu'il y en ait beaucoup, donc redirigeons la sortie de la commande vers l'éditeur less afin de pourvoir scroller verticalement avec les flèches haut/bas )
unix# lsmod | less
la liste des modules s'affiche alors, pour exemple, voici ce que j'obtiens sur le portable à partir duquel je fait mes tests :

Module                  Size   Used  by
serial_cs               5456   0  (unused)
irda                   80304   1
autofs                  9456   2  (autoclean)
snd-pcm-oss            16848   0
snd-pcm-plugin         13040   0  [snd-pcm-oss]
snd-mixer-oss           4288   0  [snd-pcm-oss]
snd-card-ymfpci         3872   0
snd-mpu401-uart         2368   0  [snd-card-ymfpci]
snd-rawmidi             9728   0  [snd-mpu401-uart]
snd-seq-device          3488   0  [snd-rawmidi]
snd-ymfpci             34688   0  [snd-card-ymfpci]
snd-pcm                29792   0  [snd-pcm-oss snd-pcm-plugin snd-ymfpci]
snd-ac97-codec         24032   0  [snd-ymfpci]
snd-mixer              23536   0  [snd-mixer-oss snd-ymfpci snd-ac97-codec]
snd-opl3                4336   0  [snd-card-ymfpci]
snd-timer               8192   0  [snd-pcm snd-opl3]
snd-hwdep               3056   0  [snd-opl3]
snd                    37008   1  [snd-pcm-oss snd-pcm-plugin snd-mixer-oss snd-card-ymfpci snd-mpu401-uart snd-rawmidi snd-seq-device snd-ymfpci snd-pcm snd-ac97-codec snd-mixer snd-opl3 snd-timer snd-hwdep]
soundcore               2800   6  [snd]
ds                      6448   2  [serial_cs]
i82365                 22928   2
pcmcia_core            45984   0  [serial_cs ds i82365]
nls_cp437               3952   2  (autoclean)
vfat                   9408   1  (autoclean)
fat                    30432   1  (autoclean) [vfat]
supermount             14224   2  (autoclean)
visor                   6464   0  (unused)
usbserial              18544   0  [visor]
usb-uhci               19184   0  (unused)
usbcore                43632   1  [visor usbserial usb-uhci]

comme vous pouvez le constater ( caractères gras ) les modules sont déjà installés dans mon cas. Maintenant nous allons voir comment charger ces mêmes modules dans vos noyaux. Pour ce, nous allons les charcher dans l'ordre ( NB : si certains de ces modules sont déjà installés, il n'est pas la peine de les réinstaller ). Commençons par celui qui va prendre en charge le bus usb :
unix# modprobe usbcore
puis celui qui transforme le port usb en port série pour communiquer avec la machine sous PalmOS :
unix# modprobe usb-uhci et
unix# modprobe usbserial
puis le module spécifique pour communiquer avec le visor
unix# modprobe visor
vous remarquerez que bien que chaque module porte l'exension .o lorsque l'on tape la commande, on ne l'écrit pas. Dès lors, ces modules sont intégrés et chargés dans le noyau. On peut donc maintenant communiquer avec le Visor.

Remarques : Dans la distribution mandrake j'ai fait exactement ceci et quelle ne fut pas ma surprise lorsqu'au redémarrage suivant, ces modules n'étaient pas intégrés au noyau ! Lecture de la documentation, divers essais, et j'ai finalement vu que certains modules étaient chargés dans un fichier spécial afin que le système les réintègre dans le noyau à chaque demarrage.
Ce fichier est /etc/modules. Il suffit donc d'ouvrir ce fichier avec un éditeur ( emacs ou vi ) et d'écrire ne nom de chaque module dans l'ordre d'installation :

exemple de fichier /etc/modules
bttv
usbcore
usb-uhci
usbserial
visor

rappel : ce fichier étant dans le répertoire /etc/, seul root y a accès.

PS : n'oubliez pas de vous renseigner sur comment utiliser emacs ou vi avec les pages de manuel.
NB : si le module est usb-ohci, alors il faut vous adresser à d'autres pages en plus de la mienne si jamais cela ne marche pas.

Une fois ces modules chargés, il suffit de continuer la configuration du système.

3 - Configuration du système

La distribution que j'utilise est ici la Mandrake 7.2. A l'heure où vous lirez ces pages, il est plus que possible que les distributions dans le commerce commencent à intégrer le noyau 2.4.3 ( j'entends parler de la MDK 8.0 (traktopel) ou de la SuSE 7.1 ). En effet, dans cette distribution , les ports usb sont désigné dans le répertoire /dev par /dev/ttyUSB* avec * variant de 0 à 15. Dans les noyaux 2.4.X il est possible d'utiliser un autre système de fichier nommé devfs qui est complètement différent et que je n'ai jamais utilisé pour l'heure.
Mais contrairement à ce qui se passe pour les ports séries où /dev/ttyS0 = COM 1, ici le port /dev/ttyUSB0 désigne un port générique. Si bien qu'aucune synchronisation ne se fera sur ce port. Si votre Visor est sur le port USB1, alors sous linux, il sera accessible par le port /dev/ttyUSB1.
Autorisons donc tous les utilisateurs(trices) à écrire sur ce port, il faut faire cette maniupulation sour l'identité root :
unix# chmod 666 /dev/ttyUSB1

4 - vérification de la communication

Première chose à faire : vérifier l'installation du paquetage pilot-link
unix$ rpm -q pilot-link
si la réponse est négative, il faut l'installer :
rpm -ivh /mnt/cdrom/Mandrake/RPMS/pilot-link-xxxx.rpm

PS : pour les utilisateurs de debian le paquetage est donc pilot-link****.deb et s'installer par
        unix# apt-get install pilot-link
ou par
    dpkg pilot-link

NB : Le paquetage pilot-link contient de nombreux outils de communication entre les machines sous palm et linux. Pour plus d'informations unix$ man pilot-link

En tant que simple utilisateur, il faut maintenant vérifier que la connexion s'effectue sans aucun problème. Comme nous avons un peu de temps ( à perdre ? ) autant faire un backup complet ! Restons dans ( ou ouvrons ) un terminal, et en mode texte :
N'oubliez pas de remplacer "Mon_Login" par votre propre login.
unix$ mkdir /home/Mon_Login/MonVisor
puis tapez la seconde ligne sans valider la commande :
unix$ pilot-xfer -p /dev/ttyUSB1 -b /home/Mon_Login/MonVisor
Une fois cette commande tapée mais non validée, appuyez sur le bouton HotSync et attendez 2 secondes avant de valider la ligne ci-dessus. Et voilà, le backup s'initialise.

PS : Cette sauvegarde peut être longue ( car la valeur par défaut de la variable PILOTRATE=9600 ) et même s'interrompre en cours de route ou afficher des codes Hexa à l'écran. Mais en tout cas, si elle s'effectue, cela prouvera que la communication est établie. Pour modifier la valeur de la vitesse de transfert, il suffit de taper la commande :
unix$ export PILOTRATE=XXXXX où XXXXX est la vitesse de transfert des données ( personnellement j'utilise 57600 ).

Pour la suite, il s'agit de configurer J-Pilot
 

5 - configuration de l'interface graphique de synchronisation.

Arrivé(e) ici, il nous faut choisir et configurer notre interface graphique. Je vous propose parmi les choix suivants :
 


d'installer jpilot pour plusieurs raisons :
 

Aussi regardons de près les autres paquetages à installer puisque le fait d'installer sans que cela provoque d'erreurs.
En mode console :
linux$ su
linux# rpm -ivh jpilot-0.98.1-5mdk.rpm
linux# rpm -ivh jpilot-Mail-0.0.3-1mdk.rpm
linux# rpm -ivh jpilot-syncmal-0.52-2mdk.rpm
quittons :
linux# exit
linux$ exit
lançons ensuite l'interface graphique ( si elle ne l'est pas déjà ).
là lançons jpilot Voilà l'interface qui se lance. Commençons par la configurer. (Menu File > Preferences )
là une fenêtre s'ouvre, elle laisse les choix suivants :
( Notons que les dates et heures prises comme exemple sont les dates et heures actuelles ) Puis viennent une série de cases à cocher ou non ( ils sont assez clair à mon avis et en plus je n'y ai jamais touché : Nous sommes prêts à utiliser jpilot ! Vous avez ensuite la liberté d'utiliser les différents plug-in qui sont accessible
dans le menu Plugins (qui apparaît si vous en installez. Celui que j'utilise actuellemnt est le plugin syncMAL ( pour la
synchronisation des channels AvantGo ) mais il existe le plug-in mail et aussi le plug-in expense si je ne me trompe.

5 - liens utiles et remerciements

Ce mini document est tiré de mon expérience personnelle, il est librement redistribuable selon les termes de la licence GNU. Je vous recommande également vivement la lecture des (mini-)HOWTO concernant ce sujet. Si des erreurs sont présentes dans ce document, vous êtes chaudement invité à me le faire savoir grâce à ce lien.

Dernière astuce : lorsque vous voudrez synchroniser votre visor sous linux, n'oubliez pas d'appuyer sur le bouton de hotsync 3 ou 4 secondes avant de valider la commande de synchronisation, ou de backup ou de communication. De même sous jpilot, il faut toujours appuyer sur le hotsync 2 ou 3 secondes avant d'appuyer sur "sync" ou sur "backup" !  ( mais pas 6 ou 7 secondes après, vous obtiendriez une erreur ! )



Bonnes synchros ! Et bon nux.
fede. B^)


Modification #1 : Ce document ne fonctionne pas pour les m50x comme me l'a confirmé un mail de XXXXX. Je suppose fortement que cela provient du fait que le module visor.o de la distribution mandrake 7.2 n'est écrit que pour les machines de Handspring. Deux possibilités s'offrent à nous : soit passer par un craddle série ( donc revoir la page sur palm et linux ) soit trouver sur le net un module plus récent gérant les nouvelles machines de palmOS (m100 / m105 / m500  / m505 ) qui se branchent sur les port séries.

Modification #2 : Les discussions que j'ai pu avoir sur le channel irc.openprojects.net:6667#palmchat m'ont renseigné sur le pourquoi de la non synchronisation des m50x avec Linux : ces deux modèles ne sont pas supportés. Cependant des essais fructueux ont été réalisés avec un craddle série ( acheté à Palmshop - rue Brey à  Paris ) il suffit simplement de brancher le Palm sur le port série et ( astuce ) d'appuyer sur le bouton hotsync 1 petite seconde avant de valider la commande quelle qu'elle soit !