🛠 Premiers pas : comprendre le monstre à 9 cœurs et entrer dans Linux via ADB
Objectives
Discover the Arduino Portenta X8 (SKU ABX00049, €223.00 on the official store in October 2026): not just a simple Arduino board, but two industrial products in a single 66 × 25 mm module — "no fewer than 9 cores" according to Arduino. On one side, an NXP i.MX 8M Mini (4× Cortex-A53 up to 1.8 GHz + Cortex-M4 up to 400 MHz) running Linux with 2 GB of LPDDR4 and 16 GB of eMMC; on the other, a ST STM32H747XI (Cortex-M7 + Cortex-M4) running Arduino. You will install adb, connect to the embedded Linux, and get your bearings. Beware of the naming trap: the X8 is not an STM32MP1 board and is not the Portenta H7!
Hardware
- 1 × Arduino Portenta X8
- 1 × USB-C data cable (Power Delivery supported by the board)
- ⚠️ A USB 3.0 port on the PC is recommended to guarantee current: the board can draw up to 4 W (4000 mW max, 2350 mW typical in busy loop)
- PC with adb installed (Android platform-tools) or the Arduino IDE which provides it
- The bare module has no RJ45 jack nor USB-A port: for Ethernet and extended USB, you will need a carrier board (Max/Hat/Mid Carrier)
Complete code
# 1. Brancher la X8 en USB-C sur un port USB 3.0 du PC.
# 2. Vérifier que la carte est visible (VID 2341, PID 0061) :
adb devices
# (sous Linux : sudo adb devices ou règle udev pour le VID 0x2341)
# 3. Entrer dans le Linux embarqué (utilisateur par defaut : fio)
adb shell
# fio@portenta-x8:~$
# 4. Premiers repères dans le shell Yocto (Linux microPlatform)
cat /etc/os-release # distribution LMP (Foundries.io, base Yocto)
uname -a # noyau 6.1.24-lmp-standard en usine
nproc # 4 : les quatre Cortex-A53 visibles de Linux
free -h # ~2 Go de LPDDR4
df -h / # 16 Go d'eMMC
exit
# 5. Dashboard de maintenance « Arduino Linux Wizard » depuis le PC :
adb forward tcp:8080 tcp:80
# puis ouvrir http://localhost:8080 dans un navigateur
Expected verification
adb devices lists the board; adb shell drops you onto a fio@portenta-x8 prompt, nproc returns 4 and uname -a displays the 6.1.24-lmp-standard kernel. The embedded Linux is Foundries.io's Linux microPlatform (LMP), a Yocto distribution with integrated Docker support — this is the gateway to all following tutorials. The Linux Wizard dashboard (step 5) is the official maintenance tool for monitoring the board's status.
Common errors
- Confusing it with the Portenta H7 or an STM32MP1 board: the X8 is a dual module (i.MX 8M Mini on the Linux side + STM32H747 on the Arduino side); the Linux side is not programmed with the Arduino IDE but with containers, and the Arduino side uses the "Arduino Mbed OS Portenta Boards" core.
adb devicesis empty: a "charging" USB-C cable without data lines (cause #1), or a USB 2.0 port with insufficient current for heavy load — switch to USB 3.0.- Looking for documentation on docs.portenta.io: the old site is dead (DNS failure) and the arduino/PortentaDocs repository returns 404; all documentation has migrated to docs.arduino.cc (official tutorial: X8 Fundamentals).
- Expecting a graphical desktop: this is an embedded Yocto distribution, you work in shell and Docker containers, not on a desktop.
- >
- >
Other tutorials for this board
- Premier sketch sur le cœur M4 : le blink qui se flash par ADB
- Docker dès la sortie de l'emballage : premier conteneur sur le Linux embarqué
- Pont Linux ↔ Arduino : appeler des fonctions du sketch M4 depuis Python (RPC)
- Mettre la X8 en réseau : Wi-Fi du Murata 1DX et Gigabit Ethernet sur porteuse
- Nœud IoT de datalogging : capteurs sur le M4, stockage et transport en conteneur
- Le firmware caché : mettre à jour le bridge STM32H7 M7 qui expose les périphériques à Linux
Code examples for this board
etat-systeme.shBashgpio-libgpiod.shBashpython-gpio.pyPythondocker-hello.shBashflasher-core-arduino.shBashwifi-nmcli.shBash