🛠 Monter un point d'accès 4G avec le module Quectel EC20 du port mini-PCIe
Objectifs
Le carrier BPI-CM4IO expose sur son port mini-PCIe du PCIe, de l'USB 2.0 et un emplacement micro-SIM : le wiki vendor documente noir sur blanc un module LTE Quectel EC20 comme passerelle WAN (pilote qmi_wwan, outil quectel-CM, repli pppd, port AT sur /dev/ttyUSB2). Vous allez installer le module, créer l'interface wwan0, sortir sur l'opérateur, puis activer le partage NAT pour faire du BPI-CM4 un routeur 4G de secours.
Matériel
- BPI-CM4 + BPI-CM4IO sous Armbian ou image vendor
- Module Quectel EC20 au format mini-PCIe
- Carte micro-SIM data (PIN désactivé de préférence) + 2 antennes u.FL
- Câble Ethernet vers le réseau local à servir
Code complet
# 1) Carrier éteint : insérer l'EC20, la micro-SIM, visser les 2 antennes u.FL.
sudo apt update && sudo apt install -y usbutils ppp curl minicom
lsusb | grep -i quectel # ID vendeur 2c7c attendu
ls /dev/ttyUSB* # port AT = /dev/ttyUSB2
# 2) Diagnostic AT
sudo minicom -D /dev/ttyUSB2 -b 115200
# AT+CPIN? -> READY (sinon : AT+CPIN="1234")
# AT+CSQ -> qualité du signal (ex. 22,99)
# AT+COPS? -> opérateur enregistré
# 3) Mode QMI : charger le pilote et monter wwan0
sudo modprobe qmi_wwan
ip -br link | grep wwan
# quectel-CM : outil officiel Quectel (miroirs GitHub), compilé sur la carte
cd quectel-CM && make && sudo ./quectel-CM &
sudo dhclient wwan0
curl -s --interface wwan0 https://ifconfig.me
# 4) NAT WAN(wwan0) vers LAN(eth0)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wwan0 -j ACCEPT
sudo iptables -A FORWARD -i wwan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Vérification attendue
AT+CSQ renvoie une qualité exploitable (au-delà de 15 environ) ; wwan0 obtient une adresse de l'opérateur ; curl --interface wwan0 affiche l'IP publique 4G ; une machine branchée sur l'eth0 du BPI sort sur Internet via la 4G. Les débits restent ceux de l'EC20 et du signal, pas du GbE local.
Erreurs fréquentes
- Oublier les antennes u.FL : sans elles, l'EC20 ne trouve aucune cellule (CSQ 99).
- SIM avec code PIN : le module reste bloqué tant que AT+CPIN n'a pas répondu.
- Confondre les ports série : l'AT n'est pas sur ttyUSB0 mais typiquement ttyUSB2.
- Ne pas charger qmi_wwan (ou laisser le module dans un mode non QMI) : aucune interface wwan0 n'apparaît.
- Ne pas persister ip_forward ni les règles iptables : au reboot le NAT a disparu — écrire un service systemd dédié.
- Croire le module connecté en PCIe : l'EC20 transite par le signal USB 2.0 du connecteur.
Autres tutoriels pour cette carte
- Monter le module BPI-CM4 sur son carrier et réussir le premier boot
- Apprivoiser les LED et la touche ADC du carrier CM4IO
- Mesurer le stockage du BPI-CM4 : eMMC, microSD et le palier NVMe
- Activer I2C, SPI et UART sur le BPI-CM4 : env.txt ou armbianEnv.txt
- Brancher un capteur BME280 sur l'I2C1 du carrier (GPIOX_17/18)
- Déplacer le rootfs sur un SSD NVMe via le port mini-PCIe
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash