Boards
From catalog/boards.json. 18 boards, 8 validated on hardware with an ExecuTorch on Zephyr bring-up repository. Others are expected to work but have not been run on hardware. Photos and console captures are below the table.
| Board | Zephyr target | SoC and CPU | RAM | Flash | PSRAM | Flash method | Sensors | Validated |
|---|---|---|---|---|---|---|---|---|
| Arduino UNO Q Arduino | arduino_uno_q/stm32u585xx | STM32U585 + Qualcomm QRB2210 cortex-m33, 160 MHz | 786 KiB | 2 MiB | none | openocd-adbadb forward tcp:3333 and arduino-debug on the Linux side, then gdb load. | led-matrix-13x8, qwiic-i2c, adc | 2026-10-11 |
| Arducam Pico4ML-BLE Arducam | rpi_pico | RP2040 cortex-m0plus, 133 MHz | 264 KiB | 2 MiB | none | uf2Hold BOOTSEL while plugging in, or open the CDC port at 1200 baud, then copy zephyr.uf2 to RPI-RP2. | camera-hm01b0, display-st7735, imu-icm42602, pdm-mic | 2026-10-11 |
| Seeed XIAO ESP32S3 Sense Seeed Studio | xiao_esp32s3/esp32s3/procpu/sense | ESP32-S3 xtensa-lx7, 240 MHz | 512 KiB | 8 MiB | 8 MiB | esptool | camera-ov2640, pdm-mic, microsd | 2026-10-09 |
| M5Stack ATOM Echo M5Stack | m5stack_atom_lite/esp32/procpu | ESP32-PICO-D4 xtensa-lx6, 240 MHz | 520 KiB | 4 MiB | none | esptool | pdm-mic-spm1423, speaker-ns4168, rgb-led, button | 2026-10-12 |
| ESP32-DevKitC Espressif | esp32_devkitc/esp32/procpu | ESP32 xtensa-lx6, 240 MHz | 520 KiB | 4 MiB | none | esptool | none listed | 2026-10-12 |
| BBC micro:bit v2 Micro:bit Educational Foundation | bbc_microbit_v2 | nRF52833 cortex-m4f, 64 MHz | 128 KiB | 512 KiB | none | daplinkCopy zephyr.hex to the MICROBIT drive. | led-matrix-5x5, accelerometer, mic, buttons | 2026-10-11 |
| Nordic Thingy:91 Nordic Semiconductor | thingy91/nrf9160 | nRF9160 cortex-m33, 64 MHz | 256 KiB | 1 MiB | none | mcuboot-smp-v1Hold SW3 while switching on, then upload zephyr.signed.bin over SMP v1 on the first CDC port. | accelerometer, environment-bme680, lte-m | 2026-10-11 |
| Arduino Nicla Vision Arduino | arduino_nicla_vision/stm32h747xx/m7 | STM32H747 cortex-m7, 480 MHz | 1 MiB | 2 MiB | none | dfuDouble-tap reset for the DFU bootloader. | camera-gc2145, tof, imu, pdm-mic | not yet |
| Arduino Opta Arduino | arduino_opta/stm32h747xx/m7 | STM32H747 cortex-m7, 480 MHz | 1 MiB | 2 MiB | none | dfu | analog-inputs, relays | not yet |
| Nordic nRF7002 DK Nordic Semiconductor | nrf7002dk/nrf5340/cpuapp | nRF5340 cortex-m33, 128 MHz | 512 KiB | 1 MiB | none | jlink | wifi-nrf7002 | not yet |
| NXP FRDM-MCXN947 NXP | frdm_mcxn947/mcxn947/cpu0 | MCX N947 cortex-m33, 150 MHz, eiq-neutron | 512 KiB | 2 MiB | none | linkserver | camera-header | not yet |
| TI LAUNCHXL-CC1352P1 Texas Instruments | cc1352p1_launchxl | CC1352P1 cortex-m4f, 48 MHz | 80 KiB | 352 KiB | none | openocdXDS110; the stock OpenOCD needs the cJTAG to JTAG switch to work, UniFlash otherwise. | none listed | not yet |
| Espressif ESP32-S3-EYE Espressif | esp32s3_eye/esp32s3/procpu | ESP32-S3 xtensa-lx7, 240 MHz | 512 KiB | 8 MiB | 8 MiB | esptool | camera-ov2640, lcd-st7789, mic, accelerometer | not yet |
| Espressif ESP32-C3-DevKitM Espressif | esp32c3_devkitm | ESP32-C3 riscv-rv32imc, 160 MHz | 400 KiB | 4 MiB | none | esptool | none listed | not yet |
| M5StickC Plus M5Stack | m5stickc_plus/esp32/procpu | ESP32-PICO-D4 xtensa-lx6, 240 MHz | 520 KiB | 4 MiB | none | esptool | lcd-st7789v2, imu-mpu6886, pdm-mic-spm1423, ir-led, buttons | not yet |
| Sipeed Tang Nano 20K (LiteX VexRiscv) Sipeed | tang_nano_20k | Gowin GW2AR-18C FPGA with a LiteX VexRiscv soft core and 8 MB SDRAM riscv-rv32, 48 MHz | 7680 KiB | 8 MiB | none | fpga-litexBuild the SoC in eoinjordan/executorch-zephyr-tang-nano-20k (gateware/), then run scripts/boot.py: it loads the bitstream into the FPGA and boots zephyr.bin from the LiteX BIOS over the UART. | display-rgb-480x272, buttons, leds | 2026-11-10 |
| Arm Corstone-300 FVP Arm | mps3/corstone300/fvp | Cortex-M55 + Ethos-U55 cortex-m55, ethos-u55-128 | 4 MiB | 4 MiB | none | fvpwest build -t run | none listed | not yet |
| Native simulator Zephyr | native_sim | host host | 64 MiB | 64 MiB | none | runLinux host or the Zephyr CI container; west build -t run | none listed | not yet |
Photos and console captures
Console captures are from my boards, with the numbers they printed. Photos of the Pico4ML-BLE are mine; the others are from Wikimedia Commons under the licence given with each one.
Arduino UNO Q arduino_uno_q/stm32u585xx
AnomalyNet on the STM32U585 (Cortex-M33), 5544 bytes of model in flash. The self-test matches PyTorch to 3.3e-06 and one inference takes 1621 us; verdicts go to the Linux side as JSON lines. eoinjordan/executorch-zephyr-arduino-uno-q
Arducam Pico4ML-BLE rpi_pico
TinyDigitNet on the RP2040 (Cortex-M0+ at 133 MHz, no FPU), reading hand-written digits with the HM01B0 camera. The self-test predicts 7 at 100 %, matches PyTorch to 3.3e-06 and takes 767987 us. eoinjordan/executorch-zephyr-arducam-pico4ML-BLE
ESP32-DevKitC esp32_devkitc/esp32/procpu
TinyDigitNet on the ESP32 (Xtensa LX6), run on the esp32_devkitc target on an M5Stack ATOM Echo. It matches PyTorch to 2.86e-06 and takes 243475 us on average over 10 runs. eoinjordan/executorch-zephyr-esp32-devkitc
BBC micro:bit v2 bbc_microbit_v2
AnomalyNet on the nRF52833 (Cortex-M4F at 64 MHz). It matches PyTorch to 1.91e-06 and takes 4314 us on average over 10 runs; the build uses 178 KB of 512 KB flash and 67 KB of 128 KB RAM. eoinjordan/executorch-zephyr-microbit-v2


Nordic Thingy:91 thingy91/nrf9160
AnomalyNet on the nRF9160 (Cortex-M33 at 64 MHz). It matches PyTorch to 1.91e-06 and takes 3969 us on average over 10 runs. eoinjordan/executorch-zephyr-thingy91
Sipeed Tang Nano 20K litex_vexriscv
A LiteX SoC with a VexRiscv RISC-V core at 48 MHz in the Gowin GW2AR-18C FPGA, with 8 MiB of SDRAM. Zephyr 4.4 boots from the LiteX BIOS over serial and ExecuTorch runs TinyDigitNet in soft float: SELF-TEST PASS, 3.34e-06 from PyTorch, 2956766 us on average over 10 runs. Not in catalog/boards.json yet.
--============= Liftoff! ===============--
*** Booting Zephyr OS build 684c9e8f32e4 ***
ExecuTorch on tang_nano_20k/litex_vexriscv (Zephyr 4.4.0)
model: 62888 bytes, method pool 131072 B, temp pool 16384 B
I [executorch:main.cpp:118 init()] planned buffer 0: 52928 bytes
I [executorch:main.cpp:148 init()] method 'forward' loaded; pool used 59584 / 131072 bytes
logit[0] = -1.2525
logit[1] = -2.3244
logit[2] = 4.0803
logit[3] = 2.5802
logit[4] = -5.6759
logit[5] = -5.8199
logit[6] = -7.9416
logit[7] = 10.5990 <-- argmax
logit[8] = -2.2308
logit[9] = -0.1515
self-test: predicted 7, expected 7, max |device - pytorch| = 3.34e-06, 2956822 us
SELF-TEST PASS
inference: 2956766 us average over 10 runs at 48 MHz
Arduino Nicla Vision arduino_nicla_vision/stm32h747xx/m7
Not yet run on hardware. eoinjordan/executorch-zephyr-arduino-nicla-vision






