[nRF54L15 DK][Zephyr] System off demo not waking up from button press

Hello,

I am testing the system off demo on the nRF54L15 DK using nRF Connect SDK v2.8.0 (Zephyr v3.7.99).
I ran the sample exactly as provided in the SDK.


Observed log output:

*** Booting nRF Connect SDK v2.8.0-a2386bfc8401 ***
*** Using Zephyr OS v3.7.99-0bc3393fb112 ***

nrf54l15dk system off demo
Retained data not supported
Entering system off; press sw0 to restart



At this point, the device enters system off.
However, pressing Button0 (sw0) does not wake up or restart the system.

Expected behaviour:
Pressing Button0 should trigger wakeup from system off.

What I already tried:

  • Added wakeup-source; property to button0 in an overlay:

    / { button0 { wakeup-source; }; };
  • Rebuilt and flashed, but still no wakeup on button press.

Environment:

  • Board: nRF54L15 DK

  • nRF Connect SDK: v2.8.0

  • Toolchain: west build (VS Code)

  • Example: system_off demo (unmodified)

QuestionS:

  • Is GPIO (Button0) wakeup from system off supported on the nRF54L15 DK?

  • s there another configuration needed (special GPIOTE setup, power domain setting, etc.)?

  • Has anyone confirmed this demo working on nRF54l15?

    /*
     * Copyright (c) 2019 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: Apache-2.0
     */
    
    #include "retained.h"
    
    #include <inttypes.h>
    #include <stdio.h>
    
    #include <zephyr/device.h>
    #include <zephyr/drivers/gpio.h>
    #include <zephyr/kernel.h>
    #include <zephyr/pm/device.h>
    #include <zephyr/sys/poweroff.h>
    #include <zephyr/sys/util.h>
    
    #if IS_ENABLED(CONFIG_GRTC_WAKEUP_ENABLE)
    #include <zephyr/drivers/timer/nrf_grtc_timer.h>
    #define DEEP_SLEEP_TIME_S 2
    #else
    static const struct gpio_dt_spec sw0 = GPIO_DT_SPEC_GET(DT_ALIAS(sw0), gpios);
    #endif
    
    int main(void)
    {
    	int rc;
    	const struct device *const cons = DEVICE_DT_GET(DT_CHOSEN(zephyr_console));
    
    	if (!device_is_ready(cons)) {
    		printf("%s: device not ready.\n", cons->name);
    		return 0;
    	}
    
    	printf("\n%s system off demo\n", CONFIG_BOARD);
    
    	if (IS_ENABLED(CONFIG_APP_USE_NRF_RETENTION) || IS_ENABLED(CONFIG_APP_USE_RETAINED_MEM)) {
    		bool retained_ok = retained_validate();
    
    		/* Increment for this boot attempt and update. */
    		retained.boots += 1;
    		retained_update();
    
    		printf("Retained data: %s\n", retained_ok ? "valid" : "INVALID");
    		printf("Boot count: %u\n", retained.boots);
    		printf("Off count: %u\n", retained.off_count);
    		printf("Active Ticks: %" PRIu64 "\n", retained.uptime_sum);
    	} else {
    		printf("Retained data not supported\n");
    	}
    
    #if IS_ENABLED(CONFIG_GRTC_WAKEUP_ENABLE)
    	int err = z_nrf_grtc_wakeup_prepare(DEEP_SLEEP_TIME_S * USEC_PER_SEC);
    
    	if (err < 0) {
    		printk("Unable to prepare GRTC as a wake up source (err = %d).\n", err);
    	} else {
    		printk("Entering system off; wait %u seconds to restart\n", DEEP_SLEEP_TIME_S);
    	}
    #else
    	/* configure sw0 as input, interrupt as level active to allow wake-up */
    	rc = gpio_pin_configure_dt(&sw0, GPIO_INPUT);
    	if (rc < 0) {
    		printf("Could not configure sw0 GPIO (%d)\n", rc);
    		return 0;
    	}
    
    	rc = gpio_pin_interrupt_configure_dt(&sw0, GPIO_INT_LEVEL_ACTIVE);
    	if (rc < 0) {
    		printf("Could not configure sw0 GPIO interrupt (%d)\n", rc);
    		return 0;
    	}
    
    	printf("Entering system off; press sw0 to restart\n");
    #endif
    
    	rc = pm_device_action_run(cons, PM_DEVICE_ACTION_SUSPEND);
    	if (rc < 0) {
    		printf("Could not suspend console (%d)\n", rc);
    		return 0;
    	}
    
    	if (IS_ENABLED(CONFIG_APP_USE_NRF_RETENTION) || IS_ENABLED(CONFIG_APP_USE_RETAINED_MEM)) {
    		/* Update the retained state */
    		retained.off_count += 1;
    		retained_update();
    	}
    
    	sys_poweroff();
    
    	return 0;
    }
    

Parents
  • Hello,

    Have you tried pressing Button 1 on the DK to wake the device from System OFF? I tested this sample on my side, and it’s working fine. Below is the log from the nRF54L15 DK after flashing the sample.

    nrf54l15dk system off demo
    Wakeup from System OFF by GPIO.
    Retained data not supported
    Entering system off; press sw0 to restart
    *** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
    *** Using Zephyr OS v4.1.99-1612683d4010 ***
    
    nrf54l15dk system off demo
    Reset by debugger.
    Retained data not supported
    Entering system off; press sw0 to restart
    *** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
    *** Using Zephyr OS v4.1.99-1612683d4010 ***
    
    nrf54l15dk system off demo
    Other wake up cause 0x00000001.
    Retained data: valid
    Boot count: 1
    Off count: 0
    Active Ticks: 500
    Entering system off; press sw0 to restart
    *** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
    *** Using Zephyr OS v4.1.99-1612683d4010 ***
    
    nrf54l15dk system off demo
    Wakeup from System OFF by GPIO.
    Retained data: valid
    Boot count: 2
    Off count: 1
    Active Ticks: 1285
    Entering system off; press sw0 to restart
    

    If you’re wondering why you see the “Retained data not supported” message in the log, try enabling the following options: CONFIG_APP_USE_RETAINED_MEM and CONFIG_RETENTION. See here

    Kind Regards,
    Abhijith
Reply
  • Hello,

    Have you tried pressing Button 1 on the DK to wake the device from System OFF? I tested this sample on my side, and it’s working fine. Below is the log from the nRF54L15 DK after flashing the sample.

    nrf54l15dk system off demo
    Wakeup from System OFF by GPIO.
    Retained data not supported
    Entering system off; press sw0 to restart
    *** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
    *** Using Zephyr OS v4.1.99-1612683d4010 ***
    
    nrf54l15dk system off demo
    Reset by debugger.
    Retained data not supported
    Entering system off; press sw0 to restart
    *** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
    *** Using Zephyr OS v4.1.99-1612683d4010 ***
    
    nrf54l15dk system off demo
    Other wake up cause 0x00000001.
    Retained data: valid
    Boot count: 1
    Off count: 0
    Active Ticks: 500
    Entering system off; press sw0 to restart
    *** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
    *** Using Zephyr OS v4.1.99-1612683d4010 ***
    
    nrf54l15dk system off demo
    Wakeup from System OFF by GPIO.
    Retained data: valid
    Boot count: 2
    Off count: 1
    Active Ticks: 1285
    Entering system off; press sw0 to restart
    

    If you’re wondering why you see the “Retained data not supported” message in the log, try enabling the following options: CONFIG_APP_USE_RETAINED_MEM and CONFIG_RETENTION. See here

    Kind Regards,
    Abhijith
Children
Related