J’avais déjà posté un article à propos d’une connexion de secours 4G mais le dongle utilisé avait une limitation : impossible d’envoyer des SMS avec. Depuis cet article j’ai lu à propos d’un module Simcom destiné à l’IOT : le a7670 décliné en plusieurs versions (a7670e pour l’Europe, a7670g pour la version global qui ajoute notamment la bande 28/700MHz, …). Sur le papier il semble parfait pour doter un SBC d’une connexion 4G LTE mais qu’en est-il vraiment ?
Caractéristiques techniques du module A7670g
Ce module est compatible 2G (GPRS et EDGE) et 4G (LTE Catégorie 1, donc limité à 10Mb/s en descendant et 5Mb/s en montant, suffisant pour de l’IOT ou une connexion de secours et garant d’une consommation réduite).
Il gère l’envoi de SMS et est vu par le PC sous la forme de ports COM (soit pour les commandes AT soit pour la data) et (par défaut, cela peut être modifié via les commandes AT) d’une interface RNDIS (vu comme une carte réseau sans nécessiter de pilote aussi bien sous Windows que sous Linux)
On le trouve par exemple sous la forme d’un dongle USB pour environ 15-20€ avec les frais de port

Cette version intègre un slot micro sim et une antenne externe.
Mise à jour du firmware
Après avoir reçu le dongle et fait quelques tests j’ai vite déchanté : si j’obtiens assez facilement une connexion via les commandes AT (cf la suite de l’article) le dongle semble assez rapidement se figer : port COM qui ne répond plus, perte de la connexion, …
Il semble en effet que le firmware par défaut manque de stabilité et malheureusement Simcom ne propose pas de téléchargement clé en main pour le mettre à jour.
Après quelques recherches sur le Net j’ai fini par trouver le nécessaire pour upgrader sous Windows sur un repo github : https://github.com/Xinyuan-LilyGO/LilyGo-Modem-Series/blob/main/docs/en/upgrade/sim7670g/sim7670g_upgrade.md
Tout d’abord il faut installer les pilotes pour les ports COM sous Windows (proposé dans le lien ci dessus)
Il faut ensuite extraire les fichiers A124B01A7670M7_A7670G-LLSE_V101240402.rar et A76XX_A79XX_MADL V1.32 Only for Update.zip
On lance alors l’exécutable A76XX_A79XX_MADL Only for Update.exe et on obtient l’interface suivante :

On clique sur le bouton

et on choisit le zip A124B01V01A7670M7_A7670G-LLSE_V101240402.zip puis on clique sur

qui lance le processus


On peut alors débrancher le dongle et faire le reste de la configuration sous Linux (c’est pour une raspberry Pi dans mon cas) ou sous Windows (avec Putty pour communiquer avec le port COM par exemple)
Configuration du dongle
Sous linux on peut utiliser minicom :
sudo minicom -D /dev/ttyUSB2
Pour vérifier que tout fonctionne on tape « AT » puis <entrée> et le dongle doit répondre « OK »
On va ensuite ajouter notre APN en saisissant
AT+CGDCONT=2,"IPV6","mmsbouygtel.com"
pour Bouygues (testé avec un forfait CDiscount mobile) ou pour Free :
AT+CGDCONT=2,"IPV6","free"
Ensuite pour activer la connexion il faut saisir la commande
AT+CGACT=1,2
A partir de là le dongle va automatiquement se connecter au réseau lorsqu’il est branché (j’ai testé avec succès sous Linux et sous Windows).
Cette configuration fait 2 hypothèses : une connexion uniquement IPv6 (dans mon cas c’est pour une utilisation de type prise en main à distance avec Tailscale donc je n’ai pas besoin d’IPv4 mais on pourrait aussi saisir la valeur « IPV4 » lors de la configuration de l’APN si l’opérateur le propose en adaptant la configuration dans la suite de l’article) et une carte SIM sans code PIN (sinon il faut envoyer une commande AT pour la désimlocker au démarrage)
Configuration du SBC sous Linux
Par défaut ModemManager va tenter de prendre la main sur le modem pour établir la connexion ce qui cause plus de mal que de bien (vu que notre dongle gère l’auto-connexion, on n’a pas besoin que ModemManager envoie de commandes AT au modem)
On va donc ajouter une règle pour lui dire d’ignorer l’interface réseau du dongle
sudo nano /etc/udev/rules.d/77-mm-usb-device-blacklist.rules
# Ignore usb0 interface for ModemManager
SUBSYSTEM=="net", KERNEL=="usb0", ENV{ID_MM_DEVICE_IGNORE}="1"
et on va configurer manuellement notre connexion réseau :
sudo nmcli connection add type ethernet ifname usb0 con-name "lte"
sudo nmcli connection modify lte autoconnect true
sudo nmcli connection modify lte ipv4.method disabled
sudo nmcli connection modify lte ipv6.route-metric 3000
La première ligne définit une connexion nommée « lte » pour l’interface usb0 du dongle. On lui indique de s’auto-connecter via la deuxième, la troisième désactive l’IPv4 (vu la configuration de notre APN) et la troisième indique une métrique haute (peu prioritaire) pour que le trafic Internet continue de passer par défaut par l’interface principale (wifi ou ethernet) si elle est opérationnelle.
J’ai pu constater un conflit avec la connexion Ethernet (qui supplantait la configuration « lte ») au redémarrage. Pour contourner cela je suis passé par la commande « sudo nmtui » pour supprimer la connexion « netplan-eth0 ». Après redémarrage une nouvelle connexion « Wired connection 1“ qui ne s’applique qu’à eth0 est ajoutée automatiquement et usb0 garde sa connexion “lte”.
Pour aller plus loin
On a désormais une connexion 4G LTE opérationnelle sur notre Raspberry.
Pour envoyer des SMS on peut passer par ModemManager à condition de ruser un peu.
Par défaut celui-ci voit le modem lte comme non connecté (on peut le vérifier via la commande mmcli -m 0).
Pour que ModemManager soit plus coopératif il faut après démarrage envoyer la commande AT « AT+CFUN=1,1 » sur /dev/ttyUSB2 afin que le modem redémarre.
On peut alors envoyer des SMS via ModemManager (mmcli -m <# du modem> –messaging-create-sms puis mmcli -s <id sms> –send) ou mieux encore via l’api DBUS. Il faut juste se donner les droits en créant un fichier /etc/polkit-1/rules.d/50-modemmanager.rules
polkit.addRule(function(action, subject) {
if (action.id.startsWith("org.freedesktop.ModemManager1") &&
subject.user == "MONUSER") {
return polkit.Result.YES;
}
});
puis se créer une application correspondant à ses besoins (ça pourra être l’objet d’un autre article, je suis en train de me tester une appli avec IHM Web pour envoyer et recevoir des SMS réalisée en mode « vibe coding », si jamais le résultat est publiable je l’ajouterais sur ce site).
