MakerLab
ArduinoArduino Portenta X8

Arduino Portenta X8: The Powerful Embedded Vision and AI Board

A high-performance microcontroller board featuring an NXP i.MX 8M Mini SoC and a dedicated AI accelerator, designed for demanding embedded vision and machine learning applications.

Arduino Portenta X8

The Arduino Portenta X8 is a cutting-edge development board that pushes the boundaries of embedded computing. It's built around the powerful NXP i.MX 8M Mini application processor, a quad-core ARM Cortex-A53 system-on-chip (SoC) complemented by an additional ARM Cortex-M4 core for real-time tasks. This architecture provides a robust platform for complex applications such as machine learning inference, computer vision, and high-level operating system-based projects.

At its heart, the i.MX 8M Mini SoC offers significant processing power, making the Portenta X8 suitable for tasks that would typically require a more powerful computer. It integrates a dedicated Neural Processing Unit (NPU) for accelerating AI workloads, alongside a capable graphics processing unit (GPU). This makes it an ideal choice for developers looking to implement real-time object detection, image recognition, and other AI-driven features directly on edge devices.

Positioned as a high-end offering within the Arduino ecosystem, the Portenta X8 bridges the gap between traditional microcontrollers and single-board computers. It offers the familiar Arduino programming environment and libraries while providing the performance and flexibility of a Linux-capable platform. This board is targeted at experienced makers, embedded engineers, and students who are working on advanced projects requiring significant computational resources, such as robotics, industrial automation, smart cameras, and sophisticated IoT devices.

The Portenta X8 was released as part of Arduino's Pro line, aiming to provide professional-grade hardware for demanding industrial and commercial applications. Its robust design, extensive connectivity options, and powerful processing capabilities make it a versatile tool for rapid prototyping and deployment of intelligent edge devices. The inclusion of both a high-level OS environment and a real-time microcontroller core allows for a wide range of application designs, from complex user interfaces to low-latency control systems.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCNXP i.MX 8M Mini (Quad-core ARM Cortex-A53 + ARM Cortex-M4)
Architecture64-bit ARMv8-A (Cortex-A53) / 32-bit ARMv7E-M (Cortex-M4)
Clock speedUp to 1.8 GHz (Cortex-A53) / Up to 240 MHz (Cortex-M4)
Flash / Storage16 GB eMMC onboard (expandable via microSD card)
RAM / SRAM2 GB LPDDR4 RAM
Operating voltage3.3V
Digital I/O pinsMultiple GPIOs available via expansion headers
Analog / ADCMultiple ADC channels available via expansion headers
PWMMultiple PWM channels available via expansion headers
ConnectivityDual-band Wi-Fi 802.11ac, Bluetooth 5.0, Gigabit Ethernet, 2x USB 2.0, CSI camera interface, MIPI DSI display interface
USB1x USB-C (power and programming), 1x USB-A (host)
Power input5V via USB-C or VIN pin (1.8A recommended)
Dimensions66mm x 45mm

Pinout & pin functions

PinFunction
VINMain power input (5V)
GNDGround
3V33.3V Power Output
5V5V Power Output
USB_PUSB Power
USB_NUSB Data Negative
USB_DPUSB Data Positive
USB_DMUSB Data Negative
ETH_TXD0Ethernet Transmit Data 0
ETH_TXD1Ethernet Transmit Data 1
ETH_RXD0Ethernet Receive Data 0
ETH_RXD1Ethernet Receive Data 1
ETH_CLKEthernet Clock
ETH_CRSEthernet Carrier Sense
ETH_COLEthernet Collision
ETH_MDIOEthernet Management Data Input/Output
ETH_MDCEthernet Management Data Clock
CAM_D0Camera Data 0
CAM_D1Camera Data 1
CAM_D2Camera Data 2
CAM_D3Camera Data 3
CAM_HSYNCCamera Horizontal Sync
CAM_VSYNCCamera Vertical Sync
CAM_PCLKCamera Pixel Clock
CAM_RSTCamera Reset
DISPLAY_D0MIPI DSI Data Lane 0
DISPLAY_D1MIPI DSI Data Lane 1
DISPLAY_CLKMIPI DSI Clock Lane
DISPLAY_HSMIPI DSI Horizontal Sync
DISPLAY_VSMIPI DSI Vertical Sync
DISPLAY_ENABLEMIPI DSI Enable
GPIO1_IO00General Purpose Input/Output 1, Pin 0
GPIO1_IO01General Purpose Input/Output 1, Pin 1
GPIO1_IO02General Purpose Input/Output 1, Pin 2
GPIO1_IO03General Purpose Input/Output 1, Pin 3
GPIO1_IO04General Purpose Input/Output 1, Pin 4
GPIO1_IO05General Purpose Input/Output 1, Pin 5
GPIO1_IO06General Purpose Input/Output 1, Pin 6
GPIO1_IO07General Purpose Input/Output 1, Pin 7
GPIO1_IO08General Purpose Input/Output 1, Pin 8
GPIO1_IO09General Purpose Input/Output 1, Pin 9
GPIO1_IO10General Purpose Input/Output 1, Pin 10
GPIO1_IO11General Purpose Input/Output 1, Pin 11
GPIO1_IO12General Purpose Input/Output 1, Pin 12
GPIO1_IO13General Purpose Input/Output 1, Pin 13
GPIO1_IO14General Purpose Input/Output 1, Pin 14
GPIO1_IO15General Purpose Input/Output 1, Pin 15
GPIO1_IO16General Purpose Input/Output 1, Pin 16
GPIO1_IO17General Purpose Input/Output 1, Pin 17
GPIO1_IO18General Purpose Input/Output 1, Pin 18
GPIO1_IO19General Purpose Input/Output 1, Pin 19
GPIO1_IO20General Purpose Input/Output 1, Pin 20
GPIO1_IO21General Purpose Input/Output 1, Pin 21
GPIO1_IO22General Purpose Input/Output 1, Pin 22
GPIO1_IO23General Purpose Input/Output 1, Pin 23
GPIO1_IO24General Purpose Input/Output 1, Pin 24
GPIO1_IO25General Purpose Input/Output 1, Pin 25
GPIO1_IO26General Purpose Input/Output 1, Pin 26
GPIO1_IO27General Purpose Input/Output 1, Pin 27
GPIO1_IO28General Purpose Input/Output 1, Pin 28
GPIO1_IO29General Purpose Input/Output 1, Pin 29
GPIO1_IO30General Purpose Input/Output 1, Pin 30
GPIO1_IO31General Purpose Input/Output 1, Pin 31
RTC_32KReal-Time Clock 32kHz output
AUDIO_INAudio Input
AUDIO_OUTAudio Output
JTAG_TDIJTAG Test Data In
JTAG_TDOJTAG Test Data Out
JTAG_TCKJTAG Test Clock
JTAG_TMSJTAG Test Mode Select
JTAG_TRSTJTAG Test Reset
DEBUG_LEDOnboard Debug LED
SD_CARD_DETECTMicroSD Card Detect Pin
SD_CARD_WPMicroSD Card Write Protect Pin
SD_CARD_DAT0MicroSD Card Data 0
SD_CARD_DAT1MicroSD Card Data 1
SD_CARD_DAT2MicroSD Card Data 2
SD_CARD_DAT3MicroSD Card Data 3
SD_CARD_CLKMicroSD Card Clock
SD_CARD_CMDMicroSD Card Command

Wiring & circuit basics

The Arduino Portenta X8 operates at a logic level of 3.3V. This means that all digital inputs and outputs are designed to work with 3.3V signals. Connecting 5V devices directly to its GPIO pins can cause permanent damage. If you need to interface with 5V components, a level shifter is essential. Powering the board is typically done via the USB-C port, which should be connected to a reliable 5V power source capable of delivering at least 1.8A. Alternatively, you can use the VIN pin, also connected to a 5V supply. Ensure your power supply is stable to prevent unexpected behavior, especially during intensive operations.

Connecting external components like LEDs requires careful consideration of current limits. Always use a current-limiting resistor in series with an LED to protect both the LED and the Portenta X8's GPIO pin. For example, to connect an LED to GPIO1_IO04, you would connect the anode of the LED to GPIO1_IO04, the cathode to one end of a resistor (typically 220-330 Ohms for standard LEDs with a 3.3V source), and the other end of the resistor to a GND pin.

For I2C communication, the Portenta X8 uses the standard SDA and SCL pins, which are often multiplexed with other GPIO functions. You'll need to consult the pinout diagram for specific available I2C pins. When connecting an I2C sensor, connect its VCC to a 3.3V pin on the Portenta X8, its GND to a GND pin, its SDA pin to the Portenta's SDA pin, and its SCL pin to the Portenta's SCL pin. Ensure the sensor also operates at 3.3V or use a level shifter if it's a 5V device.

Programming & getting started

The Arduino Portenta X8 can be programmed using the Arduino IDE, which offers a familiar environment for many developers. However, due to its powerful i.MX 8M Mini SoC, it also supports more advanced operating systems like Linux. You can typically flash a Linux distribution (such as a Yocto-based image provided by Arduino) onto the onboard eMMC storage or a microSD card. For initial programming in the Arduino IDE, you'll select the 'Arduino Portenta H7' (as the i.MX 8M Mini core is often managed similarly to the M7 core on the H7) or a specific Portenta X8 board definition if available, and then upload your sketch via the USB-C connection.

For more advanced development, leveraging the i.MX 8M Mini's capabilities often involves using tools like PlatformIO, or directly programming the ARM Cortex-A53 cores with the Yocto Project or a pre-built Linux image. This allows for the use of higher-level languages like Python (with libraries like OpenCV for vision tasks) or C/C++ with extensive Linux APIs. Flashing a Linux image typically involves preparing an SD card or using a specific flashing tool provided by NXP or Arduino to write to the eMMC.

Project ideas

AI-Powered Object Detection CameraUtilize the NXP i.MX 8M Mini's NPU and the CSI camera interface to build a smart camera that can detect and classify objects in real-time. This project involves using libraries like TensorFlow Lite or OpenCV and teaches about embedded machine learning and computer vision pipelines.
Real-time Industrial Anomaly DetectionConnect sensors (e.g., vibration, temperature) to the GPIO pins and use the Cortex-M4 core for low-latency data acquisition. The Cortex-A53 cores can then run machine learning models to detect anomalies in industrial machinery, demonstrating real-time monitoring and predictive maintenance.
Edge Computing Gateway with Data AggregationUse the Gigabit Ethernet and Wi-Fi connectivity to create a gateway that collects data from various IoT devices, processes it locally using Python on Linux, and sends aggregated data to the cloud. This project explores networking, data management, and edge processing.
Robotic Vision SystemIntegrate the Portenta X8 with motors and sensors for a robot. Use the camera input for navigation and obstacle avoidance, and the powerful processing to run complex control algorithms. This project covers robotics, sensor fusion, and advanced control systems.
Interactive Digital Signage with AI FeaturesConnect a MIPI DSI display and use the GPU and AI capabilities to create dynamic digital signage that can respond to user presence or perform basic image analysis. This project teaches about display interfaces, multimedia processing, and user interaction on embedded systems.
Advanced Sensor Fusion and Data LoggingCombine data from multiple sensors (IMU, environmental, camera) using both the Cortex-M4 for real-time sampling and the Cortex-A53 for complex fusion algorithms. Log the data to the eMMC or an SD card for later analysis, highlighting data acquisition and processing techniques.

Buying tips & gotchas

When purchasing the Arduino Portenta X8, ensure you are getting the genuine article, as specialized boards can sometimes attract counterfeiters. Look for official Arduino distributors. Common pitfalls include attempting to power the board with insufficient current (leading to instability) or connecting 5V logic to its 3.3V GPIO pins, which will cause damage. Accessories that are highly recommended include a compatible camera module (MIPI CSI), a MIPI DSI display, a high-quality power supply (5V, 2A minimum), and a fast microSD card for OS or data storage. Consider a heatsink or fan if planning sustained high-CPU load operations, as the i.MX 8M Mini can generate significant heat.