Libérer le LG LDU-1900D

Je prévois un déplacement au Maroc pour cet hiver. Le marché de l'Internet
sans fil (CDMA et UMTS) là bas est assez développé et deux opérateurs se
livrent une rude concurrence sur ce marché. L'acteur qui m'a semblé le plus
populaire sur le marché, Wana, ex-Wanadoo et filiale du groupe ONA exploite un
réseau CDMA (EVDO Rev.A). Ils ont choisi le fabriquant Coréen
LG pour leur fournir des modems USB abordables.
Malheureusement, depuis le début de l'automne, un nouveau modem ne fonctionnant
(à priori) que sur plate-forme Windows a commencé à innonder
le marché : le LDU-1900D, laissant les utilisateurs Linux et
MacOS X en mauvaise posture. Comptant accéder à Internet durant mon voyage, je
me suis penché sur la question...

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) !