🛠 Flasher l'eMMC du CM1 avec rpiboot et le jumper J4
Objectifs
Programmer la puce eMMC d'un Compute Module 1 vierge ou à reprogrammer. Le CM1 n'a pas d'EEPROM de boot : en plaçant le jumper J4 sur les broches 1-2, le module se présente au PC comme un périphérique de masse USB (mode rpiboot/OTP) et dd écrit directement dans l'eMMC. On replace ensuite J4 en 2-3 pour un boot normal. Piège connu : l'énumération USB du mode programmeur est capricieuse, il faut un branchement direct, sans hub.
Matériel
- Un Compute Module 1 avec sa carte porteuse (IO Board de préférence)
- Le jumper J4 (broches 1-2 = mode programmeur, 2-3 = boot normal)
- Un câble USB vers le port device du connecteur USB du CM1
rpiboot(util du dépôtlibusb/raspberrypi/usbboot)
Code complet
# 1. J4 sur 1-2, alimenter, brancher l'USB direct (PAS de hub)
sudo rpiboot -d /usr/lib/rpiboot/usb # attend puis énumère l'eMMC
# 2. Le module apparaît comme disque (ex. /dev/sdb) : vérifier !
lsblk
# 3. Écrire l'image (gros blocs = rapide)
sudo dd if=2023-05-03-raspios-bullseye-armhf.img of=/dev/sdb bs=4MiB status=progress oflag=sync
sync
# 4. J4 retour sur 2-3, débrancher, rebrancher : boot normal
Vérification attendue
Après rpiboot, un nouveau disque de la taille de l'eMMC (typ. 4 Go) apparaît dans lsblk. Le dd se termine sans erreur ; J4 remis en 2-3, la carte verte de l'IO Board clignote et le boot série affiche le noyau. Sur un CM1 totalement vierge, c'est la seule méthode : il n'y a pas d'EEPROM à réanimer.
Erreurs fréquentes
- Passer par un hub USB ou un port frontal : l'énumération du mode programmeur échoue silencieusement,
rpibootattend éternellement. Brancher direct sur le contrôleur hôte. - Oublier de remettre J4 en 2-3 : le module reste en disque USB, croire à un boot corrompu.
- Se tromper de disque avec
dd: vérifier la taille danslsblkavant d'écrire. - Retirer l'alimentation pendant le
dd: eMMC à moitié écrite, recommencer depuis l'étape 1. - Chercher une EEPROM avec
rpiboot -e: le CM1 n'en a pas, cette option est sans effet ; le fallback se joue ailleurs (voir le tuto boot sans EEPROM).
Autres tutoriels pour cette carte
- Premier boot : Bullseye legacy, rails 3,3 V et ordre des alimentations
- Première LED sur GPIO17 : banques, courants et broches réservées
- Servo moteur sur PWM0 (GPIO18) : 50 Hz et 2,5 à 12,5 %
- BME280 sur I2C0 (GPIO2/3) : activer i2c_arm et lire l'ID 0x60
- Caméra officielle sur le connecteur FPC CSI du CM1
- Boot sans EEPROM : fallback USB et bootcode.bin sur eMMC
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash