↓ Skip to main content

SCINTIX P4: An ESP32-P4 Compute Module for Raspberry Pi CM4/CM5 Carriers

 Author
Leonardo Pedretti
Software Engineer at RELOC
Table of Contents
SCINTIX P4 is a module from RELOC designed to accelerate ESP32-P4 product development. It integrates memory, power regulation, multiprotocol wireless and an Ethernet PHY in the Raspberry Pi CM4/CM5 form factor, letting you reuse existing carrier hardware from prototype to production.

SCINTIX P4, developed by RELOC, reduces the hardware design effort required to build an ESP32-P4-based product. The ESP32-P4 is a crossover MCU that combines a 10/100 Ethernet MAC, high-speed USB, MIPI display and camera interfaces, flexible I/O and hardware multimedia acceleration. SCINTIX P4 packages it with memory, power regulation and an Ethernet PHY, and adds an ESP32-C6 for Wi-Fi, Bluetooth and IEEE 802.15.4. Together, these elements make the module a flexible, reusable hardware building block for product development.

We chose the Raspberry Pi CM4/CM5 form factor because the P4 supports many of the peripheral interfaces used by application processors (MPUs). That choice makes SCINTIX P4, to our knowledge, the first MCU-based compute module in this form factor, allowing developers to reuse existing carrier hardware.

You can develop and test your product on an off-the-shelf carrier and use it in production if it fits your requirements. For a specific form factor or I/O layout, you can design a custom carrier around the same module, saving development time by avoiding the more complex work of integrating the MCU, memory and power supplies from scratch.

SCINTIX P4 module, top and bottom view
SCINTIX P4, top and bottom. The two Hirose connectors mate with the CM4/CM5 carrier.

What’s on board
#

  • MCU: ESP32-P4NRW32X, with two 400 MHz RISC-V cores, AI instruction extensions and a single-precision FPU, plus a low-power core for always-on tasks
  • Graphics and video: 2D Pixel Processing Accelerator (PPA), H.264 and JPEG codecs
  • Memory: 32 MB PSRAM and 32 MB NOR flash
  • Wireless hardware: ESP32-C6 with 2.4 GHz Wi-Fi 6, Bluetooth 5 and IEEE 802.15.4, linked to the P4 over 4-bit SDIO and UART
  • Ethernet: on-board 10/100 PHY (Microchip KSZ8091RNACA)
  • Display and camera: 2-lane MIPI-DSI and 2-lane MIPI-CSI, routed to the CM4/CM5 connectors
  • USB: USB-C for power and programming, plus USB 2.0 OTG for the carrier’s host ports
  • Expansion: 23 ESP32-P4 GPIOs on the carrier’s 40-pin header; see Pinout for shared signals
  • Form factor: CM4/CM5 footprint, 55 × 40 mm, two Hirose DF40C-100DP board-to-board connectors
  • Weight and operating temperature: 8.2 g; -20 to 70 °C

Supported carrier boards
#

The following tables compare support across several widely used carrier boards, including the official Raspberry Pi IO Boards and models from Waveshare. Naturally, features built around interfaces typical of MPU systems, such as HDMI and PCIe, do not carry over to this MCU-based setup.

SCINTIX P4 mounted on several CM4 and CM5 carrier boards
The same module on different CM4/CM5 carriers

Legend for the tables below:

  • ✅ tested on hardware
  • (✓) checked against the schematic only
  • * requires a change or has a limitation
  • ❌ unsupported
  • — absent from the carrier

Power and connectivity
#

CarrierPowerUSB deviceUSB hostEthernetmicroSD
Raspberry Pi CM4 IO Board✅✅✅✅✅
Raspberry Pi CM5 IO Board✅✅✅*✅✅
CM4 to Pi 4B Adapter✅✅❌✅✅
CM4-DUAL-ETH-MINI✅✅✅✅*✅
CM4-NANO-B(✓)(✓)(✓)(✓)(✓)
CM4-NANO-C✅✅✅—✅
CM5-NANO-A(✓)(✓)(✓)*—(✓)
CM5-NANO-B(✓)(✓)(✓)*(✓)(✓)
CM5-IO-BASE-A(✓)(✓)(✓)*(✓)(✓)
CM5-IO-BASE-B(✓)(✓)(✓)*(✓)(✓)
CM5 PoE BASE A(✓)(✓)(✓)*(✓)(✓)

Display, camera and expansion
#

CarrierDisplayCamera40-pin GPIO
Raspberry Pi CM4 IO Board✅(✓)✅
Raspberry Pi CM5 IO Board✅(✓)✅
CM4 to Pi 4B Adapter✅✅✅
CM4-DUAL-ETH-MINI——✅
CM4-NANO-B(✓)❌(✓)
CM4-NANO-C✅❌✅
CM5-NANO-A(✓)(✓)(✓)*
CM5-NANO-B(✓)(✓)(✓)
CM5-IO-BASE-A(✓)(✓)(✓)
CM5-IO-BASE-B(✓)*(✓)*(✓)
CM5 PoE BASE A(✓)(✓)(✓)

Peripheral tests used the Raspberry Pi Touch Display 2 and ESP32-P4 HMI SubBoard V1.2 displays, and the AS-AG638A32 camera (2 MP SC2336, from the ESP32-P4-Function-EV-Board kit).

The carrier guide explains entries marked with an asterisk, including jumper settings and component changes. Pinout covers the 40-pin GPIO mapping and shared signals.

Getting started
#

The steps below first bring up the module with Hello World, then test Ethernet as a second example. Install ESP-IDF v6.0.1 using the setup guide and open an ESP-IDF terminal. Both examples were tested with this ESP-IDF version.

First flash over USB-C
#

Use Hello World to check your ESP-IDF setup and USB console. The module runs standalone over USB-C: connect it to your computer with a data cable and leave J6 pins 3–4 open (the default).

git clone https://github.com/relocsrl/scintix-p4.git
cd scintix-p4/examples/rm-cmp4_hello
idf.py set-target esp32p4
idf.py menuconfig

Under Component config → ESP System Settings → Channel for console output, select USB Serial/JTAG. Save and exit.

Build, flash and open the monitor:

idf.py -p PORT flash monitor

Replace PORT with the module’s serial port, such as COM5 on Windows. The console prints Hello world!, chip information and a countdown before rebooting. Exit the monitor with Ctrl+].

Try Ethernet on a carrier
#

Use the Ethernet iperf example to measure throughput on a Raspberry Pi CM4 IO Board. With power disconnected, mount the module on the carrier. Power the carrier through its normal input and connect its RJ45 jack to a network with DHCP. Reconnect the module’s USB-C port for flashing and the console, leaving J6 open as in the first step.

From the Hello World directory, build and flash:

cd ../rm-cmp4_eth_iperf
idf.py set-target esp32p4
idf.py -p PORT flash monitor

Once the module has an IP address, the console shows an iperf> prompt. On a PC on the same network, start an iperf 2.x UDP server:

iperf -u -s -i 3

At the module’s prompt, run a 30-second UDP test:

iperf -u -c PC_IP -i 3 -t 30

Replace PC_IP with the PC’s address. The example README reports about 73 Mbit/s uplink and 79 Mbit/s downlink on this setup and includes commands for both directions.

To test Wi-Fi or attach USB devices, use the Wi-Fi throughput and USB host examples. The Wi-Fi example uses ESP-Hosted with the ESP32-C6.

Application examples
#

For a UI or a connected agent, the following demos provide firmware and setup guides:

Pinout
#

40-pin expansion header
#

Use the ESP32-P4 GPIO numbers in the table to configure I²C, SPI, UART or PWM through the GPIO matrix. The original header functions are included for reference when connecting HATs.

The table follows the layout of the 2×20 header on the carrier: each row is a pair of adjacent pins, with odd positions in the left half and even positions in the right half.

Raspberry Pi functionESP32-P4PinPinESP32-P4Raspberry Pi function
3V3—12—5V
GPIO2 / I²C SDAnot connected34—5V
GPIO3 / I²C SCLnot connected56—GND
GPIO4GPIO5378GPIO32GPIO14 / UART TX
GND—910GPIO33GPIO15 / UART RX
GPIO17GPIO21112GPIO23GPIO18 / PWM0
GPIO27GPIO31314—GND
GPIO22GPIO41516GPIO22GPIO23
3V3—1718GPIO54 cGPIO24
GPIO10 / SPI MOSIGPIO51920—GND
GPIO9 / SPI MISOGPIO6 c2122GPIO21GPIO25
GPIO11 / SPI SCLKGPIO7 b2324GPIO20GPIO8 / SPI CE0
GND—2526GPIO13 aGPIO7 / SPI CE1
GPIO0 / ID_SDGPIO12 a2728GPIO13 aGPIO1 / ID_SC
GPIO5GPIO8 b2930—GND
GPIO6GPIO48 d3132GPIO12 aGPIO12 / PWM0
GPIO13 / PWM1GPIO47 d3334—GND
GPIO19GPIO93536GPIO36 eGPIO16
GPIO26GPIO46 a3738GPIO11GPIO20
GND—3940GPIO46 aGPIO21

Shared signals and constraints:

  • a Tied pairs: positions 27 and 32 share GPIO12; 26 and 28 share GPIO13; 37 and 40 share GPIO46. Each header position connects through a separate 0 Ω resistor on the module, which can be removed to isolate that position.
  • b Carrier I²C: the camera/display I²C bus also uses GPIO7 (SDA0, header position 23) and GPIO8 (SCL0, position 29), with 10 kΩ pull-ups on the module. Header positions 3 and 5 are not connected.
  • c ESP32-C6 control: reserve GPIO54 (position 18) for C6 power-up and GPIO6 (21) for wake-up when using wireless connectivity.
  • d Fan: the carrier’s fan uses GPIO48 (position 31) for the tachometer and GPIO47 (33) for PWM. Removing the corresponding 0 Ω links frees these GPIOs.
  • e Strapping pin: to enter download mode, GPIO36 (position 36) must be high at reset. A peripheral pulling it low can prevent flashing. This strap does not affect normal boot.

Carrier connections
#

The CM4/CM5 connectors carry the following signals:

  • Ethernet: the on-board 10/100 PHY’s two differential pairs and link LED, routed to the carrier’s RJ45 jack
  • microSD: SDIO slot 1, with clock, command, four data lines and power enable
  • USB: high-speed USB 2.0 OTG on the carrier’s main USB 2.0 port; full-speed OTG on the USB 2.0 lines of the CM5’s first USB 3.0 port
  • MIPI-DSI and MIPI-CSI: two data lanes plus clock each, on the DSI1 and CSI1 positions
  • Power: 5 V input from the carrier and a shared 3.3 V rail; no 1.8 V output
  • Boot: CM pin 92 (CM5 power button / CM4 RUN) connects to the ESP32-P4 boot pin, GPIO35

Programming connections
#

UART0 console builds use the 6-pin programming header beside the ESP32-P4, where an ESP-Prog-2 can be connected. The carrier guide explains how to route USB Serial/JTAG to the carrier’s USB port with J6.

Availability and resources
#

SCINTIX P4 is in pre-launch on Crowd Supply. For board samples, contact info@reloc.it.

Disclaimer:

This article features content from partner or community authors. Espressif has not independently verified the information provided, and readers should conduct their own evaluation. Ongoing content maintenance and accuracy are the author’s responsibility.

Related

Rust smoltcp as an alternative TCP/IP stack for ESP-IDF

A set of ESP-IDF components that run the Rust smoltcp stack as the IPv4/IPv6 data plane, while keeping esp_http_server, esp-tls and esp-mqtt working without source changes. This article explains the linker –wrap shim that makes it compatible, the single-task poll architecture, the throughput I measured on an ESP32-P4 (91.15 Mbit/s on a 100 Mbit link), and the limitations to be aware of.

ESP32 Bit Pirate: a multi-protocol workbench built on the ESP32-S3

ESP32 Bit Pirate turns an ESP32-S3 into a scriptable multi-protocol workbench with more than twenty modes, a web and serial CLI, and dump and sniff tooling. This article walks through the firmware and the two open-hardware companions that extend it: a carrier dock with selectable 1.8 V, 3.3 V and 5 V level translation, and an ESP32-C5 adapter that adds a dual-band radio.