Connexion 3g

De Diablotins.org.


Connecter et Utiliser une clef 3g
Image:brush.png

Cet article décrit la procédure de mise en œuvre d'une connexion 3g, sous FreeBSD 8.1.
Dans cet exemple, Bouygues Telecom fournis l'accès au réseau. Malheureusement la clef qu'ils proposent (en Janvier 2010) n'est pas compatible avec FreeBSD.
C'est donc le modèle de clef 3g ZTE MF633R qui sera utilisé.



Sommaire

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

Références

Outils personnels
Projets :