The Arduino Portenta X8 is not a conventional microcontroller board.
It is an industrial System-on-Module that combines:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
NXP i.MX 8M Mini → Linux → quad Cortex-A53 up to 1.8 GHz → 2 GB LPDDR4 → 16 GB eMMC STM32H747 → Arduino / real-time I/O → Cortex-M7 up to 480 MHz → Cortex-M4 up to 240 MHz Murata 1DX → Wi-Fi → Bluetooth NXP SE050C2 → hardware security |
The important idea is that these processors are not simply independent boards placed next to each other.
Arduino designed the X8 so that Linux handles high-level computing while the STM32H747 provides deterministic microcontroller I/O and real-time control.
Portenta X8 Architecture at a Glance
| Subsystem | Hardware | Typical role |
|---|---|---|
| Linux processor | NXP i.MX 8M Mini | Linux, containers, networking, databases, Python, edge applications |
| Linux CPU cores | 4 × Cortex-A53 up to 1.8 GHz | Application processing |
| i.MX auxiliary core | Cortex-M4 up to 400 MHz | Reserved/future low-power or real-time use in Arduino’s current architecture |
| Real-time MCU | STM32H747 | I/O mediation and Arduino real-time control |
| STM32 M7 | Cortex-M7 up to 480 MHz | Arduino firmware bridge between Linux and STM32 peripherals |
| STM32 M4 | Cortex-M4 up to 240 MHz | User Arduino sketch / deterministic real-time tasks |
| Linux RAM | 2 GB LPDDR4 | Operating system and applications |
| Linux storage | 16 GB eMMC | Linux filesystem, containers, application data |
| Wireless | Murata 1DX | Wi-Fi and Bluetooth |
| Security | NXP SE050C2 | Keys, credentials and hardware-backed cryptography |
The i.MX 8M Mini Runs Linux
The main application processor is the:
|
1 2 3 4 |
NXP i.MX 8M Mini |
with:
|
1 2 3 4 5 |
4 × Cortex-A53 up to 1.8 GHz per core |
This is a Linux-capable MPU rather than a conventional Arduino microcontroller.
It is suitable for:
- Python applications;
- databases;
- web servers;
- MQTT brokers and clients;
- containerised services;
- edge analytics;
- machine-learning inference;
- network gateways;
- industrial protocol conversion.
2 GB LPDDR4 RAM
The Linux processor has:
|
1 2 3 4 |
2 GB LPDDR4 |
which is several orders of magnitude more application memory than a normal Arduino-class MCU.
This makes it practical to run:
- multiple Linux services;
- Docker containers;
- Python packages;
- larger networking stacks;
- databases;
- local web applications.
16 GB eMMC Storage
The X8 includes:
|
1 2 3 4 |
16 GB eMMC |
connected to the i.MX 8M Mini.
This stores:
- the Linux operating system;
- container images;
- application files;
- logs;
- configuration;
- local databases.
This is very different from the relatively small Flash storage used by normal MCU firmware.
Yocto-Based Linux
Portenta X8 ships with a:
|
1 2 3 4 |
Yocto-based Linux distribution |
preloaded onboard.
Yocto is a framework for creating embedded Linux distributions from:
- recipes;
- layers;
- packages;
- board-support metadata.
The system is therefore designed more like an industrial embedded Linux product than a desktop Raspberry Pi installation.
Docker Container Support
A major X8 feature is:
|
1 2 3 4 |
Docker container support |
which allows applications to be packaged with their:
- runtime;
- libraries;
- dependencies;
- configuration.
The Linux base system can remain stable while application services run in isolated containers.
You Do Not Need a Paid Subscription to Run Containers
Arduino explicitly states that users can:
|
1 2 3 4 5 6 7 |
create run and control custom containers |
without a subscription.
The optional commercial service adds fleet-level functions such as:
- secure OS maintenance;
- fleet monitoring;
- managed OTA updates;
- large-scale device management.
Portenta X8 Manager
For professional fleets, Arduino offers:
|
1 2 3 4 |
Portenta X8 Manager |
with services developed around the Foundries.io infrastructure.
This is aimed at:
- commercial deployments;
- remote fleets;
- security maintenance;
- controlled application rollout;
- OTA management.
The STM32H747 Is Not Used Like a Normal Portenta H7
The second major processor is the:
|
1 2 3 4 |
STM32H747 |
which contains:
|
1 2 3 4 5 6 7 8 |
Cortex-M7 → up to 480 MHz Cortex-M4 → up to 240 MHz |
On a normal Portenta H7, both cores can be used directly as application processors.
On Portenta X8, the architecture is different.
The STM32 M7 Is the Linux I/O Bridge
Arduino runs custom firmware on the:
|
1 2 3 4 |
STM32H747 Cortex-M7 |
which is normally invisible to the user.
Its role is to:
|
1 2 3 4 5 |
map STM32 peripherals → into Linux-accessible devices |
and mediate communication between Linux and the real-time Arduino side.
The User Arduino Sketch Runs on the STM32 M4
The normal user-programmable real-time core is:
|
1 2 3 4 5 |
STM32H747 Cortex-M4 → 240 MHz |
Arduino sketches uploaded through the Arduino environment run on this M4 core.
This is ideal for:
- motor control;
- fast sensor acquisition;
- precise PWM;
- time-critical state machines;
- industrial I/O;
- deterministic communication.
Do Not Confuse the Two Cortex-M4 Cores
Portenta X8 actually contains two different Cortex-M4 processors:
|
1 2 3 4 5 6 7 8 9 10 |
i.MX 8M Mini internal M4 → up to 400 MHz → currently reserved for future use STM32H747 M4 → up to 240 MHz → user Arduino real-time core |
When Arduino documentation talks about uploading an Arduino sketch to:
|
1 2 3 4 |
the M4 |
it normally means the STM32H747 M4.
Traditional Portenta H7 Dual-Core Operation Is Not the X8 Model
Because the STM32 M7 is used as the Linux-to-peripheral mediator, Portenta X8 does not use the STM32H747 in the same traditional:
|
1 2 3 4 5 6 |
M7 application + M4 application |
dual-core pattern as Portenta H7.
The normal architecture is:
|
1 2 3 4 5 6 7 8 |
Linux on i.MX 8M Mini ↕ STM32 M7 bridge firmware ↕ STM32 M4 Arduino sketch |
How M4 Sketch Uploading Works
Arduino’s current X8 documentation describes a Linux service named:
|
1 2 3 4 |
monitor-m4-elf-file.service |
which watches for an updated Arduino M4 firmware image.
It then uses:
|
1 2 3 4 |
OpenOCD |
to program the STM32H747 M4.
This means the Linux system participates directly in the Arduino upload process.
Linux and Arduino Can Exchange Data
The X8 supports:
|
1 2 3 4 5 |
Remote Procedure Call RPC |
communication between:
- Linux applications;
- the STM32 bridge firmware;
- the user M4 sketch.
MessagePack-RPC
Arduino uses:
|
1 2 3 4 |
MessagePack-RPC |
for efficient structured data exchange between Linux and the Arduino side.
This is useful when a Linux program needs to:
- read a sensor value from the M4;
- change a motor-control setpoint;
- request I/O state;
- send configuration data;
- receive real-time events.
m4-proxy
On the Linux side, Arduino documentation identifies:
|
1 2 3 4 |
m4-proxy |
as the service that transfers data between Linux and the STM32 Arduino environment.
The application architecture can therefore look like:
|
1 2 3 4 5 6 7 8 9 |
Python container → MessagePack-RPC → m4-proxy → STM32 M7 bridge → STM32 M4 sketch → real-time I/O |
Python + Arduino Is a Natural X8 Pattern
A common design is:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Linux Python → networking → database → web API → cloud connection → high-level logic Arduino M4 → ADC → PWM → timing → field I/O → control loop |
The two parts exchange only the data they need.
Why Not Do Everything in Linux?
Linux is powerful but not normally hard real-time.
The scheduler, memory management and background services can introduce timing jitter.
For tasks such as:
- motor commutation;
- microsecond pulse timing;
- fast deterministic sampling;
- safety state machines;
- precise industrial I/O;
the STM32 M4 is a more appropriate execution environment.
Why Not Do Everything on the STM32?
The reverse is also true.
Implementing:
- large databases;
- web applications;
- containerised services;
- complex TLS stacks;
- Python analytics;
- Linux packages;
on a microcontroller would be unnecessarily difficult.
Linux Can Access Board Peripherals
The STM32 M7 firmware maps Portenta peripherals into the Linux environment.
This allows Linux applications to work with board I/O without manually reimplementing every STM32 driver.
Depending on the interface and software stack, Linux can interact with:
- GPIO;
- I2C;
- SPI;
- UART;
- ADC-related interfaces;
- PWM;
- carrier-board peripherals.
High-Density Connectors Are the Real Expansion Interface
Like other Portenta modules, X8 has two:
|
1 2 3 4 |
80-pin high-density connectors |
on the underside.
These expose high-speed and industrial interfaces far beyond what fits on the MKR-style side headers.
Interfaces Available Through the High-Density Connectors
Arduino’s current X8 datasheet lists access to:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
1 × PCI Express lane 1 × 10/100/1000 Ethernet 2 × USB High Speed 4 × UART 3 × I2C 1 × SD card interface 2 × SPI 1 × I2S 1 × PDM input 4-lane MIPI DSI 4-lane MIPI CSI 4 × PWM 7 × GPIO 8 × ADC inputs |
with a separate ADC reference available through the carrier interface.
Gigabit Ethernet
The i.MX 8M Mini includes a:
|
1 2 3 4 |
10/100/1000 Ethernet controller |
and the X8 exposes the Ethernet interface through its high-density connector.
A carrier board is required to provide the physical RJ45 connector and associated hardware.
Portenta Breakout and Gigabit Ethernet
The Portenta Breakout carrier exposes:
|
1 2 3 4 5 |
RJ45 up to 1 Gb/s |
when used with Portenta X8.
This is an important distinction from Portenta H7’s 10/100 Ethernet implementation.
Wi-Fi and Bluetooth
The X8 includes a:
|
1 2 3 4 |
Murata 1DX |
wireless module based on the Cypress CYW4343W.
Arduino documents:
|
1 2 3 4 5 6 7 8 9 10 |
2.4 GHz Wi-Fi 802.11 b/g/n up to 65 Mbps Bluetooth 5.1 Classic BR/EDR Bluetooth Low Energy |
under the embedded Linux software stack.
Wireless Is Connected to the Linux Processor
The Murata module communicates directly with the i.MX 8M Mini through:
|
1 2 3 4 5 6 |
4-bit SDIO + UART |
so networking belongs naturally to the Linux side of the system.
USB-C
The board’s USB-C interface supports:
- High-Speed USB;
- host mode;
- device mode;
- DisplayPort output;
- USB Power Delivery support.
This allows X8 to behave much more like an embedded computer than a conventional Arduino board.
Display and Camera Interfaces
The i.MX 8M Mini includes multimedia interfaces such as:
|
1 2 3 4 5 6 7 8 |
4-lane MIPI DSI → display output 4-lane MIPI CSI → camera input |
which are exposed through the Portenta carrier architecture.
This enables applications such as:
- industrial HMIs;
- camera gateways;
- machine-vision systems;
- edge video processing.
Hardware Video Acceleration
The i.MX 8M Mini includes multimedia acceleration for formats including:
- H.264;
- H.265 / HEVC;
- VP8;
- VP9.
Arduino’s datasheet lists:
|
1 2 3 4 5 |
1080p60-class decode / encode capabilities |
depending on codec and direction.
GPU
The i.MX 8M Mini also includes:
|
1 2 3 4 5 6 |
2D GPU 3D GPU OpenGL ES 2.0 class support |
for graphical Linux applications.
PCI Express
The high-density connector exposes:
|
1 2 3 4 |
1-lane PCIe 2.0 |
from the i.MX 8M Mini.
This is particularly useful on larger carrier boards for:
- cellular modems;
- specialised networking hardware;
- industrial expansion;
- storage or communication modules.
Portenta Max Carrier
The Portenta Max Carrier turns X8 into a much more complete edge computer.
It exposes features such as:
- Gigabit Ethernet;
- Mini PCIe;
- RS-232;
- RS-422;
- RS-485;
- audio input/output;
- cellular connectivity options;
- LoRa connectivity;
- battery management.
Portenta Hat Carrier
The Hat Carrier adds:
- Raspberry Pi-style 40-pin HAT compatibility;
- CAN FD transceiver;
- Ethernet;
- microSD;
- USB;
- camera connector;
- analogue and digital I/O.
This is useful when migrating existing Raspberry Pi HAT hardware into a Portenta platform.
Portenta Mid Carrier
The Mid Carrier targets industrial and robotics applications with access to:
- Mini PCIe;
- CAN;
- Ethernet;
- microSD;
- USB;
- camera;
- display;
- analogue I/O.
SE050C2 Secure Element
The X8 includes an:
|
1 2 3 4 |
NXP SE050C2 |
hardware security device.
Arduino documents capabilities including:
- RSA;
- ECC;
- AES;
- 3DES;
- HMAC;
- SHA family hashing;
- credential storage;
- TPM-related functionality.
Hardware-Backed Device Identity
The secure element allows credentials to remain inside dedicated hardware rather than being stored as ordinary files in the Linux filesystem.
This is useful for:
- cloud authentication;
- fleet identity;
- certificate storage;
- secure provisioning.
Secure Boot and Managed Updates
The overall X8 platform is designed for:
- verified embedded Linux images;
- containerised applications;
- hardware-backed keys;
- OTA updates;
- fleet management.
This makes the board more suitable for long-lived industrial deployments than a simple hobby Linux SBC with an SD card.
Example Architecture: Industrial Gateway
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sensors / motors / fieldbus → STM32 M4 → deterministic acquisition/control STM32 M7 bridge → exposes data to Linux Linux → protocol conversion → MQTT → HTTPS → database → cloud Ethernet / Wi-Fi / cellular → remote system |
Example Architecture: Machine Vision
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
MIPI CSI camera → i.MX 8M Mini → Linux video pipeline → AI / image processing → local database / network STM32 M4 → trigger input → strobe output → encoder → deterministic machine timing |
Example Architecture: Predictive Maintenance
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
vibration / current / temperature → STM32 M4 → deterministic sampling → filtered features Linux → local analytics → historical storage → ML model → MQTT / HTTPS → maintenance dashboard |
Common Mistake 1: Treating X8 Like Portenta H7
The STM32H747 is present, but its M7 core is normally occupied by Arduino’s Linux-peripheral bridge firmware.
The user real-time sketch normally runs on:
|
1 2 3 4 |
STM32 M4 |
Common Mistake 2: Thinking the i.MX M4 Is the Arduino Core
The i.MX 8M Mini also includes a Cortex-M4, but Arduino currently reserves it for future use.
The normal Arduino sketch target is the:
|
1 2 3 4 |
STM32H747 M4 |
Common Mistake 3: Trying to Run Real-Time Control Entirely in Linux
Linux is excellent for high-level applications, but deterministic low-latency control belongs on the STM32 M4.
Common Mistake 4: Trying to Put Linux-Style Workloads on the M4
Databases, Python packages, web servers and containerised services belong on the i.MX 8M Mini.
Common Mistake 5: Assuming the Side Headers Expose the Whole Board
The high-density connectors are essential for:
- Gigabit Ethernet;
- PCIe;
- camera;
- display;
- high-speed USB;
- industrial serial interfaces;
- large carrier-board designs.
Common Mistake 6: Forgetting the Carrier Board
X8 is designed as a System-on-Module.
For many real-world interfaces, choose a suitable carrier such as:
- Portenta Breakout;
- Portenta Max Carrier;
- Portenta Mid Carrier;
- Portenta Hat Carrier;
- a custom carrier PCB.
Common Mistake 7: Assuming Containers Require a Subscription
Running your own Docker containers does not require a paid subscription.
The paid management services are for enterprise fleet features.
Portenta X8 vs Portenta H7
| Feature | Portenta X8 | Portenta H7 |
|---|---|---|
| Linux | Yes | No native full Linux |
| Main application processor | i.MX 8M Mini quad Cortex-A53 | STM32H747 Cortex-M7 |
| Linux RAM | 2 GB LPDDR4 | Not applicable |
| Linux storage | 16 GB eMMC | Not applicable |
| Real-time Arduino core | STM32H747 M4 | M7 and M4 available for application use |
| Container support | Yes | No Linux Docker environment |
| Ethernet | Gigabit-capable | 10/100 PHY |
| PCIe | Yes | No native PCIe |
| Best fit | Linux edge computer + real-time MCU | High-performance microcontroller applications |
When Portenta X8 Makes Sense
Choose X8 when the project needs both:
|
1 2 3 4 5 6 |
Linux-class application software and real-time microcontroller control |
on one compact industrial module.
Typical examples include:
- industrial gateways;
- machine vision;
- edge AI;
- robotics controllers;
- predictive maintenance;
- protocol conversion;
- secure connected machinery;
- containerised industrial applications.
When Portenta X8 Is Overkill
If the project only needs:
- GPIO;
- CAN;
- Wi-Fi;
- sensor acquisition;
- motor control;
without Linux, containers or large applications, a Portenta H7, GIGA R1 or Portenta C33 may be simpler.
Quick Architecture Reference
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
i.MX 8M Mini 4 × Cortex-A53 @ up to 1.8 GHz 1 × Cortex-M4 @ up to 400 MHz 2 GB LPDDR4 16 GB eMMC Linux / Yocto Docker Wi-Fi / Bluetooth Gigabit Ethernet PCIe MIPI CSI / DSI USB STM32H747 Cortex-M7 @ up to 480 MHz → Linux peripheral bridge Cortex-M4 @ up to 240 MHz → user Arduino sketch → deterministic I/O Linux ↔ Arduino MessagePack-RPC m4-proxy STM32 M7 bridge |
Final Thoughts
The Portenta X8 is best understood as:
|
1 2 3 4 5 6 7 8 9 |
an embedded Linux computer + a real-time Arduino microcontroller + industrial high-speed I/O on one System-on-Module |
Its strongest architecture is to let each processor do what it is best at:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Linux / i.MX 8M Mini → networking → containers → Python → databases → cloud → edge analytics → multimedia STM32 M4 → deterministic control → fast I/O → timing → sensor acquisition → actuators |
with the STM32 M7 acting as the bridge between the two worlds.
That division of labour is what makes Portenta X8 fundamentally different from a normal Linux SBC and from a normal Arduino board.
For the microcontroller-only Portenta alternative, see our Arduino Portenta H7 pinout guide. For the lower-cost Cortex-M33 member of the family, see our Arduino Portenta C33 pinout guide.