Outils pour utilisateurs

Outils du site


informatique:configuration_d_une_cle_4g_lte

Installation et configuration d'une clé 4G LTE

Modèle testé

D-Link, Model:DWM-221. La datasheet et le manuel d'utilisateur sont accessibles sur dlink.com.

Installation

pi@raspberrypi(rw):~$ lsusb
Bus 001 Device 010: ID 2001:a401 D-Link Corp.
pi@raspberrypi(rw):~$ sudo lsusb -v -s 001:010
 
Bus 001 Device 010: ID 2001:a401 D-Link Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x2001 D-Link Corp.
  idProduct          0xa401 
  bcdDevice            2.32
  iManufacturer           1 Mobile Connect
  iProduct                2 Mobile Connect
  iSerial                 3 0123456789ABCDEF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              4 Mass Storage
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)

On ajoute ces quatre lignes dans le fichier :

Je ne sais pas s'il faut utiliser le fichier usb_modeswitch.conf finalement… [Edit: Il faut ! Pour ne pas avoir à utiliser la longue commande usb_modswitch ci-dessous et que le modem 3G soit prêt au démarrage! Il faut juste le configurer correctement! /Edit] [Edit2: La configuration finale de ce fichier est plus bas./Edit2]

$ sudo nano /etc/usb_modeswitch.conf
$ sudo cat /etc/usb_modeswitch.conf
(...)
DefaultVendor=0x2001
DefaultProduct=0xa401
MessageEndpoint="0x01"
MessageContent="55534243123456780000000000000011062000000101000100000000000000"

On utilise la commande usb_modeswitch avec ces arguments (trouvé sur ce forum (draisberghof.de)). Je n'ai pas très bien compris où on peut trouver les trois “messages” qu'on envoie (55534…), je me suis contenté de copier/coller.

pi@raspberrypi(rw):~$ sudo usb_modeswitch -v 2001 -p a401 -W -n -M 555342435b000000000000000001061e000000000000000000000000000000 -2 555342435c000000000000000001061b000000010000000000000000000000 -3 555342435d000000000000000001061b000000020000000000000000000000
Take all parameters from the command line
 
 
 * usb_modeswitch: handle USB devices with multiple modes
 * Version 2.2.0 (C) Josua Dietze 2014
 * Based on libusb1/libusbx
 
 ! PLEASE REPORT NEW CONFIGURATIONS !
 
DefaultVendor=  0x2001
DefaultProduct= 0xa401
MessageContent="555342435b000000000000000001061e000000000000000000000000000000"
MessageContent2="555342435c000000000000000001061b000000010000000000000000000000"
MessageContent3="555342435d000000000000000001061b000000020000000000000000000000"
NeedResponse=1
 
Look for default devices ...
  found USB ID 2001:a401
   vendor ID matched
   product ID matched
  found USB ID 0a5c:bd1e
  found USB ID 0483:2016
  found USB ID 04b3:3021
  found USB ID 04b3:3022
  found USB ID 0424:ec00
  found USB ID 0424:9514
  found USB ID 1d6b:0002
 Found devices in default mode (1)
Access device 012 on bus 001
Current configuration number is 1
Use interface number 0
Use endpoints 0x01 (out) and 0x81 (in)
 
USB description data (for identification)
-------------------------
Manufacturer: Mobile Connect
     Product: Mobile Connect
  Serial No.: 0123456789ABCDEF
-------------------------
Looking for active driver ...
 No active driver found. Detached before or never attached
Set up interface 0
Use endpoint 0x01 for message sending ...
Trying to send message 1 to endpoint 0x01 ...
 OK, message successfully sent
Read the response to message 1 (CSW) ...
 Response successfully read (13 bytes).
Trying to send message 2 to endpoint 0x01 ...
 OK, message successfully sent
Read the response to message 2 (CSW) ...
 Response successfully read (13 bytes).
Trying to send message 3 to endpoint 0x01 ...
 OK, message successfully sent
Read the response to message 3 (CSW) ...
 Response successfully read (13 bytes).
Reset response endpoint 0x81
Reset message endpoint 0x01
-> Run lsusb to note any changes. Bye!
 
pi@raspberrypi(rw):~$ lsusb 
Bus 001 Device 013: ID 2001:7e19 D-Link Corp. 
Bus 001 Device 005: ID 0a5c:bd1e Broadcom Corp. 
Bus 001 Device 011: ID 0483:2016 STMicroelectronics Fingerprint Reader
Bus 001 Device 010: ID 04b3:3021 IBM Corp. 
Bus 001 Device 009: ID 04b3:3022 IBM Corp. 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi(rw):~$ dmesg | grep ttyUSB
[  806.074853] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB0
[  806.075897] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB1
[  806.076943] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB2
[  806.077874] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB3

J'ai un problème quand j'essaye de me connecter parce que je n'ai pas pu mettre le code pin. J'ai donc suivi ce tutoriel (john.de-graaff.net) pour mettre le code pin, me connecter et finalement supprimer l'authentification par code pin (pour ne plus avoir besoin de le faire manuellement!).

$ sudo apt-get install minicom

J'ai configuré minicom pour les quatre ttyUSB*, j'ai trouvé le baurdate via un développeur chinois

pi@raspberrypi(rw):~$ cat /etc/minicom/minirc.ttyUSB0
pu port		/dev/ttyUSB0
pu baudrate	115200
pu bits		8
pu parity	N
pu stopbits	1
pu minit	ATZ
pi@raspberrypi(rw):~$ cat /etc/minicom/minirc.ttyUSB1
pu port		/dev/ttyUSB1
pu baudrate	115200
pu bits		8
pu parity	N
pu stopbits	1
pu minit	ATZ
pi@raspberrypi(rw):~$ cat /etc/minicom/minirc.ttyUSB2
pu port		/dev/ttyUSB2
pu baudrate	115200
pu bits		8
pu parity	N
pu stopbits	1
pu minit	ATZ
pi@raspberrypi(rw):~$ cat /etc/minicom/minirc.ttyUSB3
pu port		/dev/ttyUSB3
pu baudrate	115200
pu bits		8
pu parity	N
pu stopbits	1
pu minit	ATZ

Connexion!!

pi@raspberrypi(rw):~$ sudo minicom ttyUSB2

Une fois dans minicom, connecté au modem, on peut essayer plein de choses. Voici des exemples et le retour des commandes avec une carte SIM de chez Proximus et une carte SIM de chez Base.

L'essentiel étant de ne plus avoir besoin du code pin pour activer la connexion aux données. Pour ce faire, voici la commande à taper :

AT+CLCK="SC",0,"1234"                                                           
OK

On peut configurer dans le fichier /etc/network/interfaces :

pi@raspberrypi(rw):~$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
 
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
 
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
 
auto lo
iface lo inet loopback
 
iface eth0 inet manual
 
#Désactiver l'interface wlan0 (interne à sur un Raspberry Pi 3
#allow-hotplug wlan0
#iface wlan0 inet manual
#    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
 
allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
 
#D-Link (3G,4G,LTE)
auto ppp0
iface ppp0 inet wvdial

Je pense que le fichier gprs n'est plus utile, puisqu'on utilise wvdial. À confirmer.

Et dans le fichier /etc/ppp/peers/gprs :

pi@raspberrypi(rw):~$ sudo cat /etc/ppp/peers/gprs
user "pi"
connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T em"
/dev/ttyUSB0
noipdefault
defaultroute
replacedefaultroute
hide-password
noauth
persist
usepeerdns

Avec wvdial :

pi@raspberrypi(rw):~$ cat /etc/wvdial.conf 
 
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 +FCLASS=0
Modem Type = Analog Modem
Baud = 460800
Stupid Mode = 1
New PPPD = yes
Modem = /dev/ttyUSB1
ISDN = 0
Phone = *99#
Password = '';
Username = '';

Avec la carte SIM de chez Base, j'ai du mettre “Modem = /dev/ttyUSB2” pour que ça fonctionne.

Enfin, on peut activer l'interface ppp0 :

pi@raspberrypi(rw):~$ sudo ifup ppp0 

Et voir que tout roule dans ifconfig :

pi@raspberrypi(rw):~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr b8:27:eb:63:e1:64  
          adr inet6: fe80::3fa0:327c:1470:f457/64 Scope:Lien
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
lo        Link encap:Boucle locale  
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
ppp0      Link encap:Protocole Point-à-Point  
          inet adr:100.115.xxx.xxx  P-t-P:10.64.64.64  Masque:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:13618 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10473 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:3 
          RX bytes:16438678 (15.6 MiB)  TX bytes:647948 (632.7 KiB)
 
wlan1     Link encap:Ethernet  HWaddr fc:b4:e6:af:d0:f9  
          inet adr:192.168.x.xxx  Bcast:192.168.5.255  Masque:255.255.255.0
          adr inet6: fe80::f45f:ec3a:7fd5:be5f/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17147 errors:0 dropped:10532 overruns:0 frame:0
          TX packets:3864 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          RX bytes:2928538 (2.7 MiB)  TX bytes:509019 (497.0 KiB)
 
wwan0     Link encap:Ethernet  HWaddr 0e:b1:82:d0:4e:a1  
          inet adr:169.254.xxx.xxx  Bcast:169.254.255.255  Masque:255.255.0.0
          adr inet6: fe80::b785:3bc:9b3d:b245/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:153 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          RX bytes:0 (0.0 B)  TX bytes:51271 (50.0 KiB)

J'ai fait différents tests et j'avais différents soucis avec les DNS. J'ai installé resolvconf et le problème a été résolu. (Avant, le fichier resolv.conf était écrasé par openresolv.

$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 80.201.237.239
nameserver 80.201.237.238

Il restait encore un problème. Au démarrage, il fallait lancer usb_modeswitch avec une commande longue :

$ sudo usb_modeswitch -v 2001 -p a401 -W -n -M 555342435b000000000000000001061e000000000000000000000000000000 -2 555342435c000000000000000001061b000000010000000000000000000000 -3 555342435d000000000000000001061b000000020000000000000000000000

On peut simplifier cette commande en configuration le fichier '2001:a401' :

$ sudo nano /etc/usb_modeswitch.d/2001:a401
$ sudo cat /etc/usb_modeswitch.d/2001:a401 
#D-Link DWM-221
TargetVendor=0x2001
TargetProduct=0x7e19
MessageContent="555342435b000000000000000001061e000000000000000000000000000000"
MessageContent2="555342435c000000000000000001061b000000010000000000000000000000"
MessageContent3="555342435d000000000000000001061b000000020000000000000000000000"

On peut maintenant utiliser la commande suivante :

$ sudo usb_modeswitch -v 2001 -p a401 -c /etc/usb_modeswitch.d/2001:a401

C'est mieux, mais il faudrait que le réseau démarre correctement au démarrage. Il faudrait aussi qu'il (re)démarre automatiquement si on branche la clé 3G. Hop, un petit service systemd :

$ sudo nano /lib/systemd/system/3g.service
$ sudo cat /lib/systemd/system/3g.service 
[Unit]
Description=Connexion 3G
After=network.target
 
[Service]
ExecStartPre=/usr/sbin/usb_modeswitch -v 2001 -p a401 -c /etc/usb_modeswitch.d/2001:a401
ExecStart=/usr/bin/wvdial &
ExecStartPost=/sbin/resolvconf -u
Restart=always
RestartSec=5
 
[Install]
WantedBy=multi-user.target

On relance le daemon qui gère les services, on active le service et on regarde ce que ça donne!

$ sudo systemctl daemon-reload 
$ sudo systemctl enable 3g.service
$ sudo systemctl status 3g.service
● 3g.service - Connexion 3G
   Loaded: loaded (/lib/systemd/system/3g.service; enabled)
   Active: active (running) since mer 2016-09-07 15:27:43 CEST; 29min ago
 Main PID: 2672 (wvdial)
   CGroup: /system.slice/3g.service
           ├─2672 /usr/bin/wvdial &
           └─2692 /usr/sbin/pppd 460800 modem crtscts defaultroute usehostname -detach user ''; noipdefault cal...
 
sep 07 15:27:44 raspberrypi wvdial[2672]: [19B blob data]
sep 07 15:27:44 raspberrypi wvdial[2672]: [19B blob data]
sep 07 15:27:44 raspberrypi wvdial[2672]: --> local  IP address 100.xxx.xxx.xxx
sep 07 15:27:44 raspberrypi wvdial[2672]: [19B blob data]
sep 07 15:27:44 raspberrypi wvdial[2672]: --> remote IP address 10.xxx.xxx.xxx
sep 07 15:27:44 raspberrypi wvdial[2672]: [19B blob data]
sep 07 15:27:44 raspberrypi wvdial[2672]: --> primary   DNS address 80.201.237.239
sep 07 15:27:44 raspberrypi wvdial[2672]: [19B blob data]
sep 07 15:27:44 raspberrypi wvdial[2672]: --> secondary DNS address 80.201.237.238
sep 07 15:27:44 raspberrypi wvdial[2672]: [19B blob data]

Sources

informatique/configuration_d_une_cle_4g_lte.txt · Dernière modification : 2020/08/09 13:03 de 127.0.0.1