====== 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 [[http://www.dlink.com/fr/fr/support/product/dwm-221-4g-lte-usb-adapter|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 [[http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=3&t=2173&start=60|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 [[http://john.de-graaff.net/wiki/doku.php/links/umts_debian|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 [[https://code.aliyun.com/yaoruisheng/k2-router/tree/514dad408f1dd5bc6f491d41f445828a4e8876ed/uboot/mips|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 ===== * [[http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=3&t=2173&start=60|forum (draisberghof.de)]] * [[http://john.de-graaff.net/wiki/doku.php/links/umts_debian|se connecter avec minicom sur la clé 3G (john.de-graaff.net)]] * [[http://www.dlink.com/fr/fr/support/product/dwm-221-4g-lte-usb-adapter|DWM-221 4G-LTE usb adapter (dlink.com)]] * [[https://enavarro.me/raspberry-pi-connection-3g-et-envoi-de-sms-en-meme-temps.html|connection 3G et envoi de sms (enavarro.me)]] * [[https://www.emnify.com/2015/06/18/how-to-fit-a-raspberry-pi-with-mobile-connectivity/|how to fit a raspberry with mobile connectivité (emmify.com)]] * [[http://raspberry-at-home.com/installing-3g-modem/|installing 3G modem (raspberry-at-home.com)]] * [[https://shkspr.mobi/blog/2012/07/3g-internet-on-raspberry-pi-success/|3G internet on Raspberry Pi success (shkspr.mobi)]] * [[http://www.sbprojects.com/projects/raspberrypi/mobile.php|Raspberry Pi - mobile (sbprojects.com)]]