🛠 Le firmware caché : mettre à jour le bridge STM32H7 M7 qui expose les périphériques à Linux

Arduino Portenta X8 · avance · Schéma : IMG-portenta-x8-avance-1-portenta-x8-firmware-bridge-m7.svg — architecture logicielle de la Portenta X8 en trois étages : conteneurs Docker en haut, noyau Linux avec modules x8h7_* au centre, firmware STM32H747 M7 en bas relié au cœur M4 Arduino, flèche adb push du fichier STM32H747AII6_CM7.bin vers la carte, bouton poussoir 10 s à côté

Objectives

Beneath the surface of the X8, a third system operates that the IDE never sees: the Cortex-M7 of the STM32H747XI runs a proprietary Arduino bridge firmware (repository arduino/portentax8-stm32h7-fw, latest release 0.0.3, October 2023) which is "normally invisible to the user" and maps all MCU peripherals to Linux peripherals via the x8h7_\* kernel modules (repository portentax8-x8h7). When this firmware is out of sync, Linux-side peripherals fail without the M4 sketch being at fault. This tutorial covers: diagnosis, clean update, and knowledge of open bugs (CAN TX stall).

Hardware

Complete Code

# 1. Telecharger le binaire de firmware M7 (releases du depot officiel)
#    puis le pousser sur la carte :
adb push STM32H747AII6_CM7.bin /home/fio

# 2. Installer la mise a jour dans le STM32H747
adb shell
fio@portenta-x8:~$ cd /home/fio
fio@portenta-x8:~$ sudo ./399-install-update

# 3. Reboot : maintenir le bouton poussoir embarque ~10 s

# 4. apres reboot, verifier l'etat general
sudo journalctl -fu m4-proxy        # le pont RPC doit repasser au vert
lsmod | grep x8h7                   # modules bridge charges
dmesg | grep -i x8h7                # traces du probe des peripheriques

# Optionnel : dashboard Linux Wizard depuis le PC
#   adb forward tcp:8080 tcp:80  ->  http://localhost:8080

Expected Verification

After running 399-install-update and rebooting via the button (10 s), the x8h7_* modules are loaded (lsmod), the m4-proxy service restarts cleanly, and RPC calls work again. The procedure is exactly the one from the official image-flashing tutorial; the Linux Wizard dashboard provides an overview of the board's status. This is the first thing to do before blaming your sketch when "RPC doesn't work at all."

Common Errors

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials