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
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.dtsRemove nRF7002 QSPI node (lines 249-258):
Remove
zephyr,wifichosen (line 116):Remove RF switch GPIO node (lines 99-103):
2. Pinctrl —
boards/omi/omi-pinctrl.dtsiDelete
qspi_defaultandqspi_sleeppin groups — these mapped P0.13-P0.18 to QSPI signals for nRF7002:3. Device Tree —
boards/omi/omi_nrf5340_cpunet.dtsRemove coexistence node (lines 9-16):
4. Kconfig —
omi/KconfigRemove RF switch config (lines 53-57):
5. Production Config —
omi/omi.conf6. Source Code —
omi/src/lib/core/transport.cRemove RF switch GPIO declaration (lines 37-38):
Remove RF switch pin control in BLE init (lines 1167-1201):
After removal, BLE init simply starts without any RF switch toggling — the antenna is directly connected.
7. System Off —
omi/src/lib/evt/systemoff.cRemove Wi-Fi include (line 5):
Remove Wi-Fi disable (lines 24-26):
8. IPC Radio Config —
omi/sysbuild/ipc_radio.confRemove coexistence config (around line 49):
CONFIG_NRF_RPC=nmay 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, keepCONFIG_NRF_RPC=nas a safety measure and investigate separately.9. Test Firmware —
test/directorytest/sysbuild.conf— Delete lines 7-8:test/omi.conf— Delete all Wi-Fi config (lines 82, 113-116, 128, 138-139):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):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
Testing Checklist
west buildno errors/warnings)