ESP32-P4 chip capabilities
This skill is the chip layer, not a board layer. A board skill (e.g.
m5stack-tab5) tells you what's wired to what on one specific product; this
skill tells you what the ESP32-P4 silicon itself can do — the peripherals,
multimedia hardware, low-power modes, memory options, and concurrency model
that are the same on every ESP32-P4 board regardless of vendor. Read a
board's own skill first for pin numbers and I2C addresses, then come here
when the user wants to go deeper on a capability than "call the vendor's
high-level library and move on" — e.g. driving the MIPI camera pipeline,
encoding H.264 in hardware, using the LP core while the main system sleeps,
or getting real throughput out of USB HS OTG.
The one thing every ESP32-P4 user needs to know: no radio, ever
Unlike every other current ESP32 variant, the P4 has zero wireless
hardware — no WiFi, no Bluetooth, no Thread/Zigbee/802.15.4. This isn't a
stripped-down SKU; the chip was designed as a high-performance
applications/HMI processor and pairs with a separate radio chip (an
ESP32-C6 on M5Stack's Tab5 and Stamp-P4, most commonly) over SDIO or SPI
when a project needs wireless. If a user asks "why won't WiFi.begin()
compile/link" or "how do I get WiFi on my P4 board," the answer is always
"it needs a companion radio chip and a host-side driver (ESP-Hosted or
similar) talking to it" — not a missing library or wrong board setting. See
that board's own skill (e.g. the m5stack-tab5 skill's "WiFi needs pin
setup" section) for the actual wiring/init pattern on a specific product.
Not classic ESP32, not S2/S3, not C3/C6/C5, not H2
M5Stack (and the ESP32 family generally) spans several very different chips
that are easy to conflate. Get this wrong and code silently targets the
wrong architecture or assumes a peripheral that doesn't exist.
| Chip |
Cores / arch |
Wireless |
Native USB |
Notable extras |
Not on this chip |
| ESP32-P4 (this skill) |
2× RISC-V HP cores @ up to 400MHz + 1× RISC-V LP core @ up to 40MHz |
None — always pairs with a companion chip (M5Stack's Tab5/Stamp-P4 use a C6) |
Yes — USB 2.0 HS OTG and a separate FS OTG, both with integrated PHY |
MIPI-CSI+ISP, MIPI-DSI, hardware JPEG enc/dec, hardware H.264 encode, PPA + 2D-DMA, Ethernet MAC, PIE AI/DSP instruction extensions, up to 32MB in-package PSRAM |
Any wireless radio, Xtensa SIMD (esp-dsp/ESP-DL use PIE instead, see below) |
| ESP32-S3 |
2× Xtensa LX7 @ up to 240MHz + 1 low-power coprocessor core |
WiFi 4 + BLE 5 |
Yes — OTG (full-speed only) + separate USB-Serial-JTAG |
Xtensa SIMD/vector AI instructions, ULP-RISC-V and ULP-FSM |
Thread/Zigbee/802.15.4, WiFi 6, MIPI-DSI/CSI, hardware video codecs |
| ESP32 (classic) |
2× Xtensa LX6 @ 240MHz |
WiFi 4 + Bluetooth Classic + BLE 4.2 |
No |
Widest library/example coverage, oldest silicon |
Native USB, SIMD extensions, ULP-RISC-V |
| ESP32-S2 |
1× Xtensa LX7 @ 240MHz |
WiFi 4 only, no Bluetooth at all |
Yes — OTG |
Very low deep-sleep current |
Second core, Bluetooth |
| ESP32-C3 |
1× RISC-V @ 160MHz |
WiFi 4 + BLE 5 |
No |
Cheapest/smallest |
Second core, native USB, SIMD |
| ESP32-C6 |
1× RISC-V @ 160MHz + LP core |
WiFi 6 (2.4GHz) + BLE 5.3 + Thread/Zigbee (802.15.4) |
No |
First ESP32 with WiFi 6 + Matter-ready radio stack — this is the P4's usual wireless companion |
Second core, native USB, hardware FPU |
| ESP32-C5 |
1× RISC-V @ 240MHz + LP core |
WiFi 6 dual-band (2.4+5GHz) + BLE 5 + 802.15.4 |
No |
Only dual-band-WiFi6 ESP32 variant |
Second core, native USB |
| ESP32-H2 |
1× RISC-V @ 96MHz |
No WiFi — BLE 5 + Thread/Zigbee only |
No |
Purpose-built low-power mesh/Matter radio |
WiFi entirely, second core |
If the user's board pairs an ESP32-P4 with a companion radio chip (the case
for every current M5Stack P4 board), that companion chip is out of this
skill's scope — for the ESP32-C6 specifically, see the esp32-c6 skill in
this same plugin.
Quick specs
- HP (High-Performance) cores: 2× 32-bit RISC-V, 5-stage pipeline, up to
400MHz, single-precision FPU, PIE AI/DSP instruction extensions (see
references/memory-concurrency-ai.md)
- LP (Low-Power) core: 1× 32-bit RISC-V, 2-stage pipeline, up to 40MHz —
a real coprocessor that can run independently, including while the HP
cores are active, not just during sleep (see
references/power-sleep-lp.md)
- On-chip memory: 768KB HP L2 SRAM, 128KB HP ROM, 32KB LP SRAM, 16KB LP
ROM, 8KB zero-wait-state TCM
- PSRAM: not on the bare die — many module variants embed it in-package
(e.g.
ESP32-P4NRW16/ESP32-P4NRW32 = 16MB/32MB Octal, 1.8V); check the
specific module before assuming a size. M5Stack's Tab5 uses the 32MB
variant.
- Flash: external only, SPI/Dual/Quad/QPI, up to 64MB
- GPIO: up to 55 pins on the bare chip (5 are strapping pins); 15 are
LP/RTC-capable (usable as deep-sleep wake sources and by the LP core) —
how many are actually free depends on the module and the board, check
that board's
references/pinout.md
- USB: three independent USB-capable blocks sharing no pins with each
other — a true USB 2.0 High-Speed OTG (480Mbps, integrated PHY), a
separate USB 2.0 Full-Speed OTG (also integrated PHY), and a
USB-Serial-JTAG controller. This is a bigger deal than it sounds — see
references/usb.md, most USB confusion on this chip traces back to which
of the three a board's connector(s) are wired to.
- Display/camera: MIPI-DSI (display out) and MIPI-CSI (camera in) with
an integrated ISP, plus legacy parallel (DVP) display and camera
interfaces for non-MIPI panels/sensors — up to 1080p on both. See
references/multimedia-vision.md.
- Hardware video/image codecs: JPEG encode and decode (one at a time,
not simultaneously), and H.264 hardware encode (software decode only)
up to 1080p30 — plus a PPA (Pixel Processing Accelerator) and 2D-DMA for
GPU-free image scaling/rotation/blending. See
references/multimedia-vision.md.
- Wireless: none — see "no radio, ever" above
- Ethernet: one MAC (EMAC), RMII mode — needs an external PHY chip, the
P4 doesn't have one built in
- Storage interfaces: SDIO/SD/MMC host controller, plus the usual SPI
flash and (via GPIO) SD-SPI fallback
- Other peripherals: 5 UART + 1 LP UART, 4 SPI + 1 LP SPI, 2 I2C + 1 LP
I2C + 1 analog I2C, 1 I3C controller, 3 I2S + 1 LP I2S, 1 TWAI/CAN, 1
RMT, 1 LEDC, 1 MCPWM, 1 PCNT, 1 PARLIO (parallel IO), 1 BitScrambler, 14
touch channels, 2 ADC controllers (8+6 channels), internal temperature
sensor, VAD (voice activity detection) unit — full detail and typical use
cases in
references/peripherals.md
- Security: Secure Boot, Flash Encryption (XTS-AES), AES/ECC/HMAC/RSA/SHA
accelerators, RSA/ECDSA digital-signature peripherals, TRNG, a Key
Manager with SRAM-PUF-derived HUK, and permission-control (PMS) hardware
access protection — not detailed further in this skill, see ESP-IDF's
security guides if the user needs this
- Package: QFN104 (10×10mm), -40°C to 85°C
Peripheral capability map
Full detail, with typical use cases and gotchas, is in
references/peripherals.md. Quick index of what's covered there: RMT,
LEDC, I2S, ADC, capacitive touch, PCNT, MCPWM, TWAI, SDMMC/SD-SPI/SDIO host,
GPTimer, Ethernet MAC, I3C, PARLIO, BitScrambler, and the multi-instance
UART/SPI/I2C story.
Multimedia and vision: the P4's headline feature
MIPI-CSI camera input with an integrated ISP, MIPI-DSI display output,
hardware JPEG encode/decode, hardware H.264 encode, and the PPA/2D-DMA image
accelerators are what actually distinguish this chip from an ESP32-S3 for
most projects — this is why M5Stack picked it for the Tab5's 1280x720
display and camera. Full detail, including throughput numbers and the
encode/decode asymmetry (hardware JPEG both ways, but H.264 hardware-encode
/ software-decode only), is in references/multimedia-vision.md.
Power management: two very different low-power stories
Light sleep / deep sleep and their wake sources work broadly like other
ESP32 chips, but the P4's LP core is not a limited ULP-FSM-style
coprocessor — it's a genuine RISC-V core with its own UART/I2C/SPI/I2S/GPIO
peripherals, a debug module, and an interrupt controller, and it's capable
of running while the HP cores are fully active, not just during sleep.
Full detail in references/power-sleep-lp.md — read this before telling a
user "just call esp_deep_sleep_start()" if they actually want an
always-on background task offloaded from the HP cores.
USB: three controllers, not two
The P4 doubles down on USB relative to the S3 — see "Quick specs" above.
Full detail on which controller does what, default pin assignments, and the
current-firmware limitation that only one of the two OTG controllers can be
in Host mode at a time, is in references/usb.md.
Memory, concurrency, and on-device AI
In-package PSRAM variants and flash config, HP-core task pinning, and the
PIE (Processor Instruction Extensions) SIMD instructions that back
esp-dsp/esp-dl/esp-tflite-micro on this chip (P4 doesn't share the S3's
Xtensa TIE-based SIMD — it's a different ISA extension with its own
instruction prefix) are in references/memory-concurrency-ai.md.
Which M5Stack boards use this chip
Tab5 is confirmed ESP32-P4-based (paired with an ESP32-C6 radio
co-processor — see the m5stack-tab5 skill). Stamp-P4 (with its
"AddOn C6 For P4") is a likely match by name, not yet independently
verified. No other current M5Stack Controller uses this chip.
Official resources
Working with the user
- If they're getting compile/link errors from WiFi/BLE code copy-pasted
from an S3/C3/C6 project, the "no radio, ever" section above is almost
certainly the cause — check whether their board has a companion radio
chip and whether they're using its host-side driver, not a missing
library.
- If they're getting compile/link errors from code copy-pasted for a
different ESP32 variant otherwise, check the "Not classic ESP32..." table
above first — RISC-V-vs-Xtensa and missing-peripheral mismatches are the
most common cause.
- If they ask for USB Host functionality and it silently doesn't work
alongside another USB feature, check
references/usb.md — the
"only one OTG controller can be Host at a time" current-software
limitation is a common surprise.
- If they want something to keep running while the HP cores sleep or want
to offload a lightweight background task without spending an HP-core
FreeRTOS task on it, point them at the LP core in
references/power-sleep-lp.md rather than assuming it's ULP-FSM-limited
like older chips.
- If they're doing camera/video work and performance doesn't match
expectations, check
references/multimedia-vision.md for the actual
hardware-vs-software encode/decode split (H.264 decode is software-only
and much slower than encode) before assuming their code is wrong.
- This is chip-level guidance, cross-checked against Espressif's own
ESP-IDF and datasheet docs at time of writing — but ESP32-P4 support
across ESP-IDF/Arduino/PlatformIO is newer and moves faster than on the
established Xtensa chips. If the user hits a compile error on a specific
function signature or a "target not supported" error, point them at the
current ESP-IDF docs for their exact version rather than assuming this
file is byte-exact.
1---2name: esp32-p43description: Chip-level ESP-IDF capability reference for the ESP32-P4 SoC (dual-core RISC-V HP cores + a RISC-V LP core) — what the chip can do, distinct from any board's wiring. Use when a user wants to exploit ESP32-P4 hardware — MIPI-CSI/DSI with the on-chip ISP, hardware JPEG encode/decode, hardware H.264 encode, PPA/2D-DMA image acceleration, the LP core and its own peripherals, USB HS OTG vs FS OTG vs USB-Serial-JTAG, TWAI/CAN, Ethernet MAC, SDIO host, in-package PSRAM up to 32MB, HP-core task pinning, and the PIE instruction extensions behind on-device AI/DSP. Trigger on MIPI-CSI/MIPI-DSI/camera/ISP/JPEG/H.264/PPA/LP-core/deep-sleep/PSRAM/USB-HS-OTG questions on an ESP32-P4, or any M5Stack P4 board (Tab5, Stamp-P4) needing depth beyond its own SKILL.md. For pinouts/wiring use that board's skill. Also relevant when a user asks why their ESP32-P4 board has no WiFi/Bluetooth and needs a companion radio chip.4---56# ESP32-P4 chip capabilities78This skill is the **chip layer**, not a board layer. A board skill (e.g.9`m5stack-tab5`) tells you what's wired to what on one specific product; this10skill tells you what the ESP32-P4 silicon itself can do — the peripherals,11multimedia hardware, low-power modes, memory options, and concurrency model12that are the same on every ESP32-P4 board regardless of vendor. Read a13board's own skill first for pin numbers and I2C addresses, then come here14when the user wants to go deeper on a capability than "call the vendor's15high-level library and move on" — e.g. driving the MIPI camera pipeline,16encoding H.264 in hardware, using the LP core while the main system sleeps,17or getting real throughput out of USB HS OTG.1819## The one thing every ESP32-P4 user needs to know: no radio, ever2021Unlike every other current ESP32 variant, **the P4 has zero wireless22hardware** — no WiFi, no Bluetooth, no Thread/Zigbee/802.15.4. This isn't a23stripped-down SKU; the chip was designed as a high-performance24applications/HMI processor and pairs with a separate radio chip (an25ESP32-C6 on M5Stack's Tab5 and Stamp-P4, most commonly) over SDIO or SPI26when a project needs wireless. If a user asks "why won't `WiFi.begin()`27compile/link" or "how do I get WiFi on my P4 board," the answer is always28"it needs a companion radio chip and a host-side driver (ESP-Hosted or29similar) talking to it" — not a missing library or wrong board setting. See30that board's own skill (e.g. the `m5stack-tab5` skill's "WiFi needs pin31setup" section) for the actual wiring/init pattern on a specific product.3233## Not classic ESP32, not S2/S3, not C3/C6/C5, not H23435M5Stack (and the ESP32 family generally) spans several very different chips36that are easy to conflate. Get this wrong and code silently targets the37wrong architecture or assumes a peripheral that doesn't exist.3839| Chip | Cores / arch | Wireless | Native USB | Notable extras | Not on this chip |40|---|---|---|---|---|---|41| **ESP32-P4** (this skill) | 2× RISC-V HP cores @ up to 400MHz + 1× RISC-V LP core @ up to 40MHz | **None** — always pairs with a companion chip (M5Stack's Tab5/Stamp-P4 use a C6) | Yes — USB 2.0 **HS** OTG *and* a separate FS OTG, both with integrated PHY | MIPI-CSI+ISP, MIPI-DSI, hardware JPEG enc/dec, hardware H.264 encode, PPA + 2D-DMA, Ethernet MAC, PIE AI/DSP instruction extensions, up to 32MB in-package PSRAM | Any wireless radio, Xtensa SIMD (esp-dsp/ESP-DL use PIE instead, see below) |42| ESP32-S3 | 2× Xtensa LX7 @ up to 240MHz + 1 low-power coprocessor core | WiFi 4 + BLE 5 | Yes — OTG (full-speed only) + separate USB-Serial-JTAG | Xtensa SIMD/vector AI instructions, ULP-RISC-V *and* ULP-FSM | Thread/Zigbee/802.15.4, WiFi 6, MIPI-DSI/CSI, hardware video codecs |43| ESP32 (classic) | 2× Xtensa LX6 @ 240MHz | WiFi 4 + Bluetooth Classic + BLE 4.2 | No | Widest library/example coverage, oldest silicon | Native USB, SIMD extensions, ULP-RISC-V |44| ESP32-S2 | 1× Xtensa LX7 @ 240MHz | WiFi 4 only, **no Bluetooth at all** | Yes — OTG | Very low deep-sleep current | Second core, Bluetooth |45| ESP32-C3 | 1× RISC-V @ 160MHz | WiFi 4 + BLE 5 | No | Cheapest/smallest | Second core, native USB, SIMD |46| ESP32-C6 | 1× RISC-V @ 160MHz + LP core | WiFi 6 (2.4GHz) + BLE 5.3 + Thread/Zigbee (802.15.4) | No | First ESP32 with WiFi 6 + Matter-ready radio stack — this is the P4's usual wireless companion | Second core, native USB, hardware FPU |47| ESP32-C5 | 1× RISC-V @ 240MHz + LP core | WiFi 6 **dual-band (2.4+5GHz)** + BLE 5 + 802.15.4 | No | Only dual-band-WiFi6 ESP32 variant | Second core, native USB |48| ESP32-H2 | 1× RISC-V @ 96MHz | **No WiFi** — BLE 5 + Thread/Zigbee only | No | Purpose-built low-power mesh/Matter radio | WiFi entirely, second core |4950If the user's board pairs an ESP32-P4 with a companion radio chip (the case51for every current M5Stack P4 board), that companion chip is out of this52skill's scope — for the ESP32-C6 specifically, see the `esp32-c6` skill in53this same plugin.5455## Quick specs5657- **HP (High-Performance) cores**: 2× 32-bit RISC-V, 5-stage pipeline, up to58 400MHz, single-precision FPU, PIE AI/DSP instruction extensions (see59 `references/memory-concurrency-ai.md`)60- **LP (Low-Power) core**: 1× 32-bit RISC-V, 2-stage pipeline, up to 40MHz —61 a real coprocessor that can run independently, including while the HP62 cores are active, not just during sleep (see `references/power-sleep-lp.md`)63- **On-chip memory**: 768KB HP L2 SRAM, 128KB HP ROM, 32KB LP SRAM, 16KB LP64 ROM, 8KB zero-wait-state TCM65- **PSRAM**: not on the bare die — many module variants embed it in-package66 (e.g. `ESP32-P4NRW16`/`ESP32-P4NRW32` = 16MB/32MB Octal, 1.8V); check the67 specific module before assuming a size. M5Stack's Tab5 uses the 32MB68 variant.69- **Flash**: external only, SPI/Dual/Quad/QPI, up to 64MB70- **GPIO**: up to 55 pins on the bare chip (5 are strapping pins); 15 are71 LP/RTC-capable (usable as deep-sleep wake sources and by the LP core) —72 how many are actually free depends on the module and the board, check73 that board's `references/pinout.md`74- **USB**: three independent USB-capable blocks sharing no pins with each75 other — a true USB 2.0 **High-Speed** OTG (480Mbps, integrated PHY), a76 separate USB 2.0 Full-Speed OTG (also integrated PHY), and a77 USB-Serial-JTAG controller. This is a bigger deal than it sounds — see78 `references/usb.md`, most USB confusion on this chip traces back to which79 of the three a board's connector(s) are wired to.80- **Display/camera**: MIPI-DSI (display out) and MIPI-CSI (camera in) with81 an integrated ISP, plus legacy parallel (DVP) display and camera82 interfaces for non-MIPI panels/sensors — up to 1080p on both. See83 `references/multimedia-vision.md`.84- **Hardware video/image codecs**: JPEG encode *and* decode (one at a time,85 not simultaneously), and H.264 **hardware encode** (software decode only)86 up to 1080p30 — plus a PPA (Pixel Processing Accelerator) and 2D-DMA for87 GPU-free image scaling/rotation/blending. See88 `references/multimedia-vision.md`.89- **Wireless**: none — see "no radio, ever" above90- **Ethernet**: one MAC (EMAC), RMII mode — needs an external PHY chip, the91 P4 doesn't have one built in92- **Storage interfaces**: SDIO/SD/MMC host controller, plus the usual SPI93 flash and (via GPIO) SD-SPI fallback94- **Other peripherals**: 5 UART + 1 LP UART, 4 SPI + 1 LP SPI, 2 I2C + 1 LP95 I2C + 1 analog I2C, 1 I3C controller, 3 I2S + 1 LP I2S, 1 TWAI/CAN, 196 RMT, 1 LEDC, 1 MCPWM, 1 PCNT, 1 PARLIO (parallel IO), 1 BitScrambler, 1497 touch channels, 2 ADC controllers (8+6 channels), internal temperature98 sensor, VAD (voice activity detection) unit — full detail and typical use99 cases in `references/peripherals.md`100- **Security**: Secure Boot, Flash Encryption (XTS-AES), AES/ECC/HMAC/RSA/SHA101 accelerators, RSA/ECDSA digital-signature peripherals, TRNG, a Key102 Manager with SRAM-PUF-derived HUK, and permission-control (PMS) hardware103 access protection — not detailed further in this skill, see ESP-IDF's104 security guides if the user needs this105- **Package**: QFN104 (10×10mm), -40°C to 85°C106107## Peripheral capability map108109Full detail, with typical use cases and gotchas, is in110`references/peripherals.md`. Quick index of what's covered there: RMT,111LEDC, I2S, ADC, capacitive touch, PCNT, MCPWM, TWAI, SDMMC/SD-SPI/SDIO host,112GPTimer, Ethernet MAC, I3C, PARLIO, BitScrambler, and the multi-instance113UART/SPI/I2C story.114115## Multimedia and vision: the P4's headline feature116117MIPI-CSI camera input with an integrated ISP, MIPI-DSI display output,118hardware JPEG encode/decode, hardware H.264 encode, and the PPA/2D-DMA image119accelerators are what actually distinguish this chip from an ESP32-S3 for120most projects — this is why M5Stack picked it for the Tab5's 1280x720121display and camera. Full detail, including throughput numbers and the122encode/decode asymmetry (hardware JPEG both ways, but H.264 hardware-encode123/ software-decode only), is in `references/multimedia-vision.md`.124125## Power management: two very different low-power stories126127Light sleep / deep sleep and their wake sources work broadly like other128ESP32 chips, but the P4's **LP core is not a limited ULP-FSM-style129coprocessor** — it's a genuine RISC-V core with its own UART/I2C/SPI/I2S/GPIO130peripherals, a debug module, and an interrupt controller, and it's capable131of running **while the HP cores are fully active**, not just during sleep.132Full detail in `references/power-sleep-lp.md` — read this before telling a133user "just call `esp_deep_sleep_start()`" if they actually want an134always-on background task offloaded from the HP cores.135136## USB: three controllers, not two137138The P4 doubles down on USB relative to the S3 — see "Quick specs" above.139Full detail on which controller does what, default pin assignments, and the140current-firmware limitation that only one of the two OTG controllers can be141in Host mode at a time, is in `references/usb.md`.142143## Memory, concurrency, and on-device AI144145In-package PSRAM variants and flash config, HP-core task pinning, and the146PIE (Processor Instruction Extensions) SIMD instructions that back147esp-dsp/esp-dl/esp-tflite-micro on this chip (P4 doesn't share the S3's148Xtensa TIE-based SIMD — it's a different ISA extension with its own149instruction prefix) are in `references/memory-concurrency-ai.md`.150151## Which M5Stack boards use this chip152153**Tab5** is confirmed ESP32-P4-based (paired with an ESP32-C6 radio154co-processor — see the `m5stack-tab5` skill). **Stamp-P4** (with its155"AddOn C6 For P4") is a likely match by name, not yet independently156verified. No other current M5Stack Controller uses this chip.157158## Official resources159160- Datasheet: https://documentation.espressif.com/esp32-p4_datasheet_en.html161- Product page: https://www.espressif.com/en/products/socs/esp32-p4162- ESP-IDF API reference (esp32p4 target): https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/index.html163- Sleep modes: https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/system/sleep_modes.html164- LP Core / ULP programming: https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/system/ulp.html165- USB Host (DWC_OTG, both OTG controllers): https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/peripherals/usb_host.html166- USB Serial/JTAG console: https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-guides/usb-serial-jtag-console.html167- Camera controller / ISP driver: https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/peripherals/camera_driver.html168- JPEG encoder/decoder: https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/peripherals/jpeg.html169- H.264 component (esp-h264-component) usage guide: https://developer.espressif.com/blog/2025/07/esp-h264-use-tips/170- PIE (AI/DSP instruction extensions) introduction: https://developer.espressif.com/blog/2024/12/pie-introduction/171- Hardware design guidelines (schematic checklist, USB PHY/pin notes): https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32p4/schematic-checklist-esp32p4.html172173## Working with the user174175- If they're getting compile/link errors from WiFi/BLE code copy-pasted176 from an S3/C3/C6 project, the "no radio, ever" section above is almost177 certainly the cause — check whether their board has a companion radio178 chip and whether they're using its host-side driver, not a missing179 library.180- If they're getting compile/link errors from code copy-pasted for a181 different ESP32 variant otherwise, check the "Not classic ESP32..." table182 above first — RISC-V-vs-Xtensa and missing-peripheral mismatches are the183 most common cause.184- If they ask for USB Host functionality and it silently doesn't work185 alongside another USB feature, check `references/usb.md` — the186 "only one OTG controller can be Host at a time" current-software187 limitation is a common surprise.188- If they want something to keep running while the HP cores sleep *or* want189 to offload a lightweight background task without spending an HP-core190 FreeRTOS task on it, point them at the LP core in191 `references/power-sleep-lp.md` rather than assuming it's ULP-FSM-limited192 like older chips.193- If they're doing camera/video work and performance doesn't match194 expectations, check `references/multimedia-vision.md` for the actual195 hardware-vs-software encode/decode split (H.264 decode is software-only196 and much slower than encode) before assuming their code is wrong.197- This is chip-level guidance, cross-checked against Espressif's own198 ESP-IDF and datasheet docs at time of writing — but ESP32-P4 support199 across ESP-IDF/Arduino/PlatformIO is newer and moves faster than on the200 established Xtensa chips. If the user hits a compile error on a specific201 function signature or a "target not supported" error, point them at the202 current ESP-IDF docs for their exact version rather than assuming this203 file is byte-exact.