TacticalWiki

IPaqLinux

HomePage :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.179.211

Les iPAQ et Linux


Note: toutes ces informations sont valables pour mon hp iPAQ h2210 (et certainement beaucoup d'autres).
En cas de problème, consultez les sites officiels des logiciels mentionnés ici.
L'ensemble des procédures a été testé sur les distributions Mandrakelinux et Fedora; la plupart des indications sont donc probablement souvent valables telles quelles, mais des ajustements peuvent être nécessaires selon les distributions.


Les assistants personnels iPAQ de Hewlett-Packard sont d'excellentes petites machines, qui permettent d'avoir toujours à portée de main un grand nombre d'outils. Elles sont basées sur des processeurs ARM (mon h2210 est équipé d'un PXA255 XScale @ 400 MHz), et tournent sous Windows Mobile (anciennement Windows CE, puis Pocket PC). Tous mes PC, eux, tournent sous Linux; vous voyez donc venir le challenge :)

Niveau: Ces explications supposent que vous savez installer des logiciels sous Linux, et que vous connaissez la gestion réseau de cet OS.

Synchronisation avec une station Linux


Les outils à destination du PC hôte fournis avec le iPAQ sont exclusivement Microsoft. Un PDA représente-t-il une raison suffisante de booter Windows plutôt que notre environnement Linux habituel? Certainement pas.

La communauté open-source vient une fois de plus à la rescousse en nous proposant SynCE. Plus qu'un utilitaire, il s'agit véritablement d'une suite de synchronisation incluant divers utilitaires en ligne de commande, ainsi que des intégrations dans les gestionnaires de fenêtres les plus courants.

Installation


La première étape consiste à faire reconnaître le iPAQ par le noyau Linux. Les distributions modernes, telles que Fedora incluent d'emblée les modules usbserial et ipaq. Dans ce cas, il suffit de poser le iPAQ sur sa station d'accueil USB et de l'allumer, ce à quoi le noyau devrait répondre:


kernel: usb 1-2: new full speed USB device using address 96
kernel: usbserial 1-2:1.0: PocketPC? PDA converter detected
kernel: usb 1-2: PocketPC? PDA converter now attached to ttyUSB0 (or usb/tts/0 for devfs)


(voir /var/log/messages à ce sujet)
Si cela ne fonctionne pas, il faudra probablement recompiler le module.

Le iPAQ est à présent reconnu et nous disposons d'une émulation série sur USB (périphérique ttyUSB0) sur laquelle nous allons pouvoir établir une connexion PPP. Il est maintenant temps d'installer SynCE, qui va nous fournir les scripts de connexion et outils de transfert. Le site officiel fournit une excellente documentation sur l'installation.

Connexion


Ces indications supposent que vous avez déclaré synce-serial-config et synce-serial-start dans le fichier /etc/sudoers; en effet, ces deux commandes doivent être exécutées en tant que root.

Pour se connecter, vérifier que le iPAQ est bien allumé et relié au PC, puis exécuter les commandes suivantes:


dccm
sudo synce-serial-config ttyUSB0
sudo synce-serial-start


De son côté, le iPAQ lance automatiquement la connexion. Une nouvelle interface ppp0 apparaît, avec par défaut l'IP 192.168.131.102. Le iPAQ, lui, hérite de l'IP 192.168.131.201. Bien entendu, ces adresses sont privées et aucun système de SNAT/Masquerading n'est en place, ce qui signifie que le iPAQ ne peut pas accéder au réseau local ou à Internet en l'état actuel des choses. Nous verrons un peu plus tard comment établir une liaison Internet.

Pour déconnecter le iPAQ, il suffit de fermer la connexion depuis ce dernier ou d'exécuter un killall -HUP dccm sur l'hôte (ou au pire, un synce-serial-abort). On peut également déconnecter à partir du iPAQ lui-même.

Pour rétablir une connexion par la suite, je me suis aperçu qu'il pouvait être nécessaire d'éteindre et de rallumer le iPAQ avant de relancer le script de connexion, faute de quoi le iPAQ ne se connecte pas.

Connexion... automatique!


Cela fonctionne assez bien grâce au script hotplug fourni. Toutefois, je ne saurais trop vous conseiller d'utiliser la méthode basée sur udev, beaucoup plus propre et fiable. Ces scripts permettent d'exécuter automatiquement synce-serial-start à la connexion du iPAQ, ce qui permet de s'affranchir des sudo.

Créez donc les deux fichiers

/etc/udev/rules.d/ipaq.rules

DRIVER="ipaq", NAME="ipaq", SYMLINK="tts/USB%n", GROUP="tty", MODE="0600"


/etc/dev.d/ipaq/synce.dev (exécutable)

#!/bin/sh

LOGFILE=/var/log/synce

if [ "$ACTION" = "add" ] ; then
echo "`date +"%b %d %X"` `uname -n`: iPAQ plugged, starting connection..." >> $LOGFILE
synce-serial-start >> $LOGFILE
elif [ "$ACTION" = "remove" ] ; then
echo "`date +"%b %d %X"` `uname -n`: iPAQ removed" >> $LOGFILE
fi


Il faut cependant encore lancer dccm en tant qu'utilisateur normal avant de raccorder le PDA; si vous utilisez les intégrations GNOME ou KDE, elles s'en chargeront pour vous.

Résultat: Comme sous Windows, le iPAQ est détecté, allumé et connecté même s'il est posé éteint sur le socle (cerise sur le gâteau avec synce-gnomevfs et synce-trayicon, sous GNOME, une icône PDA apparaît et disparaît sur votre bureau, et vous pouvez directement l'explorer...).

Hotplug envers et contre tout


Quelques conseils pour ceux qui tiendraient à utiliser hotplug malgré tout:

Pour mon h2210, les VID/PID sont 0x03f0 et 0x1016.

Délai de déconnexion: par défaut, le script spécifie un délai de 15 secondes (sleep 15) entre la déconnexion physique du iPAQ et la fermeture effective de la connexion. Cela implique que des utilitaires comme pls, pcp.. ou RAKI (le pendant d'ActiveSync pour KDE) ne détecteront pas le départ du iPAQ avant 15 secondes. En outre, si le iPAQ est rebranché avant le terme de ce délai, des comportements étranges peuvent se produire.

La solution consiste tout simplement à abaisser le délai à une valeur acceptable. 2 ou 3 secondes devraient largement suffire à assurer un fonctionnement correct; peut-être même pouvez-vous envisager de supprimer ce délai, si cela convient à votre système.

Utilisation


Une fois le iPAQ connecté, il ne vous reste plus qu'à essayer les merveilleux outils à votre disposition, tels que pls et pcp, qui vous permettront d'interagir avec le iPAQ en ligne de commande. Différentes intégrations graphiques sont disponibles sur le site. Il est également possible de synchroniser avec Evolution grâce à MultiSync.

Connexion Internet via un poste Linux


Si votre iPAQ n'a pas de fonction WLAN intégrée, et que vous n'avez pas non plus de carte d'extension WLAN, il faut passer par d'autres moyens pour établir une connexion à Internet. Nous allons nous servir d'une connexion PPP sur une ligne série entre le iPAQ et notre poste Linux relié à Internet. Deux possibilités s'offrent à nous:


Installation du poste Linux


Notez que quelle que soit la solution retenue, le poste Linux sert de point d'entrée dans le réseau; il devra donc dans tous les cas servir de passerelle IP.

Pour la passerelle IP, veillez à disposer du package iptables.
Si l'on suppose que votre interface réseau classique est eth0 et que l'interface qui vous reliera au iPAQ sera ppp0, le script suivant suffit à mettre en place le masquerading:


echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i ppp0 -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE


Afin de sauvegarder ces réglages entre deux redémarrages, rendez-vous dans /etc/sysctl.conf pour le paramètre net.ipv4.ip_forward. Les règles iptables peuvent être préservées grâce à la commande iptables-save, qui permet de générer un fichier /etc/sysconfig/iptables (distributions de type Redhat).

Connexion via USB


Pour avoir accès au DNS, renseignez la valeur ms-dns du fichier /etc/ppp/peers/synce-device avec l'IP de votre DNS.
Bonne nouvelle: à partir de maintenant, si vous connectez votre iPAQ avec SynCE, tout est en place; votre iPAQ a accès à Internet!

Connexion Internet via Bluetooth


Il reste encore un peu de travail. Nous allons mettre un place un NAP (Network Access Point) Bluetooth qui sera l'équivalent sans fil de la connexion SynCE.
Au risque de radoter un peu, je rappelle l'empilement des couches utilisées:

* TCP/IP
* Connexion PPP
* Null modem
* Emulation série Bluetooth
* Connexion Bluetooth

Configuration Bluetooth


Cette installation est basée sur la pile BlueZ, devenue la pile Bluetooth officielle de Linux dans le noyau 2.4. Vous devez disposer des packages bluez-utils, bluez-sdp, bluez-pan (ou équivalents). On commence par configurer la couche HCI et l'émulation série. Rendez-vous dans le répertoire /etc/bluetooth et ajoutez (ou dé-commentez) les lignes suivantes dans hcid.conf:


lm accept,master;
auth enable;
encrypt enable;


Côté émulation série, vous devez disposer de périphériques /dev/rfcomm[0..n] (où n = 3 devrait largement suffire). Si ce n'est pas le cas, créez-les avec:


mknod /dev/rfcomm0 c 216 0
mknod /dev/rfcomm1 c 216 1
mknod /dev/rfcomm2 c 216 2
...


Configuration PPP


Nous allons faire tourner un service Bluetooth appelé Network Access Point, qui lancera une instance de pppd lorsqu'un client Bluetooth s'y connectera. Il faut donc maintenant préparer la configuration PPP correspondante. Créez le fichier /etc/ppp/peers/btdun suivant:


noauth
local
proxyarp
noipdefault
nodefaultroute
noipx
idle 0
192.168.131.102:192.168.131.201
ms-dns <ip.de.votre.dns>
netmask 255.255.255.0


Par souci de simplicité, nous utilisons ici la même convention d'attribution d'IP que SynCE.
Il ne reste plus qu'à lancer notre service Network Access Point:


pand --listen --role NAP
dund --listen --msdun call btdun


Cette dernière tâche peut être automatisée, selon votre distribution... par exemple, Mandrakelinux et Fedora (non, je n'ai pas d'actions chez eux, mais j'aime bien) installent directement pand et dund en tant que services système. Il suffit de les activer et d'aller spécifier les arguments ci-dessus dans /etc/sysconfig/pand et /etc/sysconfig/dund.

Configuration du iPAQ


Pour un iPAQ sous Windows Mobile 2003, accédez au Bluetooth Manager et tapez sur Nouveau puis Connecter! Choisissez successivement Connexion à Internet, Via un point d'accès et sélectionnez votre poste Linux. Cochez la case Connexion sécurisée et cryptée et cliquez enfin sur Terminer. Votre raccourci de connexion est prêt à être utilisé.

Faire tourner Linux sur le iPAQ


Un peu de technique


Avant de songer à changer d'OS, il faut bien comprendre l'architecture de la machine. Outre son véloce processeur ARM, le iPAQ embarque:

Et là, tout de suite, certains me diront: impossible! Quand j'éteins mon iPAQ, la SDRAM devrait être vidée! Eh bien justement, vous ne l'éteignez pas - vous le mettez en veille. En utilisation normale, un iPAQ n'est jamais éteint, et sa batterie lui sert entre autres à préserver le contenu de la mémoire. Pour un PC, cela équivaudrait à stocker tous les fichiers sur un ramdisk.

Le vif du sujet



Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]