🛠 Basculer le Wi-Fi du CM4 sur l'antenne externe U.FL (dtparam=ant2)
Objectifs
Le module sans-fil du CM4 (Cypress/Infineon CYW43455, Wi-Fi 802.11ac double bande + Bluetooth 5.0) possède deux antennes et un commutateur électronique : l'antenne PCB embarquée (ant1) et un connecteur U.FL pour antenne externe (ant2). Ce tuto montre comment forcer l'antenne externe — indispensable dès que le module est enfermé dans un boîtier métallique — et comprendre que le choix se fige au démarrage, pas à l'exécution.
Matériel
- 1 × CM4 avec wireless activé (chiffre x=1 dans le code de commande, p. ex. CM4104032)
- 1 × IO Board CM4 + l'Antenna Kit officiel (antenne U.FL) ou une antenne tierce
- Règle du constructeur : l'antenne embarquée ne doit pas être entourée de métal, y compris de plan de masse — sinon, antenne externe obligatoire
- Alimenter l'IO Board, écran ou SSH déjà fonctionnels
Code complet
# 1. Sélectionner l'antenne externe (choix figé au boot)
echo 'dtparam=ant2' | sudo tee -a /boot/firmware/config.txt
sudo reboot
# 2. Après redémarrage : vérifier l'interface et le scan
ip -br link show wlan0
iw dev wlan0 scan | grep -E 'SSID|signal' | head -n 10
iw reg get | head -n 5 # vérifie le pays configuré
# 3. Mesurer la qualité du lien avant/après (même AP)
iw dev wlan0 link | grep -E 'Signal|tx bitrate'
# 4. (Optionnel) désactiver le Bluetooth par rail si non utilisé
# WL_nDisable / BT_nDisable sont des broches du module ; côté OS :
sudo systemctl disable --now bluetooth
Vérification attendue
Après le reboot avec dtparam=ant2, iw dev wlan0 scan renvoie des réseaux, iw dev wlan0 link affiche un signal cohérent (par ex. −60 dBm à 2 m), et le passage ant1 → ant2 change mesurablement le signal quand le module est près d'un boîtier métallique. dmesg | grep -i brcm confirme l'initialisation du CYW43455.
Erreurs fréquentes
- Attendre un changement d'antenne à chaud : le commutateur se configure au boot ; sans reboot,
ant2ne change rien. - Antenne tierce sans se soucier de la certification : Raspberry Pi ne fournit aucune aide de certification pour les antennes tierces — la certification modulaire ne couvre que le kit officiel.
- Boîtier métallique avec l'antenne embarquée : la datasheet l'interdit explicitement (plan de masse inclus) ; le Wi-Fi semble « mort » alors que tout est valide.
- Oublier que le variant sans-fil est un SKU : un CM4 sans le chiffre wireless à 1 n'a tout simplement pas de radio — vérifier le code de commande avant d'acheter un kit d'antenne.
Autres tutoriels pour cette carte
- Premier démarrage d'un CM4 Lite depuis la microSD de l'IO Board
- GPIO du CM4 : comprendre les banks 1,8 V / 3,3 V avant de câbler
- Bootloader EEPROM du CM4 : maîtriser BOOT_ORDER via usbboot
- Ajouter une RTC au CM4 (PCF8523 sur I2C1 via dt-blob)
- Son sur CM4 : DAC I2S/PCM (PCM5102) sans prise jack
- Horodatage industriel : PTP IEEE 1588 sur le PHY Ethernet du CM4
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash