Connexion 3g
De Diablotins.org.
| Connecter et Utiliser une clef 3g
|
| ||
|
Cet article décrit la procédure de mise en œuvre d'une connexion 3g, sous FreeBSD 8.1.
|
|
Matériel et FAI
La clef est constituée de :
- un cd virtuel, qui contient les pilotes, mais - ne rêvons pas - Mac ou Windows.
- une carte sd utilisable en umass(4).
- un “modem” série qui permet la connexion 3g.
La clef est gérée par le pilote u3g(4), qui fait deux choses :
- il éjecte le faux cd virtuel et l'ignore.
- il associe un périphérique série qui permet la connexion.
Périphérique
Voici le résultat de la détection des périphériques par FreeBSD:
ugen6.3: <ZTE,Incorporated> at usbus6 ugen6.3: <ZTE,Incorporated> at usbus6 (disconnected) ugen6.3: <ZTE,Incorporated> at usbus6 ugen6.3: <ZTE,Incorporated> at usbus6 (disconnected) ugen6.3: <ZTE,Incorporated> at usbus6 u3g0: <ZTE,Incorporated ZTE WCDMA Technologies MSM, class 0/0, rev 2.00/0.00, addr 3> on usbus6 u3g0: Found 3 ports. umass0: <ZTE,Incorporated ZTE WCDMA Technologies MSM, class 0/0, rev 2.00/0.00, addr 3> on usbus6 (probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error (probe0:umass-sim0:0:0:0): SCSI status: Check Condition (probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present) da0 at umass-sim0 bus 0 scbus3 target 0 lun 0 da0: <ZTE MMC Storage 2.31> Removable Direct Access SCSI-2 device da0: 40.000MB/s transfers da0: 1846MB (3780608 512 byte sectors: 255H 63S/T 235C) GEOM: da0: partition 1 does not start on a track boundary. GEOM: da0: partition 1 does not end on a track boundary.
Comme l'indique les messages du noyau, 3 ports séries sont associés à la clef, et un disque da0(4) est présent (carte sd). Les entrées de périphériques correspondantes sont :
# ls -la /dev/cuaU* crw-rw---- 1 uucp dialer 0, 154 18 sep 00:38 /dev/cuaU0.0 crw-rw---- 1 uucp dialer 0, 155 18 sep 00:38 /dev/cuaU0.0.init crw-rw---- 1 uucp dialer 0, 156 18 sep 00:38 /dev/cuaU0.0.lock crw-rw---- 1 uucp dialer 0, 160 18 sep 00:38 /dev/cuaU0.1 crw-rw---- 1 uucp dialer 0, 161 18 sep 00:38 /dev/cuaU0.1.init crw-rw---- 1 uucp dialer 0, 162 18 sep 00:38 /dev/cuaU0.1.lock crw-rw---- 1 uucp dialer 0, 166 18 sep 00:38 /dev/cuaU0.2 crw-rw---- 1 uucp dialer 0, 167 18 sep 00:38 /dev/cuaU0.2.init crw-rw---- 1 uucp dialer 0, 168 18 sep 00:38 /dev/cuaU0.2.lock
Problème : quelle est l'entrée à utiliser ?
La clef comprend une led, rouge au départ, bleu quand elle est connectée au réseau 3g et enfin clignotante quand la connexion (ie IP) est effective. (la led est verte en connexion Edge)
On peut déterminer le bon cuaU0.X en entrant le code PIN de la clef. La led doit alors passer au bleu.
Le code PIN (ici 9999) est entré en utilisant la commande AT "CPIN".
# echo AT+CPIN=9999 > /dev/cuaU0.0 ^C (interruption)
# echo AT+CPIN=9999 > /dev/cuaU0.1 Ok : la led tourne au bleu.
# echo AT+CPIN=9999 > /dev/cuaU0.2 Ok : la led tourne au bleu.
On a donc le choix entre ces deux entrées:
- /dev/cuaU0.1
- /dev/cuaU0.2
Après quelques essais, il faut utiliser /dev/cuaU0.2; la connexion ppp échoue sur /dev/cuaU0.1.
Connexion ppp
La suite de la connexion s'effectue comme au bon vieux temps du RTC, avec ppp(8).
Il faut connaître le nom de l'APN' correspondant au fournisseur d'accès et le numéro de téléphone à composer.
- je pense qu'il est identique pour tous: “*99***1#” -
Avec l'application Bouygues fournie (Mac OS X ou Windows), on peut accéder à ces valeurs en passant en mode configuration avancée.
Pour Bouygues, l'APN est “ebouygtel.com” et le téléphone “*99\#“.
Créez la configuration,ppp.conf, suivante :
default:
set log Phase Chat LCP IPCP CCP tun command +connect
bouygues:
set device /dev/cuaU0.2
set speed 19200
set redial 10 2
set phone *99\#
set authname toto
set authkey
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
\"\" \
AT OK-AT-OK \
AT+CFUN=1 OK-AT-OK \
AT+CSQ OK \
AT+CGDCONT=1,\\\"IP\\\",\\\"ebouygtel.com\\\" OK \
AT+CGACT? OK-AT-OK \
AT+CGATT? OK \
AT+COPS? OK \
ATD*99***1# CONNECT"
# set mtu maximum 512
# set mru maximum 512
set timeout 0 # --3 minute idle timer (the default)
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
set vj slotcomp off
set crtscts off
set ifqueue 1
set choked 10
disable ipv6cp
disable lqr
disable echo
enable dns
# enable vjcomp
add default HISADDR
Lancez la connexion avec:
# ppp -ddial bouygues
Au bout de 10/20s, la led doit clignoter et la connexion être fonctionnelle.
Automatisation
Voilà, il ne reste plus qu'à automatiser le tout pour qu'à l'insertion de la clef cela se connecte tout seul,
en appelant devd(8) et deux petits scripts :
/etc/devd.conf, ajouter :
attach 10 {
device-name "u3g0";
match "vendor" "0x19d2";
match "product" "0x0016";
action "/root/sbin/con3g";
};
detach 100 {
device-name "u3g0";
action "/root/sbin/stop3g";
};
Remplissez les champs vendor et product selon votre matériel, consultez le manuel de devd(8).
Puis créer les deux petits scripts con3g et stop3g.
- /root/sbin/con3g: (connexion)
#!/bin/sh echo AT+CPIN=9999 > /dev/cuaU0.2 sleep 10 /usr/sbin/ppp -ddial bouygues
- /root/sbin/stop3g: (arrêt ppp)
#!/bin/sh /usr/bin/killall ppp
Problèmes
J'ai eu longtemps un problème de DNS : la résolution ne se fait plus et il faut attendre une minute ou deux pour qu'elle fonctionne à nouveau.
J'ai changé de localisation et maintenant je n'ai plus ce problème.
La connexion étant maintenant bien plus rapide je suppute qu'il s'agissait d'un problème de réseau 3g faiblard.
Bouygues filtre le port 119 (nntp), les tunnels ssh sont mes amis.
Les connexions tcp sont arrêtées si elles durent longtemps (environ une heure).

