Qualcomm gobi 2000 GNU/Linux thinkpad x201/x100
Posted in Network, TechoGeek on November 28th, 2010 by bragonPré requis
Cette carte fonctionne actuellement sur la distribution Gentoo Linux.
La version du kernel est un : 2.6.36.1
Tous les programmes sont dans les toutes dernières version disponible à l’heure ou j’écris ses lignes.
Petite Histoire
Donc j’ai décidé de changer d’ordinateur portable récemment.
Mon dévolu s’est naturellement posé sur le Lenovo x201 thinkpad , car c’est le seul qui me paraissait répondre à tous mes critères de choix d’ordinateur portable.
Petit, beaucoup de batterie, costaud, avec un modem 3G intégré, une carte ethernet Gbps, un écran opaque, et pas les merdes qui brillent que je ne supporte pas.
le x201 était destiné à remplacer un x300 commençant à vieillir, mais qui marchait bien, jusqu’à ce que le AHCI commence à faire des choses bizarre avec le disque SSD.
Réception de la bête et déboire 3G
Je reçois le x201
Je gicle cash Windows Seven du disque dur.
Je boot sur un livecd gentoo la machine.
J’install mon OS.
Je compile mon noyau aux petits oignons (comme pour chaque nouveau portable que je reçois).
Et là c’est le drame !
Le support de la carte 3G Qualcomm gobi 2000 est plus que merdique sous Linux !
Tout à l’air de bien marcher, mais la 3G c’est l’horreur.
J’avais une carte Seria Wireless 3G sur mon x300 qui fonctionnait du feu de dieu.
Avoir une carte 3G intégré c’est vraiment génial, pas besoin d’avoir de clée USB qui mange toute ta batterie, qui est moche, et que tu dois trimballer dans tous tes déplacements.
La carte Seria Wireless était vraiment super bien supporté, voir :
http://bragon.info/wiki/doku.php?id=pppd_sierra-wireless_sfr_x300
La clée SFR fourni avec le eeepc 7″ était vraiment bien supporté par le noyau Linux.
Mais la ma nouvelle gobi 2000 c’est la merde.
Voir même la grosse merde !
Faire fonctionner cette putain de carte 3G sur mon GNU/Linux, pas une option, une NÉCESSITÉ
Impossible de faire l’impasse sur cette carte 3G.
Il *FAUT* que ça marche.
On ne change pas de portable pour subir une régression !
Mes astreintes m’obligent à pouvoir me connecter de partout, je ne peux pas y couper, et revenir en arrière avec la clée 3G USB blanche toute moche, c’est hors de question dans mon petit esprit étriqué Geek.
La, commence le parcours du combattant cérébralement.
Beaucoup de temps perdu.
Beaucoup d’efforts.
(Merci à ma copine de m’avoir supporté durant ce moment très difficile ;p ).
Étapes, Espoirs, Déceptions, Automatisation,
Découverte de la dure vérité
Jouissant de l’expérience de mon x300 avec sa carte Seria Wireless je m’attelle donc à ce que je sais faire.
lsusb :
diantre bragon # lsusb | grep Qualcomm
Bus 002 Device 003: ID 05c6:9204 Qualcomm, Inc.
diantre bragon # ls /dev/ttyUSB*
/dev/ttyUSB0
Cool je vais pouvoir me connecter, la carte à l’air parfaitement reconnu !!!
Je lance un screen sur /dev/ttyUSB0 (voir la doc pour faire fonctionner la carte Seria Wireless ici
C’est quoi ce délire ?
Je ne peux pas écrire sur le port série de la carte 3G ?
Bon, ça va être la chienli, là, je le sent !
J’ai même tenté de démonter la carte 3G seria Wireless de mon x300 pour la monter dans le x201 sans succés.
Le bios des Lenovo est bridé et bloqué pour ne pas qu’on puisse changer le hardware des models.
Recherches !
Je sors mon arme ultime !
GOOOOOOOOOOOGLE
Ma première recherche me permet de comprendre que le device que je vois via la commande lsusb : 05c6:9204 est en faite un périphérique de “controle” et en aucun cas un modem 3G.
Le modem 3G doit apparaitre dans lsusb sur l’id : 05c6:9205
Je tombe sur cette documentation du wiki thinkwiki :
http://www.thinkwiki.org/wiki/Qualcomm_Gobi_2000
ainsi cela me permet de lire ceci :
The firmware for this device is not publicly downloadable and currently must be obtained from a windows installation. The firmware consists of 3 parts:
* amss.mbn (firmware stage 1)
* apps.mbn (firmware stage 2)
* UQCN.mbn (formware stage 3) – includes configuration and carrier specific settings)
GENIAL J’AI SUPPRIME MON WINDOWS MOI !!
Bon … là j’ai eu une sacrée chance.
J’ai récupéré les fichiers depuis un Lenovo thinkpad x100e qui trainait chez moi, sous windows, pour une raison que je n’expliquerai pas ici :) (Ma copine à ce laptop, et n’a pas encore été installé sous GNU/Linux)
Une copie sur clée USB plus tard des fameux firmware proprio des firmware USB 3G, j’ai tout ce qu’il faut pour avancer !!!
Je place donc comme le dit la doc les fichiers pourraves dans /lib/firmware/gobi
Pour SFR voici les fichiers qu’il vous faut :
bragon@diantre /lib/firmware/gobi $ md5sum *.mbn c3d6fd93ae2e52775ef9cd8fccbc20be UQCN.mbn 84d002b0ef003cde6c95826bfbf067fe amss.mbn d7496085f1af3d1bfdf0fa60c3222766 apps.mbn
Je paufine mon fichier : /etc/udev/rules.d/60-gobi.rules
# udev rules for firmware loading on qualcomm gobi devices ACTION=="add", SUBSYSTEM=="tty" KERNEL=="ttyUSB*" GOTO="gobi_rules" GOTO="gobi_rules_end" LABEL="gobi_rules" ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9204", RUN+="/home/bragon/gobi/gobiloader/gobi_loader $env{DEVNAME} /lib/firmware/gobi" ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9205", RUN+="/home/bragon/gobi/gobiloader/gobi_loader $env{DEVNAME} /lib/firmware/gobi"
J’ai du placer un gobiloader non officiel pour que ma carte soit supporté.
Je l’ai mis dans /home/bragon/gobi/gobiloader (mettez le ou vous voulez).
Vous pouvez récupérer le gobi_loader patché pour cette carte pourrave ici :
http://www.codon.org.uk/~mjg59/gobi_loader/
Bon, un reboot plus tard, ma carte est détecté et supporté !
ENFIN
it works
Mon script wvdial
[Dialer Defaults] Init2 = ATQ0 V1 E1 +FCLASS=0 Modem Type = Analog Modem ISDN = 0 Init1 = ATZ Modem = /dev/ttyUSB0 Baud = 9600 [Dialer pin] Init1 = AT+CPIN="0000" [Dialer SFR] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 Init3 = AT+CGDCONT=1,"IP","slsfr" Stupid mode = 1 New PPPD = yes Phone = *99# Username = vodaphone Password = vodaphone Stupid mode=1 Check Def Route = 1
Mise à feu ! (et à sang)
wvdial pin
diantre wifi # wvdial pin --> WvDial: Internet dialer version 1.61 --> Cannot get information for serial port. --> Initializing modem. --> Sending: AT+CPIN="0000" OK --> Sending: ATQ0 V1 E1 +FCLASS=0 ATQ0 V1 E1 +FCLASS=0 OK --> Modem initialized.
wvdial sfr
--> WvDial: Internet dialer version 1.61 --> Cannot get information for serial port. --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 ATQ0 V1 E1 S0=0 &C1 &D2 OK --> Sending: AT+CGDCONT=1,"IP","slsfr" AT+CGDCONT=1,"IP","slsfr" OK --> Modem initialized. --> Sending: ATDT*99# --> Waiting for carrier. ATDT*99# CONNECT 7200000 --> Carrier detected. Starting PPP immediately. --> Starting pppd at Sun Nov 28 19:54:33 2010 --> Pid of pppd: 6633 --> Using interface ppp0 --> local IP address 10.240.192.86 --> remote IP address 10.64.64.64 --> primary DNS address 10.11.12.13 --> secondary DNS address 10.11.12.14
Bibliographie
http://blogs.gnome.org/dcbw/2010/04/15/mobile-broadband-and-qualcomm-proprietary-protocols/
http://www.thinkwiki.org/wiki/Qualcomm_Gobi_2000
https://www.codeaurora.org/patches/quic/gobi/2010_Oct_19/
http://www.blinkenlights.ch/ccms/linux/vaio-w.html