Light Sleep Wakeup Fails on ESP32-C6-Super Mini Board (Works on ESP32-WROOM)

I'll just add this experience with ESP32-C6 super-mini light sleep. It appears that some timed short sleeps (say less than 1ms) can work but longer ones can hang.

This test was part of a benchmark test suite developed by @outbackhut here. Universal Arduino Benchmark

code:

/*
 * This test sketch fails on an ESP32-c6 super-mini if the sleep period is > 1000us
 * It simply never wakes up.
 * 
 * ESP32-C6
 * IDE 1.8.19 (to copy large dataset from serial monitor)
 * ESP32 core version 3.3.4
 * 
 * 
 * 
 * see
 * https://esp32.com/viewtopic.php?t=38905&start=10
 * https://forum.arduino.cc/t/universal-arduino-benchmark/1427840/  post #31onwards
 * https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/api-reference/system/sleep_modes.html#id1
 * https://forum.arduino.cc/t/light-sleep-wakeup-fails-on-esp32-c6-super-mini-board-works-on-esp32-wroom/1355293
 */

 
// ESP32 Light Sleep Benchmark
void benchmarkESP32Sleep() {


  uint64_t testDurations[] = { 100, 500, 1000, 5000, 10000 };
  int d;

  for ( d = 0; d < 4 ; d++ ) {

    esp_sleep_disable_wakeup_source( ESP_SLEEP_WAKEUP_ALL ) ;
    Serial.println();
    Serial.print( "duration (us): " ) ;
    Serial.println( testDurations[ d ]  ) ;
    Serial.printf( "starting sleep. micros= %lu \n" , micros() ) ;
    uint64_t err = esp_sleep_enable_timer_wakeup(testDurations[d]);
    if ( ! (err == ESP_OK) ) Serial.println( "bad RC from esp_sleep_enable_timer_wakeup" ) ;
    else {
      esp_light_sleep_start();
      Serial.printf( "ending   sleep. micros= %lu \n" , micros() ) ;
    }
    delay(1000) ;
    
  }

}



void setup() {
  Serial.begin(115200) ;
  pinMode(LED_BUILTIN, OUTPUT);

  // The super-mini (native USB) code upload seems to work best if
  // (a) the serial monitor is closed in the IDE
  // (b) the super-mini is disconnected from the USB cable then reconnected.
  // (c) the code upload is started. The delay below gives you time to restart the serial monitor.
  for ( int i = 0; i < 10 ; i++ ) {
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(1000);                       // wait for a second
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    delay(100);
  }
  
  Serial.print("starting test . . .") ;
  benchmarkESP32Sleep() ;
}

void loop() {
  delay(50) ;
}

Verbose core debug output gives no real clue but it hangs in the 5000us test.

[    15][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Dein=========== Before Setup Start ===========
Chip Info:
------------------------------------------
  Model             : ESP32-C6
  Package           : 1
  Revision          : 0.02
  Cores             : 1
  CPU Frequency     : 160 MHz
  XTAL Frequency    : 4dded Flash    : No
  Embedded PSRAM    : No
  2.4GHz WiFi       : Yes
  Classic BT        : No
  BT Low Energy     : Yes
  IEEE 802.15.4     : Yes
------------------------------------------
INTERNAL Memory Info:
------------------------------------------
  Total Size        :   459800 B ( 449.0 KB)
  Free Bytes        :   425388 B ( 415.4 KB)
  Allocated Bytes   :    27860 B (  27.2 KB)
  Minimum Free Bytes:   420400 B ( 410.5 KB)
  Largest Free Block:   393204 B ( 384.0 KB)
------------------------------------------
Flash Info:
------------------------------------------
  Chip Size         :  4194304 B (4 MB)
  Block Size        :    65536 B (  64.0 KB)
  Sector Size       :     4096 B (   4.0 KB)
  Page Size         :      256 B (   0.2 KB)
  Bus Speed         : 80 MHz
  Flash Frequency   : 80 MHz (source: 80 MHz, divider: 1)
  Bus Mode          : QIO
------------------------------------------
Partitions Info:
------------------------------------------
                nvs : addr: 0x00009000, size:    20.0 KB, type: DATA, subtype: NVS
            otadata : addr: 0x0000E000, size:     8.0 KB, type: DATA, subtype: OTA
               app0 : addr: 0x00010000, size:  3072.0 KB, type:  APP, subtype: OTA_0
             spiffs : addr: 0x00310000, size:   896.0 KB, type: DATA, subtype: SPIFFS
           coredump : addr: 0x003F0000, size:    64.0 KB, type: DATA, subtype: COREDUMP
------------------------------------------
Software Info:
------------------------------------------
  Compile Date/Time : Jan 31 2026 15:05:02
  Compile Host OS   : windows
  ESP-IDF Version   : v5.5.1-710-g8410210c9a
  Arduino Version   : 3.3.4
------------------------------------------
Board Info:
------------------------------------------
  Arduino Board     : ESP32C6_DEV
  Arduino Variant   : esp32c6
  Arduino FQBN      : esp32:esp32:esp32c6:JTAGAdapter=default,CDCOnBoot=cdc,PartitionScheme=huge_app,CPUFreq=160,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=verbose,EraseFlash=none,ZigbeeMode=default
============ Before Setup End ============
[  4709][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 17 successfully set to type UART_RX (2) with bus 0x4080f814
[  4710][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RX (2) successfully set to 0x42004134
[  4711][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 16 successfully set to type UART_TX (3) with bus 0x4080f814
[  4711][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_TX (3) successfully set to 0x420040f8
[  4712][I][esp32-hal-periman.c:141] perimanSetPinBus(): Pin 12 already has type USB_DM (38) with bus 0x40811824
[  4712][I][esp32-hal-periman.c:141] perimanSetPinBus(): Pin 13 already has type USB_DP (39) with bus 0x40811824
[  4713][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type GPIO (1) successfully set to 0x42000162
[  4713][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 8 successfully set to type GPIO (1) with bus 0x9
[  4714][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  4714][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type RMT_TX (10) successfully set to 0x420017f6
[  4715][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type RMT_RX (11) successfully set to 0x420017f6
[  4715][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 8 successfully set to type INIT (0) with bus 0x0
[  4716][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 8 successfully set to type RMT_TX (10) with bus 0x4087db94
[  4717][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  4718][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[  5718][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  5719][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  5719][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[  5819][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  5820][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  5820][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[  6820][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  6821][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  6821][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[  6921][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  6922][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  6922][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[  7922][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  7923][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  7923][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[  8023][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  8024][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  8025][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[  9024][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  9025][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  9025][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[  9125][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[  9126][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[  9126][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 10126][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 10127][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 10127][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 10227][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 10228][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 10229][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 11228][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 11229][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 11229][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 11329][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 11330][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 11330][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 12330][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 12331][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 12331][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 12431][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 12432][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 12432][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 13432][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 13433][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 13433][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 13533][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 13534][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 13534][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 14534][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 14535][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 14535][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 14635][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 14636][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 14636][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
[ 15636][V][esp32-hal-rmt.c:490] rmtInit(): GPIO 8 - TX MODE - MemSize[48] - Freq=10000000Hz
[ 15637][V][esp32-hal-rmt.c:307] _rmtWrite(): GPIO: 8 - Request: 24 RMT Symbols - Blocking - Timeout: -1
[ 15637][V][esp32-hal-rmt.c:315] _rmtWrite(): GPIO: 8 - Currently in Loop Mode: [NO] | Loop Request: [NO], LoopCancel: [NO]
starting test . . .
duration (us): 100
starting sleep. micros= 15738019 
ending   sleep. micros= 15738318 

duration (us): 500
starting sleep. micros= 16737963 
ending   sleep. micros= 16738266 

duration (us): 1000
starting sleep. micros= 17737964 
ending   sleep. micros= 17738255