The 7" display version
- A 400 MHz dual-core ESP32-P4,* 32 MB PSRAM,,* 16 MB flash,* ESP32-C6 WiFi 6 and Bluetooth 5,* Large MIPI display,* Capacitive touch,,*
A complete recovery image - A now working WiFi subsystem
I had a new JC1060P470 board that could scan WiFi networks but would never connect.
Symptoms:
- WiFi scans worked.returned SSID's
- C6 MAC address was available.
WiFi.begin()always failed.- Arduino WiFi status stayed at
6 (WL_DISCONNECTED).
I first backed up both processors:(esptool.exe)
- ESP32-P4 flash just to the normal usb type C uart
- ESP32-C6 i used a 3.3v TTL usb tool to the onboard header tx rx and gnd plus grounding pin 109 and resetting with en grounded for a second this puts it in a state to accept the esptool backup (and writing the new firmware is the same way). pin 109 can stay grounded but en can only be momentary
I inspected the C6 firmware. using esptool and the factory firmware had an August 2025 date
for the Factory C6 firmware:
- Project:
network_adaptera - Compile date: 26 Aug 2025
- ESP-IDF: v5.5
I updated only the C6 application (ota_0 at 0x10000) using the current official ESP-Hosted network_adapter_esp32c6.bin. 12.2.9
After the update:
- WiFi connected immediately.
- DHCP succeeded.
- Stable IP address assigned.
- RSSI around -36 dBm.
one strange thing that may catch you out. It has 3 USB connections the silk screen calls them UART, HIGH SPEED and Full speed and then provides a 4th serial link with the C6 headers which you need a usb to TTL adapter and 3 female to female header wires plus 2 more wires for 109 and En which need grounding. so the adapter needs powering at the same time as the p4 you must plug into the High speed port . if you use the UART to power the p4 it will stop the C6 header working. After you have flashed use any usb ports you want to.
a simple sketch for testing this condition
yes i know we dont hardcode wifi passwords but it simplifies our test
this runs on espf32 by espressif systems v3.3.10
board name esp32p4 dev module
open your status monitor in arduino ide for the results
'
include <Arduino.h>
#include <WiFi.h>
const char* ssid = "yourssid";
const char* password = "your wifi password;
void printStatus()
{
Serial.println();
Serial.println("----------- WiFi Status -----------");
Serial.printf("Status code : %d\n", WiFi.status());
Serial.print("MAC Address : ");
Serial.println(WiFi.macAddress());
Serial.print("Hostname : ");
Serial.println(WiFi.getHostname());
if (WiFi.status() == WL_CONNECTED)
{
Serial.println();
Serial.println("*** CONNECTED ***");
Serial.print("IP Address : ");
Serial.println(WiFi.localIP());
Serial.print("Gateway : ");
Serial.println(WiFi.gatewayIP());
Serial.print("Subnet Mask : ");
Serial.println(WiFi.subnetMask());
Serial.print("DNS : ");
Serial.println(WiFi.dnsIP());
Serial.print("RSSI : ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
}
Serial.println("-----------------------------------");
}
void setup()
{
Serial.begin(115200);
delay(2000);
Serial.println();
Serial.println("======================================");
Serial.println("ESP32-P4 WiFi Diagnostic");
Serial.println("======================================");
Serial.printf("Arduino Core : %s\n", ESP_ARDUINO_VERSION_STR);
Serial.printf("ESP-IDF : %s\n", esp_get_idf_version());
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
delay(1000);
WiFi.begin(ssid, password);
for (int i = 0; i < 60; i++)
{
wl_status_t s = WiFi.status();
Serial.printf("%2d Status=%d", i + 1, s);
if (WiFi.macAddress() != "")
{
Serial.print(" MAC=");
Serial.print(WiFi.macAddress());
}
Serial.println();
if (s == WL_CONNECTED)
break;
delay(500);
}
printStatus();
}
void loop()
{
static unsigned long last = 0;
if (millis() - last > 5000)
{
last = millis();
Serial.print("Status=");
Serial.print(WiFi.status());
if (WiFi.status() == WL_CONNECTED)
{
Serial.print(" RSSI=");
Serial.print(WiFi.RSSI());
Serial.print(" dBm IP=");
Serial.println(WiFi.localIP());
}
else
{
Serial.println();
}
}
}
'