nRF Wi-Fi driver

The nRF Wi-Fi driver implements the Wi-Fi® protocol for the nRF70 FullMAC Series of devices. FullMAC devices implement the Wi-Fi protocol in the chipset. The driver configures the chipset and transfers the frames to and from the device to the networking stack.

The nRF70 Series device is a companion IC and can be used with any Nordic Semiconductor System-on-Chips (SoCs), such as the nRF53 and nRF91 Series SoCs.

You can enable the driver by using the following Kconfig options:

Architecture

The following figure illustrates the architecture of the nRF Wi-Fi driver.

nRF Wi-Fi driver block diagram

nRF Wi-Fi driver architecture overview

Design overview

The nRF Wi-Fi driver follows an OS-agnostic design, and the driver implementation is split into OS-agnostic and OS (Zephyr)-specific code. The OS-agnostic code is located in the $ZEPHYR_BASE/../modules/hal/nordic/drivers/nrf_wifi/ folder, and the Zephyr OS port is located in the $ZEPHYR_BASE/drivers/wifi/nrfwifi/ folder.

The driver supports two modes of operation:

Wi-Fi mode

In this mode, the driver is designed to be used with the Zephyr networking stack. It is implemented as a network interface driver.

The driver supports the following IEEE 802.11 features:

The Wi-Fi Direct® mode feature is in the driver code but is not yet supported.

Except for scan-only mode, the driver uses the host access point daemon (hostapd) to implement AP Media Access Control (MAC) Sublayer Management Entity (AP MLME) and wpa_supplicant to implement 802.1X supplicant.

Radio Test mode

The nRF Wi-Fi driver supports Radio Test mode, which you can use to test the RF performance of the nRF70 Series device. This is a build time option that you can enable using the CONFIG_NRF70_RADIO_TEST Kconfig option.

For more details about using this driver in Radio Test mode, see Wi-Fi: Radio test.

Driver to nRF70 Series device communication

The driver communicates with the nRF70 Series device using the QSPI/SPI interface. The driver uses the QSPI/SPI interface to send commands to the nRF70 Series device, and to transfer data to and from the device. The nRF7002 DK uses QSPI, whereas the nRF7002 EK uses SPI.

To connect the nRF7002 EK to the SoC, the nrf7002ek shield is required.

Configuration

The nRF Wi-Fi driver has the following configuration options:

Kconfig configuration

CONFIG_WIFI_NRF70

(bool) nRF70 driver

Nordic Wi-Fi Driver

CONFIG_WIFI_NRF7002

(bool)

None

CONFIG_WIFI_NRF7001

(bool)

None

CONFIG_WIFI_NRF7000

(bool)

None

CONFIG_WIFI_NRF70_BUS_LOG_LEVEL

(unknown)

None

CONFIG_NRF70_SYSTEM_MODE

(bool) nRF70 system mode

Select this option to enable system mode of the nRF70 driver

CONFIG_NRF70_SCAN_ONLY

(bool) nRF70 scan only mode

Select this option to enable scan only mode of the nRF70 driver

CONFIG_NRF70_RADIO_TEST

(bool) Radio test mode of the nRF70 driver

None

CONFIG_NRF70_OFFLOADED_RAW_TX

(bool) Offloaded raw Tx mode of the nRF70 driver

None

CONFIG_NRF70_SYSTEM_WITH_RAW_MODES

(bool) nRF70 system mode with raw modes

Select this option to enable system mode of the nRF70 driver with raw modes

CONFIG_NRF70_SYSTEM_MODE_COMMON

(bool)

None

CONFIG_NET_L2_ETHERNET

(unknown)

None

CONFIG_HEAP_MEM_POOL_ADD_SIZE_NRF70

(int)

None

CONFIG_NRF70_STA_MODE

(bool) nRF70 STA mode

Select this option to enable STA mode of the nRF70 driver

CONFIG_NRF70_AP_MODE

(bool) Access point mode

None

CONFIG_NRF70_P2P_MODE

(bool) P2P support in driver

None

CONFIG_NRF70_RAW_DATA_TX

(bool) RAW TX data path in the driver

None

CONFIG_NRF70_RAW_DATA_RX

(bool) RAW RX sniffer operation in the driver

None

CONFIG_NRF70_PROMISC_DATA_RX

(bool) promiscuous RX sniffer operation in the driver

None

CONFIG_NRF70_DATA_TX

(bool) TX data path in the driver

None

CONFIG_NRF_WIFI_IF_AUTO_START

(bool) Wi-Fi interface auto start on boot

None

CONFIG_NRF_WIFI_BUILD_ONLY_MODE

(bool) Build only mode

Enable this option to build the driver without firmware loading, removes dependency on firmware binary and patches. This is useful to check the build and link errors.

CONFIG_NRF_WIFI_PATCHES_BUILTIN

(bool) Store nRF70 FW patches as part of the driver

Select this option to store nRF70 FW patches as part of the driver. This option impacts the code memory footprint of the driver.

CONFIG_NRF_WIFI_PATCHES_EXTERNAL

(bool) Load nRF70 FW patches from external binary

Select this option to load nRF70 FW patches from an external tooling.

CONFIG_NRF_WIFI_LOW_POWER

(bool) low power mode in nRF Wi-Fi chipsets

None

CONFIG_NRF70_TCP_IP_CHECKSUM_OFFLOAD

(bool) TCP/IP checksum offload

None

CONFIG_NRF70_REG_DOMAIN

(string) The ISO/IEC alpha2 country code for the country in which this device is currently operating. Default 00 (World regulatory)

None

CONFIG_NET_MGMT_EVENT_STACK_SIZE

(unknown)

None

CONFIG_NRF70_LOG_VERBOSE

(bool) Maintains the verbosity of information in logs

None

CONFIG_WIFI_NRF70_LOG_LEVEL

(unknown)

None

CONFIG_NRF70_ON_QSPI

(bool)

None

CONFIG_NRF70_ON_SPI

(bool)

None

CONFIG_NRF70_2_4G_ONLY

(bool)

None

CONFIG_NRF70_SR_COEX

(bool) Wi-Fi and SR coexistence support

None

CONFIG_NRF70_SR_COEX_RF_SWITCH

(bool) GPIO configuration to control SR side RF switch position

None

CONFIG_NRF70_WORKQ_STACK_SIZE

(int) Stack size for workqueue

None

CONFIG_NRF70_WORKQ_MAX_ITEMS

(int) Maximum work items for all workqueues

None

CONFIG_NRF70_MAX_TX_PENDING_QLEN

(int) Maximum number of pending TX packets

None

CONFIG_NRF70_UTIL

(bool) Utility shell in nRF70 driver

None

CONFIG_NRF70_QSPI_LOW_POWER

(bool) low power mode in QSPI

None

CONFIG_NRF70_PCB_LOSS_2G

(int) PCB loss for 2.4 GHz band

Specifies PCB loss from the antenna connector to the RF pin. The values are in dB scale in steps of 1dB and range of 0-4dB. The loss is considered in the RX path only.

CONFIG_NRF70_PCB_LOSS_5G_BAND1

(int) PCB loss for 5 GHz band (5150 MHz - 5350 MHz, Channel-32 - Channel-68)

Specifies PCB loss from the antenna connector to the RF pin. The values are in dB scale in steps of 1dB and range of 0-4dB. The loss is considered in the RX path only.

CONFIG_NRF70_PCB_LOSS_5G_BAND2

(int) PCB loss for 5 GHz band (5470 MHz - 5730 MHz, Channel-96 - Channel-144)

Specifies PCB loss from the antenna connector to the RF pin. The values are in dB scale in steps of 1dB and range of 0-4dB. The loss is considered in the RX path only.

CONFIG_NRF70_PCB_LOSS_5G_BAND3

(int) PCB loss for 5 GHz band (5730 MHz - 5895 MHz, Channel-149 - Channel-177)

Specifies PCB loss from the antenna connector to the RF pin. The values are in dB scale in steps of 1dB and range of 0-4dB. The loss is considered in the RX path only.

CONFIG_NRF70_ANT_GAIN_2G

(int) Antenna gain for 2.4 GHz band

None

CONFIG_NRF70_ANT_GAIN_5G_BAND1

(int) Antenna gain for 5 GHz band (5150 MHz - 5350 MHz)

None

CONFIG_NRF70_ANT_GAIN_5G_BAND2

(int) Antenna gain for 5 GHz band (5470 MHz - 5730 MHz)

None

CONFIG_NRF70_ANT_GAIN_5G_BAND3

(int) Antenna gain for 5 GHz band (5730 MHz - 5895 MHz)

None

CONFIG_NRF70_BAND_2G_LOWER_EDGE_BACKOFF_DSSS

(int) DSSS Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band

None

CONFIG_NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band

None

CONFIG_NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band

None

CONFIG_NRF70_BAND_2G_UPPER_EDGE_BACKOFF_DSSS

(int) DSSS Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band

None

CONFIG_NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band

None

CONFIG_NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band

None

CONFIG_NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for lower edge of UNII-1 frequency band

None

CONFIG_NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for lower edge of UNII-1 frequency band

None

CONFIG_NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for upper edge of UNII-1 frequency band

None

CONFIG_NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for upper edge of UNII-1 frequency band

None

CONFIG_NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for lower edge of UNII-2A frequency band

None

CONFIG_NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for lower edge of UNII-2A frequency band

None

CONFIG_NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for upper edge of UNII-2A frequency band

None

CONFIG_NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for upper edge of UNII-2A frequency band

None

CONFIG_NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for lower edge of UNII-2C frequency band

None

CONFIG_NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for lower edge of UNII-2C frequency band

None

CONFIG_NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for upper edge of UNII-2C frequency band

None

CONFIG_NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for upper edge of UNII-2C frequency band

None

CONFIG_NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for lower edge of UNII-3 frequency band

None

CONFIG_NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for lower edge of UNII-3 frequency band

None

CONFIG_NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for upper edge of UNII-3 frequency band

None

CONFIG_NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for upper edge of UNII-3 frequency band

None

CONFIG_NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for lower edge of UNII-4 frequency band

None

CONFIG_NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for lower edge of UNII-4 frequency band

None

CONFIG_NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HT

(int) HT/VHT Transmit power backoff (in dB) for upper edge of UNII-4 frequency band

None

CONFIG_NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HE

(int) HE Transmit power backoff (in dB) for upper edge of UNII-4 frequency band

None

CONFIG_NRF70_RX_NUM_BUFS

(int) Number of RX buffers

None

CONFIG_NRF70_MAX_TX_AGGREGATION

(int) Maximum number of TX packets to aggregate

None

CONFIG_NRF70_MAX_TX_TOKENS

(int) Maximum number of TX tokens

None

CONFIG_NRF70_TX_MAX_DATA_SIZE

(int) Maximum size of TX data

None

CONFIG_NRF70_RX_MAX_DATA_SIZE

(int) Maximum size of RX data

None

CONFIG_NRF70_TX_DONE_WQ_ENABLED

(bool) TX done workqueue (impacts performance negatively)

None

CONFIG_NRF70_RX_WQ_ENABLED

(bool) RX workqueue

None

CONFIG_NUM_METAIRQ_PRIORITIES

(unknown)

None

CONFIG_NRF70_IRQ_WQ_PRIORITY

(int) Priority of the workqueue for handling IRQs

None

CONFIG_NRF70_BH_WQ_PRIORITY

(int) Priority of the workqueue for handling bottom half

None

CONFIG_NRF70_IRQ_WQ_STACK_SIZE

(int) Stack size of the workqueue for handling IRQs

None

CONFIG_NRF70_BH_WQ_STACK_SIZE

(int) Stack size of the workqueue for handling bottom half

None

CONFIG_NRF70_TX_DONE_WQ_PRIORITY

(int) Priority of the workqueue for handling TX done

None

CONFIG_NRF70_TX_DONE_WQ_STACK_SIZE

(int) Stack size of the workqueue for handling TX done

None

CONFIG_NRF70_RX_WQ_PRIORITY

(int) Priority of the workqueue for handling RX

None

CONFIG_NRF70_RX_WQ_STACK_SIZE

(int) Stack size of the workqueue for handling RX

None

CONFIG_NRF70_RPU_PS_IDLE_TIMEOUT_MS

(int) RPU power save idle timeout in milliseconds

None

CONFIG_NRF70_RPU_EXTEND_TWT_SP

(bool) extending TWT service period

In case frames accepted before beginning of SP are not transmitted before the SP completes then typically they are dropped to conform to SP window as per specification i.e., no transmission outside SP window.

This feature mitigates the frame loss by transmitting even after SP completion by using standard contention mechanism which is allowed in specification but not recommended. As the device is actively transmitting beyond SP, the power consumption increases depending on the amount of traffic available at the start of SP.

Please note that if a frame is sent after SP starts it will be queued and this mechanism is not used.

CONFIG_WIFI_FIXED_MAC_ADDRESS

(string) WiFi Fixed MAC address in format XX:XX:XX:XX:XX:XX

This overrides the MAC address read from OTP. Strictly for testing purposes only.

CONFIG_WIFI_OTP_MAC_ADDRESS

(bool) Use MAC address from OTP

This option uses the MAC address stored in the OTP memory of the nRF70.

CONFIG_WIFI_FIXED_MAC_ADDRESS_ENABLED

(bool) fixed MAC address

Enable fixed MAC address

CONFIG_WIFI_RANDOM_MAC_ADDRESS

(bool) random MAC address generation at runtime

This option enables random MAC address generation at runtime. The random MAC address is generated using the entropy device random generator.

CONFIG_NRF70_RSSI_STALE_TIMEOUT_MS

(int) RSSI stale timeout in milliseconds

RSSI stale timeout is the period after which driver queries RPU to get the RSSI the value. If data is active (e.g. ping), driver stores the RSSI value from the received frames and provides this stored information to wpa_supplicant. In this case a higher value will be suitable as stored RSSI value at driver will be updated regularly. If data is not active or after the stale timeout duration, driver queries the RPU to get the RSSI value and provides it to wpa_supplicant. The value should be set to lower value as driver does not store it and requires RPU to provide the info.

CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE

(unknown)

None

CONFIG_NET_TX_STACK_SIZE

(unknown)

None

CONFIG_NET_RX_STACK_SIZE

(unknown)

None

CONFIG_NET_TC_TX_COUNT

(unknown)

None

CONFIG_MAIN_STACK_SIZE

(unknown)

None

CONFIG_SHELL_STACK_SIZE

(unknown)

None

CONFIG_WIFI_MGMT_SCAN_SSID_FILT_MAX

(unknown)

None

CONFIG_NRF_WIFI_SCAN_MAX_BSS_CNT

(int) Maximum number of scan results to return.

Maximum number of scan results to return. 0 represents unlimited number of BSSes.

CONFIG_NRF_WIFI_BEAMFORMING

(bool) Wi-Fi beamforming. Enabling beamforming can provide slight improvement in performance where as disabling it can provide better power saving in low network activity applications

None

CONFIG_WIFI_NRF70_SCAN_TIMEOUT_S

(int) Scan timeout in seconds

None

CONFIG_NRF_WIFI_2G_BAND

(bool) Set operation band to 2.4GHz

None

CONFIG_NRF_WIFI_5G_BAND

(bool) Set operation band to 5GHz

None

CONFIG_NRF_WIFI_OP_BAND

(int) Options to set operation band

Set this option to select frequency band 1 - 2.4GHz 2 - 5GHz 3 - All ( 2.4GHz and 5GHz )

CONFIG_NRF_WIFI_IFACE_MTU

(int) MTU for Wi-Fi interface

None

CONFIG_WIFI_NRF70_SKIP_LOCAL_ADMIN_MAC

(bool) Suppress networks with non-individual MAC address as BSSID in the scan results

Wi-Fi access points use locally administered MAC address to manage multiple virtual interfaces, for geo-location usecase these networks from the virtual interfaces do not help in anyway as they are co-located with the primary interface that has globally unique MAC address.

So, to save resources, this option drops such networks from the scan results.

CONFIG_WIFI_NRF70_SCAN_DISABLE_DFS_CHANNELS

(bool) Disables DFS channels in scan operation

This option disables inclusion of DFS channels in scan operation. This is useful to reduce the scan time, as DFS channels are seldom used.

CONFIG_NET_INTERFACE_NAME_LEN

(unknown)

None

CONFIG_NRF_WIFI_AP_DEAD_DETECT_TIMEOUT

(int) Access point dead detection timeout in seconds

The number of seconds after which AP is declared dead if no beacons are received from the AP. Used to detect AP silently going down e.g., power off.

CONFIG_NRF_WIFI_RPU_RECOVERY

(bool) RPU recovery mechanism

Enable RPU recovery mechanism to recover from RPU (nRF70) hang. This feature performs an interface reset (down and up) which triggers a RPU coldboot. Application’s network connection will be lost during the recovery process and it is application’s responsibility to re-establish the network connection.

CONFIG_NRF_WIFI_RPU_RECOVERY_PROPAGATION_DELAY_MS

(int) RPU recovery propagation delay in milliseconds

Propagation delay in milliseconds to wait after RPU is powered down before powering it up. This delay is required to ensure that the recovery is propagted to all the applications and stack and have enough time to clean up the resources.

CONFIG_NET_MGMT_EVENT_QUEUE_SIZE

(unknown)

None

CONFIG_NRF_WIFI_RPU_RECOVERY_PS_ACTIVE_TIMEOUT_MS

(int) RPU recovery power save active timeout in milliseconds

Power save active timeout in milliseconds after which RPU recovery mechanism will be triggered. This timeout is used to ensure that the RPU attempts to enter power save mode in case of inactivity.

CONFIG_NRF_WIFI_RPU_MIN_TIME_TO_ENTER_SLEEP_MS

(int) Minimum idle time to enter sleep in milliseconds

Minimum time the host should de-assert WAKEUP_NOW and let RPU enter sleep mode, assuming there is no activity.

CONFIG_NRF_WIFI_RPU_RECOVERY_DEBUG

(bool) RPU recovery debug logs

Enable RPU recovery debug logs to help debug RPU recovery mechanism.

CONFIG_NRF_WIFI_RPU_RECOVERY_QUIET_PERIOD_MS

(int) RPU recovery quiet period in milliseconds

Quiet period in milliseconds after RPU recovery is triggered. During this period, no new RPU recovery will be triggered.

CONFIG_NRF_WIFI_RPU_RECOVERY_MAX_RETRIES

(int) Maximum number of consecutive RPU recovery retries, 0 to disable

Maximum number of consecutive RPU recovery retries before giving up and resetting the system. Set to 0 to keep retrying indefinitely.

CONFIG_NRF_WIFI_RPU_RECOVERY_RETRY_WINDOW_S

(int) RPU recovery retry window in seconds

Window in seconds during which the number of consecutive RPU recovery retries are counted. If the number of consecutive RPU recovery retries exceeds NRF_WIFI_RPU_RECOVERY_MAX_RETRIES within this window, the system will be reset.

CONFIG_NRF_WIFI_RPU_RECOVERY_PS_STATE_DEBUG

(bool) RPU recovery power save state debug logs

Enable RPU recovery power save state debug logs to help debug RPU recovery mechanism.

CONFIG_NRF_WIFI_FEAT_WMM

(bool) WMM/QoS support

This option controls disable/enable of the WMM(Wireless Multi-Media) feature.

CONFIG_NRF_WIFI_PS_POLL_BASED_RETRIEVAL

(bool) PS-Poll frame based mechanism to retrieve buffered data from AP

When AP notifies about availability of buffered data, the STA stays in power save and retrieves the frames one-by-one, this conserved more power but adds latency to the traffic. Ideal for minimum number of frames.

CONFIG_NRF_WIFI_QOS_NULL_BASED_RETRIEVAL

(bool) QoS null frame based mechanism to retrieve buffered data from AP

When AP notifies about availability of buffered data, the STA comes out of power save and then AP can deliver all buffered frames without any additional overhead or latency, but STA enters power save after a delay costing more power depending on the delay. Ideal for heavy buffered traffic.

CONFIG_NRF_WIFI_MGMT_BUFF_OFFLOAD

(bool) management buffer offload

This option offloads the refilling of management buffers to UMAC, saves host having to exchange commands and events for every management packet even if it is consumed by UMAC.

CONFIG_NRF_WIFI_FEAT_KEEPALIVE

(bool) Wi-Fi keepalive feature for connection maintenance

Enable Wi-Fi keepalive feature to keep the connection alive by sending keepalive packets to the AP. Primarily intended to interoperate with APs that disconnect idle clients without any explicit checks. Slightly increases power consumption.

CONFIG_NRF_WIFI_KEEPALIVE_PERIOD_S

(int) Keepalive period in seconds

Keepalive period in seconds to send keepalive packets to the AP.

CONFIG_NRF_WIFI_PS_EXIT_EVERY_TIM

(bool) Exit power save every time to retrieve buffered data from AP

Exit power save every time to retrieve buffered data from AP. Entering back to power save mode might take some time and power.

CONFIG_NRF_WIFI_PS_INT_PS

(bool) Exit power save based on an intelligent algorithm

Exit power save based on an intelligent algorithm to retrieve buffered data from AP. The algorithm tracks the buffered data at the AP and then dynamically decides whether to stay in PS (for lower amount of buffered data) or exit PS (for higher amount of buffered data).

CONFIG_NRF70_PASSIVE_SCAN_ONLY

(bool) Forced Passive scan

Enable this configuration to force passive scan on all channels. This will override application specified scan type.

Devicetree specification configuration

The maximum transmit power achieved on an nRF70 Series device-based product depends on the frequency band and operating channel. This varies across different Printed Circuit Board (PCB) designs.

Multiple calibrations and checks are implemented to ensure consistency across channels and devices. However, these values depend on PCB design, which may result in Error Vector Magnitude (EVM) and spectral mask failures. To avoid this problem, you can specify the power ceiling at which the EVM and spectral mask are met for a given PCB design. Additionally, build-time parameters are made available to drivers through the DTS overlay file.

The following code snippet shows an example of the DTS overlay file. Note that the numbers used in this following example do not represent any particular PCB design or package type.

You must replace these values with measurements obtained from transmitter testing on your own PCB designs. The values are represented in 1 dB increments. To configure 15 dBm, use the value 15.

&nrf70 {
   wifi-max-tx-pwr-2g-dsss = <21>;
   wifi-max-tx-pwr-2g-mcs0 = <16>;
   wifi-max-tx-pwr-2g-mcs7 = <16>;
   wifi-max-tx-pwr-5g-low-mcs0 = <14>;
   wifi-max-tx-pwr-5g-low-mcs7 = <14>;
   wifi-max-tx-pwr-5g-mid-mcs0 = <14>;
   wifi-max-tx-pwr-5g-mid-mcs7 = <14>;
   wifi-max-tx-pwr-5g-high-mcs0 = <14>;
   wifi-max-tx-pwr-5g-high-mcs7 = <14>;
};

See the DTS binding documentation for more information.