Unconnected Power Save Modes#

The SiWx917 NWP and NCP support Unconnected Power Save when the device is in an idle or standby state.

Standby Power Save with RAM Retention#

In Standby Power Save with RAM Retention mode, the NWP retains its RAM contents and state, resumes execution after wakeup. To send a command while the SiWx917 device is in sleep state, first set it to high-performance mode, then initiate the power save mode.

SiWx917 SoC:

  1. Both the M4 processor and NWP are configured in sleep mode. The M4 can be in PS4‑Sleep, PS3‑Sleep, or PS2‑Sleep, and wakes up through configured wakeup sources.

  2. The NWP can enter power save with RAM retention when both WLAN and BLE are in power save mode.

  3. When the SiWx917 device has data or a command to send:

    • Disable power save by bringing both the NWP and M4 to the Active state.

    • If the SiWx917 needs to send the active command, the M4 wakes the TA by setting the M4_wakeup_TA flag.

    • The TA processes the packet and sends the response.

    • After processing the packet, the SiWx917 returns to Sleep by clearing the M4_wakeup_TA flag.

    SiWx917 NWP Power Mode with RAM RetentionSiWx917 NWP Power Mode with RAM Retention

SiWx917 NCP:

  1. In Standby Power Save with RAM Retention Mode, the SiWx91x uses a GPIO‑based handshake between the host and the device.

    • The SiWx917 enters Sleep when idle.

    • It switches to the Active state when it needs to communicate with the host MCU.

    SiWx917 NWP/NCP Low Power ModesSiWx917 NWP/NCP Low Power Modes

  2. The GPIO handshake works as follows:

    • The host requests wakeup by asserting ULP_GPIO_5 (Low Power Mode) or UULP_VBAT_GPIO_2 (Ultra Low Power Mode).

    • The host waits until it receives a wake indication from the SiWx91x.

    • After sending the command, the host allows the SiWx91x to sleep by de‑asserting UULP_VBAT_GPIO_0 / UULP_VBAT_GPIO_3.

    • The SiWx91x processes the command, responds to the host, acknowledges the host’s sleep permission by de‑asserting UULP_VBAT_GPIO_0 / UULP_VBAT_GPIO_3, and then returns to Sleep state.

    SiWx917 NCP Power Mode with RAM RetentionSiWx917 NCP Power Mode with RAM Retention

NWP Configuration:

  1. After wireless initialization, configure the NWP for Standby Power Save with RAM Retention by calling both rsi_bt_power_save_profile and sl_wifi_set_performance_profile API.

    1. Set the rsi_bt_power_save_profile parameters:

      • PSP_MODE as RSI_SLEEP_MODE_8

      • PSP_TYPE as RSI_MAX_PSP.

    2. Call sl_wifi_set_performance_profile with the profile member sl_wifi_performance_profile_t.sl_performance_profile_t set to STANDBY_POWER_SAVE_WITH_RAM_RETENTION.

  2. To switch the NWP from Standby Power Save with RAM Retention Mode to High-Performance mode by calling both rsi_bt_power_save_profile and sl_wifi_set_performance_profile API.

    1. Set the rsi_bt_power_save_profile parameters:

      • PSP_MODE as RSI_ACTIVE

      • PSP_TYPE as RSI_MAX_PSP

    2. Call sl_wifi_set_performance_profile with the profile member sl_wifi_performance_profile_t.sl_performance_profile_t set to HIGH_PERFORMANCE.

  3. After you set the NWP to High‑Performance mode, you do not need to reinitialize it, because the previous device state is retained. For SiWx917 NCP applications, the SoC or host MCU can directly call the BLE advertising and scanning APIs.

Code Snippet:

  • To keep the SiWx917 NWP/NCP in power save, set the following parameters:

    //! Power Save Profile Mode
    #define PSP_MODE RSI_SLEEP_MODE_8
    //! Power Save Profile type
    #define PSP_TYPE RSI_MAX_PSP
    //! Wi-Fi power save profile
    sl_wifi_performance_profile_t wifi_profile = { .profile =
    STANDBY_POWER_SAVE_WITH_RAM_RETENTION};
  • To keep the SiWx917 NWP/NCP in an active state, set the following parameters:

    //! Power Save Profile Mode
    #define PSP_MODE RSI_ACTIVE
    //! Power Save Profile type
    #define PSP_TYPE RSI_MAX_PSP
    //! Wi-Fi power save profile
    sl_wifi_performance_profile_t wifi_profile = { .profile = HIGH_PERFORMANCE };
  • To enable power save or wake the device (depending on the variable values), run the following:

    status = rsi_bt_power_save_profile(PSP_MODE, PSP_TYPE);
    if (status != RSI_SUCCESS) {
    LOG_PRINT("\r\n Failed to initiate power save in BLE mode \r\n");
    return status;
    }
    //! Initiating power save in WLAN mode
    status = sl_wifi_set_performance_profile(&wifi_profile);
    if (status != SL_STATUS_OK) {
    LOG_PRINT("\r\n Failed to initiate power save in Wi-Fi mode :%ld\r\n",
    status);
    return status;
    }

Standby Power Save (Without RAM Retention)#

In Standby Power Save (Without RAM Retention), the NWP RAM contents and current state are not retained. After wakeup, you must reinitialize the NWP.

SiWx917 SoC:

  1. Both the M4 processor and NWP are configured in sleep mode. The M4 should be in a PS0 state.

  2. The M4 must be in PS0 state.

  3. NWP (Network Processor) can enter power save mode into a standby state(without RAM retention).

SiWx917 NCP:

  1. The Standby Power Save Mode uses a GPIO-based handshake between the host and SiWx917.

  2. The host must not send commands to the SiWx917 while it is in Standby Power Save mode.

NWP Configuration:

  1. After wireless initialization, configure the NWP for Standby Power Save without RAM Retention by calling both rsi_bt_power_save_profile and sl_wifi_set_performance_profile.

    1. Set the rsi_bt_power_save_profile parameters:

      1. PSP_MODE as RSI_SLEEP_MODE_10

      2. PSP_TYPE as RSI_MAX_PSP

    2. Call sl_wifi_set_performance_profile with the profile member sl_wifi_performance_profile_t.sl_performance_profile_t set to STANDBY_POWER_SAVE.

  2. To switch the NWP from Standby Power Save to High-Performance mode:

    1. Reinitialize the NWP because its previous state is not retained.

    2. Call sl_wifi_init() to initialize the NWP and bring it back to the Active state.

Code Snippet:

  • To keep the SiWx917 NWP/NCP in power save, set , set the following parameters:

    //! Power Save Profile Mode
    #define PSP_MODE RSI_SLEEP_MODE_10
    //! Power Save Profile type
    #define PSP_TYPE RSI_MAX_PSP
    //! Wi-Fi power save profile
    sl_wifi_performance_profile_t wifi_profile = { .profile = STANDBY_POWER_SAVE };
  • To enable power save, run the following:

    status = rsi_bt_power_save_profile(PSP_MODE, PSP_TYPE);
    if (status != RSI_SUCCESS) {
    LOG_PRINT("\r\n Failed to initiate power save in BLE mode \r\n");
    return status;
    }
    //! Initiating power save in WLAN mode
    status = sl_wifi_set_performance_profile(&wifi_profile);
    if (status != SL_STATUS_OK) {
    LOG_PRINT("\r\n Failed to initiate power save in Wi-Fi mode :%ld\r\n",
    status);
    return status;
    }