Skip to content

M5 Tab5: WiFi fails to initialize, SDIO errors, MAC is zero at runtime (but correct at bootloader) #12016

@ramya-infinitispark

Description

@ramya-infinitispark

Board

M5Stack Tab5 (ESP32-P4)

Device Description

Device: M5Stack Tab5, ESP32-P4 (revision v1.0)

Bootloader identification:
esptool v5.1.0
Serial port COM8:
Connecting...
Connected to ESP32-P4 on COM8:
Chip type: ESP32-P4 (revision v1.0)
Features: Dual Core + LP Core, 400MHz
Crystal frequency: 40MHz
USB mode: USB-Serial/JTAG
MAC: 30:ed:a0:e1:60:3a

Hardware Configuration

  • Board: M5Stack Tab5 (ESP32-P4, revision v1.0)
  • SD card slot: Empty
  • Board powered via USB-C cable to PC
  • No external sensors or modules connected
  • Using built-in display only
  • Programmed/flashed via USB/Serial (esptool v5.1.0, Arduino 3.3.3 core)

Version

latest stable Release (if not listed below)

Type

Bug

IDE Name

Arduino IDE

Operating System

Windows 11

Flash frequency

80MHz

PSRAM enabled

yes

Upload speed

921600

Description

When attempting any WiFi operation (even the basic WiFiServer example), WiFi fails to connect and the following errors appear repeatedly in serial output:

E (3249) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
E (3250) sdio_wrapper: sdmmc_card_init failed
E (3478) H_SDIO_DRV: card init failed
E (3478) transport: ensure_slave_bus_ready failed
ESP_ERROR_CHECK_WITHOUT_ABORT failed: esp_err_t 0xffffffff (ESP_FAIL) at 0x4003cafe
file:  "./managed_components/espressif__esp_hosted/host/api/src/esp_hosted_api.c" line 156
func: esp_hosted_reconfigure
expression: transport_drv_reconfigure()
E (3496) H_API: ESP-Hosted link not yet up

WiFi never connects, and calls to WiFi.macAddress() always return 00:00:00:00:00:00.

Strikingly, the real MAC is correctly shown by esptool at flash time:

Connecting...
Connected to ESP32-P4 on COM8:
MAC: 30:ed:a0:e1:60:3a

Steps to Reproduce:

  1. Use any basic WiFi example (e.g. WebServer or WiFi.macAddress() print) with appropriate credentials.
  2. Attempt to connect, observe that SDIO errors occur and WiFi never connects.
  3. Serial prints always indicate MAC = 00:00:00:00:00:00 at runtime, but chip MAC is valid in esptool.

Additional Attempts:

  • Tried disabling SD in M5Unified (M5.begin(cfg), as well as all possible configs; no effect).
  • Sketch does not call SD.begin() or similar anywhere.
  • Even the simplest WiFi sketch will not connect.
  • Tried both stable and nightly/alpha core releases as of Nov 2025.

Log Excerpt

21:48:37.802 -> Connecting to ... 
21:48:37.802 -> E (3249) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
...
21:48:38.035 -> E (3478) H_SDIO_DRV: card init failed
...
21:48:38.035 -> E (3496) H_API: ESP-Hosted link not yet up
21:48:38.035 -> WiFi not connected. MAC: 00:00:00:00:00:00

What I expect:

  • WiFi should connect as it does on ESP32, ESP32-S3 etc, or at the very least MAC address should be visible at runtime.
  • SDIO/hosted link errors should not prevent WiFi stack startup.

Additional Notes:

  • This issue does not occur on ESP32 (original) or ESP32-S3.
  • I am aware ESP32-P4 support is new. If there is a workaround, documentation, or recommended dev branch/IDF patch, please advise.

Sketch

#include <WiFi.h>

const char* ssid = "my_ssid";
const char* password = "my_password";

void setup() {
    Serial.begin(115200);
    delay(500);

    Serial.println("Serial started!");

    // Set WiFi mode
    WiFi.mode(WIFI_STA);

    // Print MAC address
    String mac = WiFi.macAddress();
    Serial.print("Tab5 MAC: ");
    Serial.println(mac);   // <-- This prints all zeros

    delay(500); // Readability

    // Try to connect to WiFi 
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    int count = 0;
    while (WiFi.status() != WL_CONNECTED && count < 20) {
        delay(500);
        Serial.print(".");
        count++;
    }
    Serial.println();

    if (WiFi.status() == WL_CONNECTED) {
        Serial.println("WiFi connected.");
        Serial.print("IP address: ");
        Serial.println(WiFi.localIP());
    } else {
        Serial.println("WiFi not connected.");
    }
}

void loop() {
  // Nothing here
}

Debug Message

21:48:37.802 -> 
21:48:37.802 -> Connecting to my_ssid
21:48:37.802 -> E (3249) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
21:48:37.802 -> E (3250) sdio_wrapper: sdmmc_card_init failed
21:48:37.896 -> E (3377) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
21:48:37.896 -> E (3378) sdio_wrapper: sdmmc_card_init failed
21:48:38.035 -> E (3478) H_SDIO_DRV: card init failed
21:48:38.035 -> E (3478) transport: ensure_slave_bus_ready failed
21:48:38.035 -> ESP_ERROR_CHECK_WITHOUT_ABORT failed: esp_err_t 0xffffffff (ESP_FAIL) at 0x4003cafe
21:48:38.035 -> file: "./managed_components/espressif__esp_hosted/host/api/src/esp_hosted_api.c" line 156
21:48:38.035 -> func: esp_hosted_reconfigure
21:48:38.035 -> expression: transport_drv_reconfigure()
21:48:38.035 -> E (3496) H_API: ESP-Hosted link not yet up
21:48:38.601 -> .................................................................................

Other Steps to Reproduce

No response

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions