🛠 Bootloader EEPROM du CM4 : maîtriser BOOT_ORDER via usbboot

Raspberry Pi Compute Module 4 (CM4, 2020) — Fiche carte · intermediaire · Schéma : IMG-compute-module-4-intermediaire-1-ordre-boot-eeprom-cm4.svg — CM4 sur IO Board avec jumper J2 (nRPI_BOOT) posé, câble micro-USB J11 relié à un PC hôte exécutant rpiboot ; une puce EEPROM sur le module est mise en évidence avec les valeurs BOOT_ORDER 0xf1, 0xf2, 0xf15, 0xf6.

Objectifs

Le CM4 est le premier Compute Module avec un bootloader dans une EEPROM SPI embarquée sur le module. Conséquences concrètes : recovery.bin n'est jamais exécuté depuis l'eMMC/SD, le service rpi-eeprom-update est désactivé par défaut, et toute modification de l'ordre de boot passe par usbboot/rpiboot. Ce tuto : lire la version du bootloader, changer BOOT_ORDER (0xf1 SD/eMMC, 0xf2 réseau, 0xf15 USB→eMMC, 0xf6 NVMe) via le flux recovery, puis verrouiller l'EEPROM en écriture.

Matériel

Code complet

#!/usr/bin/env bash
# bootorder-cm4.sh — reprogrammer BOOT_ORDER de l'EEPROM d'un CM4 (flux officiel).
set -euo pipefail
git clone --depth 1 https://github.com/raspberrypi/usbboot && cd usbboot
cd recovery
cat > boot.conf <<'EOF'
[All]
BOOT_ORDER=0xf15
EOF
./update-pieeprom.sh                     # régénère pieeprom.bin depuis boot.conf
cd .. && sudo ./rpiboot -d recovery      # écrit l'EEPROM (J2 posé, EEPROM_nWP non maintenu bas)

Puis, une fois le module redémarré normalement (J2 retiré) :

vcgencmd bootloader_version | head -1    # la date doit correspondre au build fraîchement écrit
grep -i boot /var/log/bootstrap.log 2>/dev/null || true
# Durcissement production : protection en écriture
echo 'eeprom_write_protect=1' | sudo tee -a /boot/firmware/config.txt

Vérification attendue

vcgencmd bootloader_version affiche la date du build régénéré ; avec BOOT_ORDER=0xf15, brancher une clé USB bootable fait démarrer le module dessus avec repli eMMC. Le log du boot (uart ou journalctl -b) trace l'ordre de boot utilisé.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels