Skip to content

[Firmware] Remove all nRF7002 Wi-Fi support from firmware #6856

@aaravgarg

Description

@aaravgarg

Parent: #6854 | Hardware: #6855

Overview

Remove all nRF7002/Wi-Fi related code, configs, and device tree nodes from the firmware. BLE continues to work directly through the simplified antenna path (no RF switch/diplexer).

Changes Required

1. Device Tree — boards/omi/omi_nrf5340_cpuapp.dts

Remove nRF7002 QSPI node (lines 249-258):

// DELETE entire &qspi block:
&qspi {
    pinctrl-0 = <&qspi_default>;
    pinctrl-1 = <&qspi_sleep>;
    pinctrl-names = "default", "sleep";
    status = "okay";
    nrf70: nrf7002@1 {
        compatible = "nordic,nrf7002-qspi";
        status = "okay";
        reg = <1>;
        qspi-frequency = <24000000>;
        qspi-quad-mode;
        #include "nrf70_common.dtsi"
        #include "nrf70_common_5g.dtsi"
    };
};

Remove zephyr,wifi chosen (line 116):

// DELETE:
zephyr,wifi = &wlan0;

Remove RF switch GPIO node (lines 99-103):

// DELETE:
rfsw_en_pin: rfsw-en {
    compatible = "nordic,gpio-pins";
    gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
    status = "okay";
};

2. Pinctrl — boards/omi/omi-pinctrl.dtsi

Delete qspi_default and qspi_sleep pin groups — these mapped P0.13-P0.18 to QSPI signals for nRF7002:

// DELETE both blocks:
qspi_default: qspi_default {
    group1 {
        psels = <NRF_PSEL(QSPI_SCK, 0, 17)>,
        <NRF_PSEL(QSPI_IO0, 0, 13)>,
        <NRF_PSEL(QSPI_IO1, 0, 14)>,
        <NRF_PSEL(QSPI_IO2, 0, 15)>,
        <NRF_PSEL(QSPI_IO3, 0, 16)>,
        <NRF_PSEL(QSPI_CSN, 0, 18)>;
    };
};

qspi_sleep: qspi_sleep {
    group1 {
        psels = <NRF_PSEL(QSPI_SCK, 0, 17)>,
        <NRF_PSEL(QSPI_IO0, 0, 13)>,
        <NRF_PSEL(QSPI_IO1, 0, 14)>,
        <NRF_PSEL(QSPI_IO2, 0, 15)>,
        <NRF_PSEL(QSPI_IO3, 0, 16)>,
        <NRF_PSEL(QSPI_CSN, 0, 18)>;
        low-power-enable;
    };
};

3. Device Tree — boards/omi/omi_nrf5340_cpunet.dts

Remove coexistence node (lines 9-16):

// DELETE:
nrf_radio_coex: coex {
    status = "okay";
    compatible = "nordic,nrf7002-coex";
    req-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
    status0-gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
    grant-gpios = <&gpio0 24 (GPIO_PULL_DOWN | GPIO_ACTIVE_LOW)>;
    swctrl1-gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
};

4. Kconfig — omi/Kconfig

Remove RF switch config (lines 53-57):

// DELETE:
config OMI_ENABLE_RFSW_CTRL
    bool "Enable RFSwitch Control"
    help
        "Enable RFSwitch Control support."
    default y

5. Production Config — omi/omi.conf

# DELETE line 326:
CONFIG_OMI_ENABLE_RFSW_CTRL=y

6. Source Code — omi/src/lib/core/transport.c

Remove RF switch GPIO declaration (lines 37-38):

// DELETE:
#ifdef CONFIG_OMI_ENABLE_RFSW_CTRL
static const struct gpio_dt_spec rfsw_en = GPIO_DT_SPEC_GET_OR(DT_NODELABEL(rfsw_en_pin), gpios, {0});
#endif

Remove RF switch pin control in BLE init (lines 1167-1201):

// DELETE all code blocks guarded by:
#ifdef CONFIG_OMI_ENABLE_RFSW_CTRL
    // ... pin set low, pin configure, pin set high ...
#endif

After removal, BLE init simply starts without any RF switch toggling — the antenna is directly connected.

7. System Off — omi/src/lib/evt/systemoff.c

Remove Wi-Fi include (line 5):

// DELETE:
#include <zephyr/drivers/wifi/nrf_wifi/bus/rpu_hw_if.h>

Remove Wi-Fi disable (lines 24-26):

// DELETE:
#if defined(CONFIG_WIFI)
    rpu_disable();
#endif

8. IPC Radio Config — omi/sysbuild/ipc_radio.conf

Remove coexistence config (around line 49):

# DELETE:
CONFIG_MPSL_CX=y

#Added to fix BLE crash in coex enable cases.
CONFIG_NRF_RPC=n
CONFIG_NRF_RPC_CBOR=n

⚠️ Note: CONFIG_NRF_RPC=n may have been a workaround for a coex-related BLE crash. After removing coex entirely, test BLE stability. If stable, these lines can go. If BLE crashes appear, keep CONFIG_NRF_RPC=n as a safety measure and investigate separately.

9. Test Firmware — test/ directory

test/sysbuild.conf — Delete lines 7-8:

SB_CONFIG_WIFI_NRF70=y
SB_CONFIG_WIFI_NRF70_SCAN_ONLY=y

test/omi.conf — Delete all Wi-Fi config (lines 82, 113-116, 128, 138-139):

# wifi
CONFIG_WIFI=y
CONFIG_WIFI_NRF70=y
CONFIG_NET_L2_WIFI_SHELL=y
CONFIG_NRF_WIFI_LOW_POWER=y
CONFIG_WIFI_FIXED_MAC_ADDRESS="14:5A:FC:5E:37:9C"
# CONFIG_WIFI_LOG_LEVEL_ERR=y
# CONFIG_WIFI_NRF70_LOG_LEVEL_DBG=y

Also review and remove Wi-Fi-dependent networking configs (CONFIG_NET_*, CONFIG_MBEDTLS, CONFIG_NET_MGMT_*, etc.) — only remove those not needed by BLE.

test/src/main.c — Remove RF switch GPIO init (lines 14, 38-39):

// DELETE:
static const struct gpio_dt_spec rfsw_en = GPIO_DT_SPEC_GET_OR(DT_NODELABEL(rfsw_en_pin), gpios, {0});
// ... and in init:
gpio_pin_configure_dt(&rfsw_en, (GPIO_OUTPUT | NRF_GPIO_DRIVE_S0H1));
gpio_pin_set_dt(&rfsw_en, 1);

test/src/systemoff.c — Same changes as production (remove wifi include, rpu_disable, rfsw GPIO)

test/sysbuild/ipc_radio.conf — Remove coex crash workaround comment (line 48)

GPIO Pins Freed

Pin Previous Use Notes
P0.13 QSPI_IO0 nRF7002 data
P0.14 QSPI_IO1 nRF7002 data
P0.15 QSPI_IO2 nRF7002 data
P0.16 QSPI_IO3 nRF7002 data
P0.17 QSPI_SCK nRF7002 clock
P0.18 QSPI_CSN nRF7002 CS
P0.24 Coex grant Net core
P0.28 Coex req Net core
P0.29 Coex swctrl1 Net core
P0.30 Coex status0 Net core
P0.31 nRF7002 ctrl App core
P1.03 RF switch en App core

Testing Checklist

  • Production firmware compiles cleanly (west build no errors/warnings)
  • Test firmware compiles cleanly
  • BLE advertising works on new board
  • BLE connection + audio streaming works end-to-end
  • BLE range test: equal or better than current (expect improvement due to fewer RF path losses)
  • System off works correctly (no rpu_disable crash)
  • OTA DFU (MCUboot) still works
  • SD card storage + BLE sync unaffected
  • No runtime errors in logs related to missing QSPI/coex/nRF7002 nodes
  • Power profiler measurement: confirm nRF7002 quiescent draw eliminated
  • Overnight stability test: no BLE disconnects or crashes

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions