🛠 Monter le module BPI-CM4 sur son carrier et réussir le premier boot
Objectifs
Le Banana Pi BPI-CM4 n'est pas un nano-ordinateur autonome : c'est un module compute (55 × 40 mm, deux connecteurs 100 broches, 4 trous M2.5) bâti sur l'Amlogic A311D (4× Cortex-A73 + 2× Cortex-A53, Mali-G52 MP4, NPU 5 TOPS, 4 GB LPDDR4, 16 GB eMMC). Vous allez l'installer sur un carrier compatible Raspberry Pi CM4, l'alimenter et réussir le premier boot sous Armbian — sans tomber dans le piège du boot eMMC.
Matériel
- Module Banana Pi BPI-CM4 (4 GB LPDDR4 / 16 GB eMMC)
- Carrier compatible CM4 : BPI-CM4IO recommandé (RJ45 GbE RTL8211F, 1× HDMI jusqu'à 4Kp60, 2× USB-A 2.0, USB-C OTG, port mini-PCIe + micro-SIM, header 26 broches, slot microSD) — les carriers Raspberry Pi CM4 fonctionnent aussi (Pin2Pin), mais les fonctions doubles (2 HDMI, 2 CSI) ne marchent pas
- Alimentation 5 V / 3 A de qualité (mesures publiées : 1,8 W au repos, 4,1 W en pleine charge)
- Carte microSD (le slot est sur le carrier, pas sur le module) + image Armbian pour la carte bananapicm4io
- Deux antennes u.FL pour le WiFi (non fournies en boîte)
Code complet
# 1) Insérer le module bien perpendiculairement dans les deux connecteurs
# 100 broches du carrier (comme un RPi CM4 : pas de socket, repères silk).
# 2) Sur le PC, flasher Armbian (carte : bananapicm4io, famille meson-g12b)
xzcat Armbian_*_BananaPi-CM4IO_*.img.xz | sudo dd of=/dev/sdX bs=4M status=progress conv=fsync
# 3) PIÈGE : le ROM Amlogic démarre l'eMMC EN PREMIER. Si l'eMMC contient un
# image bootable (Android 9, vieille image vendor), la SD est ignorée.
# Depuis un système qui boote, effacer l'eMMC :
sudo dd if=/dev/zéro of=/dev/mmcblk0 bs=8M status=progress
# (ou « Erase all » avec l'aml-flash-tool / USB Burning Tool côté vendor)
# 4) Premier boot : alimenter en USB-C OTG, HDMI + Ethernet branchés
sudo nmtui # configurer le réseau
uname -a && ip -br link show eth0
Vérification attendue
Affichage HDMI (jusqu'à 4Kp60), login Armbian créé au premier boot, uname -a qui affiche un noyau 6.x meson/g12b, eth0 lié à 1 Gbit/s (PHY Realtek RTL8211F embarqué sur le module), et la LED bleue (GPIOAO_7) en mode heartbeat.
Erreurs fréquentes
- Croire que le module fonctionne seul : sans carrier, il n'a ni alimentation, ni HDMI, ni microSD, ni Ethernet.
- Boot SD bloqué par une eMMC bootable ; une eMMC à moitié flashée peut bloquer le boot en BL2 (récupération : effacement complet, cf. code).
- Alimentation 5 V / 2 A trop juste : redémarrages sous charge.
- Carrier CM4 à double HDMI ou double caméra : l'A311D limite à 1 HDMI, 1 CSI, 1 DSI (« PIN limited » selon le wiki).
- Oublier de visser les antennes u.FL (ou de laisser l'antenne PCB) avant de tester le WiFi RTL8822CS.
Autres tutoriels pour cette carte
- 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
- Exploiter le NPU 5 TOPS de l'A311D pour l'inférence embarquée
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash