Et la chanson, on la connait. Puisque ce modem n'est à priori pas disponible dans d'autres pays à l'heure actuelle, j'ai gentiment contacté LG Electronics au Maroc, leur proposant mes services pour développer gratuitement un pilote Linux et l'intégrer aux distributions majeures, en échange d'informations sur le protocole USB permettant simplement ... de pouvoir utiliser leur modem. Étonnament, Je n'ai à date reçu aucune réponse. EDIT 18/déc/2008 : LG m'est revenu avec une réponse négative.

N'ayant pas la possibilité de me mettre un de ces appareils sous la dent, j'ai fait quelques recherches sur les forums d'utilisateurs désemparés et je suis tombé sur M. Lebon, un sympathique médecin de Casablanca, utilisant Linux et incapable de se connecter au réseau EVDO avec son modem. Ce monsieur qui porte bien son nom, m'a été d'une aide incommensurable, réalisant toutes les analyses et les tests nécessaires à l'élaboration d'un mode opératoire.

Analyse du modem

Une fois connecté au bus USB du système, le modem LDU-1900D se déclare non pas comme unité de communications mais comme unité de stockage de masse (une clé USB). J'ai une forte intuition qui me dit que le chipset interne doit utiliser une méthode de communications classique (usbserial ou cdc-acm), ce qui est le plus courant aujourd'hui compte tenu de la simplicité d'intégration dans les systèmes. Le problème, c'est comment obtenir un périphérique de communications ? La réponse est simple : usb_modeswitch. Il est courant aujourd'hui de trouver de tels périphériques USB, qui nécessitent une chaîne de commandes sur le bus USB pour changer le fonctionnement du circuit interne et dévoiler les périphériques cachés à l'intérieur du boitier.

Capture du dialogue USB du modem

David m'a fourni une capture faite avec SniffUSB du dialogue du périphérique USB Vendor=0x1004 Product=0x1000 (le modem déclaré en mode stockage). De cette capture, nous avons pu déterminer la chaîne d'initialisation permettant d'obtenir une configuration pour usb_modeswitch

De la citrouille au carosse

Voici pour information le message USB qui provoque l'activation du périphérique de communications dans le modem USB :

Destination VID/PID : 0x1004/0x1000
Endpoint : 0x08
Message : 55534243988d54870000000000000aff554d53434847000000000000000000

Automatiser à la connexion du modem

On utilise pour cela une règle udev qui sera déclenchée à l'insertion du périphérique. Si vous utilisez Debian ou Ubuntu ou autres distributions, voir la procédure d'installation à la fin de l'article.
usb_modeswitch -v 0x1004 -p 0x1000 -m 0x08 -M 55534243c83244ff0000000000000aff554d53434847000000000000000000

On utilise le pilote série usbserial. Le résultat : l'activation d'un nouveau port série de type /dev/ttyUSB sur le système (par défaut /dev/ttyUSB0 si vous n'avez pas d'autre). Ce port série permet aux applications de dialoguer directement avec le circuit du modem.

Chaînes d'initialisation AT

Voici les chaînes d'initialisation à utiliser avec votre outil de connexion (obtenues en observant le dialogue entre le pilote windows et le modem) :

AT
ATE0V1&D2&C1S0=0

Installer LG LDU-1900D sur Debian & Ubuntu

J'ai préparé un paquet qui permet de simplifier l'installation sur les plate-formes Debian et dérivés. Voici la procédure :

  1. Installer usb_modeswitch. Un paquet .deb pour les machines x86 est disponible ici : usb-modeswitch_0.9.5_i386.deb
  2. Installer mon gestionnaire pour LDU-1900D : lg-evdo-reva-usbmodem_1.0-1jero0_all.deb . Il s'agit de règles udev qui permettent la détection et la modification du circuit du périphérique avec usb_modeswitch. Le paquet installe aussi une configuration pour wvdial (/etc/wvdial.conf).
  3. Si vous êtes sur un autre réseau que Wana, éditer /etc/wvdial.conf en conséquent

Ensuite, vous pouvez initier une connexion à chaque fois avec cette procédure :

  1. Ouvrir un terminal
  2. Taper : sudo wvdial
  3. Vous êtes connecté(e) !

Autres distributions Linux

  • Installer usb_modeswitch disponible sur ce site
  • Ajouter une règle UDEV dans /etc/udev/rules.d/ :
  • # This is /etc/udev/rules.d/45-lg-evdo-reva-usbmodem.rules
    #
    SUBSYSTEM=="usb", SYSFS{idProduct}=="1000", SYSFS{idVendor}=="1004", RUN+="/usr/sbin/usb_modeswitch -v 0x1004 -p 0x1000 -m 0x08 -M 55534243c83244ff0000000000000aff554d53434847000000000000000000"
    SUBSYSTEM=="usb", SYSFS{idProduct}=="6107", SYSFS{idVendor}=="1004", RUN+="/sbin/modprobe usbserial vendor=0x1004 product=0x6107"
  • Ajouter une configuration wvdial dans /etc/wvdial.conf :
  • [Dialer Defaults]
    Init1 = AT
    Init2 = ATE0V1&D2&C1S0=0
    Modem Type = LG EVDO Rev.A USB Modem
    ISDN = 0
    Phone = #777
    Carrier Check = no
    New PPPD = yes
    Modem = /dev/ttyUSB0
    Username = wana
    Password = wana
    Baud = 1843200

Ensuite, vous pouvez initier une connexion à chaque fois avec cette procédure :

  1. Ouvrir un terminal
  2. Taper : sudo wvdial
  3. Vous êtes connecté(e) !