Google Chat:---
+86-0755-88291180
sales@spotpear.com
dragon_manager@163.com
tech-support@spotpear.com
zhoujie@spotpear.com
WhatsApp:13246739196
WhatsApp:13424403025

5 / 7 / 8 / 10.1-inch DSI screens.OV5647.| Module | Device / Function | Interface | Address / Parameters | GPIO / Signals |
|---|---|---|---|---|
| LCD | MIPI-DSI display | MIPI-DSI | 2‑lane; supports 5 / 7 / 8 / 10.1‑inch panel configurations | LCD reset not connected; backlight controlled via shared I2C |
| Touch | GT911 capacitive touch | I2C | 7‑bit address 0x5D / 0x14 | SDA=GPIO7, SCL=GPIO8; RST / INT not connected |
| LCD Backlight | Backlight controller | I2C | 7‑bit address 0x45; brightness register 0x96 | SDA=GPIO7, SCL=GPIO8 |
| Camera | MIPI-CSI camera interface | MIPI-CSI + SCCB | 2‑lane; camera model and address depend on module documentation | SCCB shared on GPIO7 / GPIO8; XCLK / RESET not connected |
| Audio | ES8311 Codec | I2C + I2S | 7‑bit I2C address 0x18; 8‑bit write address 0x30; single analog microphone | I2C: SDA=GPIO7, SCL=GPIO8; MCLK=GPIO13, SCLK=GPIO12, WS=GPIO10, DOUT=GPIO9, DIN=GPIO11 |
| Amplifier Control | Onboard speaker amp enable | GPIO | High level to enable | GPIO53 |
| TF Card | SDMMC 4‑bit | SDMMC | 4‑bit mode | CLK=GPIO43, CMD=GPIO44, D0=GPIO39, D1=GPIO40, D2=GPIO41, D3=GPIO42; power control=GPIO45 |
| ESP32-C5 | ESP-Hosted communication | SDIO | Wi‑Fi 6 / Bluetooth 5 (LE) co‑processor | CLK=GPIO18, CMD=GPIO19, D0=GPIO14, D1=GPIO15, D2=GPIO16, D3=GPIO17, RESET=GPIO54 |
When using the GPIO headers on the ESP32-P4-WIFI6-DB, note the multiplexed functions marked on the pin diagram. Some GPIOs are already connected to onboard peripherals; before using them as general‑purpose I/O, confirm that the corresponding peripheral is not enabled.

The table below lists the GPIOs already occupied by onboard circuits and those brought out to expansion headers.
| GPIO | Signal Name | Connected To | Remarks |
|---|---|---|---|
| GPIO0 | GPIO0 | XTAL_32K_N | XTAL_32K |
| GPIO1 | GPIO1 | XTAL_32K_P | XTAL_32K |
| GPIO2 | GPIO2 | Reserved pad / pin header | Expansion header GPIO2 |
| GPIO3 | GPIO3 | Reserved pad / pin header | Expansion header GPIO3 |
| GPIO4 | GPIO4 | Reserved pad / pin header | Expansion header GPIO4 |
| GPIO5 | GPIO5 | Reserved pad / pin header | Expansion header GPIO5 |
| GPIO6 | GPIO6 | ESP32-C5 module | |
| GPIO7 | I2C SDA | ES8311, GT911, LCD backlight, camera SCCB, expansion header | Shared I2C SDA |
| GPIO8 | I2C SCL | ES8311, GT911, LCD backlight, camera SCCB, expansion header | Shared I2C SCL |
| GPIO9 | I2S DOUT | ES8311 DSDIN | Audio playback data |
| GPIO10 | I2S WS | ES8311 LRCK | Audio frame sync |
| GPIO11 | I2S DIN | ES8311 ASDOUT | Audio capture data |
| GPIO12 | I2S SCLK | ES8311 SCLK | Audio bit clock |
| GPIO13 | I2S MCLK | ES8311 MCLK | Audio master clock |
| GPIO14 | GPIO14 | ESP32-C5 module | C5 SDIO D0 |
| GPIO15 | GPIO15 | ESP32-C5 module | C5 SDIO D1 |
| GPIO16 | GPIO16 | ESP32-C5 module | C5 SDIO D2 |
| GPIO17 | GPIO17 | ESP32-C5 module | C5 SDIO D3 |
| GPIO18 | GPIO18 | ESP32-C5 module | C5 SDIO CLK |
| GPIO19 | GPIO19 | ESP32-C5 module | C5 SDIO CMD |
| GPIO20 | GPIO20 | Reserved pad / pin header | Expansion header GPIO20 |
| GPIO21 | GPIO21 | Reserved pad / pin header | Expansion header GPIO21 |
| GPIO22 | GPIO22 | Reserved pad / pin header | Expansion header GPIO22 |
| GPIO23 | GPIO23 | Reserved pad / pin header | Expansion header GPIO23 |
| GPIO24 | GPIO24 | Reserved pad / pin header | GPIO24 / USB1P1_N0 |
| GPIO25 | GPIO25 | Reserved pad / pin header | GPIO25 / USB1P1_P0 |
| GPIO26 | GPIO26 | Reserved pad / pin header | GPIO26 / USB1P1_N1 |
| GPIO27 | GPIO27 | Reserved pad / pin header | GPIO27 / USB1P1_P1 |
| GPIO28 | GPIO28 | Reserved pad / pin header | Expansion header GPIO28 |
| GPIO29 | GPIO29 | Reserved pad / pin header | Expansion header GPIO29 |
| GPIO30 | GPIO30 | Reserved pad / pin header | Expansion header GPIO30 |
| GPIO31 | GPIO31 | Reserved pad / pin header | Expansion header GPIO31 |
| GPIO32 | GPIO32 | Reserved pad / pin header | Expansion header GPIO32 |
| GPIO33 | GPIO33 | Reserved pad / pin header | Expansion header GPIO33 |
| GPIO34 | GPIO34 | Solder pad | Strapping pin |
| GPIO35 | GPIO35 | BOOT key | Strapping pin |
| GPIO36 | GPIO36 | Solder pad | Strapping pin; external 3.3 V pull-up |
| GPIO37 | UART0_TXD | CH343P | UART0 TX; not recommended for general-purpose use |
| GPIO38 | UART0_RXD | CH343P | UART0 RX; not recommended for general-purpose use |
| GPIO39 | SD_D0 | TF card | SDMMC 4-bit data line |
| GPIO40 | SD_D1 | TF card | SDMMC 4-bit data line |
| GPIO41 | SD_D2 | TF card | SDMMC 4-bit data line |
| GPIO42 | SD_D3 | TF card | SDMMC 4-bit data line |
| GPIO43 | SD_CLK | TF card | SDMMC clock line |
| GPIO44 | SD_CMD | TF card | SDMMC command line |
| GPIO45 | SD_VDD_EN | TF card power control | Low to enable |
| GPIO46 | GPIO46 | Reserved pad / pin header | Expansion header GPIO46 |
| GPIO47 | GPIO47 | Reserved pad / pin header | Expansion header GPIO47 |
| GPIO48 | GPIO48 | Reserved pad / pin header | Expansion header GPIO48 |
| GPIO49 | GPIO49 | Reserved pad / pin header | Expansion header GPIO49 |
| GPIO50 | GPIO50 | Reserved pad / pin header | Expansion header GPIO50 |
| GPIO51 | GPIO51 | Reserved pad / pin header | Expansion header GPIO51 |
| GPIO52 | GPIO52 | Reserved pad / pin header | Expansion header GPIO52 |
| GPIO53 | PA_CTRL | NS4150B CTRL | Amplifier enable, active high |
| GPIO54 | C5_CHIP_PU | ESP32-C5 enable | High to enable, low to reset |
| Signal | GPIO / Signal | Description |
|---|---|---|
MIPI-DSI | MIPI interface | 2‑lane display interface |
LCD_RST | Not connected | No dedicated GPIO for LCD reset |
LCD_BL | I2C 0x45 | Backlight controlled via register 0x96 |
TP_SCL | GPIO8 | GT911 touch I2C SCL, shared bus |
TP_SDA | GPIO7 | GT911 touch I2C SDA, shared bus |
TP_RST | Not connected | GT911 reset signal not connected |
TP_INT | Not connected | GT911 interrupt signal not connected; uses polling mode |
| Signal / Peripheral | GPIO / Signal | Description |
|---|---|---|
I2S_MCLK | GPIO13 | ES8311 master clock |
I2S_SCLK | GPIO12 | ES8311 bit clock |
I2S_WS | GPIO10 | ES8311 frame sync |
I2S_DOUT | GPIO9 | ESP32-P4 output to ES8311 |
I2S_DIN | GPIO11 | ES8311 output to ESP32-P4 |
| Amplifier enable | GPIO53 | Active high |
SD_D0 / SD_D1 | GPIO39 / GPIO40 | SDMMC data lines |
SD_D2 / SD_D3 | GPIO41 / GPIO42 | SDMMC data lines |
SD_CLK / SD_CMD | GPIO43 / GPIO44 | SDMMC clock and command lines |
SD_VDD_EN | GPIO45 | TF card power control, low to enable |
| Device | Model / Function | I2C Address | I2C Pins | Notes |
|---|---|---|---|---|
| Audio Codec | ES8311 | 7‑bit 0x18; 8‑bit write address 0x30 | GPIO7 / GPIO8 | Onboard audio capture and playback |
| Touch | GT911 | 0x5D / 0x14 | GPIO7 / GPIO8 | Both addresses are tried; RST / INT not connected |
| LCD Backlight | Backlight controller | 0x45 | GPIO7 / GPIO8 | Brightness register is 0x96 |
| Camera SCCB | External camera module | Depends on module | GPIO7 / GPIO8 | Shares bus with onboard I2C devices |

This chapter includes the following sections, please read as needed:
The Arduino examples for the ESP32-P4-WIFI6-DB are based on Arduino-ESP32 3.3.11. The onboard ESP32-P4 is the compile target for Arduino projects. The ESP32-C5 wireless co-processor connects to the ESP32-P4 via ESP-Hosted/SDIO and is not a compile target for Arduino projects.
Before running the display, camera, audio, or TF card examples, connect the corresponding onboard or external hardware first, and install the required libraries and configuration files as described in the example prerequisites.
New to Arduino ESP32 development and looking for a quick start? We have prepared a comprehensive Getting Started Tutorial for you.
Note: This tutorial uses the ESP32-S3-Zero as a reference example, and all hardware code is based on its pinout. Before you start, we recommend checking the pinout of your development board to ensure the pin configuration is correct.
Please refer to the Install and Configure Arduino IDE Tutorial to install the Arduino IDE and add ESP32 board support.
3.3.11. The example code and board definitions are organized around this version. Do not mix the board files in this directory with other versions.examples/Arduino/esp32/variants/waveshare_esp32_p4_wifi6_db from the example package to the variants directory in your Arduino-ESP32 installation.examples/Arduino/esp32/boards.txt is a complete boards.txt snapshot based on Arduino-ESP32 3.3.11. If your Arduino-ESP32 installation has no other local board modifications, you can back up the original file and replace it. If you have already added other boards, merge only the entries beginning with waveshare_esp32_p4_wifi6_db..Waveshare ESP32-P4-WIFI6-DB from the board list.The Arduino examples are located in the examples/Arduino directory of the ESP32-P4-WIFI6-DB example repository.
After connecting the board, select the board and port from the "Tools" menu in Arduino IDE. The default parameters in the board definition are as follows:
| Option | Setting |
|---|---|
| Board | Waveshare ESP32-P4-WIFI6-DB |
| Compile Target | esp32p4 |
| Flash Size | 32MB |
| Partition Scheme | 32M Flash (13MB APP/6.75MB SPIFFS) |
| PSRAM | The board entry automatically defines BOARD_HAS_PSRAM |
| Upload Mode | UART0 |
| Serial Monitor Baud Rate | 115200 |
The development board uses the onboard CH343P USB-to-serial chip for program flashing and serial log output. Keep the upload mode at the default UART0. When changing the partition scheme or upload speed, confirm the corresponding example's memory requirements and actual connection. The serial output for all examples uses 115200.
The example directory is examples/Arduino and currently includes the following examples:
| Example Directory | Function | Main Dependencies or Hardware |
|---|---|---|
board_check | Outputs chip, Flash, PSRAM, and heap memory information | No external peripherals required |
gpio | Interactive GPIO testing via serial commands | Arduino-ESP32 Console |
i2c | Scans for 7‑bit addresses on the I2C1 bus | Wire1, I2C1 |
i2s | Audio loopback from a single microphone to a single speaker using ES8311 | ES8311, onboard mic and speaker |
sdmmc | Tests TF file read/write in 4‑bit mode | Onboard TF card |
mipi_dsi | Displays MIPI-DSI color bars and tests backlight | LCD panel, backlight controller |
mipi_csi | Displays OV5647 camera feed on the MIPI-DSI LCD | OV5647, LCD, ESP_Video |
board_check: Board Information CheckOpen board_check/board_check.ino, compile and upload, then set the serial monitor to 115200. The example will output:
This example does not access the LCD, camera, audio, SDMMC, or ESP-Hosted, making it suitable for first confirming that the Arduino board definition is working correctly.
gpio: GPIO ConsoleOpen gpio/gpio.ino and upload it. Set the serial monitor line ending to Newline. Enter help to see the command list.
gpio read <pin>
gpio write <pin> <0|1>
gpio mode <pin> <in|out|in_pu|in_pd>
For example:
gpio mode 2 out
gpio write 2 0
gpio write 2 1
gpio mode 4 in_pu
gpio read 4
This board variant does not define an onboard LED_BUILTIN. When testing GPIO, avoid using pins that are already occupied by the MIPI display, touch controller, camera, SDMMC, ESP-Hosted/SDIO, or audio codec.
i2c: I2C Address ScanOpen i2c/i2c.ino and upload it. The example uses Arduino Wire1 to scan the I2C1 bus. The default parameters are:
| Item | Parameter |
|---|---|
| SDA | GPIO7 |
| SCL | GPIO8 |
| Frequency | 400 kHz |
| Address Format | 7‑bit I2C address |
This bus is shared by devices such as the ES8311, LCD backlight controller, GT911, and camera SCCB. Do not run other examples that initialize I2C1 at the same time as this scan. If no device responds, the program will not list it as a device; this does not indicate an issue with the scanning program.
i2s: ES8311 Audio LoopbackOpen i2s/i2s.ino and upload it. This runs a mono audio loopback using the onboard microphone and speaker. The example runs at 48 kHz, 16-bit, I2S standard mono mode using the left-channel slot.
| Signal | GPIO |
|---|---|
| MCLK | GPIO13 |
| BCLK | GPIO12 |
| LRCK | GPIO10 |
| DOUT | GPIO9 |
| DIN | GPIO11 |
| Amplifier Enable | GPIO53, high to enable |
The ES8311 Arduino Wire1 control address is the 7‑bit address 0x18. If the serial output does not show ES8311 ready, or if there is no sound in the loopback, check the I2C address, MCLK, amplifier enable, and the microphone and speaker connections. Acoustic feedback (howling) may occur if the microphone and speaker are too close together.
sdmmc: TF File Read/WriteInsert a TF card, then open sdmmc/sdmmc.ino and upload it. The example mounts the card using the 4-bit SDMMC interface, reads the capacity, and performs write and read tests on the /arduino_test.txt file in the root directory.
| Signal | GPIO |
|---|---|
| CLK | GPIO43 |
| CMD | GPIO44 |
| D0-D3 | GPIO39, GPIO40, GPIO41, GPIO42 |
| Card Power Control | GPIO45, low to enable |
If mounting fails, check that the TF card is inserted, the format is recognized, and the SDMMC pins are not occupied by other examples.
mipi_dsi: MIPI-DSI LCDmipi_dsi uses a project-local LCD driver to initialize the MIPI-DSI panel, cyclically displays horizontal and vertical color bars, and verifies the LCD backlight through the I2C backlight controller.
Before running, install or confirm the following libraries and versions:
| Library | Version |
|---|---|
ESP32_Display_Panel | 1.0.4 |
ESP32_IO_Expander | 1.1.1 |
esp-lib-utils | 0.2.3 |
In mipi_dsi/esp_panel_drivers_conf.h, select only one local LCD driver:
ESP_PANEL_DRIVERS_LCD_ENABLE_JD9365_LOCALESP_PANEL_DRIVERS_LCD_ENABLE_HX8394_LOCALESP_PANEL_DRIVERS_LCD_ENABLE_ILI9881C_LOCALThe current default configuration is for the 10.1inch JD9365, with 800 × 1280 resolution, RGB565, and dual DSI lanes. When using a different LCD panel, you must select the controller and configuration that match the actual panel.
mipi_csi: Camera Displaymipi_csi initializes the OV5647 MIPI-CSI camera and the MIPI-DSI LCD, and displays the camera's live feed on the LCD. The LCD interface supports JD9365, HX8394, and ILI9881C. mipi_csi/lcd_panel.h currently defaults to the 10.1inch JD9365 configuration.
Before running, ensure the following prerequisites are met:
3.3.11 and its corresponding ESP32-P4 precompiled libraries.ESP_Video has the MIPI-CSI video device enabled: CONFIG_ESP_VIDEO_ENABLE_MIPI_CSI_VIDEO_DEVICE=y.lcd_panel.h, set LCD_PANEL_TYPE to match the actual connected LCD panel type.mipi_csi, mipi_dsi, i2s, and i2c do not all initialize I2C1 in the same way: i2s and i2c use Arduino Wire1, mipi_dsi uses the legacy I2C API, and mipi_csi uses the newer i2c_master API. Do not run these examples simultaneously in the same Arduino project, or re-initialize the same bus repeatedly.
The Arduino board variant provides the following common pin aliases:
| Interface | Pin |
|---|---|
SDA / SDA1 | GPIO7 |
SCL / SCL1 | GPIO8 |
SS | GPIO26 |
MOSI | GPIO32 |
MISO | GPIO33 |
SCK | GPIO36 |
UART TX / RX | GPIO37 / GPIO38 |
GPIO7 and GPIO8 are the onboard I2C1 shared bus. The LCD backlight, GT911, ES8311, and camera SCCB all use the relevant board-level bus resources. Before changing pins, check both the actual hardware connections and the initialization code in the corresponding examples.
The board uses GPIO7 (SDA) and GPIO8 (SCL) to connect multiple I2C devices, with a default frequency of 400 kHz. Different examples use different I2C APIs:
i2c and i2s use Arduino Wire1.mipi_dsi uses the legacy API from driver/i2c.h to control the LCD backlight.mipi_csi uses Wire1 to create a new‑style i2c_master bus, and passes the bus handle to the camera SCCB and LCD backlight.Do not mix the initialization methods from these examples within the same program. The build results and hardware state for complex examples must be verified individually on the target board; the current configuration cannot be applied directly after changes to the Arduino-ESP32 version, LCD panel model, or hardware connections.
This chapter includes the following sections:
New to ESP32 ESP-IDF development and looking to get started quickly? We have prepared a general Getting Started Tutorial for you.
Please Note: This tutorial uses the ESP32-S3-Zero as a teaching example, and all hardware code is based on its pinout. Before you start, it is recommended that you check the pinout of your development board to ensure the pin configuration is correct.
The ESP-IDF BSP and brookesia_test in the ESP32-P4-WIFI6-DB repository require ESP-IDF >=5.5, and 10_wifi_antenna_tesat requires ESP-IDF >=6.0. These are the version constraints declared in the component manifest. Dependent components may impose additional requirements. For the component and configuration requirements of specific examples, refer to the README in the corresponding example directory.
The following guide uses Windows as an example, demonstrating development using VS Code + the ESP-IDF extension. macOS and Linux users should refer to the official documentation.
The screenshots in this section use ESP-IDF V5.5.2 as an example. When installing, please select the ESP-IDF version that matches your board's example.
Download the installation manager from the ESP-IDF Installation Manager page. This is Espressif's latest cross-platform installer. The following steps demonstrate how to use its offline installation feature.
Click the Offline Installer tab on the page, then select Windows as the operating system and the ESP-IDF version you need (the version shown in the screenshot is for reference only — choose the version that fits your actual needs).

After confirming your selection, click the download button. The browser will automatically download two files: the ESP-IDF Offline Package (.zst) and the ESP-IDF Installer (.exe).

Please wait for both files to finish downloading.
Once the download is complete, double-click to run the ESP-IDF Installer (eim-gui-windows-x64.exe).
The installer will automatically detect if the offline package exists in the same directory. Click Install from archive.

Next, select the installation path. We recommend using the default path. If you need to customize it, ensure the path does not contain Chinese characters or spaces. Click Start installation to proceed.

When you see the following screen, the ESP-IDF installation is successful.

We recommend installing the drivers as well. Click Finish installation, then select Install driver.

Download and install Visual Studio Code.
During installation, it is recommended to check Add "Open with Code" action to Windows Explorer file context menu to facilitate opening project folders quickly.
In VS Code, click the Extensions icon in the Activity Bar on the side (or use the shortcut Ctrl + Shift + X) to open the Extensions view.
Enter ESP-IDF in the search box, locate the ESP-IDF extension, and click Install.

For ESP-IDF extension versions ≥ 2.0, the extension will automatically detect and recognize the ESP-IDF environment installed in the previous steps, requiring no manual configuration.
The ESP-IDF BSP and example programs for the ESP32-P4-WIFI6-DB are maintained in the ESP32-P4-WIFI6-DB Example. You can obtain the board‑level code and example programs from this repository.
The relevant directories in the repository are:
firmware/esp32_p4_wifi6_db/: ESP-IDF BSP, header files, Kconfig, and component manifest.examples/esp_idf/: Peripheral examples and Brookesia applications.firmware/factory-firmware/: ESP32-P4 firmware for 5, 7, 8, and 10.1inch panels, as well as ESP32-C5 slave firmware.The target chip for the example projects is esp32p4.
The following commands use the 00_board_check example. Switch the terminal's current directory to the example directory and run them, replacing COMx with the actual serial port of the ESP32-P4:
cd examples/esp_idf/00_board_check
idf.py set-target esp32p4
idf.py build
idf.py -p COMx flash monitor
Display, camera, and Wi-Fi related examples also require selecting the actually connected LCD panel and entering Wi-Fi credentials via idf.py menuconfig before building. The component manager resolves dependencies during the configuration phase.
The BSP selects the LCD panel via the following options:
| BSP Option | Panel Controller | Resolution |
|---|---|---|
CONFIG_BSP_LCD_TYPE_720_1280_5_INCH_A | HX8394, 5inch | 720 × 1280 |
CONFIG_BSP_LCD_TYPE_720_1280_7_INCH_A | ILI9881C, 7inch | 720 × 1280 |
CONFIG_BSP_LCD_TYPE_800_1280_8_INCH_A | JD9365, 8inch | 800 × 1280 |
CONFIG_BSP_LCD_TYPE_800_1280_10_1_INCH_A | JD9365, 10.1inch | 800 × 1280 |
The BSP Kconfig defaults to the 10.1inch JD9365, and the default configuration of brookesia_test selects the 8inch JD9365. Before building, select the panel that is actually connected. The default configuration does not override an existing sdkconfig; to confirm the options actually in effect, check the project configuration and the generated build/config/sdkconfig.h.
It is recommended to run the examples in the following order: first confirm the board‑level peripherals, then verify the display, networking, and other functions:
00_board_check: Board‑level peripheral check.02_i2c_console_test: I2C bus check.03_sdmmc_test: SDMMC check.04_mipi_dsi_test: Display test.06_wifi_test: Wi-Fi Station test.| Example Directory | Example Content |
|---|---|
00_board_check | Outputs chip, Flash, PSRAM, heap memory information, and periodic heartbeat |
01_gpio_input_test | Displays GPIO input status on the LCD |
02_i2c_console_test | Interactive I2C scan and register read/write console |
03_sdmmc_test | TF file write, read, and rename test |
04_mipi_dsi_test | LCD output test, currently displaying a solid white screen |
05_mipi_csi_test | Uses PPA processing and previews the camera feed on the LCD |
06_wifi_test | Wi-Fi Station networking and gateway ping |
07_i2s_codec | ES8311 built-in audio playback or microphone loopback |
08_usb_host_msc | USB mass storage file operations and sequential read/write speed test |
09_bt_controller_mac_addr | Hosted Bluetooth MAC view/configuration and BLE GATT test |
10_wifi_antenna_tesat | Wi-Fi scan, STA networking, band, and RSSI logging |
brookesia_test | Comprehensive interface including calculator, drawing board, audio, camera, video, settings, Xiaozhi, and GPIO applications |
10_wifi_antenna_tesat is the current directory spelling in the repository. For wiring and operation methods, refer to the README and configuration in each example directory.
0x45 device on the shared I2C bus, brightness register 0x96; GT911 uses polling mode.The following steps apply to flashing the bin firmware provided for this model when the ESP32-P4-WIFI6-DB is connected to a 10.1inch panel. Before using the firmware, confirm that it matches the ESP32-P4 chip version, Flash size, board model, and panel model.
Flash address: 0x00
Firmware download: ESP32-P4-WIFI6-DB-10.1-Inch-A Factory Firmware
For other panel models, select the corresponding BSP panel configuration in the ESP-IDF project and build the firmware yourself. This 10.1inch firmware cannot be used directly.
The following steps apply to the firmware provided on this page.
Download and extract Espressif's official Flash Download Tool (Download)
Run Flash Download Tool and select the options that match the development board's MCU and download interface. The screenshot below uses ESP32-S3 and USB as an example; use the options required by the product's hardware design.

Parameter settings

Wait for flashing to complete (this may take some time; please be patient)
Press the reset button and verify the result

The BSP, ESP-IDF examples, and Arduino examples for the ESP32-P4-WIFI6-DB are maintained in the example repository for this model.