MINI HOWTO : Connecter son SPV C500 (Orange) a sa Linux Debian

Thomas GUTHMANN

v0.0.1, 15 Fev 2005
Le but de ce document est d'expliquer comment connecter son mobile SPV C500 (Orange) à Linux. Le SPV C500 est un smartphone powered by Microsoft Mobile 2003 (c) et evidemment fonctionne en plug&play sous Windows mais n'est pas reconnu comme Mass Storage Adapter sous Linux. Ce document décrit la procédure d'installation afin de pouvoir downloader et uploader des fichiers vers le SPV c500.

1. Prérequis

Evidemment pour que cette HOWTO vous serve à quelques choses, vous devez être en poséssion :

La configuration de test est une debian testing (SARGE) avec un kernel 2.6.10 et une carte USB2 LaCie.

2. Installation

2.1 Etape 1 : patch du noyau

Evidemment cela aurait été trop simple de juste faire des apt-get. Vous devez modifier le fichier /usr/src/linux/drivers/usb/serial/ipaq.c à la ligne 920. Vous devez juste modifier le retour de la fonction, pour qu'elle retourne toujours zéro. Un fix devrait voir le jour prochainement mais en attendant:

        # vi +920 /usr/src/linux/drivers/usb/serial/ipaq.c

        -       return usb_reset_configuration (serial->dev);
        +       return 0;  /* return usb_reset_configuration (serial->dev)*/;

PS: cherchez la ligne préfixé par le '-' et remplacez la par la ligne préfixé par +. Les puristes aurait préféré un patch mais bon pour une ligne...</flemme>

2.2 Etape 2: Ajout modules

Une fois l'étape 1 effectuée, vous devez mettre en module quelques fonctionnalités du noyau:

Compilez et installez les modules :

        # cd /usr/src/linux
        # make modules && make modules_install
        # update-modules.modutils

2.3 Etape 3 : Configuration des modules

Il faut spécifier des options au module IPAQ. Pour cela, ouvrez avec votre éditeur favori le fichier /etc/modprobe.conf et rajoutez :

        options ipaq vendor=0x049f product=0x0003

Ensuite chargez les modules suivants, à condition que vous avez déja la couche USB de lancée (EHCI/OHCI|UHCI). Verifiez avec un lsmod qu'ils sont bien chargés.

        # modprobe ipaq
        # modprobe ppp_generic
        # modprobe ppp_async
        # lsmod
        # dmesg

Avec dmesg, vous devriez avoir des logs kernel du type :

        [..]
        drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0
        drivers/usb/serial/usb-serial.c: USB Serial support registered for PocketPC PDA
        drivers/usb/serial/ipaq.c: USB PocketPC PDA driver v0.5
        ipaq 4-2:1.0: usb_probe_interface
        ipaq 4-2:1.0: usb_probe_interface - got id
        ipaq 4-2:1.0: PocketPC PDA converter detected
        usb 4-2: PocketPC PDA converter now attached to ttyUSB0
        usbcore: registered new driver ipaq
        [..]

2.4 Etape 4 : Installation de SYNCE

Synce est un ensemble de bibliothèques et d'outils permettant de se connecter à des périphériques de type Windows CE, Windows Mobile. Pour plus d'informations allez sur : synce.sourceforge.net

Installez Synce à partir des paquets Debian (0.9.0). Et suivez les instructions de debconf. Si vous ne savez pas, laissez les paramètres par défaut.

        # apt-get install libsynce0 synce-dccm synce-serial librapi2-tools hotplug

3. Mise en place

Tout d'abord il faut lancer le démon de gestion des connexions ActiveSync (c). Pour cela, lancez le en tant qu'utilisateur :

        $ dccm

Maintenant, si hotplug n'a pas fait son travail, initialisons la connection ActiveSync (c) en tant que root :

        # synce-serial-start

Votre téléphone devrait indiquer qu'il est connecté dans l'interface ActiveSync (Démarrer 9 7). Vous pouvez également vérifier si vous êtes connecté via la commande synce-pstatus

        $ synce-pstatus

                Version
                =======
                Version:    4.21.1088 (Unknown)
                Platform:   3 (Windows CE)
                Details:    ""

                [..]

                Memory for storage: 1572864 bytes (1 megabytes)
                Memory for RAM:     22671360 bytes (21 megabytes)
        $

Si vous avez la malchance d'avoir un :

        pstatus: Unable to initialize RAPI: An unspecified failure has occurred

Cherchez des erreurs dans dmesg et/ou dans les logs système. Si vous voyez des :

        pppd[21318]: LCP terminated by peer
        pppd[21318]: Connection terminated.
        pppd[21318]: Connect time 0.1 minutes.

Cela signifie que la connexion PPP a été tenté mais qu'elle s'est immédiatement fermée parce que le SPV C500 est planté. Il faut killer le processus pppd initié, vous trouverez le PID dans les logs système (attention à ne pas killer votre connexion ADSL ;) . Déconnectez le SPV c500 de l'USB. Rebootez le! Puis recommencez la manipulation.

Si ca ne fonctionne toujours pas, lisez la FAQ de SYNCE de Synce.

4. Transférer des fichiers et commandes distantes

Pour transfèrer les fichiers via la connexion PPP, vous devez utilisez des outils spécifiques qui sont des commandes du type synce-pXXXXXX. Où XXXXXX est le nom de la commande, comme ls, rm, mkdir, rmdir, mv, cp. Pour des raisons de commodités vous pouvez créer des liens symboliques afin de racourcir le noms des commandes, en effet Debian a rajouté le préfixe synce- alors que les commandes SYNCE des releases (sources) n'ont pas ce préfixe. Néanmoins pour des raisons de clarté, je donnerais les noms de commande Debian.

Voici quelques exemples, à exécuter en tant qu'utilisateur et non pas en root :

4.1 Lister des fichiers

Pour lister le contenu de "My Documents", il suffit de faire:

        $ synce-pls

Pour lister le contenu de la racine:

        $ synce-pls "/"

Pour lister le contenu d'un répertoire, il faut impérativement le "trailing slash". C'est à dire le '/' comme caractère de fin après le nom du répertoire.

        $ synce-pls "/Storage/"

4.2 Copier des fichiers

Soyez vigilement, la syntaxe de synce-pcp est particulière et pas très intuitive. Il est impossible en une seule commande de copier un répertoire ou un groupe de fichiers, les wildcards [*,?] ne sont pas supportés ce qui ne rend pas la copie aisée. A retenir le ":" signifie la resource distante donc le SPV ET il est indispensable de donner un chemin absolu !

Pour downloader un fichier (du SPV vers le PC)

        $ synce-pcp ":/Storage/My Documents/My Photos/IMAGE_037.jpg"
  ou
        $ synce-pcp ":/Storage/My Documents/My Photos/IMAGE_037.jpg" AUTRE_NOM.jpg

Pour uploader un fichier (du PC vers le SPV)

        $ synce-pcp star_1 ":/Storage/My Documents/My Videos/starwars3.mp4"

Pour copier tout les fichiers d'un répertoire (du SPV vers le PC)

        $ for i in `pls "/Storage/My Documents/My Photos/" | awk '{print $8}'` ; do pcp ":/Storage/My Documents/My Photos/$i" ; done

4.3 Autres commandes

Les autres commandes de base sont assez simples, comme créer un répertoire, le supprimer ou la suppression de fichier, etc. Toutes ces commandes doivent toujours utilisés des chemins absolues.

Quant aux commandes de gestion d'applications (synce-run, synce-install-cab), la HOWTO ne couvre pas (encore) cette partie.

5. La déconnexion

Il est toujours préférable de fermer une connexion proprement, pour cela il suffit de killer dccm.

        $ killall -1 dccm

Dans le cas ou la connexion persiste (état instable) vous pouvez toujours utiliser la manière brutale :

        # synce-serial-abort

6. USB to NET

6.1 Le mobile utilise la connexion Internet du PC

To be completed

6.2 Le PC utilise le mobile pour se connecter à Internet

To be completed

7. Liens

Voici les liens des différents formats de cette howto

Les liens utiles: