Le matériel utilisé est :
Le téléphone est vendu avec un CD-ROM prévoyant force logiciels pour Windows®. L'emballage prévient d'ailleurs qu'il faut prévoir 500 Mo pour l'installation. En réalité, il n'est pas nécessaire d'installer tout un demi-gigaoctet (!) pour commencer à utiliser le téléphone. Une installation minimale sous Windows® permettant d'accéder aux fichiers enregistrés sur le mobile et de se servir de ce dernier pour se connecter à l'internet via le réseau GPRS/3G d'orange ne demande "que" 30 Mo.
Comme souvent, rien n'est prévu pour Linux. Quelques petites choses vont quand même être possibles :-).
Avant d'en venir à Linux, il est loisible de noter que l'installation sous Windows® crée une connexion dont les caractéristiques sont les suivantes :
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Lorsque l'on branche, à l'aide du câble fourni, le mobile sur la prise USB de l'ordinateur, l'écran du téléphone offre le choix entre trois modes : "Transf. fichiers", "Mode Téléph." et "Imprimer". Pour se connecter à l'internet, il faut choisir le mode "téléphone". La connexion installée, activée comme d'habitude, fonctionne immédiatement. Toutefois, un petit tour sur le site de 60 millions de consommateurs ou d'autres sites de mesure met en évidence, de manière reproductible, un débit qui plafonne aux environs de 115 kb/s, bien en-deça des possibilités de la 3G.
Remède : déconnecter le modem et, le mobile étant toujours branché, aller dans le panneau de configuration, aller dans les "Options de modems et téléphonie" et ajouter la chaîne d'initialisation AT+CGDCONT=1,"IP","orange.fr".
Sous Dapper Drake, il n'est pas nécessaire d'installer quoi que ce soit et on voit bien ce qui se passe.
Lorsque le cable USB du téléphone est branché, l'écran du mobile affiche le choix entre les trois modes. Pour accéder aux fichiers, le choix de "Transf. fichiers" provoque la réinitialisation du mobile (c'est normal, c'est pareil sous Windows® et c'est prévu par le manuel du téléphone!). Après quelques secondes, le bureau de GNOME s'orne de deux icônes associées aux deux zones mémoires du mobile (les 64 Mo d'origine et la carte d'extension) et, dans la foulée, les fenêtres des dossiers s'ouvrent automatiquement.
C'est tout, il n'y a plus qu'à transférer les fichiers dans un sens ou dans l'autre...
ATTENTION, avant de débrancher le câble USB, il est fortement recommandé de cliquer-droit sur l'une des deux icônes et de choisir "Ejecter". L'éjection de la deuxième est alors automatique et le téléphone affiche "il vaut mieux débrancher le câble maintenant".
Au branchement du câble, après choix du mode "Téléphone", l'écran affiche tout de suite "le téléphone est prêt à être utilisé avec l'ordinateur".
Dans un terminal, la commande :
$ cat /proc/bus/usb/devices
donne une longue réponse dont :
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0fce ProdID=d039 Rev= 0.00
S: Manufacturer=Sony Ericsson
S: Product=Sony Ericsson K800
S: SerialNumber=3534270191500670
C:* #Ifs=10 Cfg#= 3 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 0 Cls=02(comm.) Sub=08 Prot=00 Driver=(none)
I: If#= 1 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=16ms
I: If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm
E: Ad=84(I) Atr=03(Int.) MxPS= 16 Ivl=16ms
I: If#= 4 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 5 Alt= 0 #EPs= 0 Cls=02(comm.) Sub=0b Prot=00 Driver=(none)
I: If#= 6 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
I: If#= 6 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E: Ad=06(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 7 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=09 Prot=01 Driver=(none)
E: Ad=87(I) Atr=03(Int.) MxPS= 16 Ivl=16ms
I: If#= 8 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
E: Ad=88(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 9 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
I: If#= 9 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
E: Ad=09(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=89(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 9 Alt= 2 #EPs= 2 Cls=0a(data ) Sub=00 Prot=ff Driver=cdc_ether
E: Ad=09(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=89(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
et la commande :
$ dmesg | tail -4
[17451891.888000] usb 2-1: new full speed USB device using uhci_hcd and address 9
[17451892.036000] cdc_acm 2-1:3.1: ttyACM0: USB ACM device
[17451892.044000] cdc_acm 2-1:3.3: ttyACM1: USB ACM device
[17451892.060000] usb0: register 'cdc_ether' at usb-0000:00:1d.1-1, CDC Ethernet Device, 02:80:37:05:03:00
Ceci montre que le système a détecté deux appareils. Le second, ttyACM1, sert à synchroniser le "PDA" contenu dans le téléphone (agenda, tâches, contacts, etc.) ; l'auteur de cette page n'a pas encore étudié ces fonctions là. Pour le moment, c'est le premier, ttyACM0, qui nous intéresse car c'est lui qui joue le rôle de "modem" à utiliser pour se connecter à l'internet.
Ce message indique aussi que, à la différence du Sanyo 750, ce mobile est géré par une émulation éthernet.
Pour vérifier les réactions du système au branchement du mobile, il est d'abord possible de vérifier l'apparition des deux fichiers associés aux appareils dans le dossier dev par :
$ ls /dev/ttyACM*
/dev/ttyACM0 /dev/ttyACM1
et d'obtenir plus d'informations sur les caractéristiques acquises sur le modem par le système d'exploitation :
$ udevinfo -a -p /sys/class/tty/ttyACM0
udevinfo starts with the device the node belongs to and then walks up the
device chain, to print for every device found, all possibly useful attributes
in the udev key format.
Only attributes within one device section may be used together in one rule,
to match the device for which the node will be created.
device '/sys/class/tty/ttyACM0' has major:minor 166:0
looking at class device '/sys/class/tty/ttyACM0':
KERNEL=="ttyACM0"
SUBSYSTEM=="tty"
SYSFS{dev}=="166:0"
follow the "device"-link to the physical device:
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:3.1':
BUS=="usb"
ID=="2-1:3.1"
DRIVER=="cdc_acm"
SYSFS{bAlternateSetting}==" 0"
SYSFS{bInterfaceClass}=="02"
SYSFS{bInterfaceNumber}=="01"
SYSFS{bInterfaceProtocol}=="01"
SYSFS{bInterfaceSubClass}=="02"
SYSFS{bNumEndpoints}=="01"
SYSFS{interface}=="Sony Ericsson Device 039 USB WMC Modem"
SYSFS{modalias}=="usb:v0FCEpD039d0000dc02dsc00dp00ic02isc02ip01"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1':
BUS=="usb"
ID=="2-1"
DRIVER=="usb"
SYSFS{bConfigurationValue}=="3"
SYSFS{bDeviceClass}=="02"
SYSFS{bDeviceProtocol}=="00"
SYSFS{bDeviceSubClass}=="00"
SYSFS{bMaxPacketSize0}=="64"
SYSFS{bMaxPower}=="500mA"
SYSFS{bNumConfigurations}=="1"
SYSFS{bNumInterfaces}=="10"
SYSFS{bcdDevice}=="0000"
SYSFS{bmAttributes}=="80"
SYSFS{configuration}=="WMC Device"
SYSFS{devnum}=="5"
SYSFS{idProduct}=="d039"
SYSFS{idVendor}=="0fce"
SYSFS{manufacturer}=="Sony Ericsson"
SYSFS{maxchild}=="0"
SYSFS{product}=="Sony Ericsson K800"
SYSFS{serial}=="3534270191500670"
SYSFS{speed}=="12"
SYSFS{version}==" 2.00"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2':
BUS=="usb"
ID=="usb2"
DRIVER=="usb"
SYSFS{bConfigurationValue}=="1"
SYSFS{bDeviceClass}=="09"
SYSFS{bDeviceProtocol}=="00"
SYSFS{bDeviceSubClass}=="00"
SYSFS{bMaxPacketSize0}=="64"
SYSFS{bMaxPower}==" 0mA"
SYSFS{bNumConfigurations}=="1"
SYSFS{bNumInterfaces}==" 1"
SYSFS{bcdDevice}=="0206"
SYSFS{bmAttributes}=="c0"
SYSFS{configuration}==""
SYSFS{devnum}=="1"
SYSFS{idProduct}=="0000"
SYSFS{idVendor}=="0000"
SYSFS{manufacturer}=="Linux 2.6.15-28-386 uhci_hcd"
SYSFS{maxchild}=="2"
SYSFS{product}=="UHCI Host Controller"
SYSFS{serial}=="0000:00:1d.1"
SYSFS{speed}=="12"
SYSFS{version}==" 1.10"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1':
BUS=="pci"
ID=="0000:00:1d.1"
DRIVER=="uhci_hcd"
SYSFS{class}=="0x0c0300"
SYSFS{device}=="0x2659"
SYSFS{irq}=="217"
SYSFS{local_cpus}=="1"
SYSFS{modalias}=="pci:v00008086d00002659sv0000104Dsd000081B0fce9bc0Csc03i00"
SYSFS{subsystem_device}=="0x81b9"
SYSFS{subsystem_vendor}=="0x104d"
SYSFS{vendor}=="0x8086"
looking at the device chain at '/sys/devices/pci0000:00':
BUS==""
ID=="pci0000:00"
DRIVER=="unknown"
Dans le paragraphe relatif au "Sony Ericsson Device 039 USB WMC Modem", il apparaît que le pilote chargé est cdc_acm.
Trêve d'exploration, il est temps de mettre le modem au travail. C'est plus simple que pour le S750. Il va suffire d'utiliser wvdial, un numéroteur PPP "intelligent" qui sait connecter un modem à l'internet.
Le programme wvdial a besoin d'un fichier de configuration mais un autre programme est fourni pour le construire automatiquement : il s'agit de wvdialconf. Ce dernier doit être lancé en tant qu'administrateur. La commande :
$ sudo wvdialconf
produit la réponse :
Editing `/etc/wvdial.conf'.
Scanning your serial ports for a modem.
Modem Port Scan<*1>: S0 S1 S2 S3 S4 S5 S6 S7
Modem Port Scan<*1>: S8 S9 S10 S11 S12 S13 S14 S15
Modem Port Scan<*1>: S16 S17 S18 S19 S20 S21 S22 S23
Modem Port Scan<*1>: S24 S25 S26 S27 S28 S29 S30 S31
Modem Port Scan<*1>: S32 S33 S34 S35 S36 S37 S38 S39
Modem Port Scan<*1>: S40 S41 S42 S43 S44 S45 S46 S47
WvModem<*1>: Cannot get information for serial port.
ttyACM0<*1>: ATQ0 V1 E1 -- OK
ttyACM0<*1>: ATQ0 V1 E1 Z -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyACM0<*1>: Modem Identifier: ATI -- Sony Ericsson K800
ttyACM0<*1>: Speed 4800: AT -- OK
ttyACM0<*1>: Speed 9600: AT -- OK
ttyACM0<*1>: Speed 19200: AT -- OK
ttyACM0<*1>: Speed 38400: AT -- OK
ttyACM0<*1>: Speed 57600: AT -- OK
ttyACM0<*1>: Speed 115200: AT -- OK
ttyACM0<*1>: Speed 230400: AT -- OK
ttyACM0<*1>: Speed 460800: AT -- OK
ttyACM0<*1>: Max speed is 460800; that should be safe.
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
WvModem<*1>: Cannot get information for serial port.
ttyACM1<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyACM1<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 115200 baud
ttyACM1<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.
Found an USB modem on /dev/ttyACM0.
Modem configuration written to /etc/wvdial.conf.
ttyACM0
Commode ! Ce programme a trouvé tout seul le modem, l'a testé et a créé le fichier de configuration /etc/wvdial.conf approprié. Toutefois, il ne peut pas trouver les paramètres du fournisseur d'accès et il faut donc ouvrir ce fichier (en tant qu'administrateur), pour y ajouter le numéro de téléphone à composer et les données d'identification Password et Username pour la connection au réseau. Pour Orange, en France, le fichier devient alors :
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = USB Modem
Baud = 460800
New PPPD = yes
Modem = /dev/ttyACM0
ISDN = 0
Phone = *99#
Password = "orange"
Username = "orange"
Maintenant, pour se connecter, il suffit d'entrer la commande wvdial dans un terminal et d'attendre que la numérotation et la connexion se déroulent :
$ wvdial
--> WvDial: Internet dialer version 1.55
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
~[7f]}#@!}!}!} }4}(}"}'}"}"}&} } } } }%}&X*}3ciG~
--> Carrier detected. Waiting for prompt.
~[7f]}#@!}!}"} }4}(}"}'}"}"}&} } } } }%}&X*}3c#z~
--> PPP negotiation detected.
--> Starting pppd at Wed Apr 11 08:11:25 2007
--> Warning: Could not modify /etc/ppp/pap-secrets: Permission denied
--> --> PAP (Password Authentication Protocol) may be flaky.
--> Warning: Could not modify /etc/ppp/chap-secrets: Permission denied
--> --> CHAP (Challenge Handshake) may be flaky.
--> Pid of pppd: 22311
--> Using interface ppp0
--> pppd: �/��[10]�[05][08]��[05][08]
--> pppd: �/��[10]�[05][08]��[05][08]
--> pppd: �/��[10]�[05][08]��[05][08]
--> pppd: �/��[10]�[05][08]��[05][08]
--> local IP address 10.1.23.55
--> pppd: �/��[10]�[05][08]��[05][08]
--> remote IP address 10.64.64.64
--> pppd: �/��[10]�[05][08]��[05][08]
--> primary DNS address 194.51.3.56
--> pppd: �/��[10]�[05][08]��[05][08]
Lorsque le terminal a affiché l'adresse DNS et le message pppd suivant, on peut ouvrir son navigateur favori et surfer. A la fin de la séance, pour déconnecter, revenir dans la fenêtre de terminal qui est restée ouverte dans le même état et appuyer sur la combinaison de touches [Ctrl]+[C] (la touche Ctrl maintenue appuyée et le caractère "c" du clavier). Le système répond aimablement :
-->Caught signal 2: Attempting to exit gracefully...
--> Terminating on signal 15
--> pppd: �O��[10]�[05][08]��[05][08]
--> Connect time 0.3 minutes.
--> pppd: �O��[10]�[05][08]��[05][08]
--> pppd: �O��[10]�[05][08]��[05][08]
--> pppd: �O��[10]�[05][08]��[05][08]
--> Disconnecting at 08:34:56
Pour plus de confort, il est facile de créer un lanceur tout simple sur un tableau de bord :
Avec la démarche suivie jusque là, la connexion marche... mais reste limitée à un débit de l'ordre de 115 kb/s. Que ceux à qui cela rappelle quelque chose lèvent la main ! Eh, oui, on n'a pas défini le contexte... Qu'à cela ne tienne, il suffit de compléter le fichier de configuration de wvdial avec une nouvelle chaîne d'initialisation ciblée sur le canal 1 et pour expliciter le recours à ce canal ainsi précisé, on complète le numéro de téléphone. Par ailleurs, les tests effectués ne montrent pas d'influence de la ligne déclarant le type de modem. Finalement, le fichier de configuration prend la forme :
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","orange.fr"
Baud = 460800
New PPPD = yes
Modem = /dev/ttyACM0
Phone = *99***1#
Password = "orange"
Username = "orange"
Avec ce paramétrage supplémentaire, la vitesse fait un bond, comme on peut le vérifier par quelques essais :
Speedtest
Le sens montant va bien ! En revanche, pour le sens descendant, on n'est pas encore au niveau atteint par Windows® avec ses pilotes spécifiques mais c'est déjà une vitesse confortable. Il doit être possible de faire mieux mais l'auteur de cette page n'a pas encore trouvé comment...
A suivre, donc...