Linux Software Reference Manual for NXP Wireless....Connectivity

RM00297

connectivity, software features, software architecture, software integration, certification, PSIRT management, vulnerability management, Wi-Fi, Bluetooth, 802.15.4, Matter

NXP B.V.

Linux Software Reference Manual for ...

24 Apr 2025 — NXP wireless system-on-chips (SoCs) support Wi-Fi, Bluetooth/Bluetooth LE, 802.15.4 radios for connectivity. To function, the devices rely on software ...

Linux Software Reference Manual for NXP ...

Linux Software Reference Manual for NXP Wireless Connectivity

PDF Viewing Options

Not Your Device? Search For Manuals or Datasheets below:


File Info : application/pdf, 203 Pages, 2.33MB

Document DEVICE REPORTRM00297
RM00297

Linux Software Reference Manual for NXP Wireless Connectivity

Rev. 1.0 -- 24 April 2025

Reference manual

Document information

Information

Content

Keywords

connectivity, software features, software architecture, software integration, certification, PSIRT management, vulnerability management, Wi-Fi, Bluetooth, 802.15.4, Matter

Abstract

Describes the software features, software architecture, software integration, and certification for wireless connectivity.

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

1 Introduction
NXP wireless system-on-chips (SoCs) support Wi-Fi, Bluetooth/Bluetooth LE, 802.15.4 radios for connectivity. To function, the devices rely on software components like the host-driver and firmware. This document is focused on Linux OS based software, covering:
· Section "Connectivity software architecture": NXP unified Wi-Fi drivers are the Multi-Chip and Multi-Interface driver where the same Wi-Fi driver can be used to load any wireless SoC firmware over any host interface. For Bluetooth/Bluetooth LE/802.15.4, an open source driver is built into the Linux Kernel. The section provides an overview of the driver architecture.
· Section "What you need" ­ The wireless SoCs are paired with a host platform. The host platform can be an NXP i.MX platform or any third-party processors. The section explains how to flash the pre-built Linux images and cross-compile the drivers.
· Section "Connectivity software integration": the standalone software package including the firmware, tools, and more, is available for download on github and NXP website. The section describes how to download the firmware onto the wireless SoC to bring up the Wi-Fi, Bluetooth/Bluetooth LE, and 802.15.4 interfaces. Error handling, fatal error recovery, and debugging methods are also explained.
· Section "Connectivity features": the section covers how to utilize Wi-Fi, Bluetooth/Bluetooth LE, and 802.15.4 radios. For instance, how to configure a WPA3 mobile access point (uAP), create an AD2P connection, start a Thread network, and measure the throughput performance.
· Section "Regulatory certifications": regulatory, standard-based, and security certifications are required for the wireless SoCs used in commercial applications. The section details the certification process and NXP pro support services.
· Section "PSIRT and vulnerability management": NXP established a vulnerability management process in case a wireless SoC malfunctions. The section details the process to protect the customer's interests.
1.1 Supported products
The following wireless SoCs are supported:
· 88W8801 ref.[21] · 88W8987 ref.[22] · 88W8997 ref.[23] · 88W9098 ref.[24] · IW416 ref.[25] · IW610 ref.[26] · IW611 ref.[27] · IW612 ref.[28]
For the list of supported features and release notes, refer to ref.[10].
Note: IW612 and IW610 are tri-radio solutions that support Wi-Fi, Bluetooth/Bluetooth LE, and 802.15.4. 88W8801 is a single radio solution that supports Wi-Fi only. The other wireless SoCs are dual radio solutions that support Wi-Fi and Bluetooth/Bluetooth LE.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 2 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

2 Connectivity software architecture
2.1 Wi-Fi software architecture
2.1.1 Wi-Fi driver architecture
This section describes the architecture of the Wi-Fi Linux driver which supports multiple bus interfaces and WiFi devices. The architecture is divided into two modules:
· MOAL module: OS-dependent module that includes: ­ The upper interface to the kernel/protocol stack. ­ The lower interface that registers the Wi-Fi driver to the bus driver (SDIO/PCIE) when loaded, so an SDIO/ PCIE device can be detected. ­ One SHIM layer to MLAN module.
· MLAN module: OS-independent module that includes most of the driver handling and interface to the firmware. The module also enables applicable interface operations based on the card type conveyed by the MOAL module. When customizing or integrating the Wi-Fi driver, you can use the MLAN module "as is" to reduce the porting work.
Figure 1 shows the Wi-Fi driver architecture.

Supplicant/ Authenticator
Ethernet/WEXT/ CFG80211

TCP/IP

STA uAP WFD NAN

MOAL handling (ISR, Thread etc.)

HAL
SDIO

PCIe

Basic Special feature feature

FW dnld

MLAN handling

CMD Event Data handle handle handle

HAL

SDIO

PCIe

KERNEL
MOAL (Linux) SHIM SHIM

MLAN

Bus Driver (SDIO/PCIe)

Firmware

Figure 1.Wi-Fi driver architecture

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 3 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

2.1.1.1 MOAL module
Upper interface to kernel/protocol stack:
· Ethernet handling: standard ethernet driver module in Linux with similar functionality as an Ethernet NIC card to the kernel. The driver module handles packet transmission and reception as well as the control.
· 802.11 extensions (WE) handling: interface to the wireless extension stack provided by Linux kernel. The interface includes 802.11 specific features like scanning, association, 802.11d, 802.11h, and WMM.
· Cfg80211 handling: interface to cfg80211 stack provided by Linux kernel. This interface is a replacement for WE handling, although it can also work alongside WE handling. Multiple Wi-Fi network interfaces are supported, such as STA, uAP, WFD and NAN. The interface list is created during the driver initialization and can be adjusted according to the device capability.
Lower interface to the bus driver:
· Bus driver interfacing: component that provides an interfacing layer between the MOAL module and the lowlevel bus driver module. The component registers the Wi-Fi driver to the (SDIO/PCIE) bus driver and call the APIs provided by the bus driver to access the registers and data ports.
· Independent operation of SDIO/PCIE: When a device is detected, the driver enables the applicable interface operations for the device interface.
SHIM layer to MLAN: used to convert OS-specific APIs to MLAN APIs and vice versa.
2.1.1.2 MLAN module
The MLAN module is used for firmware downloading, command handling, data handling, event handlings, power-save handling, and mux/demux handling, and more.
Note: The driver or firmware API version up to 18 is supported in MLAN.
The data sent to or received from the firmware is little-endian based. The driver is configured as little-endian by default.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 4 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

2.1.2 Wi-Fi layer interfaces
The wireless module requires a kernel driver loaded on the host system and a firmware running on NXP-based wireless modules. When the interface bus driver detects the NXP-based wireless module, the MLAN module downloads the firmware binary via the interface adapter. NXP Wi-Fi driver is loaded between the bus driver and the network stack from the cfg80211 subsystem in the kernel. NXP kernel driver includes a set of controls and configurations to communicate with the user space through one of the following interfaces:
· Input/output control (IOCTL) · Wireless Extension (Wext) · CFG80211
The IOCTL provides a path to the user space applications iwconfig and iwpriv whereas cfg80211 interface provides a different path to the user space applications wpa_supplicant, hostapd and iw.
Figure 2 illustrates the Wi-Fi layer interface.

Figure 2.Wi-Fi layer interface

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 5 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

2.2 Bluetooth software architecture
2.2.1 Bluetooth layer interfaces
Figure 3 illustrates the layers between the user applications and the NXP-based Bluetooth module. The NXPbased wireless module requires a kernel driver loaded on the host system and a firmware running on NXP wireless SoC. The Wi-Fi driver loads the combo firmware, or the Bluetooth driver loads the Bluetooth only firmware. The btnxpuart driver provides the HCI interface between the firmware and user application.

User space

User application

bluetoothctl

hciconfig

hcitool

Bluez

Kernel space

Bluetooth Network Layer

btnxpuart.ko

Firmware download

Serdev

NXP power save feature

Hardware

UART

NXP wireless SoC

Firmware

Figure 3.Bluetooth layer interface

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 6 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

2.3 802.15.4 software architecture
2.3.1 OpenThread radio coprocessor (RCP) software architecture Thread is an IPv6-based networking protocol designed for low-power Internet of Things devices in an IEEE802.15.4-2015 wireless mesh network (ref.[11]). OpenThread released by Google is an open-source implementation of Thread (ref.[31] and ref.[32]). The 802.15.4 subsystem of the wireless SOC works as controller in OpenThread RCP design as illustrated in Figure 4.
Host processor
Application Third-party IPv6 OpenThread API OpenThread code (packet decrypt) OpenThread drivers
SPINEL SPI driver

SPI_INT

SPI

802.15.4 SoC - RCP
SPINEL Sub MAC (packet encrypt)
802.15.4 PHY Transceiver driver
Figure 4.802.15.4 software architecture

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 7 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

2.3.1.1 Host
The OpenThread core runs on the host processor and communicates with the controller via OpenThread Daemon (Ot-daemon) through SPI interface over the Spinel protocol ref.[14]. Ot-daemon main features: · Used in the radio coprocessor (RCP) design · OpenThread POSIX build mode that runs OpenThread as a service · UNIX socket as input and output Clients can connect to the UNIX socket and communicate using OpenThread CLI as a protocol.
2.3.1.2 Controller
The controller supports: · Spinel over SPI · 10 MHz maximum SPI clock speed · IEEE 802.15.4-2015 sub-MAC and PHY features as required by Thread 1.4 · TX and RX PHY PSDU

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 8 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

2.3.1.3 Communication between host and controller

The SPI bus is used for 802.15.4 data communication.

Table 1.SPI interface related signals for IW612 wireless SoC

Signal name

Type

GPIO pin[1]

SPI_FRM

I

13

SPI_CLK

I

12

SPI_RXD

I

14

SPI_TXD

O

15

SPI_INT

O

20

Description SPI frame input signal SPI clock input signal SPI receiver input signal SPI transmitter output signal SPI interrupt output signal

[1] The GPIO pin numbers in the table are specific to IW612 product. To know which GPIO pin number is used for the SPI interface signals, refer to the other product data sheets.
The Host configures SPI_INT pin as interrupt and the wireless SoC asserts SPI_INT when data is available for transfer to the host.

The wireless SoC asserts SPI_INT because it has some data to send to the host

The wireless SoC deasserts SPI_INT upon SPI transaction completion

The host triggers an SPI transaction to read The host triggers another SPI transaction to

the pending data from the wireless SoC

write data to the wireless SoC

Figure 5.SPI_INT pin behavior in SPI data communication
Spinel is a standardized host-controller protocol used for the data communication between the host and controller over SPI interface. Figure 6 shows the Spinel over SPI data format in OpenThread network.

Figure 6.SPI data format in OpenThread network

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 9 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3 What you need
3.1 Connectivity hardware
For information on NXP-based wireless modules, refer to ref.[18]. Find partner module information on NXP website for the wireless SoCs: · 88W8801 · 88W8987 · 88W8997 · 88W9098 · IW416 · IW610 · IW611 · IW612
3.2 Host platforms
3.2.1 NXP i.MX host processors
3.2.1.1 FRDM development board Refer to ref.[29] and ref.[30].
3.2.1.2 i.MX 8M Quad evaluation kit (EVK) Refer to the section i.MX 8M Quad evaluation kit (EVK) in ref.[18].
3.2.1.3 i.MX 93 EVK Refer to ref.[17].

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 10 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.2.2 Integration with i.MX host processors
This section provides the how to information on: · Setting up the Linux OS host. · Running and configuring a Yocto project ref.[15]. · Generating an image. · Generating a rootfs. · Implementing the required changes in the device tree structure to bring up the wireless SoC on the PCIe
interface.
3.2.2.1 Set up the build environment
This section describes the steps to set up the host machine to build the Yocto image. The steps provided in this document is tested on Ubuntu 16.04. The recommended minimum Ubuntu version is 16.04 or newer.
3.2.2.1.1 Set up the host
Refer to the steps and specification of the host machine that the board manufacturer provides in the platform specific Yocto build guide. To set up an i.MX host machine, refer to ref.[17], ref.[18], ref.[29], and ref.[30].
3.2.2.1.2 Install Repo tool
Repo is a tool built on top of Git that makes it easier to manage projects that contain multiple repositories, which do not need to be on the same server. Perform the following steps to install the repo utility: · Create a bin directory in the home directory
$ mkdir ~/bin (this step may not be needed if the bin directory already exists) $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
· Add the following line to the .bashrc file to ensure that the ~/bin directory is in your PATH variable.
$ export PATH=~/bin:$PATH

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 11 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.2.2.1.3 Set up Yocto project
During the project setup, the layers are downloaded to the sources directory; repo init repository is used to set the recipes, and repo sync command is used to synchronize the repository with the latest code. The board manufacturer uses the following options for the repo init command: · -u for the manifest repository location · -b for the manifest branch · -m for the initial manifest file The following steps are for i.MX8QM MEK board. Commands to setup the git:
$ git config --global user.name "Your Name" $ git config --global user.email "Your Email" $ git config ­list
The following example shows how to download the i.MX Yocto Project Community BSP recipe layers. In this example we first create the repository imx-yocto-bsp for the project.
$ mkdir imx-yocto-bsp $ cd imx-yocto-bsp $ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imxX.Y.Z-V.V.V.xml $ repo sync
Note: In the above command X, Y, Z, V refers to i.MX version, for example imx-6.6.36-2.1.0.xml When this process is completed, the source code is checked out into imx-yocto-bsp/sources repository.
3.2.2.1.4 Set up the build directory and configuration files
Run the commands or scripts provided by the board manufacturer to set up the build directory and configuration files. The command for i.MX8QM MEK board is as follows:
$ DISTRO=fsl-imx-wayland MACHINE=imx8qmmek source imx-setup-release.sh -b build
Note: Read more in ref.[15].
3.2.2.1.5 Build an image
The Yocto Project build uses the bitbake command. For example, bitbake <component> builds the named component. Each component build has multiple tasks, such as fetching, configuration, compilation, packaging, and deploying to the target rootfs. The bitbake image build gathers all the components required by the image and build in order of the dependency per task. Command to build an image:
$ bitbake core-image-base //A console-only image that fully supports the target device hardware.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 12 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.2.2.2 Add the Wi-Fi utilities and drivers This section explains how to add the Wi-Fi utilities and/or kernel modules in case they are not already included in the yocto build. Wpa_supplicant, hostapd utilities and cfg80211 subsystem are required to configure the interface as an AP or STA.
3.2.2.2.1 Add Wi-Fi utilities To append the DISTRO feature in the local configuration for yocto, add the following lines to local.conf file.
$ vim imx-yocto-bsp/<build dir>/conf/local.conf DISTRO_FEATURES_append += " wifi iw" IMAGE_INSTALL_append += " hostapd wpa-supplicant"
Build the above configurations into the image using the command:
$ bitbake core-image-base

3.2.2.2.2 Enable the features in hostapd and wpa_supplicant
This section shows how to enable the supported features in hostapd and wpa_supplicant utilities. Use the following steps to enable IEEE 802.11ax features in the version 2.11 of these utilities. Use the same steps to enable other features in these utilities.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 13 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Steps for hostapd · Append hostapd recipe by creating hostapd.bbappend file.
$ vim imx-yocto-bsp/sources/meta-openembedded/meta-oe/recipes-connectivity/hostapd/ hostapd_2.11.bbappend # Customization of hostapd
# Files directory FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += " \ file://hostapd.cfg \ "
do_configure_append() { cat ${WORKDIR}/*.cfg >> ${B}/.config }
· Create hostapd.cfg file in imx-yocto-bsp/sources/meta-openembedded/meta-oe/recipes-connectivity/hostapd/ hostapd with the required flags.
$ vim imx-yocto-bsp/sources/meta-openembedded/meta-oe/recipes-connectivity/hostapd/ hostapd/hostapd.cfg
CONFIG_IEEE80211AX=y
· Build the hostapd
$ bitbake hostapd -f $ bitbake core-image-base
Steps for wpa_supplicant · Append wpa_supplicant recipe by creating wpa_supplicant.bbappend file with below given data.
$ vim imx-yocto-bsp/sources/poky/meta/recipes-connectivity/wpa-supplicant/wpasupplicant_2.11.bbappend # Customization of wpa_supplicant # Files directory FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" do_configure_append() {
echo "CONFIG_IEEE80211AX=y" >> wpa_supplicant/.config }
· Add the following line to imx-yocto-bsp/sources/poky/meta/conf/layer.conf file just after BBFILES += "${LAYERDIR}/recipes-*/*/*.bb" line
BBFILES += " ${LAYERDIR}/recipes-*/*/*.bbappend"
· Build the wpa_supplicant utility
$ bitbake wpa-supplicant -f $ bitbake core-image-base

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 14 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.2.2.2.3 Modify the Kernel configuration for Wi-Fi
Use the following steps to enable cfg80211, nl80211 and mac80211 subsystem support in kernel to run wpa_supplicant and hostapd with nl80211. · Open the menuconfig option for the board-specific kernel:
$ bitbake linux-imx -c menuconfig
· Enable the cfg80211 subsystem:
[*] Networking Support -*- Wireless ---> <*> cfg80211 - wireless configuration API [*] nl80211 testmode command [*] cfg80211 wireless extensions compatibility <*> Generic IEEE 802.11 Networking Stack (mac80211)
· Build the image:
$ bitbake linux-imx $ bitbake core-image-base

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 15 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.2.2.3 Add the utilities and drivers for Bluetooth/Bluetooth LE This section shows how to add the packages and kernel modules for Bluetooth/Bluetooth LE.
3.2.2.3.1 Add packages for Bluetooth/Bluetooth LE The following steps are not required if the yocto build includes BlueZ, PipeWire, and Ofono packages. PipeWire is used to configure the Bluetooth audio profile and Ofono is used to configure the Bluetooth Headsfree profile. Use the following steps to install the packages if these are not available in the yocto Linux image. · Update local.conf file with the following lines of code to append the DISTRO features in the local configuration
for yocto:
$ vim imx-yocto-bsp/build/conf/local.conf
DISTRO_FEATURES_append += " bluez5 bluetooth PipeWire"
IMAGE_INSTALL_append += " bluez5 pipewire pipewire-audio pipewire-media-session wireplumber alsa-utils pipewire-module-bluetooth pipewire-module-bluez5 pipewire-module-rtp ofono ofono-tests"
· Build the updated configuration into the image:
$ bitbake core-image-base

3.2.2.3.2 Kernel configuration for Bluetooth/Bluetooth LE
Use the following steps to add the support of HCI UART driver as a module if it is a part of kernel and to enable HID driver. · Open the menuconfig option for the board-specific kernel
$ bitbake linux-imx -c menuconfig
· Make the HCI UART driver as a part of modules if it is a part of kernel:
[*] Networking Support <*> Bluetooth subsystem support Bluetooth device drivers <M> HCI UART driver
· Enable the Generic HID driver:
Device Drivers HID support HID bus support <*> Generic HID driver

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 16 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

· If the external USB to UART interface is used, enable the FTDI serial converter driver:
Device Drivers [*] USB support <M> USB Serial Converter support <M> USB FTDI Single Port Serial Driver
· Build all the updates into the image:
$ bitbake linux-imx $ bitbake core-image-base
3.2.2.4 Modify the DTS file for PCIe interface
This section shows how to change the DTS file to add the support of NXP device on a non-NXP SoC.
Addressable devices use the following properties to encode the address information into the device tree. Look for the address information in the SoC datasheet or ask the SoC vendor.
· reg · #address-cells · #size-cells
PCI address translation
Similar to the local bus, the PCI address space is completely separate from the CPU address space. Thus, the address translation is needed to get from a PCI address to a CPU address. The address translation uses the range, #address-cells, and #size-cells properties.
pci@0x10180000 { compatible = "arm,versatile-pci-hostbridge", "pci"; reg = <0x10180000 0x1000>; interrupts = <8 0>; bus-range = <0 0>; #address-cells = <3> #size-cells = <2>; ranges = <0x42000000 0 0x80000000 0x80000000 0 0x20000000 0x02000000 0 0xa0000000 0xa0000000 0 0x10000000 0x01000000 0 0x00000000 0xb0000000 00x01000000>;
}

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 17 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Example of i.MX8QM MEK board:
pcie@0x5f000000 { compatible = "fsl,imx8qm-pcie", "snps,dw-pcie"; reg = <0x5f000000 0x10000 0x6ff00000 0x80000 0x5f110000 0x60000>; reg-names = "dbi", "config", "hsio"; #address-cells = <0x3>; #size-cells = <0x2>; device_type = "pci"; bus-range = <0x0 0xff>; ranges = <0x81000000 0x0 0x0 0x6ff80000 0x0 0x10000 0x82000000 0x0 0x60000000
0x60000000 0x0 0xff00000>; num-lanes = <0x1>; num-viewport = <0x4>; interrupts = <0x0 0x46 0x4 0x0 0x48 0x4>; interrupt-names = "msi", "dma"; #interrupt-cells = <0x1>; interrupt-map-mask = <0x0 0x0 0x0 0x7>; interrupt-map = <0x0 0x0 0x0 0x1 0x1 0x0 0x49 0x4 0x0 0x0 0x0 0x2 0x1 0x0 0x4a 0x4
0x0 0x0 0x0 0x3 0x1 0x0 0x4b 0x4 0x0 0x0 0x0 0x4 0x1 0x0 0x4c 0x4>; clocks = <0x91 0x0 0x91 0x1 0x91 0x2 0x92 0x0 0x93 0x0 0x94 0x0 0x8f 0x0>; clock-names = "pcie", "pcie_bus", "pcie_inbound_axi", "pcie_phy", "phy_per",
"pcie_per", "misc_per"; power-domains = <0x19 0x98 0x19 0x99 0x19 0xac>; power-domain-names = "pcie", "pcie_phy", "hsio_gpio"; fsl,max-link-speed = <0x3>; hsio-cfg = <0x2>; local-addr = <0x40000000>; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <0x95>; reset-gpio = <0x20 0x1d 0x1>; disable-gpio = <0x20 0x9 0x1>; ext_osc = <0x1>; epdev_on-supply = <0x96>; reserved-region = <0x97>;
};

3.2.2.4.1 Steps to modify the DTS file The devtool sets up an environment to enable changes in the source of an existing component. The commands in this section are for i.MX platform. Change the path and recipe name for a non-NXP SoC. · Enable the kernel modification:
$ devtool modify -x linux-imx
The kernel source locally resides in imx-yocto-bsp/build/workspace/sources/linux-imx · Modify the device tree file arch/arm64/boot/dts/freescale/<dts file> per SoC · Build the changes into the image:
$ bitbake linux-imx $ bitbake core-image-base

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 18 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.2.2.5 Cross compile the wireless driver/utilities and flash the image Download the driver package from NXP website and follow the steps in this section to cross compile the driver and utilities, and to flash the image.
3.2.2.5.1 Build a toolchain Use the following steps to build a toolchain for an i.MX EVK board. Note that the steps slightly differ for the different i.MX platforms. · Build the toolchain
$ bitbake meta-toolchain
· Install the toolchain. The following commands refer to i.MX platform.
$ cd <build dir>/tmp/deploy/sdk $ sudo ./fsl-imx-wayland-glibc-x86_64-meta-toolchain-aarch64-toolchain-5.4-zeus.sh
The toolchain is installed with the default settings at /opt/fsl-imx-wayland/5.4-zeus location for i.MX platform. The path may differ depending on the i.MX platform. · Set up the environment variables
$ source /opt/fsl-imx-wayland/5.4-zeus/environment-setup-aarch64-poky-linux
· Verify the cross compiler setup and version
$ $CC --version aarch64-poky-linux-gcc (GCC) 9.2.0

3.2.2.5.2 Cross compile the drivers and utilities
The source code files used to cross compile the drivers and utilities are included in the software release of the wireless SoC. The required files are:
· XXXX-app-src.tgz · XXXX-GPL-src.tgz · XXXX-mlan-src.tgz
Step 1 ­ Download the latest software package from the webpage of the Wireless SoC.
Step 2 ­ Decompress or unzip the software package.
unzip XXX.zip tar -xvf XXXX-app-src.tgz tar -xvf XXXX-GPL-src.tgz tar -xvf XXXX-mlan-src.tgz

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 19 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.2.2.5.2.1 Wi-Fi Step 1 ­ Go to the directory XXX-GPL/wlan_src.
cd XXX-GPL/wlan_src
Step 2 ­ Modify the Makefile to change the kernel build directory.
$ vim Makefile
Step 3 ­ Change the KERNELDIR
<absolute-path>/imx-yocto-bsp/<build dir>/tmp/work/imx8qmmek-poky-linux/linux-imx/ <linuxkernel-version>-r0/build/
Step 4 ­ Build the driver package.
$ make clean $ make build
If the compilation is successful, the directory /bin_wlan is created in XXX-GPL directory.
3.2.2.5.2.2 Bluetooth By default, a Linux kernel version greater than 6.1.22 includes the Bluetooth driver btnxpuart. If the driver is not available in the BSP, to configure the kernel and add btnxpuart driver, refer to ref.[7]. A .dtb file configures btnxpuart to load the firmware at the correct baud rate. To update the default .dtb file of the host platform, refer to Enabling Wi-Fi host interfaces with dtb files .

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 20 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.3 Software
The i.MX Linux BSP is a collection of binary files, source code, and support files used to create a U-Boot bootloader, a Linux kernel image, and a root file system for i.MX development platforms.
All the information on how to set up the Linux OS host, how to run and configure a Yocto Project, generate an image, and generate a rootfs, are covered in Section 3.2.
To use a pre-built image, follow the steps below:
Step 1 ­ Download the latest Linux release for the desired host platform from ref.[9]. The release includes a pre-built image that is built specifically for the board configuration.
Note: A pre-built image contains all the image elements and does not require to build the image using the Yocto setup.

Figure 7.Example of Linux release for i.MX

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 21 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 2 ­ Extract the downloaded release.
Example of release content:
EULA.txt fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.zst.u-boot GPLv2 Image-imx8mmevk.bin Image-imx8_all.bin imx-boot-imx8mm-ddr4-evk-nand.bin-flash_ddr4_evk imx-boot-imx8mm-ddr4-evk-sd.bin-flash_ddr4_evk imx-boot-imx8mm-lpddr4-evk-fspi.bin-flash_evk_flexspi imx-boot-imx8mm-lpddr4-evk-sd.bin-flash_evk imx-boot-imx8mmevk-sd.bin-flash_evk imx-image-full-imx8mmevk.manifest imx-image-full-imx8mmevk.spdx.tar.zst imx-image-full-imx8mmevk.tar.zst imx-image-full-imx8mmevk.wic imx8mm-ddr4-evk-pcie-ep.dtb imx8mm-ddr4-evk-revb-rm67191-cmd-ram.dtb imx8mm-ddr4-evk-revb-rm67191.dtb imx8mm-ddr4-evk-revb-rm67199-cmd-ram.dtb ... imx8mm-evk-usd-wifi.dtb imx8mm-evk.dtb SCR-6.6.23-2.0.0.txt uuu.auto uuu.auto-imx8mmevk

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 22 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.3.1 Flash the image Step 1 ­ Connect power and USB-C cable to the host platform. Refer to the host platform's webpage for the hardware connections. Step 2 ­ Switch the host platform boot configurations to download mode. Note: The boot configurations are written in a table on the host platform. Step 3 ­ Download Universal Update Utility (UUU) to download images to different devices on an i.MX board. uuu runs on Linux or Windows OS. Step 4 ­ (Linux OS) ­ Set executable permissions to the uuu binary.
sudo chmod +x /usr/bin/uuu
(Windows OS) ­ Place the downloaded uuu.exe in the same directory as the downloaded release. Step 5 ­ Open a command prompt terminal. Step 6 ­ Navigate to the download Linux image and uuu. Step 7 ­ Flash the host platform. Command for Linux OS:
sudo uuu -b emmc_all imx-boot-XXXX-sd.bin-flash_evk imx-image-full-XXXX.wic
Command for Windows OS:
uuu.exe -b emmc_all imx-boot-XXXX-sd.bin-flash_evk imx-image-full-XXXX.wic
Step 8 ­ Switch the host platform boot configurations to eMMC mode. Note: The boot configurations are written in a table on the host platform.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 23 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.3.2 Serial console setup
For Linux OS, minicom is used to access the serial console of the host platform. Step 1 ­ Connect the micro-USB or USB-C cable into the debug slot on the host platform and the other end to the PC. Refer to the host platform's webpage for the hardware connections. Step 2 ­ Open the serial console and login into the device.

ubuntu@ubuntu-desktop:/# sudo minicom -s -D /dev/ttyUSBx

ttyUSB0 or ttyUSB01 are the serial devices. The minicom setup configuration is as follows:

A - Serial Device

: /dev/ttyUSBx

E - Bps/Par/Bits

: 115200 8N1

F - Hardware Flow Control : No

G - Software Flow Control : No

Step 3 ­ Save and exit.
For Windows OS, any serial terminal, such as TeraTerm or PuTTy is used to access the host platform.
Step 1 ­ Connect the micro-USB or USB-C cable into the debug slot on the host platform and the other end to the PC. Refer to the host platform's webpage for the hardware connections.
Step2 ­ Open a serial port console with the baud rate of 115200 and other serial port settings on the PC (Figure 8).
Step 3 ­ Enter the login information on the console:

imx8mmevk login: root

Figure 8.Serial port settings

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 24 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

3.3.3 Enabling Wi-Fi host interfaces with dtb files
The device tree file (.dtb) is used to configure the Wi-Fi host interface for each wireless SoC connected to an i.MX platform. By default, the Linux BSP contains precompiled dtb files to enable SDIO and PCIe host interfaces. The precompiled dtb files are located in /run/media/boot-mmcblk2p1 directory.
Figure 9 shows the .dtb files in /run/media/boot-mmcblk2p1 directory.

Figure 9..dtb files in /run/media/boot-mmcblk2p1 directory Note: Each host platform has a specific set of .dtb files. To compile a custom .dtb file, refer to ref.[16]. To enable a host interface, follow the steps below. Step 1 ­ Power-on the host platform board. Hit any key within 3 seconds to halt u-boot from booting and to enter the uboot console.
u-boot=>
Step 2 ­ Set fdtfile parameter to the .dtb file of the host interface. Command syntax:
u-boot=> setenv fdtfile <host interface>.dtb
Example of command to enable SDIO host interface:
u-boot=> setenv fdtfile imx8mm-evk-usd-wifi.dtb
Step 3 ­ Save the host interface environment. u-boot=> saveenv

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 25 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Command output example: Saving Environment to MMC... Writing to MMC(0)... OK
Step 4 ­ Reset the host platform board. u-boot=> reset
Command output example: Resetting...

3.3.4 Linux OS login The default login username for the i.MX Linux OS is root. There is no password.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 26 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4 Connectivity software integration
This section explains how to integrate the software release package onto the i.MX host platform and load onto the wireless SoC. The software release package is available on the webpage of the wireless SoC. Find information about the latest release in the release notes ref.[10].
4.1 Start-up and initialization
For NXP-based wireless modules, refer to ref.[18].
4.1.1 Download the software package
The pre-compiled Linux BSP includes the required drivers and firmware. Additional software is not required. However, standalone software release packages are available on the webpage of the supported wireless SoC (Section 1.1). The following instructions apply to IW612 standalone software release as an example. IW612 software is available for download in the Design resource section of IW612 webpage at nxp.com. · Go to the product page (ref.[28]). · Click Design Resources.

Figure 10.Design Resources on IW612 product page
· Click Software in Design Resources. · Select Secure files · Click reenter your password to access the secure files.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 27 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Figure 11.Software secure files in Design Resources section
· Select BSP and Device Drivers in Embedded Software section. · Look for the latest software release and click Download.

Figure 12.Software files on IW612 webpage

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 28 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.1.1.1 Firmware types Figure 13 shows the default /lib/firmware/nxp directory content for i.MX 8M Quad host platform.

Figure 13.Default /lib/firmware/nxp directory content for i.MX 8M Quad host platform

The /lib/firmware/nxp directory contains:
· Combo firmware ­ A single firmware binary download activates Wi-Fi and Bluetooth/Bluetooth LE/802.15.4 radios. ­ The firmware is loaded through the Wi-Fi host interface.
· Standalone firmware ­ Separate firmware binary downloads for Wi-Fi and for Bluetooth/Bluetooth LE/802.15.4 radios. ­ The Wi-Fi firmware and the Bluetooth/Bluetooth LE/802.15.4 firmware can be downloaded independently.
The same binaries as for the combo and standalone firmware can be used for regulatory testing.
The naming convention for the firmware binaries is as follows:
· Wi-Fi host interface (IF) ­ PCIe, SDIO · Bluetooth/Bluetooth LE IF ­ UART · 802.15.4 IF ­ SPI · Device identifier ­ for example 8997, 9098, IW612, and IW416 · Firmware type ­ combo, bt, wlan · version (vX) where X is 0 - 4 · Binary security (.bin or .bin.se)
­ For .bin.se, the wireless SoC supports a EdgeLock® Secure (ELS) subsystem to verify the digital NXP signature of the firmware and decrypt the secure firmware.
­ The boot ROM is set to secure mode, so the security unit must verify all the software. ­ The access to JTAG is blocked. ­ During the firmware download, the security unit verifies the digital signature. If the verification is successful,
the secure firmware downloads. The digital verification of unauthorized software fails and the download is blocked.

Table 2.Firmware binary files included in FwImage directory

Firmware type

Firmware file

Wi-Fi and Bluetooth/Bluetooth LE/802.15.4 combo firmware Syntax:

<Wi-Fi IF><Bluetooth IF><802.15.4 IF><device identifier>.<binary security>

Standalone Wi-Fi firmware

Example for IW612: sduart_nw61x_v1.bin.se Syntax:

<Wi-Fi IF><device identifier>.<binary security>

Example for IW612: sd_nw61x_v1.bin.se

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 29 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Table 2.Firmware binary files included in FwImage directory ...continued

Firmware type

Firmware file

Standalone Bluetooth/Bluetooth LE/802.15.4 firmware

Syntax:

<Bluetooth IF><802.15.4 IF><device identifier>.<binary security>

Example for IW612: uartspi_nw61x_v1.bin.se

4.1.2 Transfer the files to i.MX host platform
The software is downloaded on the host PC and copied to i.MX host platform running Linux OS. This section explains the two methods to transfer files from the host PC to the i.MX host platform. · One method uses file copy using an USB mass storage device (USB-C to USB adapter included) · The other method uses file copy using Ethernet connection and secure copy (SCP).
4.1.2.1 USB-C to USB adapter
The procedure to use USB-C to USB adapter to transfer files is as follows: Step 1 ­ Hardware connections · Plug the USB-C to USB adapter to the "Download" slot on i.MX 8M Mini EVK board · Plug the USB flash drive containing the downloaded software to the other USB end of the adapter Note: Linux supports FAT32 and exFAT USB formats. Other formats may run into an error. Figure 14 shows USB-C to USB adapter connections.

Figure 14.USB-C to USB adapter connections

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 30 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 2 ­ Debug access · Refer to the section Board set-up in ref.[29] and ref.[30]. Step 3 ­ File transfers · Issue the command to locate the USB flash drive content

lsblk

Example of command output:

NAME

MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS

sda

8:0 1 59.6G 0 disk

`-sda1

8:1 1 59.6G 0 part /run/media/sda1

mtdblock0

31:0 0 32M 0 disk

mmcblk2

179:0 0 14.7G 0 disk

|-mmcblk2p1 179:1 0 83.2M 0 part /run/media/mmcblk2p1

`-mmcblk2p2 179:2 0 4.5G 0 part /

mmcblk2boot0 179:32 0 4M 1 disk

mmcblk2boot1 179:64 0 4M 1 disk

In the above example, the content of the USB flash drive is located in the directory /run/media/sda1. · Move to USB flash drive directory

cd <USB directory>

· Copy the files to /home/root

cp <software_release_package>.tar /home/root

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 31 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.1.2.2 SCP utility (optional) This section explains how to use SCP utility to transfer files from the host PC to the i.MX host platform board via Ethernet. Step 1 ­ Set up the Ethernet interface. To connect the two interfaces on the same network: · Attach one end of the ethernet cable to the i.MX host platform Ethernet port and the other end to the host PC Note: The ethernet port is used either to transfer files or for debug access (SSH). · Get the IP address of the connected PC.
ifconfig
· Assign the IP address of the i.MX host platform on eth0 interface.
ifconfig eth0 192.168.1.100 up
· Check if eth0 interface is up.
ifconfig eth0
Example of output with matching IP addresses for the connected PC and the i.MX host platform board:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::204:9fff:fe07:1230 prefixlen 64 scopeid 0x20<link> ether 00:04:9f:07:12:30 txqueuelen 1000 (Ethernet) RX packets 1817 bytes 2605025 (2.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 272 bytes 32259 (31.5 KiB)
Step 2 ­ Copy the compressed software release files to the i.MX host platform board.
scp -r <sofwtare_release_package>.tar root:@192.168.1.100:/home/root

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 32 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.1.2.3 Extract the files This section explains how to decompress files from the downloaded software package. To decompress a tar file: Step 1 ­ Open a command prompt or a terminal on the host system. Step 2 ­ Issue the command:
tar -xvf <sofwtare_release_package>tgz
The command creates a directory of the same name with: · FwImage directory · Calibration data files · Source and driver code for Wi-Fi, Bluetooth, 802.15.4 tgz files to decompress

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 33 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.1.3 Load the firmware
As a recommendation, use the driver default parameters when loading driver and firmware on the wireless SoC. In case any changes are needed, configure the driver parameters using one of the following methods:
· wifi_mod_para.conf: default configuration file in the Linux Kernel. ­ Located in /lib/firmware/nxp directory with all the firmware binaries. ­ Contains the configuration blocks that define the driver and firmware parameters for each wireless SoCs.
· insmod commands are manually executed in the same directory as the drivers
This section explains how to load the combo, standalone Wi-Fi, standalone Bluetooth/Bluetooth LE/802.15.4 firmware binaries using both methods.

Table 3.wifi_mod_para.conf configuration blocks for the supported wireless SoCs

Wireless SoC

Configuration block

88W8987

<Wi-Fi IF>8987 = { cfg80211_wext=0xf max_vir_bss=1 cal_data_cfg=none ps_mode=1 auto_ds=1 host_mlme=1 fw_name=nxp/<firmware>.bin
}

88W8997

<Wi-Fi IF>8997 = { cfg80211_wext=0xf max_vir_bss=1 cal_data_cfg=none ps_mode=1 auto_ds=1 host_mlme=1 fw_name=nxp/<firmware>.bin
}

88W9098

<Wi-Fi IF>9098_0 = { cfg80211_wext=0xf max_vir_bss=1 cal_data_cfg=none ps_mode=1 auto_ds=1 host_mlme=1 fw_name=nxp/<firmware>.bin
}

IW416

SDIW416 = { cfg80211_wext=0xf max_vir_bss=1 cal_data_cfg=none ps_mode=1 auto_ds=1 host_mlme=1 fw_name=nxp/<firmware>.bin
}

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 34 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Table 3.wifi_mod_para.conf configuration blocks for the supported wireless SoCs ...continued

Wireless SoC

Configuration block

IW612

SDIW612 = { cfg80211_wext=0xf wfd_name=p2p max_vir_bss=1 cal_data_cfg=none drv_mode=7 ps_mode=2 auto_ds=2 host_mlme=1 fw_name=nxp/<firmware>.bin.se
}

IW610

SDIW610 = { cfg80211_wext=0xf max_vir_bss=1 cal_data_cfg=none ps_mode=1 auto_ds=1 host_mlme=1 fw_name=nxp/<firmware>.bin.se
}

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 35 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.1.3.1 Combo firmware
To load the combo firmware, follow the step below.
Step 1 ­ Configure fw_serial=1 parameter in /lib/firmware/nxp/wifi_mod_para.conf for the wireless SoC combo firmware download.
. Refer to Section 4.1.1.1 for firmware types and Section 4.1.3 for more information on the load parameters.
Combo firmware syntax:
<Wi-Fi IF><Bluetooth IF><802.15.4 IF><device number>_combo_<version>.<binary security>
Step 2 ­ Load the drivers and firmware.
Note: Modprobe uses the default mlan.ko and moal.ko drivers located in /lib/modules/<Linux_Kernel>/updates. If other drivers are used, run insmod <driver>.ko in the same directory as the drivers.
Command when using wifi_mod_para.conf method:
modprobe moal mod_para=/nxp/wifi_mod_para.conf
Example of command output for 88W9098:
mlan: loading out-of-tree module taints kernel. wlan: Loading MWLAN driver wlan: Driver loaded successfully wlan: Register to Bus Driver... vendor=0x02DF device=0x914D class=0 function=1 Attach moal handle ops, card interface type: 0x106 SD9098: init module param from usr cfg card_type: SD9098, config block: 0 cfg80211_wext=0xf max_vir_bss=1 cal_data_cfg=none ps_mode = 1 auto_ds = 1 host_mlme=enable mac_addr=00:50:43:20:12:34 fw_name=nxp/sdiouart9098_combo_v1.bin SDIO: max_segs=128 max_seg_size=65535 rx_work=1 cpu_num=4 Attach mlan adapter operations.card_type is 0x106. wlan: Enable TX SG mode wlan: Enable RX SG mode Request firmware: nxp/sdiouart9098_combo_v1.bin Wlan: FW download over, firmwarelen=631336 downloaded 631336 WLAN FW is active fw_cap_info=0x81c3fa3, dev_cap_mask=0xffffffff max_p2p_conn = 8, max_sta_conn = 64 wlan: version = SD9098----17.92.1.p91-MM5X17293-GPL-(FP92) Set REG 0x90002328: 0x3000 slew_rate=3 vendor=0x02DF device=0x914E class=0 function=2 ...
Step 3 ­ Load btnxpuart.
modprobe btnxpuart
Step 4 ­ Bring up Bluetooth interface, hci0.
hciconfig hci0 up

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 36 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 5 ­ Verify that hci0 is up.
hciconfig -a
Command output example:
hci0: Type: Primary Bus: UART BD Address: 88:88:88:88:88:88 ACL MTU: 1021:7 SCO MTU: 120:6 UP RUNNING RX bytes:1513 acl:0 sco:0 events:92 errors:0 TX bytes:1282 acl:0 sco:0 commands:92 errors:0
Where BD Address: 88:88:88:88:88:88 is the default address of the Bluetooth device.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 37 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.1.3.2 Standalone Wi-Fi firmware
To load the standalone firmware, follow the steps below. Step 1 ­ Configure fw_name parameter in /lib/firmware/nxp/wifi_mod_para.conf for standalone Wi-Fi firmware download. Refer to Section 4.1.1.1 for firmware types and Section 4.1.3 for more information on the load parameters. Standalone Wi-Fi firmware syntax:
<Wi-Fi IF><device number>_wlan_<version>.<binary security>
Step 2 ­ Load the drivers and firmware. Note: Modprobe uses the default mlan.ko and moal.ko drivers located in /lib/modules/<Linux_Kernel>/updates. If other drivers are used, run insmod <driver>.ko in the same directory as the drivers. Command when using wifi_mod_para.conf method:
modprobe moal mod_para=/nxp/wifi_mod_para.conf
Example of command output:
wlan: Loading MWLAN driver ... Request firmware: nxp/sd_w61x_v1.bin.se Wlan: FW download over, firmwarelen=492724 downloaded 492724 ... WLAN FW is active wlan: version = SD9177----18.99.1.p154.23-MXM5X18312.p7_V1-MGPL ). wlan: Driver loaded successfully

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 38 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.1.3.3 Standalone Bluetooth/802.15.4 firmware via btnxpuart Linux Kernel versions greater than 6.1.22 include the built-in Bluetooth driver btnxpuart. The driver loads the Bluetooth and 802.15.4 firmware and brings up the Bluetooth interface hci0. For more information, refer to ref. [4]. To load the standalone Bluetooth and 802.15.4 firmware, the preferred method is with btnxpuart. Step 1 ­ Load btnxpuart.
modprobe btnxpuart
Step 2 ­ Bring up Bluetooth interface, hci0.
hciconfig hci0 up
Step 4 ­ Verify that hci0 is up.
hciconfig -a
Command output example:
hci0: Type: Primary Bus: UART BD Address: 88:88:88:88:88:88 ACL MTU: 1021:7 SCO MTU: 120:6 UP RUNNING RX bytes:1513 acl:0 sco:0 events:92 errors:0 TX bytes:1282 acl:0 sco:0 commands:92 errors:0
Where BD Address: 88:88:88:88:88:88 is the default address of the Bluetooth device.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 39 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.2 Bring-up and basic operation

4.2.1 Bring-up of Wi-Fi This section describes the steps for the Wi-Fi interfaces.

4.2.1.1 Bring up the Wi-Fi interface Use the following steps to bring up the Wi-Fi interfaces · Invoke the command to initialize mlan0 interface

ifconfig mlan0 up ifconfig mlan0

Command output example:

mlan0

Link encap:Ethernet HWaddr 00:50:43:24:83:c4 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

· Invoke the command to initialize the uap0 interface

ifconfig uap0 up ifconfig uap0

Command output example:

uap0

Link encap:Ethernet HWaddr 00:50:43:24:84:c4 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 40 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.2.2 Bring-up of Bluetooth This section describes two different methods to bring up the Bluetooth interfaces: · Bring up using NXP Bluetooth UART driver on the i.MX Linux BSP version L6.1.22 and later. · Bring up using Linux Open Source UART driver on i.MX Linux BSP version earlier than L6.1.22.
4.2.2.1 Bring-up of Bluetooth using btnxpuart Refer to Standalone Bluetooth/802.15.4 firmware via btnxpuart .
4.2.3 Bring-up of 802.15.4 (IW610 and IW612 only) Refer to the section Bring-up of 802.15.4 in ref.[18].

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 41 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.3 Error handling and fatal error recovery
4.3.1 Wi-Fi independent reset Refer to ref.[6].
4.3.2 Bluetooth independent reset This section describes the Bluetooth/Bluetooth LE independent reset (IR) feature and its verification. The independent reset feature allows the host to reset the Bluetooth controller and re download the Bluetooth only firmware through UART without powering OFF the Bluetooth controller. Where the host resets the controller and re downloads the firmware: · To initialize new operations · When the host detects unresponsiveness of the Bluetooth controller In addition, IR feature allows the Wi-Fi driver or the Bluetooth driver to reset and re download their own firmware without depending on each other. For example if the Wi-Fi and Bluetooth combo firmware has been downloaded initially, and the Bluetooth firmware is not responding to host, the host uses the independent reset feature to reset and re download the Bluetooth only firmware without affecting the Wi-Fi operations.
4.3.2.1 Bluetooth independent reset using in-band method This section describes the steps to verify the independent reset feature with the in-band method.
4.3.2.2 Bluetooth independent reset using NXP Bluetooth UART driver This section describes the in-band method of independent reset feature verification using NXP Bluetooth UART driver for i.MX Linux BSP kernel version 6.1.22 and later. Step 1 ­ Download the firmware and initialize the Bluetooth interface · To load the btnxpuart driver and to initialize the Bluetooth interface, refer to the section Bring up of Bluetooth
interface in ref.[18]. Step 2 ­ Set the in-band independent reset mode
# hcitool -I hci0 cmd 3f 0d 02 ff
Step 3 ­ Trigger in-band independent reset
# hcitool -I hci0 cmd 3f fc 00
The command allows the driver to re download the Bluetooth only firmware over UART.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 42 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.3.3 802.15.4 software recovery process example
This sub-section shows an example of recovery process on the i.MX host platform with out-of-band (OOB) IR using Linux shell script. Step 1 ­ Start ot-daemon.
ot-daemon "spinel+spi:///dev/spidev1.0?gpioreset-device=/dev/gpiochip5&gpio-int-device=/dev/ gpiochip5&gpio-intline=12&gpio-reset-line=13&spi-mode=0&spi-speed=1000000&spi-resetdelay=500" &
Note: Refer to OpenThread to rebuild ot-daemon with the following change if running this example on i.MX host platform platform. Other platforms do not need this change if the corresponding pin for ot-daemon gpioreset-line parameter is not connected with OpenThread RCP controller 802.15.4 OOB IR pin.
void SpiInterface::SetGpioValue(int aFd, uint8_t aValue) {
OT_UNUSED_VARIABLE(aFd); OT_UNUSED_VARIABLE(aValue); }
Step 2 ­ Create or join a Thread network. Follow the instructions in Section 5.3.1.1. Step 3 ­ Enable OOB IR feature.
ot-ctl ircfg 1
Step 4 ­ Copy ot-host-monitor.sh script from the wireless SoC software package to the i.MX host platform. Step 5 ­ Run ot-host-monitor.sh to monitor ot-daemon status and recover 802.15.4/Bluetooth from 802.15.4 unexpected exception status.
chmod 777 ot-host-monitor.sh ./ot-host-monitor.sh 60 S &

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 43 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Figure 15 shows an example of recovery scenario using ot-host-monitor.sh script.

Figure 15.Example of recovery scenario using ot-host-monitor.sh script
The scenario illustrated in Figure 15 proposes two recovery paths named PATH 1 and PATH 2:
· PATH 1: no recent ot-daemon stop is detected, recovery attempt by just restarting ot-daemon · PATH 2: ot-daemon unexpectedely stopped two successive times within less than [time value]. Need to trigger
OOB IR to re-download the firmware and restart ot-daemon to recover.
Note:
1. The script ot-host-monitor.sh auto exits if ot-daemon is not running first. 2. When a firmware redownload is mandatory to recover the functionality, ot-daemon takes longer than 20
seconds to exit again in error state. So, more than 20 seconds is suggested to prevent an endless loop of ot-daemon restart without a firmware download. 3. While ot-host-monitor.sh is running, an intentional stop/kill of ot-daemon triggers the recovery process. Stop the running ot-host-monitor.sh before stopping/killing ot-daemon. 4. The ECHO function within ot-host-monitor.sh automatically logs messages into /var/log/syslog. If the value of DEBUG variable is set to 1 in the script, the ECHO function also outputs messages directly in the Shell which started ot-host-monitor.sh script.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 44 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.4 Logging and debugging

4.4.1 Wi-Fi driver debugging This section explains how to enable driver debug logs and access debug information. Some debug logs can be enabled at runtime and driver load time. Other logs require to first rebuild the driver with a specific configuration. The firmware dump methods to generates dump file to debug on the firmware front are also detailed in this section.
4.4.1.1 Enable the driver debug logs This section provides the guidelines on how to enable the driver debug logs using either the module parameter or /proc at runtime.
4.4.1.1.1 Use the module parameter Use the drvdbg module parameter to enable driver debug logs while the driver is loading. Refer to Driver debug log types for the module parameter values. Load the module with drvdbg parameter:
modprobe moal mod_para=nxp/wifi_mod_para.conf drvdbg=<bit masks of driver debug message control>
Note: For the module parameters, refer to the Readme file in the software release.
4.4.1.1.2 Use /proc at runtime Use the following command to enable driver debug logs when the driver is already loaded:
echo "drvdbg=<bit masks of driver debug message control>" >> /proc/mwlan/<adapterX>/ <interface>/debug
Where adapterX = adapter0 for MAC0, and adapter# = adapter1 for MAC1

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 45 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.4.1.2 Driver debug log types

Table 4 lists the debug logs types exposed by the NXP driver for drvdbg parameter. The debug information can be enabled or disabled using either the module parameter ( Use the module parameter ) or /proc at runtime ( Use /proc at runtime ).

Table 4.NXP driver debug log types

Bit

Message

Log format

type

Description

Bit 0

MMSG

PRINTM(MMSG,...)

Set bit 0 to enable all driver logs with log level MMSG.

Bit 1

MFATAL

PRINTM(MFATAL,...)

Set bit 1 to enable all driver logs with log level MFATAL.

Bit 2

MERROR

PRINTM(MERROR,...)

Set bit 2 to enable all driver logs with log level MERROR.

Bit 3

MDATA

PRINTM(MDATA,...)

Set bit 3 to enable all driver logs with log level MDATA.

Bit 4

MCMND

PRINTM(MCMND,...)

Set bit 4 to enable all driver logs with log level MCMND.

Bit 5

MEVENT

PRINTM(MEVENT,...)

Set bit 5 to enable all driver logs with log level MEVENT.

Bit 6

MINTR

PRINTM(MINTR,...)

Set bit 6 to enable all driver logs with log level MINTR.

Bit 7

MIOCTL

PRINTM(MIOCTL,...)

Set bit 7 to enable all driver logs with log level MIOCTL.

Bit 16 MDAT_D

PRINTM(MDAT_D,...),

Set bit 16 to enable all driver logs with log level MDAT_D and

DBG_HEXDUMP(MDAT_D,...) provide the corresponding hexdump in dmesg logs.

Bit 17 MCMD_D

PRINTM(MCMD_D,...),

Set bit 17 to enable all driver logs with log level MCMD_D and

DBG_HEXDUMP(MCMD_D,...) provide the corresponding hexdump in dmesg logs.

Bit 18 MEVT_D

PRINTM(MEVT_D,...),

Set bit 18 to enable all driver logs with log level MEVT_D and

DBG_HEXDUMP(MEVT_D,...) provide the corresponding hexdump in dmesg logs.

Bit 19 MFW_D

PRINTM(MFW_D,...),

Set bit 19 to enable all driver logs with log level MFW_D and

DBG_HEXDUMP(MFW_D,...) provide the corresponding hexdump in dmesg logs.

Bit 20 MIF_D

PRINTM(MIF_D,...), DBG_HEXDUMP(MIF_D,...)

Set bit 20 to enable all driver logs with log level MIF_D and provide the corresponding hexdump in dmesg logs.

Bit 28 MENTRY

PRINTM(MENTRY,...), ENTER(), LEAVE()

Set bit 28 to enable all driver logs with API entry and exit.

Bit 29 MWARN

PRINTM(MWARN,...)

Set bit 29 to enable all driver logs with log level MWARN.

Bit 30 MINFO

PRINTM(MINFO,...)

Set bit 30 to enable all driver logs with log level MINFO.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 46 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.4.1.3 Firmware dump
This section shows how to retrieve the firmware memory from the device and dump it into a file for debugging purposes. A firmware dump can be triggered from the /proc. The driver also dumps the firmware memory in the auto recovery handling when a fatal error occurs for example due to command timeout or TX timeout. Command to trigger the firmware dump:
echo "debug_dump" >> /proc/mwlan/adapter0/config
Command output example:
[ 98.967103] func0: Wakeup device... [ 98.967561] func1: Wakeup device... [ 98.975362] mmlan0: [ 98.975369] | [ 99.927436] wlan: Notify FW dump complete event [ 99.933588] vendor event :0x1 [ 99.937144] vendor event :0x0 [ 104.162655] vendor event :0x0
Command for dual-MAC devices like 88W9098:
echo "debug_dump" >> /proc/mwlan/adapter1/config
Command output example:
[ 157.778776] func0: Wakeup device... [ 157.983260] func1: Wakeup device... [ 158.187669] func1: Wakeup device... [ 158.202021] wlan: Notify FW dump complete event [ 158.206572] vendor event :0x1 [ 158.209607] vendor event :0x0
Command to collect the firmware dump in a file:
cat /proc/mwlan/adapter0/fw_dump > file_fw_dump
Use the following commands to collect driver dumps in files:
cat /proc/mwlan/adapter0/drv_dump > file_drv_dump cat /proc/mwlan/adapter1/drv_dump > file_drv_dump_2

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 47 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.4.2 Bluetooth debugging This section details the Bluetooth Protocol and Driver Debugging using hcidump, btmon and dmesg logs.

4.4.2.1 Bluetooth protocol debugging

4.4.2.1.1 Capture the HCI logs using hcidump
Follow these steps to capture the HCI logs between the i.MX 8M Quad EVK and NXP-based module using hcidump utility.
Step 1 ­ Start capturing HCI logs.
Use the following command to start the HCI logs and store these in the file. Use Frontline Bluetooth Software tool to open the log file:

hcidump -i hci0 -w sample_hci.log & [1] 770 HCI sniffer - Bluetooth packet analyzer ver 5.65 btsnoop version: 1 datalink type: 1002 device: hci0 snap_len: 1500 filter: 0x0

Step 2 ­ Start capturing HCI logs and store in text format.

hcidump -i hci0 -Xt | tee sample_hci.txt & [3] 825

Step 3 ­ Connect with a Bluetooth Classic/Bluetooth LE device. Refer to Scan, pair and connect to Bluetooth classic/Bluetooth LE . Step 4 ­ Stop capturing HCI logs.

killall hcidump [1]+ Terminated

hcidump -i hci0 -w sample_hci.log

Step 5 ­ Copy the sample_hci.log file to the host PC. Note: hcidump utility may crash during testing. If this occurs, use btmon utility.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 48 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.4.2.1.2 Capture the HCI Logs using btmon
Follow these steps to capture the HCI logs between the i.MX host platform and wirless SoC using btmon utility.
Use the following command to start the HCI logs and store these in the file. You can use Wireshark tool and Wireshark Software to open the log file:
btmon -w sample_hci.log & [1] 951 Bluetooth monitor ver 5.65 = Note: 5.15.32-lts-next+g4c9269301068 (aarch64) 0.329450 = Note: Bluetooth subsystem version 2.22 0.329459 = New Index: 34:6F:24:C0:CA:3A (Primary,UART,hci0) [hci0] 0.329462 = Open Index: 34:6F:24:C0:CA:3A [hci0] 0.329463 = Index Info: 34:6F:24:C0:CA:3A [hci0] 0.329465 @ MGMT Open: bluetoothd (privileged) version 1.21 {0x0001} 0.329473

Step 1 ­ Start capturing the HCI logs and store the logs in text format.

btmon | tee sample_hci.txt & [1] 780

Connect with a Bluetooth Classic/LE device Refer to Scan, pair and connect to Bluetooth classic/Bluetooth LE . Step 2 ­ Stop capturing the HCI logs.

killall btmon [1]+ Done

btmon -w sample_hci.log

Step 3 ­ Copy the sample_hci.log file to the host PC.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 49 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.4.2.1.3 Extract the Link Key for remote Bluetooth Classic/Bluetooth LE devices
Follow these steps to get the link key for paired Bluetooth Classic/Bluetooth LE devices: Step 1 ­ Get the information for Bluetooth Classic and/or Bluetooth LE devices.
cat /var/lib/bluetooth/<DUT BD Address>/<Remote BD Address>/info
Example 1: Get the Link Key for a Bluetooth device.
cat /var/lib/bluetooth/00:50:43:24:34:F7/B4:F5:00:31:CB:4E/info [LinkKey] Key=7CC2A6C9AA14F799F9E596B90FC973BC Type=8 PINLength=0
Example 2: Get the Long Term Key for a Bluetooth LE device.
cat /var/lib/bluetooth/00:50:43:24:34:F7/D4:18:20:A0:48:5F/info [LongTermKey] Key=AA3E7062B5B9415F9F27A5010690412A Authenticated=0 EncSize=16 EDiv=10551 Rand=730759945871301339

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 50 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.4.2.2 Bluetooth driver debugging
Command to get and analyze the Bluetooth logs using dmesg utility:
dmesg | grep Bluetooth [ 0.225403] Bluetooth: Core ver 2.22 [ 0.225431] Bluetooth: HCI device and connection manager initialized [ 0.225440] Bluetooth: HCI socket layer initialized [ 0.225446] Bluetooth: L2CAP socket layer initialized [ 0.225458] Bluetooth: SCO socket layer initialized [ 1.775437] Bluetooth: HCI UART driver ver 2.3 [ 1.779894] Bluetooth: HCI UART protocol H4 registered [ 1.785041] Bluetooth: HCI UART protocol BCSP registered [ 1.790390] Bluetooth: HCI UART protocol LL registered [ 1.795534] Bluetooth: HCI UART protocol ATH3K registered [ 1.800958] Bluetooth: HCI UART protocol Three-wire (H5) registered [ 1.807322] Bluetooth: HCI UART protocol Broadcom registered [ 1.813003] Bluetooth: HCI UART protocol QCA registered [ 2.284553] Bluetooth: RFCOMM TTY layer initialized [ 2.289447] Bluetooth: RFCOMM socket layer initialized [ 2.294614] Bluetooth: RFCOMM ver 1.11 [ 2.298396] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 2.303714] Bluetooth: BNEP filters: protocol multicast [ 2.308948] Bluetooth: BNEP socket layer initialized [ 2.313918] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 [ 2.319849] Bluetooth: HIDP socket layer initialized

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 51 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.5 Reporting an issue or posting a query
If you need additional support or if you encounter an issue, open a case or community post on the website. · Create a case for a project. Only the project assignees and NXP can view the case. · Create a community post that anyone can access. NXP addresses both cases and community posts.
4.5.1 Opening a case To open a case: Step 1 ­ Click Sign in/Register on the top banner of NXP website (Figure 16).

Figure 16.Click Sign in/Register on NXP website Step 2 ­ Capture our credentials or click Create an account (Figure 17).

Figure 17.Capture your credential or create an account Step 2 ­ Go to NXP Support page (ref.[43]).

Figure 18.NXP support page
RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 52 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 3 ­ Create a case (Figure 19).

Figure 19.Create a case

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 53 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 4 ­ Capture information such as product number, topic, and priority (Figure 20).

Figure 20.Capture information about the case
Step 5 ­ Select an existing project or create a project. A project consists of the end application, expected annual volume, end customer name, and more.

Figure 21.Select or create a project

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 54 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 6 ­ Capture more details about the case. Provide as much information as possible to speed up the process. Examples of helpful information are:
· Hardware set up · Host platform · Wireless SoC · Driver version · Linux Kernel, Android Kernel, or FreeRTOS SDK version · Firmware dumps · Wireless sniffer logs · Dmesg logs · Steps to recreate the issues
NXP sends a response within 24 hours. Depending on the issue complexity or priority, an NXP representative may be assigned to your case.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 55 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

4.5.2 Community post To open a community post: Step 1 ­ Click Sign in/Register on the top banner of NXP website (Figure 22).

Figure 22.Click Sign in/Register on NXP website Step 2 ­ Capture our credentials or click Create an account (Figure 23).

Figure 23.Capture your credential or create an account Step 3 ­ Go to SUPPORT > NXP Community (ref.[42]).

Figure 24.Access to NXP Community page

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 56 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 4 ­ Click ASK A QUESTION (Figure 25).

Figure 25.ASK A QUESTION button on NXP Community page
Step 5 ­ Set the location to NXP community > Forums > Product Forums > Wireless Connectivity > Wi-Fi + Bluetooth + 802.15.4. (Figure 26).

Figure 26.Set the location
Step 6 ­ Capture more details about your community post. Provide as much information as possible to speed up the process. Examples of helpful information:
· Hardware set up · Host platform · Wireless SoC · Driver version · Linux Kernel, Android Kernel, or FreeRTOS SDK version · Firmware dumps · Wireless sniffer logs · Dmesg logs · Steps to recreate the issues

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 57 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5 Connectivity features

5.1 Wi-Fi

5.1.1 Scan
This section describes the scanning of the visible Access Points using the NXP-based wireless module. Linux operating system provides the standard utilities to show/manipulate wireless devices and their configuration.

5.1.1.1 Using iw command iw command is one of the methods used to scan visible access points. Execute the command to start the scan

iw dev mlan0 scan

Command output example:

[11204.740176] wlan: mlan0 START SCAN

[11207.573646] wlan: SCAN COMPLETED: scanned AP count=1

BSS 44:82:e5:10:2c:38(on mlan0)

TSF: 11207445411 usec (0d, 03:06:47)

freq: 2427

beacon interval: 100 TUs

capability: ESS Privacy ShortPreamble ShortSlotTime RadioMeasure (0x1431)

signal: -56.00 dBm

last seen: 0 ms ago

SSID: destin

Supported rates: 1.0* 2.0* 5.5* 6.0 9.0 11.0* 12.0 18.0

DS Parameter set: channel 4

Country: in Environment: Indoor/Outdoor

Channels [1 - 13] @ 21 dBm

TPC report: TX power: 20 dBm

ERP: NonERP_Present Use_Protection

RSN:

* Version: 1

* Group cipher: TKIP

* Pairwise ciphers: CCMP TKIP

* Authentication suites: PSK

* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)

WPA:

* Version: 1

* Group cipher: TKIP

* Pairwise ciphers: CCMP TKIP

* Authentication suites: PSK

WMM:

* Parameter version 1

* BE: CW 15-1023, AIFSN 3

* BK: CW 15-1023, AIFSN 7

* VI: CW 7-15, AIFSN 2, TXOP 3008 usec

* VO: CW 3-7, AIFSN 2, TXOP 1504 usec

Extended supported rates: 24.0 36.0 48.0 54.0

BSS Load:

* station count: 4

* channel utilisation: 52/255

* available admission capacity: 0 [*32us]

HT capabilities:

Capabilities: 0x11ed

RX LDPC

HT20

SM Power Save disabled

RX HT20 SGI

RX HT40 SGI

TX STBC

RX STBC 1-stream

Max AMSDU length: 3839 bytes

DSSS/CCK HT40

Maximum RX AMPDU length 65535 bytes (exponent: 0x003)

Minimum RX AMPDU time spacing: 4 usec (0x05)

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 58 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

HT TX/RX MCS rate indexes supported: 0-15 HT operation:
* primary channel: 4 * secondary channel offset: no secondary * STA channel width: 20 MHz * RIFS: 0 * HT protection: nonmember * non-GF present: 1 * OBSS non-GF present: 1 * dual beacon: 0 * dual CTS protection: 0 * STBC beacon: 0 * L-SIG TXOP Prot: 0 * PCO active: 0 * PCO phase: 0 Overlapping BSS scan params:
* passive dwell: 20 TUs * active dwell: 10 TUs * channel width trigger scan interval: 300 s * scan passive total per channel: 200 TUs * scan active total per channel: 20 TUs * BSS width channel transition delay factor: 5 * OBSS Scan Activity Threshold: 0.25 % Extended capabilities: * HT Information Exchange Supported * BSS Transition

5.1.1.2 Get wpa_supplicant version Command to get wpa_supplicant version
wpa_supplicant -v
Command output example:
wpa_supplicant v2.11 Copyright (c) 2003-2024, Jouni Malinen <[email protected]> and contributors

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 59 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.1.3 Using wpa_supplicant and wpa_cli commands
You can also use wpa_supplicant and wpa_cli to scan the visible access points. Edit the configuration file:
nano /etc/wpa_supplicant.conf
Content of the configuration file:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={
key_mgmt=NONE }
Start wpa_supplicant in the background
killall wpa_supplicant wpa_supplicant -B -i mlan0 -c /etc/wpa_supplicant.conf
Start wpa_cli for the scan
wpa_cli
Command output:
wpa_cli v2.11 Copyright (c) 2004-2024, Jouni Malinen <[email protected]> and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'mlan0' Interactive mode
Start the scanning:
> scan
Command output example showing the scanned AP count and the SCAN COMPLETE event:
OK [ 253.835605] wlan: mlan0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED > [ 258.910760] wlan: SCAN COMPLETED: scanned AP count=1 <3>CTRL-EVENT-SCAN-RESULTS <3>CTRL-EVENT-NETWORK-NOT-FOUND

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 60 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Get the scan results:
> scan_results
Command output example showing one SSID:
bssid / frequency / signal level / flags / ssid 44:82:e5:10:2c:38 2442 -93 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] destin

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 61 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.2 Association
This section shows how to define the configurations for wpa_supplicant to connect with the Access Point using NXP-based wireless module. Linux operating system provides the wpa_supplicant user space utility to connect to the access point using various security settings like WPA2, WPA3, and 802.1x enterprise security.
5.1.2.1 Create the configuration file
Create and edit wpa_supplicant.conf configuration file in etc directory.
nano /etc/wpa_supplicant.conf
Configuration file content
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={
ssid="<value-for-your-network>" key_mgmt=<value-for-your-network> }
Note: Add the value of ssid parameter for your network, and the value of key_mgnt parameter based on the authentication key management protocols of your network. Refer to wpa_supplicant.conf file (link) for information about the configuration format and supported fields.
Example of configuration file content:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={ ssid="NXP_Demo" key_mgmt=NONE }

5.1.2.2 Use wpa_supplicant to connect with the AP
Connect the device with the Access Point:
killall wpa_supplicant killall hostapd wpa_supplicant -i mlan0 -Dnl80211 ­c /etc/wpa_supplicant.conf
Command output example:
Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL contro[25602.796098] IPv6: ADDRCONF(NETDEV_UP): mlan0: link is
not ready [25602.922052] wlan: mlan0 START SCAN [25607.566402] wlan: SCAN COMPLETED: scanned AP count=18
mlan0: Trying to associate with 1a:2d:8c:55:73:56 (SSID='NXP_Demo' freq=2427 MHz) [25607.598754] wlan: Connected to bssid 1a:XX:XX:XX:73:56 successfully
mlan0: Associated with 1a:2d:8c:5[25607.606587] IPv6: ADDRCONF(NETDEV_CHANGE): mlan0: link becomes ready 5:73:56
mlan0: CTRL-EVENT-CONNECTED - Connection to 1a:2d:8c:55:73:56 completed [id=0 id_str=]

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 62 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.3 STA security features
This section describe the Wi-Fi security features including the WPA2 and WPA3 SAE security modes. Both the configuration and setup use the open source supplicants.
5.1.3.1 WPA2 security
This section shows the hostapd configuration used to configure WPA2 security and start the Access Point using open source supplicant.
Create the configuration file Configure WPA2 for open source supplicant:
nano /etc/hostapd-wpa2.conf
Configuration file content:
interface=uap0 hw_mode=g channel=0 country_code=US ssid=NXP_Demo auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=123456789

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 63 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Start the Access Point
Run the following command to start the Access Point:
killall wpa_supplicant killall hostapd ifconfig uap0 192.168.1.2 netmask 255.255.255.0 up route add default gw 192.168.1.1 hostapd /etc/hostapd-wpa2.conf
Command output example:
Configuration file: /etc/hostapd-wpa2.conf rfkill: Cannot open RFKILL control device uap0: interface state UNINITIALIZED->COUNTRY_UPDATE ACS: Automatic channel selection started, this may take a bit [20039.122775] wlan: SCAN COMPLETED: scanned AP count=0 uap0: interface state COUNTRY_UPDATE->ACS uap0: ACS-STARTED [20039.603743] wlan: SCAN COMPLETED: scanned AP count=0 [20040.087711] wlan: SCAN COMPLETED: scanned AP count=0 [20040.571527] wlan: SCAN COMPLETED: scanned AP count=0 [20041.051179] wlan: SCAN COMPLETED: scanned AP count=0 uap0: ACS-COMPLETED freq=2412 channel=1 Using interface uap0 with hwaddr 00:50:43:24:84:c4 and ssid "NXP_Demo" random: Cannot read from /dev/random: Resource temporarily unavai[20041.091736] wlan:
Starting AP lable random: Only 0/20 bytes of strong random data available r[20041.100179] Get ht_cap from beacon ies: 0xc andom: Not enough entropy pool available for secure operations WPA: Not enough entropy in random pool for secure operations - update keys later when the
first station connects [20041.120927] wlan: AP started [20041.130905] Set AC=3, txop=47 cwmin=3, cwmax=7 aifs=1 [20041.138053] Set AC=2, txop=94 cwmin=7, cwmax=15 aifs=1 [20041.145411] Set AC=0, txop=0 cwmin=15, cwmax=63 aifs=3 [20041.152528] Set AC=1, txop=0 cwmin=15, cwmax=1023 aifs=7 uap0: interface state ACS->ENABLED
uap0: AP-ENABLED

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 64 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.3.1.1 Configure WPA2 to connect with the AP using an open source supplicant
This section describes the configuration for wpa_supplicant to configure WPA2 security and connect with the Access Point.
Edit the configuration
Command to configure WPA2 to connect with the AP for an open source supplicant:
nano /etc/wpa_supplicant.conf
Configuration file content:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1
ap_scan=1 network={
ssid="NXP_Demo" key_mgmt=WPA-PSK proto=RSN pairwise=CCMP group=CCMP psk="123456789" }
Connect with the AP
Run the following commands to connect the device with the WPA2-based AP:
killall wpa_supplicant killall hostapd wpa_supplicant -i mlan0 -Dnl80211 -c /etc/wpa_supplicant.conf
Command output example:
Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device [33831.070886] wlan: mlan0 START SCAN [33835.714782] wlan: SCAN COMPLETED: scanned AP count=19 mlan0: Trying to associate with 44:82:e5:10:2c:38 (SSID='NXP_Demo' freq=2427 MHz) [33835.735938] wlan: Connected to bssid 44:XX:XX:XX:2c:38 successfully mlan0: Associated with 44:82:e5:10:2c:38 mlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 mlan0: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=IN mlan0: WPA: Key negotiation compl[33835.760667] IPv6: ADDRCONF(NETDEV_CHANGE): mlan0:
link becomes ready eted with 44:82:e5:10:2c:38 [PTK=[33835.770113] woal_cfg80211_set_rekey_data return:
gtk_rekey_offload is DISABLE CCMP GTK=TKIP] mlan0: CTRL-EVENT-CONNECTED - Connection to 44:82:e5:10:2c:38 completed [id=0 id_str=]

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 65 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.3.2 WPA3 security
WPA3 is the next generation of Wi-Fi security with new capabilities that enhance the Wi-Fi protection in personal and enterprise networks. Built on the widely adopted WPA2TM, WPA3 adds new features to simplify WiFi security, enable more robust authentication, and deliver increased cryptographic strength for highly sensitive data markets.
All WPA3 networks use the latest security methods, disallow outdated legacy protocols, and require the use of Protected Management Frames (PMF) to maintain resiliency of mission critical networks.
This section describes the configurations for WPA3 SAE and SAE transition mode (backward compatibility with WPA2-PSK) using hostapd and wpa_supplicant for Access Point and Station.
Configure WPA3 SAE mode for the Access Point
Create the configuration file:
nano /etc/hostapd-wpa3-sae.conf
Configuration file content:
interface=uap0 driver=nl80211 ssid=NXP_Demo hw_mode=g channel=6 wmm_enabled=1 ieee80211n=1 auth_algs=1 wpa=2 wpa_pairwise=CCMP wpa_passphrase=1234567890 wpa_key_mgmt=SAE wpa_group_rekey=1800 rsn_pairwise=CCMP ieee80211w=2 sae_groups=19 20 21 sae_require_mfp=1 sae_anti_clogging_threshold=10

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 66 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Configure WPA3 SAE transition mode for the Access Point
Create the configuration file:
nano /etc/hostapd-wpa3-sae.conf
Configuration file content:
interface=uap0 driver=nl80211 ssid=NXP_Demo hw_mode=g channel=6 wmm_enabled=1 ieee80211n=1 auth_algs=1 wpa=2 wpa_pairwise=CCMP wpa_passphrase=1234567890 wpa_key_mgmt=WPA-PSK SAE wpa_group_rekey=1800 rsn_pairwise=CCMP ieee80211w=1 sae_groups=19 20 21 25 26 sae_require_mfp=1 sae_anti_clogging_threshold=10
Start the Access Point
Run the following command to start the Access Point:
killall wpa_supplicant killall hostapd ifconfig uap0 192.168.1.2 netmask 255.255.255.0 up route add default gw 192.168.1.1 hostapd /etc/hostapd-wpa3-sae.conf
Command output example:
Configuration file: /etc/hostapd-wpa3-sae.conf rfkill: Cannot open RFKILL control device [ 758.651665] wlan: HostMlme uap0 send deauth/disassoc Using interface uap0 with hwaddr 70:66:55:26:8b:6b and ssid "NXP_Demo" random: Only 19/20 bytes of stron[ 758.671118] wlan: Starting AP g random data available random: [ 758.677273] Get ht_cap from beacon ies: 0xc Not enough entropy pool available[ 758.683524] fw doesn't support 11ax for secure operations WPA: Not enough entropy in random pool for secure operations - update key[ 758.698627]
wlan: AP started s later when the first station co[ 758.703624] Set AC=3, txop=47 cwmin=3, cwmax=7 aifs=1 nnects [ 758.711651] Set AC=2, txop=94 cwmin=7, cwmax=15 aifs=1 [ 758.718678] Set AC=0, txop=0 cwmin=15, cwmax=63 aifs=3 [ 758.725701] Set AC=1, txop=0 cwmin=15, cwmax=1023 aifs=7 uap0: interface state UNINITIALIZED->ENABLED uap0: AP-ENABLED

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 67 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Configure WPA3 SAE mode to connect with the AP configured with WPA3 SAE
Create the configuration file
nano /etc/wpa_supplicant.conf
Configuration file content:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={
ssid="NXP_Demo" scan_ssid=1 key_mgmt=SAE proto=RSN pairwise=CCMP group=CCMP psk="1234567890" ieee80211w=2 }
Connect with the AP
Commands to connect the device with the AP
killall wpa_supplicant killall hostapd wpa_supplicant -i mlan0 -Dnl80211 ­c /etc/wpa_supplicant.conf
Command output example
Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device [ 145.646509] wlan: mlan0 START SCAN [ 150.026650] wlan: SCAN COMPLETED: scanned AP count=2 mlan0: SME: Trying to authenticate with 00:50:43:23:3c:0e (SSID='NXP_Demo' freq=2437 MHz) [ 150.056535] mlan0: [ 150.056539] wlan: HostMlme Auth received from 00:XX:XX:XX:3c:0e mlan0: SME: Trying to authenticate with 00:50:43:23:3c:0e (SSID='NXP_Demo' freq=2437 MHz) [ 150.073767] mlan0: [ 150.073771] wlan: HostMlme Auth received from 00:XX:XX:XX:3c:0e mlan0: PMKSA-CACHE-ADDED 00:50:43:23:3c:0e 0 mlan0: Trying to associate with 00:50:43:23:3c:0e (SSID='NXP_Demo' freq=2437 MHz) [ 150.097756] wlan: HostMlme mlan0 Connected to bssid 00:XX:XX:XX:3c:0e successfully mlan0: Associated with 00:50:43:23:3c:0e[ 150.107410] mlan0: mlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 [ 150.107416] wlan: Send EAPOL pkt to 00:XX:XX:XX:3c:0e [ 150.126490] mlan0: [ 150.126494] wlan: Send EAPOL pkt to 00:XX:XX:XX:3c:0e mlan0: WPA: Key negotiation completed with 00:50:43:23:3c:0e [PTK[ 150.135343] IPv6:
ADDRCONF(NETDEV_CHANGE): mlan0: link becomes ready =CCMP GTK=CCMP] mlan0: CTRL-EVENT-CONNECTED - Connection to 00:5[ 150.148453]
woal_cfg80211_set_rekey_data return: gtk_rekey_offload is DISABLE 0:43:23:3c:0e completed [id=0 id_str=]
Note: When WPA3-SAE is configured on AP, WPA3 SAE is used on STA to connect with the AP. When WPA3SAE transition mode is configured on AP, then either WPA3 SAE or WPA2-PSK can be used on STA to connect with the AP.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 68 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.3.3 Wi-Fi Enhanced Open
This section describes the testing procedure of Wi-Fi Enhanced Open security feature. The Wi-Fi Enhanced Open is a new WFA security standard for public networks based on opportunistic wireless encryption (OWE) which provides protections against passive eavesdropping without requiring a password or extra steps to join the network. It integrates established cryptography mechanisms to provide each user with unique individual encryption that protects data exchange between a user device and the Wi-Fi network.
Configure OWE mode for the Access Point
Note: Add the value of ssid parameter for your network.
Create the configuration file:
nano /etc/hostapd-owe.conf
Configuration file content:
ctrl_interface=/var/run/hostapd interface=uap0 driver=nl80211 ssid=<value for your network> hw_mode=g channel=6 beacon_int=100 wmm_enabled=1 max_num_sta=10 ieee80211n=1 rts_threshold=2347 fragm_threshold=2346 ht_capab=[HT20+][SHORT-GI-20][RX-STBC1] wpa=2 wpa_pairwise=CCMP ieee80211w=2 wpa_key_mgmt=OWE wpa_group_rekey=60
Start the Access Point
Run the following command to start the Access Point:
killall wpa_supplicant killall hostapd ifconfig uap0 192.168.1.2 netmask 255.255.255.0 up route add default gw 192.168.1.1 hostapd /etc/hostapd-owe.conf
Command output example:
rfkill: Cannot open RFKILL control device uap0: interface state UNINITIALIZED->ENABLED uap0: AP-ENABLED

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 69 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Configure OWE mode to connect with the AP configured with OWE
Note: Add the value of ssid parameter for your network.
Create the configuration file
nano /etc/wpa_supplicant.conf
Configuration file content:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={
ssid="<value for a network>" key_mgmt=OWE pairwise=CCMP scan_ssid=1 ieee80211w=2 }
Connect with the AP
Commands to connect the device with the AP:
killall wpa_supplicant killall hostapd wpa_supplicant -i mlan0 -Dnl80211 -c /etc/wpa_supplicant.conf
Command output example with SSID = NXP_Demo
Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device mlan0: CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN mlan0: CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN mlan0: CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN mlan0: CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN mlan0: SME: Trying to authenticate with 36:6f:24:c0:cb:a1 (SSID='NXP_Demo' freq=2437 MHz) mlan0: Trying to associate with 36:6f:24:c0:cb:a1 (SSID='NXP_Demo' freq=2437 MHz) mlan0: PMKSA-CACHE-ADDED 36:6f:24:c0:cb:a1 0 mlan0: Associated with 36:6f:24:c0:cb:a1 mlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 mlan0: WPA: Key negotiation completed with 36:6f:24:c0:cb:a1 [PTK=CCMP GTK=CCMP] mlan0: CTRL-EVENT-CONNECTED - Connection to 36:6f:24:c0:cb:a1 completed [id=0 id_str=]

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 70 / 203

NXP Semiconductors
Verification from sniffer traces Association request:

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Figure 27.Association request example

Figure 28.Association request example (continued)

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 71 / 203

NXP Semiconductors
Association response:

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Figure 29.Association response example

Figure 30.Association response example (continued)

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 72 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.4 STA roaming and configuration
This section describes the IEEE 802.11r roaming configurations and enablement. The feature is based on the Fast Transition (FT). FT is faster than normal roaming as it avoids a 4-way handshake when transitioning from one AP to another. Read more about 802.11kvr roaming in ref.[5].
Refer to the following steps to configure and enable the 802.11r roaming.
Note: wpa_supplicant version 2.7 or above is required for Fast Transition. Step 1 ­ Enable IEE80211R · Edit the configuration file located in hostap/wpa_supplicant/ directory from wpa_supplicant source.

nano hostap/wpa_supplicant/.config

· Set CONFIG_IEEE80211R parameter to y.

CONFIG_IEEE80211R=y

· To enable the configuration, re-compile the supplicant binary. Step 2 ­ Create wpa_supplicant.conf configuration file. Note: Add the value of ssid parameter for your network.

nano /etc/wpa_supplicant.conf

Configuration file content:

ctrl_interface=/var/run/wpa_supplicant

ctrl_interface_group=0

update_config=1

ap_scan=1

network={

ssid="<your network>"

key_mgmt=FT-PSK #Fast Transition Key Management

proto=RSN

pairwise=CCMP

group=CCMP

psk="1234567890"

bgscan="simple:30:-75:120"

#Background scan settings

}

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 73 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 3 - Set the background scanning parameter bgscan.

bgscan="simple:<short-scan-interval>:<signal-strength-threshold>:<long-scan-interval>"

Where: Table 5.Command parameters Parameter short-scan-interval
signal-strength-threshold long-scan-interval

Description
Perform a scan every user defined number of seconds when the signal strength is weaker than the threshold
Signal strength from AP (dBm)
Perform a scan every user defined number of seconds when the signal strength is higher than the threshold

Example of command:

bgscan="simple:30:-75:120"

In the example above, the scan starts every 30 seconds when the signal strength from the current AP is below -75 dBm. If the signal strength is above -75dBm, the scan starts every 120 seconds.
Step 4 ­ Run wpa_supplicant.

wpa_supplicant -B -Dnl80211 -imlan0 -c/etc/wpa_supplicant.conf

Command output example:

Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL contr device mlan0: SME: Trying to authenticate with 5c:df:89:0f:32:7c (SSID='NXP_V10' freq=5180 MHz) mlan0: Trying to associate with 5c:df:89:0f:32:7c (SSID='NXP_V10' freq=5180 MHz) mlan0: Associated with 5c:df:89:0f:32:7c mlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 mlan0: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=IN mlan0: WPA: Key negotiation completed with 5c:df:89:0f:32:7c [PTK=CCMP GTK=CCMP] mlan0: CTRL-EVENT-CONNECTED - Connection to 5c:df:89:0f:32:7c completed [id=0 id_str=]

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 74 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.5 STA provisioning protocols

5.1.5.1 Wi-Fi easy connect (DPP) This section describes: · The test procedure of Wi-Fi easy connect (DPP) using wpa_supplicant · How to configure the Wi-Fi devices in STA and AP modes · How to use DPP feature to connect the STA and AP devices The Wi-Fi easy connect feature provides a simple and secure method to provision and connect Wi-Fi devices to a network without entering a password. Refer to the following steps to configure, enable and test Wi-Fi easy connect feature. Step 1 ­ Enable DPP · Edit the configuration file located in hostap/wpa_supplicant/ directory from wpa_supplicant source
nano hostap/wpa_supplicant/.config
· Set CONFIG_DPP parameter to y
CONFIG_DPP=y
· Edit the configuration file located in hostap directory
nano hostap/.config
· Set CONFIG_DPP parameter to y
CONFIG_DPP=y
· Set CONFIG_INTERWORKING parameter to y
CONFIG_INTERWORKING=y
· To enable the configuration, re-compile the supplicant and hostapd binaries

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 75 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 2 ­ Create the configuration files for hostapd and wpa_supplicant Create the configuration file for wpa_supplicant (Wi-Fi device set as STA)
nano /etc/wpa_supplicant.conf
Configuration file content:
ctrl_interface=/var/run/wpa_supplicant update_config=1 dpp_config_processing=2
Create the configuration file for hostapd (Wi-Fi device set as STA)
nano /etc/hostapd.conf
Configuration file content:
ctrl_interface=/var/run/hostapd interface=uap0 driver=nl80211 hw_mode=g channel=1 ieee80211n=1 ssid=unconfigured

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 76 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 3 ­ Test procedure Test - DUT as Enrollee, Initiator(Authentication), enrolled as STA Test setup: · The DUT acts as initiator and enrollee · The DUT is configured as STA and STA using wpa_supplicant · The compliance test tool CCT1 acts as configurator · The compliance test tool CCT2 acts as responder and enrollee · CCT2 is configured as AP and AP using hostapd During the test, the QR code test steps (values in ()) represent the command returned value. The command in <> represents the optional value. · Start wpa_supplicant on DUT and CTT1 (configurator)
wpa_supplicant -i mlan0 -D nl8021 -c /etc/wpa_supplicant.conf -B
Command output:
Successfully initialized wpa_supplicant
· Start the hostapd on CTT2 (AP)
hostapd /etc/hostapd.conf -B
Command output:
uap0: interface state UNINITIALIZED->ENABLED uap0: AP-ENABLED
· Start wpa_cli in interactive mode on DUT(STA) and CTT1 (configurator)
wpa_cli
Command output:
wpa_cli v2.11 Copyright (c) 2004-2024, Jouni Malinen <[email protected]> and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'mlan0' Interactive mode

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 77 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

· Start hostapd_cli in interactive mode on CTT2 (AP)
hostapd_cli
Command output:
hostapd_cli v2.11 Copyright (c) 2004-2024, Jouni Malinen <[email protected]> and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'uap0' Interactive mode
· Add a Configurator and generate QR code on CTT1 (configurator).
> DPP_CONFIGURATOR_ADD 1
Returned 1 in above command is config id.
> SET dpp_configurator_params " conf=sta-dpp configurator=1" OK > DPP_BOOTSTRAP_GEN type=qrcode chan=81/1 mac=34:6f:24:c0:cc:36 1
Note: MAC address of CTT1 should input in above command and returned 1 is bootstrap info id which require to QR code
> DPP_BOOTSTRAP_GET_URI 1 DPP:C:81/1;M:346f24c0cc36;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgAC2/+qun/54bZKrB2cQCGGJKZ/ tdn2mU7VURZumqrik0s=;;
Note: This QR code will be use on DUT with command DPP_QR_CODE.
> DPP_LISTEN 2412 role=configurator OK
· Authenticate the DUT on DUT(STA)
> DPP_QR_CODE DPP:C:81/1;M:346f24c0cc36;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgAC2/ +qun/54bZKrB2cQCGGJKZ/tdn2mU7VURZumqrik0s=;; 1
Note: On successfully adding QR Code, a bootstrapping info id is returned as shown 1 in above command and should input in below command DPP_AUTH_INIT
> DPP_AUTH_INIT peer=1 role=enrollee OK

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 78 / 203

NXP Semiconductors
Command output on the DUT:

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Figure 31.Command output on the DUT
Command output on CTT1:
<3>DPP-RX src=34:6f:24:c0:ca:a1 freq=2412 type=0 <3>DPP-TX dst=34:6f:24:c0:ca:a1 freq=2412 type=1 <3>DPP-TX-STATUS dst=34:6f:24:c0:ca:a1 freq=2412 result=SUCCESS <3>DPP-RX src=34:6f:24:c0:ca:a1 freq=2412 type=2 <3>DPP-AUTH-SUCCESS init=0

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 79 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Stop scanning on the DUT:
> DPP_STOP_LISTEN OK
· Generate the QR Code and get URI on CTT2
> DPP_BOOTSTRAP_GEN type=qrcode chan=81/1 mac=4a:e7:da:25:61:c2 1
Note: MAC address of CTT2 should input in above command and returned 1 is bootstrap info id which require to get QR code in below command.
> DPP_BOOTSTRAP_GET_URI 1 DPP:C:81/1;M:4ae7da2561c2;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgACVx+FI/ m3+14cb4jx2tc66gopHv44bY2Q65W0OZJtgDI=;;>
· Enter the QR Code in the configurator CTT1 and authenticate:
> DPP_QR_CODE DPP:C:81/1;M:4ae7da2561c2;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgACVx+FI/ m3+14cb4jx2tc66gopHv44bY2Q65W0OZJtgDI=;; 2
Note: On successfully adding QR Code, a bootstrapping info id is returned as shown 2 in above command and should input in below command DPP_AUTH_INIT
> DPP_AUTH_INIT peer=2 conf=ap-dpp configurator=1 OK
Command output on CTT2:

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 80 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Figure 32.Command output on CCT2

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 81 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

· Update AP configuration on CTT2: First disable AP:
> disable <3>AP-DISABLED OK
Update AP parameters:
> set ssid test OK > set wpa 2 OK > set wpa_key_mgmt DPP OK > set ieee80211w 2 OK > set rsn_pairwise CCMP OK
Set the connector key, csign, and netaccess values dumped on CTT2 console:

Figure 33.Set connector key, csign, and netaccess values

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 82 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Re-enable the AP after updates:
> enable <3>AP-ENABLED OK > <3>DPP-RX src=34:6f:24:c0:ca:a1 freq=2412 type=5 <3>DPP-TX dst=34:6f:24:c0:ca:a1 freq=2412 type=6 status=0 <3>DPP-TX-STATUS dst=34:6f:24:c0:ca:a1 result=SUCCESS <3>AP-STA-CONNECTED 34:6f:24:c0:ca:a1 <3>EAPOL-4WAY-HS-COMPLETED 34:6f:24:c0:ca:a1
The connection between the DUT (STA) and CTT2 (AP) is successful.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 83 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.5.2 Wi-Fi protected setup (WPS) Wi-Fi protected setup (WPS) is used to establish fast connections between wireless devices and a router. WPS supports two methods (pushing a button or entering a PIN) to configure a network and enable security. This section describes how to verify WPS functionality in STA mode. Method 1 ­ Entering a PIN The method requires to enter or to generate a PIN: enter a PIN at the "representant" of the network (usually the AP), or generate a PIN from the client. Step 1 - Configure the external AP in the router homepage. Example of configuration:
Security: WPA2-AES PSK:12345678 WPS PIN: 86146685
Step 2 - Load the drivers.
modprobe moal mod_para=nxp/wifi_mod_para.conf ps_mode=1 auto_ds=1
Step 3 - Create wpa_supplicant.conf. Example of wpa_supplicant.conf file:
ctrl_interface=/var/run/wpa_supplicant
Step 4 - Start wpa_supplicant on STA (DUT).
wpa_supplicant -i mlan0 -D nl80211 -c <path_to_file>/wpa_supplicant.conf
Step 5 - Start wpa_cli.
wpa_cli
Step 6 - Scan and display the results of the external AP.
> scan > scan_result

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 84 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Command output example:

> scan

OK

[ 310.177436] wlan: mlan0 START SCAN

<3>CTRL-EVENT-SCAN-STARTED

> [ 313.340574] wlan: SCAN COMPLETED: scanned AP count=19

<3>CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN

<3>CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN

<3>CTRL-EVENT-SCAN-RESULTS

<3>WPS-AP-AVAILABLE

<3>CTRL-EVENT-NETWORK-NOT-FOUND

>

> scan_results

bssid / frequency / signal level / flags / ssid

bc:a5:11:a2:b3:4f

5180 -50

[WPA2-PSK-CCMP][WPS][ESS]

b0:39:56:93:86:5d

5180 -32

[WPA2-PSK-CCMP][WPS][ESS]

7c:10:c9:02:da:48

2437 -41

[WPA2-PSK-CCMP][WPS][ESS]

dc:33:3d:ab:e9:f8

2437 -50

[WPA2-PSK-CCMP][WPS][ESS]

Step 7 - Select the PIN method on the STA (DUT). Note: Use and match the pin configured in the external AP.

> wps_pin any <PIN>

Roaming_NXP
ASUS_AP_2G DRCS_EX_AP_2G

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 85 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Command output example:
> wps_pin any 86146685 [ 419.040560] wlan: mlan0 START SCAN 86146685 <3>CTRL-EVENT-NETWORK-ADDED 0 <3>WPS-PIN-ACTIVE [ 422.482880] wlan: HostMlme mlan0 send auth to bssid 7c:XX:XX:XX:da:48 <3>WPS-AP-AVAILABLE-AUTH <3>SME: Trying to authenticate with 7c:10:c9:02:da:48 (SSID='ASUS_AP_2G' freq=2437 MHz) > [ 422.497937] mlan0: [ 422.497941] wlan: HostMlme Auth received from 7c:XX:XX:XX:da:48 <3>Trying to associate with 7c:10:c9:02:da:48 (SSID='ASUS_AP_2G' freq=2437 MHz) > [ 422.518977] wlan: HostMlme mlan0 Connected to bssid 7c:XX:XX:XX:da:48 successfully <3>Associated with 7c:10:c9:02:d[ 422.528139] mlan0: <3>CTRL-EVENT-EAP-STATUS status='started' parameter='' <3>CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=US <3>EAPOL-RX 7c:10:c9:02:da:48 42 <3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=1 <3>CTRL-EVENT-EAP-STATUS status='accept proposed method' parameter='WSC' <3>CTRL-EVENT-EAP-METHOD EAP vendor 14122 method 1 (WSC) selected <3>EAPOL-RX 7c:10:c9:02:da:48 469 > [ 422.600180] mlan0: [ 422.600188] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>EAPOL-RX 7c:10:c9:02:da:48 21[ 422.616101] mlan0: 0 > [ 422.616106] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>EAPOL-RX 7c:10:c9:02:da:48 13[ 422.635341] mlan0: 8 > [ 422.635347] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>EAPOL-RX 7c:10:c9:02:da:48 170 <3>WPS-CRED-RECEIVED <3>WPS-SUCCESS [ 422.677504] mlan0: [ 422.677511] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>EAPOL-RX 7c:10:c9:02:da:48 42[ 422.706640] wlan: Received disassociation request on
mlan0, reason: 3 <3>CTRL-EVENT-EAP-STATUS sta[ 422.715775] wlan: REASON: (Deauth) Sending STA is leaving
(or has left) IBSS or ESS tus='completion' parameter='failure' freq=2437 MHz) <3>Trying to associate with 7c:10:c9:02:da:48 (SSID='ASUS_AP_2G' freq=2437 MHz) > [ 422.780991] wlan: HostMlme mlan0 Connected to bssid 7c:XX:XX:XX:da:48 successfully
[PTK=CCM[ 422.849995] woal_cfg80211_set_rekey_data return: gtk_rekey_offload is DISABLE P GTK=CCMP] <3>CTRL-EVENT-CONNECTED - Connection to 7c:10:c9:02:da:48 completed [id=0 id_str=] <3>EAPOL-RX 7c:10:c9:02:da:48 13[ 424.870780] mlan0: 1 > [ 424.870795] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>WPA: Group rekeying completed[ 424.880877] woal_cfg80211_set_rekey_data return:
gtk_rekey_offload is DISABLE with 7c:10:c9:02:da:48 [GTK=CCMP]
Note: Registration with the external AP shows as WPA: Group rekeying completed in the command output.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 86 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 8 - Verify the status.
gt; status
Command output example:
> status bssid=7c:10:c9:02:da:48 freq=2437 ssid=ASUS_AP_2G id=0 mode=station pairwise_cipher=CCMP group_cipher=CCMP key_mgmt=WPA2-PSK wpa_state=COMPLETED p2p_device_address=2c:4c:c6:f4:67:9e address=2c:4c:c6:f4:67:9e uuid=25d271cf-1787-5d3a-9903-595488876c53

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 87 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Method 2 - Using a push button The user has to push a virtual or actual button on the DUT client and on the external AP. Step 1 ­ Configure the external AP in the router homepage. Example of configuration:

Security: WPA2-AES PSK:12345678 WPS: Push-Button method

Step 2 - Load the drivers.

modprobe moal mod_para=nxp/wifi_mod_para.conf ps_mode=1 auto_ds=1

Step 3 - Create wpa_supplicant.conf. Content of wpa_supplicant.conf file:

ctrl_interface=/var/run/wpa_supplicant

Step 4 - Start wpa_supplicant on the STA.

wpa_supplicant -i mlan0 -D nl80211 -c <path_to_file>/wpa_supplicant.conf

Step 5 - Start wpa_cli.

wpa_cli

Step 6 - Scan and display the results of the external AP.

> scan > scan_result

Command output example:

> scan

OK

[ 29.163406] wlan: mlan0 START SCAN

<3>CTRL-EVENT-SCAN-STARTED

> [ 32.327461] wlan: SCAN COMPLETED: scanned AP count=19

<3>WPS-AP-AVAILABLE

<3>CTRL-EVENT-NETWORK-NOT-FOUND

>

> scan[ 33.764308] VGEN1: disabling

[ 33.769255] VGEN6: disabling

_results

bssid / frequency / signal level / flags / ssid

dc:33:3d:ab:e9:fe

5180 -59

[WPA2-PSK-CCMP][WPS][ESS]

7c:10:c9:02:da:48

2437 -38

[WPA2-PSK-CCMP][WPS][ESS]

dc:33:3d:ab:e9:f8

2437 -55

[WPA2-PSK-CCMP][WPS][ESS]

bc:0f:9a:70:1f:69

2412 -44

[WPA2-PSK-CCMP][WPS][ESS]

ASUS_AP_2G DRCS_EX_AP_2G Roaming_NXP

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 88 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 7 - Select PBC method on the STA (DUT). Push the WPS button on the external AP.

> wps_pbc any

Command output example:

> wps_pbc any OK <3>CTRL-EVENT-NETWORK-[ 58.737389] wlan: mlan0 START SCAN ADDED 0 <3>WPS-PBC-ACTIVE <3>CTRL-EVENT-SCAN-STARTED > [ 62.169134] wlan: SCAN COMPLETED: scanned AP count=14 <3>CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN <3>CTRL-EVENT-SCAN-RESULTS >[ 62.181751] wlan: HostMlme mlan0 send auth to bssid 7c:XX:XX:XX:da:48 <3>WPS-AP-AVAILABLE-PBC <3[ 62.191727] mlan0: >SME: Trying to authenticate with[ 62.191732] wlan: HostMlme Auth received from
7c:XX:XX:XX:da:48 7c:10:c9:02:da:48 (SSID='ASUS_AP_2G' freq=2437 MHz) <3>Trying to associate with 7c:10:c9:02:da:48 (SSID='ASUS_AP_2G' freq=2437 MHz) > [ 62.229604] wlan: HostMlme mlan0 Connected to bssid 7c:XX:XX:XX:da:48 successfully <3>Associated with 7c:10:c9:02:d[ 62.238715] mlan0: a:48 <3>CTRL-EVENT-SUBNET-STA[ 62.238727] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 TUS-UPDATE status=0 <3>EAPOL-RX 7c:10:c9:02:da:48 42 <3>CTRL-EVENT-EAP-STARTED EAP auth[ 62.258414] mlan0: entication started <3>CTRL-EV[ 62.258430] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 ENT-EAP-STATUS status='started' parameter='' <3>CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=US <3>EAPOL-RX 7c:10:c9:02:da:48 42 <3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=1 <3>CTRL-EVENT-EAP-STATUS status='accept proposed method' parameter='WSC' <3>CTRL-EVENT-EAP-METHOD EAP vendor 14122 method 1 (WSC) selected <3>EAPOL-RX 7c:10:c9:02:da:48 469 > [ 62.312782] mlan0: [ 62.312790] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>EAPOL-RX 7c:10:c9:02:da:48 21[ 62.332987] mlan0: 0 > [ 62.332994] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>EAPOL-RX 7c:10:c9:02:da:48 13[ 62.347806] mlan0: 8 > [ 62.347811] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>EAPOL-RX 7c:10:c9:02:da:48 170 <3>WPS-CRED-RECEIVED <3>WPS-SUCCESS [ 62.386464] mlan0: > [ 62.386471] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 <3>EAPOL-RX 7c:10:c9:02:da:48 42[ 62.402443] wlan: Received disassociation request on mlan0, reason: 3 <3>CTRL-EVENT-EAP-STATUS sta[ 62.411547] wlan: REASON: (Deauth) Sending STA is leaving (or has left) IBSS or ESS tus='completion' parameter='failure' <3>CTRL-EVENT-EAP-FAILURE EAP authentication failed <3>CTRL-EVENT-DISCONNECTED bssid=7c:10:c9:02:da:48 reason=3 locally_generated=1 <3>CTRL-EVENT-DSCP-POLICY clear_all <3>CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD <3>SME: Trying to authenticate[ 62.447378] wlan: HostMlme mlan0 send auth to bssid 7c:XX:XX:XX:da:48 with 7c:10:c9:02:da:48 (SSID='ASUS_AP_2G' freq=2437 MHz) > [ 62.459310] mlan0: [ 62.459318] wlan: HostMlme Auth received from 7c:XX:XX:XX:da:48

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 89 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

<3>Trying to associate with 7c:10:c9:02:da:48 (SSID='ASUS_AP_2G' freq=2437 MHz) > [ 62.485813] wlan: HostMlme mlan0 Connected to bssid 7c:XX:XX:XX:da:48 successfully <3>Associated with 7c:10:c9:02:d[ 62.496744] mlan0: a:48 <3>CTRL-EVENT-SUBNET-STA[ 62.496760] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 TUS-UPDATE status=0 <3>CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=US <3>EAPOL-RX 7c:10:c9:02:da:48 99 > [ 62.518592] mlan0: <3>EAPOL-RX 7c:10:c9:02:da:48 15[ 62.518598] wlan: Send EAPOL pkt to 7c:XX:XX:XX:da:48 5 <3>WPA: Key negotiation complete[ 62.533798] IPv6: ADDRCONF(NETDEV_CHANGE): mlan0: link
becomes ready d with 7c:10:c9:02:da:48 [PTK=CCM[ 62.543432] woal_cfg80211_set_rekey_data return:
gtk_rekey_offload is DISABLE P GTK=CCMP] <3>CTRL-EVENT-CONNECTED - Connection to 7c:10:c9:02:da:48 completed [id=0 id_str=]
Note: Registration with the external AP shows as WPA: Key negotiation complete in the command output.
Step 8 - Verify the status.
> status
Command output example:
> status bssid=7c:10:c9:02:da:48 freq=2437 ssid=ASUS_AP_2G id=0 mode=station pairwise_cipher=CCMP group_cipher=CCMP key_mgmt=WPA2-PSK wpa_state=COMPLETED p2p_device_address=2c:4c:c6:f4:67:9e address=2c:4c:c6:f4:67:9e uuid=25d271cf-1787-5d3a-9903-595488876c53

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 90 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.6 uAP configuration This section shows how to configure and start the Access Point from the NXP-based wireless module. Linux operating system provides the hostapd user space utility for the access point and authentication servers. The configurations for hostapd are stored in the hostapd.conf file located in /etc/ directory.
5.1.6.1 Get the hostpad version Execute the command:
hostapd -v
Command output example:
hostapd v2.11 User space daemon for IEEE 802.11 AP management, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator Copyright (c) 2002-2024, Jouni Malinen <[email protected]> and contributors

5.1.6.2 Configure the 2.4 GHz Access Point
Edit the configuration file:
nano /etc/hostapd-2.4g.conf
Parameter values in the configuration file:
interface=uap0 hw_mode=g channel=0 country_code=US ssid=NXP_Demo ieee80211n=1

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 91 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.6.3 Configure the 5 GHz Access Point
Edit the configuration file:
nano /etc/hostapd-5g.conf
Parameter values in the configuration file:
interface=uap0 hw_mode=a channel=0 country_code=US ssid=NXP_Demo ieee80211n=1

5.1.6.4 Set up udhcp server The udhcp server is used to assign the IP to the client devices that are associated with the access point. Step 1 - Create the configuration file for udhcp server · Create the configuration file udhcpd.conf in etc repository
nano /etc/udhcpd.conf
· Add the following content to udhcpd.conf file
start 192.168.1.10 end 192.168.1.20 interface uap0
Step 2 - Create udhcp client lease database file udhcp server uses the database file to store all the leases that is has assigned. · Create the lease database file udhcpd.leases in /var/lib/misc/ repository so udhcp server can start · The newly created file does not require any content.
touch /var/lib/misc/udhcpd.leases

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 92 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.6.5 Start the Access Point
Run the following command to start the Access Point:
killall wpa_supplicant killall hostapd ifconfig uap0 192.168.1.2 netmask 255.255.255.0 up route add default gw 192.168.1.1
Start udhcp server to assign the IP address to the client devices that are connected to the access point
udhcpd /etc/udhcpd.conf
Command to start the 2.4 GHz Access Point:
hostapd /etc/hostapd-2.4g.conf
Command output example:
Configuration file: /etc/hostapd-2.4g.conf rfkill: Cannot open RFKILL control device uap0: interface state UNINITIALIZED->COUNTRY_UPDATE ACS: Automatic channel selection started, this may take a bit [ 9618.998539] wlan: SCAN COMPLETED: scanned AP count=1 uap0: interface state COUNTRY_UPDATE->ACS uap0: ACS-STARTED [ 9619.479337] wlan: SCAN COMPLETED: scanned AP count=1 [ 9619.959539] wlan: SCAN COMPLETED: scanned AP count=0 [ 9620.439382] wlan: SCAN COMPLETED: scanned AP count=0 [ 9620.919360] wlan: SCAN COMPLETED: scanned AP count=1 uap0: ACS-COMPLETED freq=2412 channel=1[ 9620.933098] wlan: Starting AP Using interface uap0 with hwaddr 00:50:43:24:84:c4 and ssid "NX[ 9620.939164] Get ht_cap from beacon ies: 0xc P_Demo" [ 9620.960100] wlan: AP started [ 9620.964230] Set AC=3, txop=47 cwmin=3, cwmax=7 aifs=1 [ 9620.971787] Set AC=2, txop=94 cwmin=7, cwmax=15 aifs=1 [ 9620.979077] Set AC=0, txop=0 cwmin=15, cwmax=63 aifs=3 [ 9620.986466] Set AC=1, txop=0 cwmin=15, cwmax=1023 aifs=7 uap0: interface state ACS->ENABLED uap0: AP-ENABLED

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 93 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Command to start the 5 GHz Access Point: hostapd /etc/hostapd-5g.conf
Command output example:

Configuration file: /etc/hostapd-5g.conf rfkill: Cannot open RFKILL control device uap0: interface state UNINITIALIZED->COUNTRY_UPDATE ACS: Automatic channel selection started, this may take a bit [ 9816.085716] wlan: SCAN COMPLETED: scanned AP count=0 uap0: interface state COUNTRY_UPDATE->ACS uap0: ACS-STARTED [ 9816.483935] wlan: SCAN COMPLETED: scanned AP count=0 [ 9816.883357] wlan: SCAN COMPLETED: scanned AP count=0 [ 9817.279225] wlan: SCAN COMPLETED: scanned AP count=0 [ 9817.675171] wlan: SCAN COMPLETED: scanned AP count=0 uap0: ACS-COMPLETED freq=5180 channel=36[ 9817.686492] wlan: Starting AP Using interface uap0 with hwaddr 00:50:43:24:84:c4 and ssid "NX[ 9817.692595] Get ht_cap from beacon ies: 0xc P_Demo" [ 9817.702468] fw doesn't support 11ax [ 9817.717811] wlan: AP started [ 9817.722028] Set AC=3, txop=47 cwmin=3, cwmax=7 aifs=1 [ 9817.729606] Set AC=2, txop=94 cwmin=7, cwmax=15 aifs=1 [ 9817.736887] Set AC=0, txop=0 cwmin=15, cwmax=63 aifs=3 [ 9817.744417] Set AC=1, txop=0 cwmin=15, cwmax=1023 aifs=7 uap0: interface state ACS->ENABLED uap0: AP-ENABLED

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 94 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.7 uAP security features
This section includes how to configure the Mobile AP security with the configuration file hostapd.conf. The Mobile AP and the client interface can run simultaneously and operate on the same band and channel.
5.1.7.1 Hostapd configuration file
The configuration file hostapd.conf is located in etc directory. Each security mode requires specific parameters such as hw_mode, AP modes (i.e 802.11ac, 802.11n, 802.11ax), wpa_key_mgmt, SSID, channel, psk, and more. To configure Mobile AP security, change the parameter values in the hostapd.conf file.
5.1.7.1.1 Open security
Example of hostapd.conf content for Open security:
interface=uap0 hw_mode=a ieee80211n=1 channel=36 country_code=US ssid=NXP_Demo
Parameter settings: · hw_mode = a · channel = 36 · ieee80211n = 1

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 95 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.7.1.2 WPA2 security
Example of hostapd.conf content for WPA2 security and for 5 GHz:
interface=uap0 driver=nl80211 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 ieee80211d=1 country_code=US beacon_int=100 dtim_period=1 wmm_enabled=1 uapsd_advertisement_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 ssid=NXP_Demo ignore_broadcast_ssid=0 hw_mode=a channel=36 auth_algs=1 max_num_sta=10 ieee80211n=1 require_ht=0 ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+] ieee80211ac=1 require_vht=0 vht_capab=[SHORT-GI-80] vht_oper_chwidth=1 vht_oper_centr_freq_seg0_idx=42 ieee80211ax=1 he_su_beamformer=1 he_bss_color=1 he_oper_chwidth=1 he_oper_centr_freq_seg0_idx=42 eapol_version=1 wpa_key_mgmt=WPA-PSK wpa=2 rsn_pairwise=CCMP wpa_passphrase=1234567890

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 96 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Parameter settings:
· hw_mode = a · channel = 36 · ieee80211n = 1 · ieee80211ac = 1 · ieee80211ax = 1 · wpa_key_mgmt = WPA-PSK · wpa_passphrase = 1234567890 · wpa=2

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 97 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.7.1.3 WPA3 security
5.1.7.1.3.1 WPA3 transition security
When WPA3-SAE is configured on the AP, WPA3 SAE is used on the STA to connect with the AP. When WPA3SAE transition mode is configured on the AP, then either WPA3 SAE or WPA2-PSK can be used on STA to connect with the AP.
Example of hostapd.conf content for 5 GHz WPA3 transition security:
interface=uap0 driver=nl80211 ssid=NXP_Demo hw_mode=a channel=36 wmm_enabled=1 ieee80211n=1 ieee80211ac=1 ieee80211ax=1 auth_algs=1 wpa=2 wpa_pairwise=CCMP wpa_passphrase=1234567890 sae_password=1234567890 wpa_key_mgmt=WPA-PSK SAE wpa_group_rekey=1800 rsn_pairwise=CCMP ieee80211w=1 sae_groups=19 20 21 sae_require_mfp=1 sae_pwe=2 sae_anti_clogging_threshold=10
Parameter settings:
· hw_mode = a · Channel = 36 · wpa_pairwise=CCMP · wpa_passphrase=1234567890 · wpa_key_mgmt=WPA-PSK SAE · wpa_group_rekey=1800 · rsn_pairwise=CCMP · ieee80211w=1 · sae_groups=19 20 21 · wpa=2

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 98 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.7.2 Example The example shows how to start a Mobile AP, and check for connected clients. The steps are the same for all security modes. Step 1 - Edit hostapd.conf configuration file for the security mode. See Open security , WPA2 security , and WPA3 transition security . Step 2 - Bring up the Mobile AP interface.
# ifconfig uap0 192.168.1.2 netmask 255.255.255.0 up
Step 3 - Set up the udhcp server. The udhcp server is used to assign the IP to the client devices that are associated with the access point. · Create the configuration file udhcpd.conf in etc directory.
nano /etc/udhcpd.conf
· Add the following content to the udhcpd.conf file.
start 192.168.1.10 end 192.168.1.20 interface uap0
Step 4 - Create udhcp client lease database file. The udhcp server uses the database file to store all the leases that is has assigned. · Create the lease database file udhcpd.leases in /var/lib/misc/ repository so the udhcp server can start.
touch /var/lib/misc/udhcpd.leases
· The newly created file does not require any content. Step 5 - Start udhcp server to assign the IP address to the client devices that are connected to the access point.
udhcpd /etc/udhcpd.conf
Step 7 - Cancel previous hostapd processes.
# killall hostapd

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 99 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 8 - Run hostapd in the background.
# hostapd -B /etc/hostapd.conf
Command output example:
uap0: interface state UNINITIALIZED->COUNTRY_UPDATE ACS: Automatic channel selection started, this may take a bit wlan: SCAN COMPLETED: scanned AP count=31 uap0: interface state COUNTRY_UPDATE->ACS uap0: ACS-STARTED wlan: SCAN COMPLETED: scanned AP count=9 wlan: SCAN COMPLETED: scanned AP count=17 wlan: SCAN COMPLETED: scanned AP count=13 wlan: SCAN COMPLETED: scanned AP count=15 wlan: Starting AP wlan: AP started Set AC=3, txop=47 cwmin=3, cwmax=7 aifs=1 Set AC=2, txop=94 cwmin=7, cwmax=15 aifs=1 Set AC=0, txop=0 cwmin=15, cwmax=63 aifs=3 Set AC=1, txop=0 cwmin=15, cwmax=1023 aifs=7 uap0: wlan: HostMlme Auth received from 36:XX:XX:XX:02:59 wlan: HostMlme uap0 send Auth uap0: wlan: HostMlme MICRO_AP_STA_ASSOC 36:XX:XX:XX:02:59 wlan: UAP/GO add peer station, address =36:XX:XX:XX:02:59 wlan: HostMlme uap0 send assoc/reassoc resp
Step 9 - Display the list of connected clients.
# iw uap0 station dump
Command output example:
Station 36:86:69:d2:02:59 inactive time: 266 ms signal: -46 dBm current time: 165191405647 ms
Expected result
The Mobile AP is configured with Open, WPA2, or WPA3 transition security mode. The interface is up and clients can connect. Connect a client device and check connectivity using ping.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 100 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.8 Configure IEEE 802.11a/b/g/n/ac/ax standards
This section describes the different IEEE 802.11 standard configurations for the Access Point. The standards use different bandwidths and network speed. The IEEE 802.11a and IEEE 802.11ac standards operate only at 5GHz, IEEE 802.11b/g operate at 2.4 GHz, and both IEEE 802.11n and IEEE802.11ax can operate at 2.4GHz and 5GHz bands.
5.1.8.1 Configure IEEE 802.11b standard
Configure the Access Point for IEEE 802.11b standard.
root@imx8mqevk:~# nano /etc/hostapd.conf
Configuration file content:
interface=uap0 hw_mode=b channel=0 country_code=US ssid=NXP_Demo

5.1.8.2 Configure IEEE 802.11a standard
Configure the Access Point for IEEE 802.11a standard.
root@imx8mqevk:~# nano /etc/hostapd.conf
Configuration file content:
interface=uap0 hw_mode=a channel=0 country_code=US ssid=NXP_Demo

5.1.8.3 Configure IEEE 802.11g standard
Configure the Access Point for IEEE 802.11g standard.
root@imx8mqevk:~# nano /etc/hostapd.conf
Configuration file content:
interface=uap0 hw_mode=g channel=0 country_code=US ssid=NXP_Demo

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 101 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.8.4 Configure IEEE 802.11n standard
Use the following to configure the Access Point configuration for IEEE 802.11n standard for 2.4 GHz and 5 GHz. Edit the configuration for 2.4 GHz
root@imx8mqevk:~# nano /etc/hostapd.conf
Configuration file content:
interface=uap0 hw_mode=g ieee80211n=1 channel=0 country_code=US ssid=NXP_Demo
Edit the configuration for 5 GHz
root@imx8mqevk:~# nano /etc/hostapd.conf
Configuration file content:
interface=uap0 hw_mode=a ieee80211n=1 channel=0 country_code=US ssid=NXP_Demo

5.1.8.5 Configure IEEE 802.11ac standard
Configure the Access Point configuration for IEEE 802.11ac standard.
root@imx8mqevk:~# nano /etc/hostapd.conf
Configuration file content:
interface=uap0 hw_mode=a ieee80211ac=1 channel=0 country_code=US ssid=NXP_Demo

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 102 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.8.6 Configure IEEE802.11ax standard
Use the following to configure the Access Point configuration for IEEE 802.11ax standard for 2.4GHz and 5GHz. Edit the configuration for 2.4GHz
root@imx8mqevk:~# nano /etc/hostapd.conf
Configuration file content
interface=uap0 hw_mode=g ieee80211ax=1 ieee80211n=1 ieee80211ac=1 channel=0 country_code=US ssid=NXP_Demo
Edit the configuration for 5GHz
root@imx8mqevk:~# nano /etc/hostapd.conf
Configuration file content
interface=uap0 hw_mode=a ieee80211ax=1 ieee80211n=1 ieee80211ac=1 channel=0 country_code=US ssid=NXP_Demo

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 103 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.9 Configure and test 802.11w (PMF)
IEEE 802.11w is the standard defined by Wi-Fi Alliance for Protected Management Frames (PMF). PMF is used to increase security by providing: · Data confidentiality of management frames · Mechanisms that enable data integrity. · Data origin authenticity · Replay protection
5.1.9.1 Enable 802.11w (PMF)
Step 1 - Create wpa_supplicant.conf. Create and edit wpa_supplicant.conf configuration file in etc directory.
root@imx8mqevk:~# nano /etc/wpa_supplicant.conf
Content of wpa_supplicant.conf file:
network={ ssid="ASUS_2G" scan_ssid=1 key_mgmt=SAE proto=RSN pairwise=CCMP group=CCMP psk="12345678" ieee80211w=2 }
Step 2 - Start wpa_supplicant.
root@imx8mqevk:~# wpa_supplicant -i mlan0 -Dnl80211 -c /etc/wpa_ supplicant.conf -B
Command output example:
Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device
Step 3 - Check the connection of DUT STA with AP in dmesg logs.
root@imx8mqevk:~# dmesg -w
Command output example:
[ 229.862260] wlan: HostMlme mlan0 Connected to bssid 7c:XX:XX:XX:da:48 successfully [ 230.959806] WPA: Key negotiation completed with 7c:10:c9:02:da:48 [PTK=CCMP GTK=CCMP] mlan0: CTRL-EVENT-CONNECTED - Connection to 7c:10:c9:02:da:48 completed

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 104 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 4 - Use Sniffer to verify the settings. Verify that RSN information shows the correct settings for PMF (Figure 34).

Figure 34.RSN information setting showing PMF enabled

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 105 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.9.2 Set 802.11w (PMF) capable Step 1 - Create wpa_supplicant.conf. Create and edit wpa_supplicant.conf configuration file in etc directory.
root@imx8mqevk:~# nano /etc/wpa_supplicant.conf
Content of wpa_supplicant.conf file:
network={ ssid="ASUS_2G" scan_ssid=1 key_mgmt=SAE proto=RSN pairwise=CCMP group=CCMP psk="12345678" ieee80211w=1 }
Step-2: Start wpa_supplicant
root@imx8mqevk:~# wpa_supplicant -i mlan0 -Dnl80211 -c /etc/wpa_ supplicant.conf -B
Command output example:
Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device
Step 3 - Verify the connection of DUT STA with the AP.
root@imx8mqevk:~# dmesg -w
Command output example:
[ 80.463167] wlan: HostMlme mlan0 Connected to bssid 7c:XX:XX:XX:da:48 successfully [ 80.925710] WPA: Key negotiation completed with 7c:10:c9:02:da:48 [PTK=CCMP GTK=CCMP] CTRL-EVENT-CONNECTED - Connection to 7c:10:c9:02:da:48 completed

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 106 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 5 - Use Sniffer to verify the settings. Verify that RSN information shows the correct settings for PMF (Figure 35).

Figure 35.RSN information settings showing PMF set to capable

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 107 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.10 Wi-Fi direct This section describes the Wi-Fi Direct (WFD) mode configuration and procedures. The feature is used to establish a connection for device-to-device or peer-to-peer (P2P) communication, without a nearby centralized network. Wi-Fi direct GO mode Use the following steps to test the Wi-Fi direct feature in GO mode on WFD interface wfd0. Step 1 ­ Edit p2p_supplicant.conf. Content of p2p_supplicant.conf file:
ctrl_interface=/var/run/wpa_supplicant update_config=1 persistent_reconnect=1 p2p_no_group_iface=1
Step 2 ­ Load the driver/fw.
modprobe moal mod_para=nxp/wifi_mod_para.conf
Step 3 ­ Start wpa_supplicant.
wpa_supplicant -i wfd0 -Dnl80211 -c <path_to_file>/p2p.conf -B
Command output example:
Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device
Step 4 ­ Start the wpa_cli.
wpa_cli
Command output example:
wpa_cli v2.11 Copyright (c) 2004-2024, Jouni Malinen <[email protected]> and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'wfd0' Interactive mode
Step 5 ­ Start Wi-Fi Direct on the user interface for the peer or mobile device. Step 6 ­ Enable the p2p device discovery.
> p2p_find

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 108 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Command output example:
OK [ 202.954971] wlan: wfd0 START SCAN <3>CTRL-EVENT-SCAN-STARTED > [ 205.760257] wlan: SCAN COMPLETED: scanned AP count=2 <3>CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN <3>P2P-DEVICE-FOUND 26:18:1d:56:65:0a p2p_dev_addr=26:18:1d:56:65:0a
pri_dev_type=10-0050F204-5 name='[Phone] Galaxy S8' config1 > [ 205.896705] wlan: wfd0 START SCAN <3>CTRL-EVENT-SCAN-STARTED
Step 7 ­ Stop the ongoing p2p discovery.
> p2p_stop_find
Step 8 - Request provisioning discovery of peer mobile device.
> p2p_prov_disc <Peer Device MAC address> pbc
Example of command:
e> p2p_prov_disc 26:18:1d:56:65:0a pbc
Command output example:
[ 244.076007] wlan: TX P2P Provision Discovery Request, channel=1 OK > [ 244.399980] wlan: TX P2P Provision Discovery Request, channel=1 [ 244.720509] wlan: TX P2P Provision Discovery Request, channel=1 [ 244.875344] wlan: RX P2P Provision Discovery Response, channel=1 <3>P2P-PROV-DISC-PBC-RESP 26:18:1d:56:65:0a
Step 9 ­ Connect with the p2p device.
> p2p_connect <Peer Device MAC address> pbc go_intent=14 freq=2437
Example of command:
> p2p_connect 26:18:1d:56:65:0a pbc go_intent=14 freq=2437

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 109 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 10 ­ Accept the Wi-Fi Direct connection request on the peer or on the mobile device.
Command output example:
[ 270.284200] wlan: TX P2P Group Owner Negotiation Req Frame, channel=1 OK > [ 270.436918] wlan: RX P2P Group Owner Negotiation Rsp Frame, channel=1 [ 273.201217] wlan: RX P2P Group Owner Negotiation Req Frame, channel=11 [ 273.208544] wlan: TX P2P Group Owner Negotiation Rsp Frame, channel=11 [ 273.226731] wlan: RX P2P Group Owner Negotiation Confirm Frame, channel=11 [ 273.907552] wlan: SCAN COMPLETED: scanned AP count=1 <3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE-PBC > [ 273.918293] Can not set data rate in disconnected state <3>SME: Trying to authenticate with 26:18:1d:56:e5:0a (SSID='DIRECT-dW-SM-G950F'
freq=2437 MHz) > [ 274.141469] wlan: HostMlme wfd0 send auth to bssid 26:XX:XX:XX:e5:0a [ 274.192359] wfd0: [ 274.192366] wlan: HostMlme Auth received from 26:XX:XX:XX:e5:0a <3>Trying to associate with 26:18:1d:56:e5:0a (SSID='DIRECT-dW-SM-G950F' freq=2437 MHz) > [ 274.298586] wlan: HostMlme wfd0 Connected to bssid 26:XX:XX:XX:e5:0a successfully <3>Associated with 26:18:1d:56:e[ 274.307263] wfd0: <3>CTRL-EVE[ 274.327528] wlan: Send EAPOL pkt to 26:XX:XX:XX:e5:0a NT-EAP-STATUS status='started' parameter='' <3>CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=IN <3>EAPOL-RX 26:18:1d:56:e5:0a 18 > [ 274.397589] wlan: Send EAPOL pkt to 26:XX:XX:XX:e5:0a <3>EAPOL-RX 26:18:1d:56:e5:0a 234 <3>SME: Trying to authenticate with 26:18:1d:56:e5:0a (SSID='DIRECT-dW-SM-G950F'
freq=2437 MHz) > [ 274.723741] wlan: HostMlme wfd0 send auth to bssid 26:XX:XX:XX:e5:0a [ 274.806751] wfd0: [ 274.806758] wlan: HostMlme Auth received from 26:XX:XX:XX:e5:0a <3>Trying to associate with 26:18:1d:56:e5:0a (SSID='DIRECT-dW-SM-G950F' freq=2437 MHz) > [ 274.912719] wlan: HostMlme wfd0 Connected to bssid 26:XX:XX:XX:e5:0a successfully <3>Associated with 26:18:1d:56:e5:0a <3>CTRL-EVENT-SUBNET-S[ 274.924725] wfd0: TATUS-UPDATE status=0 <3>CTRL[ 274.924737] wlan: Send EAPOL pkt to 26:XX:XX:XX:e5:0a -EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=IN <3>EAPOL-RX 26:18:1d:56:e5:0a 9[ 274.943443] wfd0: 9 <3>EAPOL-RX 26:18:1d:56:e5:[ 274.943447] wlan: Send EAPOL pkt to 26:XX:XX:XX:e5:0a 0a 171 <3>WPA: Key negotiation comple[ 274.955269] IPv6: ADDRCONF(NETDEV_CHANGE): wfd0: link
becomes ready ted with 26:18:1d:56:e5:0a [PTK=C[ 274.964998] woal_cfg80211_set_rekey_data return:
gtk_rekey_offload is DISABLE CMP GTK=CCMP] <3>CTRL-EVENT-CONNECTED - Connection to 26:18:1d:56:e5:0a completed [id=0 id_str=] <3>P2P-GROUP-STARTED wfd0 client ssid="DIRECT-dW-SM-G950F" freq=2437
psk=aef6fc0c420903c10df110b35efc2d692fef2637d628a63132b2481

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 110 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 11 ­ Check the connection status.
> status
Command output example:
bssid=26:18:1d:56:e5:0a freq=2437 ssid=DIRECT-dW-SM-G950F id=0 mode=station pairwise_cipher=CCMP group_cipher=CCMP key_mgmt=WPA2-PSK wpa_state=COMPLETED p2p_device_address=2e:4c:c6:f4:67:9e address=2e:4c:c6:f4:67:9e uuid=17ca6821-1587-5ce1-bab7-4aa5716e65fe
Step 12 ­ Close the wpa_cli prompt.
> quit

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 111 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Wi-Fi direct client mode Use the following steps to test the Wi-Fi direct feature in client mode. Step 1 ­ Create p2p_supplicant.conf. Content of p2p_supplicant.conf file content:
ctrl_interface=/var/run/wpa_supplicant update_config=1 device_name=NXP-P2P device_type=10-0050F204-4 config_methods="keypad push_button virtual display" persistent_reconnect=1 p2p_no_group_iface=1
Note: The content of the configuration file is an example. Replace the values of parameters like device_name or device_type with your own values. Step 2 - Start the wpa_supplicant.
wpa_supplicant -i wfd0 -Dnl80211 -c <path_to_file>/p2p.conf -B
Command output example:
Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device WPS: Converting display to virtual_display for WPS 2.0 compliance WPS: Converting push_button to virtual_push_button for WPS 2.0 compliance
Step 3 ­ Start the wpa_cli.
wpa_cli
Command output example:
wpa_cli v2.11 Copyright (c) 2004-2024, Jouni Malinen <[email protected]> and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'wfd0' Interactive mode
Step 4 ­ Start Wi-Fi Direct on the User Interface for the peer or mobile device.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 112 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 5 ­ Enable the p2p device discovery.
> p2p_find
Command output example:
OK [ 198.289636] wlan: wfd0 START SCAN <3>CTRL-EVENT-SCAN-STARTED > [ 201.094955] wlan: SCAN COMPLETED: scanned AP count=1 <3>CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN > [ 201.436453] wlan: wfd0 START SCAN <3>CTRL-EVENT-SCAN-STARTED > [ 202.889619] wlan: SCAN COMPLETED: scanned AP count=2 <3>P2P-DEVICE-FOUND 26:18:1d:56:65:0a p2p_dev_addr=26:18:1d:56:65:0a
pri_dev_type=10-0050F204-5 name='[Phone] Galaxy S8' config1 > [ 203.124702] wlan: wfd0 START SCAN <3>CTRL-EVENT-SCAN-STARTED > [ 203.252207] wlan: SCAN COMPLETED: scanned AP count=2 > [ 203.487885] wlan: wfd0 START SCAN <3>CTRL-EVENT-SCAN-STARTED
Step 6 ­ Stop the ongoing p2p discovery.
> p2p_stop_find
Step 7 ­ Add a new P2P group with a frequency value.
> p2p_group_add freq=2437
Command output example:
OK > [ 235.152677] Can not set data rate in disconnected state [ 235.162729] wlan: Starting AP [ 235.173056] wlan: AP started [ 235.176875] IPv6: ADDRCONF(NETDEV_CHANGE): wfd0: link becomes ready [ 235.184207] Set AC=3, txop=47 cwmin=3, cwmax=7 aifs=1 [ 235.189592] Set AC=2, txop=94 cwmin=7, cwmax=15 aifs=1 [ 235.194987] Set AC=0, txop=0 cwmin=15, cwmax=63 aifs=3 [ 235.200335] Set AC=1, txop=0 cwmin=15, cwmax=1023 aifs=7 <3>AP-ENABLED <3>CTRL-EVENT-CONNECTED - Connection to 2e:4c:c6:f4:67:9e completed [id=0 id_str=] <3>P2P-GROUP-STARTED wfd0 GO ssid="DIRECT-lL" freq=2437 passphrase="SNNbuG6t"
go_dev_addr=2e:4c:c6:f4:67:9e <3>RX-PROBE-REQUEST sa=26:18:1d:56:65:0a signal=0 <3>RX-PROBE-REQUEST sa=26:18:1d:56:65:0a signal=0 <3>RX-PROBE-REQUEST sa=00:0c:e7:30:90:cb signal=0 <3>RX-PROBE-REQUEST sa=26:18:1d:56:65:0a signal=0 <3>RX-PROBE-REQUEST sa=26:18:1d:56:65:0a signal=0 <3>RX-PROBE-REQUEST sa=26:18:1d:56:65:0a signal=0 <3>RX-PROBE-REQUEST sa=78:af:08:1c:dd:a1 signal=0 <3>RX-PROBE-REQUEST sa=78:af:08:1c:dd:a1 signal=0 <3>RX-PROBE-REQUEST sa=26:18:1d:56:e5:0a signal=0 <3>WPS-ENROLLEE-SEEN 26:18:1d:56:e5:0a 78fa9353-fe52-58aa-9549-c4aeeb7c7f99 0-00000000-0
0x3148 4 1 [ ] <3>RX-PROBE-REQUEST sa=26:18:1d:56:e5:0a signal=0

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 113 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 8 ­ Connect with the P2P device from mobile.
Step 9 ­ Establish connection with mobile device.
> wps_pbc
Command output example:
OK <3>WPS-PBC-ACTIVE <3>WPS-ENROLLEE-SEEN 26:18:1d:56:e5:0a 78fa9353-fe52-58aa-9549-c4aeeb7c7f99 <3>RX-PROBE-REQUEST sa=00:0c:e7:03:1a:c2 signal=0 <3>WPS-ENROLLEE-SEEN 26:18:1d:56:e5:0a 78fa9353-fe52-58aa-9549-c4aeeb7c7f99 0-00000000-0
0x3148 4 1 [ ] <3>RX-PROBE-REQUEST sa=26:18:1d:56:e5:0a signal=0 > [ 244.465555] wfd0: [ 244.465570] wlan: HostMlme Auth received from 26:XX:XX:XX:e5:0a [ 244.474209] wlan: HostMlme wfd0 send Auth [ 244.479567] wfd0: [ 244.479572] wlan: HostMlme MICRO_AP_STA_ASSOC 26:XX:XX:XX:e5:0a [ 244.489483] wlan: UAP/GO add peer station, address =26:XX:XX:XX:e5:0a [ 244.496473] wlan: HostMlme wfd0 send assoc/reassoc resp <3>CTRL-EVENT-EAP-STARTED 26:18:[ 244.503445] wfd0: 1d:56:e5:0a [ 244.503465] wlan: Send EAPOL pkt to 26:XX:XX:XX:e5:0a <3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1 <3>EAPOL-RX 26:18:1d:56:e5:0a 38[ 244.536583] wfd0: [ 244.717276] wfd0: [ 244.717280] wlan: EVENT: MICRO_AP_STA_DEAUTH 26:XX:XX:XX:e5:0a <3>WPS-ENROLLEE-SEEN 26:18:1d:56:e5:0a 78fa9353-fe52-58aa-9549-c4aeeb7c7f99 0-00000000-0
0x3148 4 1 [ ] <3>RX-PROBE-REQUEST sa=26:18:1d:56:e5:0a signal=0 > [ 244.965520] wlan: hostmlme notify deauth station 26:XX:XX:XX:e5:0a [ 244.971762] wfd0: [ 244.971767] wlan: EVENT: MICRO_AP_STA_DEAUTH 26:XX:XX:XX:e5:0a <3>RX-PROBE-REQUEST sa=7e:89:3b:2f:cd:0e signal=0 <3>RX-PROBE-REQUEST sa=7e:89:3b:2f:cd:0e signal=0 <3>RX-PROBE-REQUEST sa=c6:ba:d3:16:96:82 signal=0 <3>RX-PROBE-REQUEST sa=7e:89:3b:2f:cd:0e signal=0 <3>WPS-ENROLLEE-SEEN 26:18:1d:56:e5:0a 78fa9353-fe52-58aa-9549-c4aeeb7c7f99 0-00000000-0
0x3148 4 1 [ ] <3>RX-PROBE-REQUEST sa=[ 245.205445] wfd0: [ 245.205456] wlan: HostMlme Auth received from 26:XX:XX:XX:e5:0a 26:18:1d:56:e5:0a signal=0 > [ 245.215770] wlan: HostMlme wfd0 send Auth [ 245.245449] wfd0: [ 245.245455] wlan: HostMlme MICRO_AP_STA_ASSOC 26:XX:XX:XX:e5:0a [ 245.260325] wlan: UAP/GO add peer station, address =26:XX:XX:XX:e5:0a [ 245.268775] wlan: HostMlme wfd0 send assoc/reassoc resp [ 245.275425] wfd0: [ 245.275430] wlan: Send EAPOL pkt to 26:XX:XX:XX:e5:0a <3>EAPOL-RX 26:18:1d:56:e5:0a 12[ 245.321574] wfd0: 1 > [ 245.321578] wlan: Send EAPOL pkt to 26:XX:XX:XX:e5:0a <3>EAPOL-RX 26:18:1d:56:e5:0a 99 <3>AP-STA-CONNECTED 26:18:1d:56:e5:0a p2p_dev_addr=26:18:1d:56:65:0a <3>EAPOL-4WAY-HS-COMPLETED 26:18:1d:56:e5:0a

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 114 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 11 ­ Check the connection status.
> status
Command output example:
bssid=2e:4c:c6:f4:67:9e freq=2437 ssid=DIRECT-lL id=0 mode=P2P GO pairwise_cipher=CCMP group_cipher=CCMP key_mgmt=WPA2-PSK wpa_state=COMPLETED p2p_device_address=2e:4c:c6:f4:67:9e address=2e:4c:c6:f4:67:9e uuid=17ca6821-1587-5ce1-bab7-4aa5716e65fe
Step 12 ­ Close the wpa_cli prompt.
> quit

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 115 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.11 Suspend and resume This section introduces the steps to put the i.MX host processor in suspend state. Step 1 ­ Update the configuration file. Edit wifi_mod_para.conf file:
nano /lib/firmware/nxp/wifi_mod_para.conf
Update ps_mode in the configuration file:
SD8987 = { cfg80211_wext=0xf wfd_name=p2p max_vir_bss=2 cal_data_cfg=none drv_mode=7 ps_mode=1 auto_ds=1
}
Step 2 ­ Load the modules in the kernel.
modprobe moal mod_para=nxp/wifi_mod_para.conf
Step 3 ­ Connect the client (STA) device to the external access point using wpa_supplicant. Refer to Association . Step 4 ­ Enable WoWLAN
iw phy#0 wowlan enable any
Step 5 ­ Enable SDIO wakeup
echo enabled > /sys/bus/platform/devices/30b50000.mmc/power/wakeup
Note: This step is not needed for PCIe interface. Step 6 ­ Set host sleep parameters
echo "hssetpara=2 0xff 0xc8 3 400" > /proc/mwlan/adapter0/config
Step 7 ­ Set the device in suspend state
echo mem >> /sys/power/state
Step 8 ­ Ping from AP backend to STA for host wakeup. Refer to Section 5.1.12 for more offload features and remote wakeup.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 116 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.11.1 Enable dmesg logs for device in supended state This section explains how to capture the Wi-Fi driver logs even when the i.MX host processor is in suspend state. Step 1 ­ Boot the i.MX 8M Quad EVK to the U-boot console.
U-Boot >
Step 2 ­ Enable dmesg logs while the device is in suspended state. U-Boot > setenv mmcargs $mmcargs no_console_suspend
Step 3 ­ Boot the i.MX 8M Quad EVK. U-Boot > boot

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 117 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.12 Offload during host suspend
5.1.12.1 Neighbor solicitation (NS) offload NS offload is the ability of network adapter to respond to a Neighbor Discovery Neighbor Solicitation request with a Neighbor Advertisement without waking the host. This section describes the steps to test the NS offload functionality. Step 1 ­ Load the driver.
modprobe moal mod_para=nxp/wifi_mod_para.conf hs_auto_arp=1
Step 2 ­ Add the SSID and password of external AP to wpa_supplicant.conf. Content of wpa_supplicant.conf file:
network={ SSID="<SSID>" psk="<Password>" key_mgmt=WPA-PSK
}
Example wpa_supplicant.conf file:
network={ SSID="NXP_AP" psk="12345678" key_mgmt=WPA-PSK
}
Step 3 ­ Connect with an external AP
wpa_supplicant -i mlan0 -D nl80211 -c <path_to_file>/wpa_supplicant.conf -B
Step 4 ­ Get the IP address for the DUT.
udhcpc -i mlan0
Step 5 ­ Verify IPv4 and IPv6 addresses on mlan0.
ifconfig mlan0
Command output example:
mlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.244 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::2e4c:c6ff:fef4:679e prefixlen 64 scopeid 0x20<link> ether 2c:4c:c6:f4:67:9e txqueuelen 1000 (Ethernet) RX packets 20 bytes 4662 (4.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 52 bytes 7068 (6.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 118 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 6 ­ Verify IPv4 and IPv6 addresses on the external AP.
Check that both IPv4 and IPv6 addresses are available on eth0 interface on the Linux machine connected to the external AP backend device.

nxp@nxp:~$ ifconfig eth0

Command output example:

nxp@nxp:~$ ifconfig eth0

eth0

Link encap:Ethernet HWaddr 28:d2:44:08:90:b2

inet addr:192.168.0.192 Bcast:192.168.0.255 Mask:255.255.255.0

inet6 addr: fe80::ddb8:30e0:6936:e5b6/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:18753 errors:0 dropped:0 overruns:0 frame:0

TX packets:5996 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:6383519 (6.3 MB) TX bytes:954617 (954.6 KB)

Interrupt:20 Memory:f2500000-f2520000

Step 7 ­ Check the connectivity between the DUT STA and external AP.

ping <ip_address_of_external_AP>

Command output example:

ping -I mlan0 192.168.0.192 -c 5 PING 192.168.0.192 (192.168.0.192) from 192.168.0.244 mlan0: 56(84) bytes of data. 64 bytes from 192.168.0.192: icmp_seq=1 ttl=64 time=5.68 ms 64 bytes from 192.168.0.192: icmp_seq=2 ttl=64 time=3.80 ms 64 bytes from 192.168.0.192: icmp_seq=3 ttl=64 time=3.46 ms 64 bytes from 192.168.0.192: icmp_seq=4 ttl=64 time=3.49 ms 64 bytes from 192.168.0.192: icmp_seq=5 ttl=64 time=3.05 ms --- 192.168.0.192 ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 4007ms rtt min/avg/max/mdev = 3.047/3.894/5.684/0.925 ms

Step 8 ­ Check IPv6 connectivity from AP back-end to DUT_STA.

nxp@nxp:~$ ping6 <IPV6 addr of mlan0 of DUT>%eth0

Command output example:

nxp@nxp:~$ ping6 fe80::2e4c:c6ff:fef4:679e%eth0 -c 5 PING fe80::2e4c:c6ff:fef4:679e%eth0(fe80::2e4c:c6ff:fef4:679e) 56 data bytes 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=1 ttl=64 time=105 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=2 ttl=64 time=19.6 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=3 ttl=64 time=44.3 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=4 ttl=64 time=64.4 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=5 ttl=64 time=85.9 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=6 ttl=64 time=109 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=7 ttl=64 time=30.6 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=8 ttl=64 time=51.7 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=9 ttl=64 time=74.4 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=10 ttl=64 time=96.9 ms --- fe80::2e4c:c6ff:fef4:679e%eth0 ping statistics --10 packets transmitted, 10 received, 0% packet loss, time 9013ms rtt min/avg/max/mdev = 19.668/68.297/109.205/29.787 ms

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 119 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 9 ­ Configure host sleep parameters. · Enable WoWLAN.
iw phy#0 wowlan enable any
· Set wake-up condition. Command to set multicast packet wake-up condition:
echo "hssetpara=8 0xff 0xc8" > /proc/mwlan/adapter0/config
· Enable host sleep.
echo mem > /sys/power/state
Step 10 ­ Ping from the AP back-end to DUT_STA.
nxp@nxp:~ $ ping6 fe80::2e4c:c6ff:fef4:679e%eth0
Command output example:
nxp@nxp:~ $ ping6 fe80::2e4c:c6ff:fef4:679e%eth0 PING fe80::2e4c:c6ff:fef4:679e%eth0(fe80::2e4c:c6ff:fef4:679e) 56 data bytes From fe80::ddb8:30e0:6936:e5b6 icmp_seq=26 Destination unreachable: Address unreachable From fe80::ddb8:30e0:6936:e5b6 icmp_seq=27 Destination unreachable: Address unreachable From fe80::ddb8:30e0:6936:e5b6 icmp_seq=28 Destination unreachable: Address unreachable From fe80::ddb8:30e0:6936:e5b6 icmp_seq=29 Destination unreachable: Address unreachable From fe80::ddb8:30e0:6936:e5b6 icmp_seq=30 Destination unreachable: Address unreachable From fe80::ddb8:30e0:6936:e5b6 icmp_seq=31 Destination unreachable: Address unreachable From fe80::ddb8:30e0:6936:e5b6 icmp_seq=32 Destination unreachable: Address unreachable
Verify that the host does not wake up when ping6 is started and NS and NA packets are observed on sniffer.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 120 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Figure 36 and Figure 37 illustrate the verification from sniffer:

Figure 36.Neighbor solicitation request

Figure 37.Neighbor advertisement

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 121 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.12.2 Multicast DNS (mDNS) wake-up The Multicast DNS (mDNS) protocol resolves the hostnames to IP addresses within small networks that do not include a local name server. mDNS uses the same programming interfaces, packet formats and operating semantics as unicast domain name system (DNS). To verify the mDNS wake-up functionality: Step 1 - Create wpa_supplicant.conf file. Create and edit wpa_supplicant.conf configuration file in etc directory.
nano /etc/wpa_supplicant.conf
Content of wpa_supplicant.conf file:
network={ SSID="ASUS_2G" key_mgmt=WPA-PSK psk="12345678" }
Step 2 - Connect the DUT STA with an external AP.
wpa_supplicant -Dnl80211 -i mlan0 -c /etc/wpa_ supplicant.conf -B
Step 4 ­ Get the IP address for the DUT.
udhcpc -i mlan0
Step 5 - Verify IPv4 and IPv6 addresses.
ifconfig mlan0
Command output example:
mlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.244 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::2e4c:c6ff:fef4:679e prefixlen 64 scopeid 0x20<link> ether 2c:4c:c6:f4:67:9e txqueuelen 1000 (Ethernet) RX packets 9 bytes 1448 (1.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 48 bytes 6825 (6.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 122 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 6 - Verify IPv4 and IPv6 addresses on the external AP.
ifconfig eth0
Command output example:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.233 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::d80:6eb4:869f:f90b prefixlen 64 scopeid 0x20<link> ether 28:d2:44:05:0a:81 txqueuelen 1000 (Ethernet) RX packets 171 bytes 165165 (165.1 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 125 bytes 14394 (14.3 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 20 memory 0xf2500000-f2520000
Step 7 ­ Check the connectivity between the DUT STA and external AP.
ping <ip_address_of_external_AP>
Command output example:
ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=5.91 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=6.49 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=4.23 ms
Step 8 - Check IPv6 connectivity from the AP to DUT STA.
# ping6 <IPV6 addr of mlan0 of DUT>%eth0
Command output example:
# ping6 -c 20 fe80::2e4c:c6ff:fef4:679e%eth0 PING fe80::2e4c:c6ff:fef4:679e%eth0(fe80::2e4c:c6ff:fef4:679e) 56 data bytes 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=1 ttl=64 time=76.0 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=2 ttl=64 time=97.1 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=3 ttl=64 time=33.3 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=4 ttl=64 time=36.7 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=5 ttl=64 time=57.6 ms 64 bytes from fe80::2e4c:c6ff:fef4:679e: icmp_seq=6 ttl=64 time=78.3 ms
Step 9 - Configure host_sleep parameters. · Enable WoWlan.
iw phy#0 wowlan enable any
· Set the condition for wake up and multicast packet.
echo "hssetpara=8 0xff 0xc8" > /proc/mwlan/adapter0/config
· Add multicast route
route add -net 224.0.0.0 netmask 240.0.0.0 dev mlan0

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 123 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

· Add multicast route at the AP back-end.

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

Step 10 - Start iPerf UDP server on the DUT.

iperf -s -i 1 -u -B 224.0.0.1 &

Command output example:

-----------------------------------------------------------Server listening on UDP port 5001 Binding to local address 224.0.0.1 Joining multicast group 224.0.0.1 Receiving 1470 byte datagrams UDP buffer size: 12.0 MByte (default)

Step 11 - Enable host sleep on DUT

echo mem > /sys/power/state

Step 12 - Run UDP TX traffic from the external AP to the DUT.

iperf -c 224.0.0.1 -i 1 -u -b 5M -B

Command output example:

------------------------------------------------------------

Client connecting to 224.0.0.1, UDP port 5001

Sending 1470 byte datagrams

Setting multicast TTL to 1

UDP buffer size: 208 KByte (default)

------------------------------------------------------------

[ 3] local 192.168.0.233 port 60532 connected with 224.0.0.1 port 5001

[ ID] Interval

Transfer

Bandwidth

[ 3] 0.0- 1.0 sec 612 KBytes 5.01 Mbits/sec

[ 3] 1.0- 2.0 sec 610 KBytes 5.00 Mbits/sec

[ 3] 2.0- 3.0 sec 610 KBytes 5.00 Mbits/sec

[ 3] 3.0- 4.0 sec 610 KBytes 5.00 Mbits/sec

[ 3] 4.0- 5.0 sec 610 KBytes 5.00 Mbits/sec

[ 3] 5.0- 6.0 sec 610 KBytes 5.00 Mbits/sec

[ 3] 6.0- 7.0 sec 612 KBytes 5.01 Mbits/sec

[ 3] 7.0- 8.0 sec 610 KBytes 5.00 Mbits/sec

[ 3] 8.0- 9.0 sec 610 KBytes 5.00 Mbits/sec

[ 3] 9.0-10.0 sec 610 KBytes 5.00 Mbits/sec

[ 3] 0.0-10.0 sec 5.96 MBytes 5.00 Mbits/sec

[ 3] Sent 4253 datagrams

Step 13 - Verify that the DUT resumes operation when receiving multicast data from the external AP.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 124 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.13 Configure energy detection (ED) and TX power
This section provides the guidelines to load the energy detection (ED) configuration for the adaptivity test and to load the TX power table.
5.1.13.1 Load ED-MAC configuration
This section shows how to load the converted ED-MAC configuration. The ED-MAC configuration binary file from the module vendor is activated during the wireless driver load time. In the following example, the driver loads ed_mac.bin using init_hostcmd_cfg parameter:
nano /lib/firmware/nxp/wifi_mod_para.conf SD8987 = {
cfg80211_wext=0xf wfd_name=p2p cal_data_cfg=none max_vir_bss=1 init_hostcmd_cfg=nxp/ed_mac.bin }
Issue the command to load the module:
modprobe moal mod_para=nxp/wifi_mod_para.conf

5.1.13.2 Load TX power table configuration
This section provides the instructions to load the TX power table configuration.
The TX Power table configuration binary file the from module vendor is activated during the wireless driver load time. In the following example, the driver loads txpower_US.bin using txpwrlimit_cfg parameter:
nano /lib/firmware/nxp/wifi_mod_para.conf SD8987 = {
cfg80211_wext=0xf wfd_name=p2p cal_data_cfg=none max_vir_bss=1 txpwrlimit_cfg=nxp/txpower_US.bin }
Issue the command to load the module:
modprobe moal mod_para=nxp/wifi_mod_para.conf

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 125 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.14 Operating dynamic frequency selection (DFS) region
A DFS-enabled system goes through the following sequence:
1. The Access Point selects a channel in 5 GHz frequency band and monitors that channel for potential radar interference for a minimum listening time (CAC time). No transmissions can occur during this period.
2. If some interference is detected, the system must go and select another channel and repeat the channel availability check on the new channel (the original channel is added to a list of channels with radar).
3. Once a channel has been selected and no radar signal is detected for CAC time, the network starts to use that channel.
4. While operating on the channel, the device continuously checks for potential radar signal. If some interference is detected, the device adds CHAN_SW_ANN IE (channel switch announcement IE) to the action frame, the AP Beacon, or the probe responses. This informs the connected devices that a channel change is pending.
5. The AP stops the communication on the current channel. The channel is added to the list of channels with radar. The access point selects a new channel (one that is not on the list). The sequence starts again with a channel availability check if another DFS channel is selected.
6. Once a channel is included in the list of channels with radar, the access point avoids using that channel again before the expiring NOP time for that channel.
Content of DFS hostapd configuration file:
ctrl_interface=/var/run/hostapd interface=uap0 driver=nl80211 hw_mode=a ssid=DFS_AP channel=52 ieee80211d=1 ieee80211n=1 ieee80211ac=1 ieee80211h=1 country_code=US ht_capab=[HT40-][HT40+][SHORT-GI-20][SHORT-GI-40] vht_oper_chwidth=1 vht_capab=[SHORT-GI-80][SU-BEAMFORMER][SU-BEAMFORMEE][MU-BEAMFORMEE] vht_oper_centr_freq_seg0_idx=58

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 126 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.15 Software antenna diversity (SAD) This section explains how to configure and enable/disable the software antenna diversity feature on a 1x1 device with 2 antennas. Step 1 - Verify or get the current configurations
cat /proc/mwlan/adapter0/config
For example: · If software antenna diversity is enabled, the command output is as follows:
hardware_status=0 netlink_num=31 drv_mode=7 hssetpara=7,0xff,200,400 rf_test_mode=0 antcfg=0x303 0x303
· If the antenna configuration is set to one antenna, the command output is as follows:
hardware_status=0 netlink_num=31 drv_mode=7 hssetpara=7,0xff,200,400 rf_test_mode=0 antcfg=0x301 0x301
Step 2 - Enable Tx/Rx software antenna diversity
echo "antcfg=0xffff" > /proc/mwlan/adapter0/config
Step 3 Set antenna evaluate time interval to 6 s
echo "antcfg=0xffff 0x1770" > /proc/mwlan/adapter0/config
Note: The software antenna diversity mode must be enabled when setting software antenna diversity evaluate time interval. The default evaluate time interval is 6 s (0x1770) Step 4 - Select antenna 1 for TX/RX and disable software antenna diversity
echo "antcfg=1" > /proc/mwlan/adapter0/config
Step 5 - Select antenna 2 for TX/RX and disable software antenna diversity
echo "antcfg=2" > /proc/mwlan/adapter0/config

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 127 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.16 Tunneled direct link support (TDLS)
TDLS enables Wi-Fi devices to set secure direct links and transfer data directly. IEEE 802.11z amendment extends the direct link support (DLS) feature introduced by 802.11e. With DLS, STAs can establish a direct link without any knowledge of the AP where the STAs encapsulate the direct link signaling protocol into the data frame using a specific ether type.
IEEE 802.11z defines the following mechanism for TDLS:
· TDLS discovery: discovering TDLS capable STAs in the BSS to form direct links · TDLS setup: ability to set up a direct link (with optional security) with a TDLS capable peer STAs. · TDLS direct link power save mode (PSM):
­ TDLS peer PSM: scheduled access of direct link on a negotiated wakeup schedule. ­ Peer UAPSD: The TDLS STA buffers the traffic for the peer STA in power save mode and signals the traffic
through the AP path. The peer STA receives the traffic by initiating a service period. · TDLS off-channel operation: the Wi-Fi devices supporting TDLS feature can go off-channel and/or off band
while maintaining the association. This can be used to choose a channel with better throughput or latency to meet the application requirements. For example,a 2.4 GHz device can move to 5 GHz band while maintaining direct link to avoid interference. However, in this case the Wi-Fi device must obey regulatory rules and avoid interference with Radars. TDLS does not define DFS algorithm nor the channel selection rules.
Establish the AP link and TDLS link
· Connect the STAs to the AP.
Use wpa_supplicant to connect the STAs to the AP. Make sure CONFIG_TDLS is enabled in supplicant. Verify that the supports host-based TDLS.
Example of configuration file for the AP-link connection:

ctrl_interface=/var/run/wpa_supplicant update_config=1 network={
ssid="TestAP" psk="1234567890" }

· Set the security mode of the AP to OPEN/ AES. · Establish the infra connection to the AP.
Issue wpa_supplicant command:
./wpa_supplicant i mlan0 c wpa_supplicant.conf Dnl80211 ddd

· Issue wpa_cli command. ./wpa_cli

Note: Connect both clients to the same AP. · Find TDLS device.

> TDLS_DISCOVER <Peer MAC address>

Example of command:

> TDLS_DISCOVER FF:FF:FF:FF:FF:FF

The Wi-Fi device which supports TDLS in the same BSS responds to the discovery request and sends the discover response.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 128 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

· Set up TDLS direct link.
> TDLS_SETUP <Peer MAC address>
Note: Only one client-side must set the command TDLS_SETUP. If TDLS link setup is a success, the traffic to the peer device transmits via TDLS direct link. The address 1 and address 2 of the packet header are the destination address and the source address respectively.
Command to tear down TDLS direct link:
> TDLS_TEARDOWN <Peer Mac address>
If TDLS link is teared down, the traffic restores the transmit operation through the AP path.
Verify TDLS connection · Check /proc/mwlan/adapter0/mlan0/debug The mlan0-debug parameter is introduced for TDLS. When the link is up, the peer mac address, snr and nf are present.
Tx BA stream table: tid = 0, ta = 08:d4:2b:13:99:f6 amsdu=0 Rx reorder table: tid = 0, ta = 08:d4:2b:13:99:f6, start_win = 3210, win_size = 16, amsdu=0 buffer: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 tdls peer : 08:d4:2b:13:99:f6 snr=0 nf=0 htcap: 2d 1a fe 01 1b ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 Extcap: 7f 05 00 00 00 50 20 00 00 00 vhtcap: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
The driver log message TDLS_ENABLE_LINK/ TDLS_DISABLE_LINK is present in the driver log when tdls_setup and tdls_teardown commands are executed respectively.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 129 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.17 UNII-4 channel support
Wi-Fi 5 standard added the support for 160 MHz channel width to improve the performance. Prior to Wi-Fi 5, the maximum channel width was 80 MHz.
The first three UNII groups can accommodate only two 160 MHz channels, which also include DFS space. As a consequence, the Wi-Fi devices may be disconnected when RADAR signals are observed. To avoid the disconnection, most of the Wi-Fi devices (routers, access points) avoid the use of 160 MHz channel width and instead opt for the more reliable 80 MHz. The performance may be affected.
To help with this scenario, the UNII4 portion of the 5 GHz band, also referred to as the 5.9 GHz band, is newly supported. This extension to the 5 GHz band adds new channels such as channels 169, 173, and 177 (channel 181 is not usable). The new channels can be combined to form a third 160 MHz channel in Wi-Fi 6 standard.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 130 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.18 Statistics and counters

Many statistics and counters are available for Wi-Fi TX/RX operations, for example frame counts, retransmissions, and error counts. Those counters are available as part of standard /proc interface.
Table 6 lists the statistics and counters shown in /proc.

Table 6.Statistics and counters Field name dot11GroupTransmittedFrameCount dot11FailedCount dot11RetryCount
dot11MultipleRetryCount
dot11FrameDuplicateCount
dot11RTSSuccessCount dot11RTSFailureCount
dot11ACKFailureCount dot11ReceivedFragmentCount
dot11GroupReceivedFrameCount
dot11FCSErrorCount
dot11TransmittedFrameCount Wepicverrcnt beaconReceivedCount beaconMissedCount dot11TransmittedFragmentCount dot11QosTransmittedFragmentCount
dot11QosFailedCount
dot11QosRetryCount
dot11QosMultipleRetryCount
dot11QosFrameDuplicateCount

Type UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32[4] UINT32 UINT32 UINT32 UINT32[8] UINT32[8]
UINT32[8] UINT32[8] UINT32[8]

Description
Increments when the multicast bit is set in the destination MAC
Increments when an MSDU is not transmitted successfully
Increments when an MSDU is successfully transmitted after 1 or more retransmissions
Increments when an MSDU is successfully transmitted after more than 1 retransmission
Increments when a frame is received that the Sequence Control field is indicating a duplicate count
Increments when a CTS is received in response to an RTS
Increments when a CTS is not received in response to an RTS
Increments when an ACK is not received when expected
Increments for each successfully received MPDU of type Data or Management
Increments when a MSDU is received with the multicast bit set in the destination MAC address
Increments when an FCS error is detected in a received MPDU
Increments for each successfully transmitted MSDU
Increment when WEP decryption error for key index 0­3
Increments when a beacon is received
Increments when an beacon is not received when expected
Increments for each successfully transmitted MPDU
Increments for each successfully transmitted QOS Data MPDU
increments when an MSDU, for a particular UP, is not transmitted successfully due to the number of transmit attempts exceeding either the dot11ShortRetryLimit or dot11 LongRetryLimit.
increments when an MSDU, of a particular UP, is successfully transmitted after one or more retransmissions
increments when an MSDU, of a particular UP, is successfully transmitted after more than one retransmissions
increments when a frame, of a particular UP, is received that the Sequence Control field indicates is a duplicate

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 131 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Table 6.Statistics and counters...continued Field name
dot11QosRTSSuccessCount

Type UINT32[8]

dot11QosRTSFailureCount

UINT32[8]

dot11QosACKFailureCount
dot11QosReceivedFragmentCount
dot11QosTransmittedFrameCount
dot11QosDiscardedFrameCount dot11QosMPDUsReceivedCount dot11QosRetriesReceivedCount
dot11RSNAStatsCMACICVErrors dot11RSNAStatsCMACReplays
dot11RSNAStatsRobustMgmt CCMPReplays dot11RSNAStatsTKIPICVErrors
dot11RSNAStatsTKIPReplays dot11RSNAStatsCCMPDecryptErrors
dot11RSNAstatsCCMPReplays
dot11TransmittedAMSDUCount

UINT32[8] UINT32[8] UINT32[8] UINT32[8] UINT32[8] UINT32[8] UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32 UINT32

dot11FailedAMSDUCount

UINT32

dot11RetryAMSDUCount

UINT32

dot11MultipleRetryAMSDUCount

UINT32

dot11TransmittedOctetsInAMSDUCount UINT32

dot11AMSDUAckFailureCount

UINT32

Description
increments when a CTS frame is received in response to an RTS that has been sent for the transmission of an MPDU of a particular UP
increments when a CTS frame is not received in response to an RTS that has been sent for the transmission of an MPDU of a particular UP
increments when an Ack frame is not received in response to an MPDU of a particular UP
incremented for each successfully received MPDU with the Type subfield equal to Data of a particular UP
increments for each successfully transmitted MSDU of a particular UP
increments for each Discarded MSDU of a particular UP
increments for each received MPDU of a particular TID
increments for each received MPDU of a particular TID with the Retry subfield equal to 1
Counts the number of ICV Errors
The number of received MPDUs discarded by the CMAC replay errors
The number of received robust Management frames discarded due to CCMP replay errors
Counts the number of TKIP ICV errors encountered when decrypting packets for the STA.
Counts the number of TKIP replay errors detected
The number of received MPDUs discarded by the CCMP decryption algorithm
The number of received MPDUs discarded by the CMAC replay errors
incremented for an acknowledged A-MSDU frame with an individual address in the Address 1 field or an A-MSDU frame with a group address in the Address 1 field
incremented when an A-MSDU is not transmitted successfully due to the number of transmit attempts exceeding either the dot11ShortRetryLimit or dot11LongRetry Limit
incremented when an A-MSDU is successfully transmitted after one or more retransmissions
incremented when an A-MSDU is successfully transmitted after more than one retransmission
incremented by the number of octets in the frame body of an A-MSDU frame when an A-MSDU frame is successfully transmitted
incremented when an acknowledgment to an A-MSDU is not received when expected. This acknowledgment can be in an Ack or Block-Ack frame

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 132 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Table 6.Statistics and counters...continued Field name
dot11ReceivedAMSDUCount

Type UINT32

dot11ReceivedOctetsInAMSDUCount UINT32

dot11TransmittedAMPDUCount

UINT32

dot11TransmittedMPDUsInAMPDUCount UINT32

dot11TransmittedOctetsInAMPDUCount UINT32

dot11AMPDUReceivedCount

UINT32

dot11MPDUInReceivedAMPDUCount

UINT32

dot11ReceivedOctetsInAMPDUCount UINT32

dot11AMPDUDelimiterCRCErrorCount UINT32

Example of command: cat /proc/mwlan/adapter0/mlan0/log

Description
incremented for a received A-MSDU frame with the station's MAC address in the Address 1 field or an A-MSDU frame with a group address in the Address 1 field
incremented by the number of octets in the frame body of an A-MSDU frame when an A-MSDU frame is received
incremented when an A-MPDU is transmitted
increment by the number of MPDUs in the A-MPDU when an A-MPDU is transmitted
incremented by the number of octets in the A-MPDU frame when an A-MPDU frame is transmitted
incremented when the MAC receives an A-MPDU from the PHY
incremented by the number of MPDUs received in the AMPDU when an A-MPDU is received
incremented by the number of octets in the A-MPDU frame when an A-MPDU frame is received
incremented when an MPDU delimiter has a CRC error when this is the first CRC error in the received A-MPDU or when the previous delimiter has been decoded correctly

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 133 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Example of command output:

dot11GroupTransmittedFrameCount 0

dot11FailedCount

0

dot11RetryCount

1

dot11MultipleRetryCount

1

dot11FrameDuplicateCount

0

dot11RTSSuccessCount

0

dot11RTSFailureCount

0

dot11ACKFailureCount

4

dot11ReceivedFragmentCount

6

dot11GroupReceivedFrameCount

1

dot11FCSErrorCount

13

dot11TransmittedFrameCount

3

wepicverrcnt-1

0

wepicverrcnt-2

0

wepicverrcnt-3

0

wepicverrcnt-4

0

beaconReceivedCount

346

beaconMissedCount

0

dot11TransmittedFragmentCount

3

dot11QosTransmittedFragmentCount 0 0 0 0 0 0 0 3

dot11QosFailedCount

0 0 0 0 0 0 0 0

dot11QosRetryCount

0 0 0 0 0 0 0 1

dot11QosMultipleRetryCount

0 0 0 0 0 0 0 1

dot11QosFrameDuplicateCount

0 0 0 0 0 0 0 0

dot11QosRTSSuccessCount

0 0 0 0 0 0 0 0

dot11QosRTSFailureCount

0 0 0 0 0 0 0 0

dot11QosACKFailureCount

0 0 0 0 0 0 0 4

dot11QosReceivedFragmentCount

2 0 0 0 0 0 3 0

dot11QosTransmittedFrameCount

0 0 0 0 0 0 0 3

dot11QosDiscardedFrameCount

0 0 0 0 0 0 0 0

dot11QosMPDUsReceivedCount

2 0 0 0 0 0 3 0

dot11QosRetriesReceivedCount

1 0 0 0 0 0 0 0

dot11RSNAStatsCMACICVErrors

0

dot11RSNAStatsCMACReplays

0

dot11RSNAStatsRobustMgmtCCMPReplays 0

dot11RSNAStatsTKIPICVErrors

0

dot11RSNAStatsTKIPReplays

0

dot11RSNAStatsCCMPDecryptErrors

0

dot11RSNAstatsCCMPReplays

0

dot11TransmittedAMSDUCount

0

dot11FailedAMSDUCount

0

dot11RetryAMSDUCount

0

dot11MultipleRetryAMSDUCount

0

dot11TransmittedOctetsInAMSDUCount 0

dot11AMSDUAckFailureCount

0

dot11ReceivedAMSDUCount

0

dot11ReceivedOctetsInAMSDUCount

0

dot11TransmittedAMPDUCount

35

dot11TransmittedMPDUsInAMPDUCount 35

dot11TransmittedOctetsInAMPDUCount 0

dot11AMPDUReceivedCount

12789179

dot11MPDUInReceivedAMPDUCount

15974027

dot11ReceivedOctetsInAMPDUCount

349

dot11AMPDUDelimiterCRCErrorCount

161520711

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 134 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.19 Measuring the throughput
This section describes the throughput test using the iPerf tool. iPerf is an open source tool used for network throughput measurements. The tool can test either TCP or UDP throughput. To perform an iPerf test the user must configure an iPerf server to act as a traffic sink, and an iPerf client to generate network traffic.
Figure 38 shows the test setup with iPerf.

Figure 38.iPerf setup diagram
Step 1 ­ Connect the NXP Wi-Fi device with the access point. Follow the instructions given in Association to connect the Wi-Fi device (attached to i.MX platform) with the Access Point (External Wi-Fi router). Use the following steps to test the throughput of the network established between the AP and the station or client. Step 2 ­ Get the IP address of the access point. Run the command:
udhcpc -i mlan0
Command output example:
udhcpc -i mlan0 udhcpc: started, v1.31.0 udhcpc: sending discover udhcpc: sending select for 192.168.1.3 udhcpc: lease of 192.168.1.3 obtained, lease time 600 /etc/udhcpc.d/50default: Adding DNS 192.168.1.1

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 135 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 3 ­ Start iPerf on the server.
Use the following command to start iPerf on the Ubuntu station connected with the external Wi-Fi Router as a server.

root@ubuntu-desktop:/# iperf -s -i 1

Command output example on the server after iPerf started on the client:

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

Accepted connection from 192.168.1.3, port 47590

[ 5] local 192.168.1.2 port 5201 connected to 192.168.1.3 port 55286

[ ID] Interval

Transfer

Bandwidth

Jitter Lost/Total Datagrams

[ 5] 0.00-1.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 1.00-2.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 2.00-3.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 3.00-4.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 4.00-5.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 5.00-6.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 6.00-7.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 7.00-8.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 8.00-9.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 9.00-10.00 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

[ 5] 10.00-10.52 sec XX.XX MBytes XXX.X Mbits/sec X.XXX ms XX/XXXX (XX%)

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval

Transfer

Bandwidth

Jitter Lost/Total Datagrams

[ 5] 0.00-10.52 sec XXX.X MBytes XXX.X Mbits/sec X.XXX ms XXXX/XXXXX (XX%)

-----------------------------------------------------------

Step 4 ­ Start iPerf on the client.
The iPerf server is running and the system is connected to the external AP.
Run the command to start iPerf on i.MX 8M Quad station as a client. The command takes iPerf server IP address as an argument.

iperf -c 192.168.1.2 -u -b 50M -i 1

Command output example:

Connecting to host 192.168.1.2, port 5201

[ 5] local 192.168.1.3 port 55286 connected to 192.168.1.2 port 5201

[ ID] Interval

Transfer

Bitrate

Total Datagrams

[ 5] 0.00-1.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 1.00-2.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 2.00-3.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 3.00-4.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 4.00-5.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 5.00-6.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 6.00-7.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 7.00-8.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 8.00-9.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

[ 5] 9.00-10.00 sec XX.XX MBytes XXX.X Mbits/sec XXXX

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval

Transfer

Bitrate

Jitter Lost/Total Datagrams

[ 5] 0.00-10.00 sec XXX.X MBytes XXX.X Mbits/sec X.XXX ms XXXX/XXXXX (XX%) sender

[ 5] 0.00-10.00 sec XXX.X MBytes XXX.X Mbits/sec X.XXX ms XXXX/XXXXX (XX%) receiver

iperf Done.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 136 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.20 Throughput performance tuning To fine tune the network stack per the platform and use case, a few parameters are available. Examples for Linux platform:

echo 12582912 > /proc/sys/net/core/rmem_max echo 12582912 > /proc/sys/net/core/wmem_max echo 12582912 > /proc/sys/net/core/rmem_default echo 12582912 > /proc/sys/net/core/wmem_default echo '10240 87380 12582912' > /proc/sys/net/ipv4/tcp_rmem echo '10240 87380 12582912' > /proc/sys/net/ipv4/tcp_wmem echo '12582912 12582912 12582912' > /proc/sys/net/ipv4/tcp_mem echo '12582912 12582912 12582912' > /proc/sys/net/ipv4/udp_mem echo 1310720 > /proc/sys/net/ipv4/tcp_limit_output_bytes echo 1 > /proc/sys/net/ipv4/route/flush echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor

Trade-off to maintain
Note that these are only suggested starting points. Changing the parameter values from the default value can increase the resources used on the system. Increasing the values can improve the performance but you must experiment with different values to determine what works best for a given system, workload and traffic type.
For the throughput performance that relates to driver parameters, use the default settings (recommendation).

Table 7.Throughput performance related driver parameters module_param Description

tx_work

0: Disable TX work queue; 1: Enable TX work queue

tx_skb_clone 0: Disable TX skb clone; 1: Enable TX skb clone

rx_work

0: Auto, enable/disable RX work queue on multicore/single core system; 1: Enable RX work queue; 2: Disable RX work queue

net_rx

0: Use netif_rx/netif_rx_ni API in RX; 1: Use netif_receive_skb API in RX

amsdu_deaggr 0: Buffer copy in A-MSDU de-aggregation; 1: Avoid buffer copy in A-MSDU de-aggregation

rps

0: Disable RPS (Receive Packet Steering);

bit0-bit4 (0x1-0xf): Enables RPS on specific CPU

pmqos

0: Disable PM QoS (Power Management Quality of Service);
1: Enable PM QoS

napi

0: Disable napi related APIs 1: Enable napi related APIs

Default Comment

1

Use tx_work queue for better

performance.

Trade-off: CPU utilization

1

Use tx_skb_clone for better

performance.

Trade-off: CPU utilization

0

Use rx_work queue for better

performance.

Trade-off: CPU utilization

1

Use netif_receive_skb API for

better performance in polling case

1

Avoid buffer copy for better performance

and CPU utilization

0

Use rps for better performance.

Trade-off: complexity and stability

1

Enable pmqos for better performance.

Trade-off: complexity and stability

0

Use napi related APIs for better CPU

utilization.

Trade-off: complexity and stability

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 137 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2 Bluetooth
5.2.1 Bluetooth Classic
5.2.1.1 Scan, pair and connect to Bluetooth classic/Bluetooth LE This section describes the configuration steps to scan, pair and connect with a Remote Bluetooth device from NXP-based wireless module. BlueZ Stack provides the bluetoothctl command line utility to connect with a Remote Bluetooth device. Use the following steps to scan, pair and connect the remote Bluetooth Classic/Bluetooth Low Energy device using bluetoothctl utility. Start bluetoothctl Start bluetoothctl to interact with the Bluetooth daemon from the command line. Note: This section describes the options required to scan, pair and connect the Bluetooth classic/LE device. For more options use "help" command in bluetoothctl.
bluetoothctl
Command output example:
Agent registered [bluetooth]# version Version 5.65 [bluetooth]#
Authenticate Since the pairing procedure will involve authentication by PIN, it is required to register with an authentication agent as per the peer device capabilities. The agent handles the PIN prompt. Note: agent on uses option NoInputNoOutput. Agent on command:
[bluetooth]# agent on
Agent help command:
[bluetooth]# agent help
Command output example:
Enable/disable agent with given capability Usage: agent <on/off/capability> [bluetooth]# Agent is already registered
default-agent command:
[bluetooth]# default-agent

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 138 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Command output example:
Default agent request successful
Start scanning Run the following command to start scanning for remote Bluetooth Classic/Bluetooth LE device(s).
[bluetooth]# scan on
Command output example:
Discovery started [CHG] Controller 00:50:43:24:34:F7 Discovering: yes [NEW] Device B4:F5:00:31:CB:4E Moto E
Stop scanning Stop the scanning and check for available remote Bluetooth Classic/Bluetooth LE device(s) for pairing.
[bluetooth]# scan off
Command output example:
Discovery stopped [CHG] Controller 00:50:43:24:34:F7 Discovering: no [bluetooth]# devices Device B4:F5:00:31:CB:4E Moto E [bluetooth]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 139 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Start pairing
Start pairing with the remote Bluetooth Classic/Bluetooth LE device.
[bluetooth]# pair B4:F5:00:31:CB:4E
Command output example:
Attempting to pair with B4:F5:00:31:CB:4E [CHG] Device B4:F5:00:31:CB:4E Connected: yes Request confirmation [agent] Confirm passkey 666330 (yes/no):
Confirm pairing
If the passkey matches, type yes to complete the pairing procedure and establish a connection:
[agent] Confirm passkey 666330 (yes/no): yes [CHG] Device B4:F5:00:31:CB:4E Modalias: bluetooth:v000Fp1200d1436 [CHG] Device B4:F5:00:31:CB:4E UUIDs: 00001105-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 0000110a-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 00001112-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 00001115-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 00001116-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 0000111f-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 0000112f-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 00001132-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 00001800-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E UUIDs: 00001801-0000-1000-8000-00805f9b34fb [CHG] Device B4:F5:00:31:CB:4E ServicesResolved: yes [CHG] Device B4:F5:00:31:CB:4E Paired: yes Pairing successful [CHG] Device B4:F5:00:31:CB:4E ServicesResolved: no [CHG] Device B4:F5:00:31:CB:4E Connected: no [bluetooth]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 140 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Connect with the remote Bluetooth Classic/Bluetooth LE device The remote Bluetooth Classic/Bluetooth LE device is not yet in the connected state. Run the following command to set the connected state. · Command to trust the device:
[bluetooth]# trust B4:F5:00:31:CB:4E
Command output example:
[CHG] Device B4:F5:00:31:CB:4E Trusted: yes Changing B4:F5:00:31:CB:4E trust succeeded
· Command to connect the Bluetooth device:
[bluetooth]# connect B4:F5:00:31:CB:4E
Command output example:
Attempting to connect to B4:F5:00:31:CB:4E [CHG] Device B4:F5:00:31:CB:4E Connected: yes Connection successful [CHG] Device B4:F5:00:31:CB:4E ServicesResolved: yes [Moto E]#
Disconnect the remote Bluetooth Classic/Bluetooth LE device
[Moto E]# disconnect B4:F5:00:31:CB:4E
Command output example:
Attempting to disconnect from B4:F5:00:31:CB:4E [CHG] Device B4:F5:00:31:CB:4E ServicesResolved: no Successful disconnected [CHG] Device B4:F5:00:31:CB:4E Connected: no [bluetooth]#
Remove the remote Bluetooth Classic/Bluetooth LE device
[bluetooth]# remove B4:F5:00:31:CB:4E
Command output example:
[DEL] Device B4:F5:00:31:CB:4E Moto E Device has been removed [bluetooth]#
Exit from bluetoothctl command line interface
[Moto E]# quit

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 141 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.1.2 Advanced audio distribution profile (A2DP)
This section shows how to configure i.MX 8M EVK board with A2DP sink or source profile. The following PipeWire packages are used to configure A2DP profiles: · PipeWire: a low-latency audio server that serves as a replacement for PulseAudio and JACK. · pipewire-audio: core PipeWire package for handling audio processing and routing. Command to check the outcome of the server swap:
$ pactl info ... Server Name: PipeWire x.y.z ...
· WirePlumber: utility used as session manager for PipeWire.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 142 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.1.2.1 A2DP sink profile configuration Steps to configure i.MX 8M EVK board with A2DP sink profile: Step 1 ­ Start PipeWire on i.MX 8M EVK board.

$ root@imx8mmevk:~# systemctl --user start pipewire wireplumber

Step 2 ­ Connect with a peer Bluetooth device that supports Audio Source Profile. Refer to Section 5.2.1.1. Step 3 ­ Verify the audio source profile of the connected Bluetooth device. Command using the command line utility for Bluetooth operations (bluetoothctl):

$ root@imx8mmevk:~# bluetoothctl

[test_phone]# info 48:74:12:C2:F2:82

Device 48:74:12:C2:F2:82 (public)

Name: test_phone

Alias: test_phone

Class: 0x005a020c (5898764)

Icon: phone

Paired: yes

Bonded: yes

Trusted: no

Blocked: no

Connected: yes

LegacyPairing: no

UUID: Vendor specific

(00000000-0000-0000-0000-000000000000)

UUID: OBEX Object Push

(00001105-0000-1000-8000-00805f9b34fb)

UUID: Audio Source

(0000110a-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control

(0000110e-0000-1000-8000-00805f9b34fb)

UUID: Headset AG

(00001112-0000-1000-8000-00805f9b34fb)

UUID: PANU

(00001115-0000-1000-8000-00805f9b34fb)

UUID: NAP

(00001116-0000-1000-8000-00805f9b34fb)

UUID: Handsfree Audio Gateway (0000111f-0000-1000-8000-00805f9b34fb)

UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb)

UUID: Message Access Server

(00001132-0000-1000-8000-00805f9b34fb)

UUID: PnP Information

(00001200-0000-1000-8000-00805f9b34fb)

UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)

UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)

UUID: Unknown

(0000aa15-0000-1000-8000-00805f9b34fb)

UUID: Vendor specific

(a49eaa15-cb06-495c-9f4f-bb80a90cdf00)

Modalias: bluetooth:v001Dp1200d1436

[test_phone]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 143 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 4 ­ Check the available sink cards in the audio profile

$ root@imx8mmevk:~# wpctl status

PipeWire 'pipewire-0' [1.0.5, root@imx8mmevk, cookie:815200939]

 Clients:

32. WirePlumber

[1.0.5, root@imx8mmevk, pid:559]

40. WirePlumber [export]

[1.0.5, root@imx8mmevk, pid:559]

75. wpctl

[1.0.5, root@imx8mmevk, pid:578]

Audio

 Devices: 

41. Built-in Audio

[alsa]



42. Built-in Audio

[alsa]



43. Built-in Audio

[alsa]



44. Built-in Audio

[alsa]



74. OnePlus Nord CE 2 Lite 5G

[bluez5]



 Sinks:



46. Built-in Audio Mono

[vol: 0.40]



49. Built-in Audio Stereo

[vol: 0.40]

 * 50. Built-in Audio Stereo

[vol: 0.40]



 Sources:

 * 45. Built-in Audio Mono

[vol: 1.00]



47. Built-in Audio Stereo

[vol: 1.00]



48. Built-in Audio Stereo

[vol: 1.00]



 Filters:



 Streams:

Video

 Devices:



54. i.MX6S_CSI



55. vsi_v4l2enc



56. vsi_v4l2dec



 Sinks:



 Sources:

 * 59. i.MX6S_CSI (V4L2)



 Filters:



 Streams:

[v4l2] [v4l2] [v4l2]

Settings  Default Configured Devices: 0 Audio/Sink alsa_output.platform-sound-wm8524.stereo-fallback 1 Audio/Source alsa_input.platform-sound-bt-sco.mono-fallback root@imx8mmevk:~#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 144 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 5 ­ Look for wm8524 as value of alsa card_name in the list of sink cards.
$ root@imx8mmevk:~# wpctl inspect 50 id 50, type PipeWire:Interface:Node alsa.card = "1" alsa.card_name = "wm8524-audio" alsa.class = "generic" alsa.device = "0" alsa.id = "wm8524audio" alsa.long_card_name = "wm8524-audio"
· Set wm8524 as the default sink to listen to music on the audio jack of the i.MX 8M EVK board.
$ root@imx8mmevk:~# wpctl set-default 50
· Check the wpctl status again and verify that wm8524 is set as alsa_output.
$ root@imx8mmevk:~# wpctl status Settings  Default Configured Devices:
0. Audio/Sink alsa_output.platform-sound-wm8524.stereo-fallback 1. Audio/Source alsa_input.platform-sound-bt-sco.mono-fallback
Step 6 ­ Plug the audio jack of the i.MX 8M EVK board to the speaker/headset and play music from the Bluetooth A2DP source device connected to the board.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 145 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 7 ­ Use bluetooth-player to play and pause the audio.
$ root@imx8mmevk:~# bluetooth-player [NEW] Media /org/bluez/hci0 [bluetooSupportedUUIDs: 0000110a-0000-1000-8000-00805f9b34fb [bluetooSupportedUUIDs: 0000110b-0000-1000-8000-00805f9b34fb [NEW] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 [default] [NEW] Endpoint /org/bluez/hci0/dev_48_74_12_C2_F2_82/sep1 [NEW] Transport /org/bluez/hci0/dev_48_74_12_C2_F2_82/sep1/fd0 [bluetooth]# pause Attempting to pause Pause successful [CHG] Transport /org/bluez/hci0/dev_48_74_12_C2_F2_82/sep1/fd0 State: idle [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Status: paused [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Position: 0x0000cbbb (52155) [bluetooth]# play Attempting to play Play successful [CHG] Transport /org/bluez/hci0/dev_48_74_12_C2_F2_82/sep1/fd0 State: pending [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Status: playing [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Position: 0x0000cccf (52431) [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Track.Title: Takin' Back My
Love [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Track.TrackNumber: 0x00000000
(0) [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Track.NumberOfTracks:
0x00000000 (0) [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Track.Duration: 0x0003841a
(230426) [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Track.Album: Greatest Hits [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Track.Artist: Enrique
Iglesias, Ciara [CHG] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 Position: 0x0000ccf6 (52470) [CHG] Transport /org/bluez/hci0/dev_48_74_12_C2_F2_82/sep1/fd0 State: active [bluetooth]#
Step 8 ­ Disconnect the device using bluetoothctl command line interface.
[test_phone]# disconnect 48:74:12:C2:F2:82 Attempting to disconnect from 48:74:12:C2:F2:82 [DEL] Player /org/bluez/hci0/dev_48_74_12_C2_F2_82/player0 [default] [DEL] Transport /org/bluez/hci0/dev_48_74_12_C2_F2_82/sep1/fd1 [DEL] Endpoint /org/bluez/hci0/dev_48_74_12_C2_F2_82/sep1 hci0 48:74:12:C2:F2:82 type BR/EDR disconnected with reason 2 [CHG] Device 48:74:12:C2:F2:82 ServicesResolved: no Successful disconnected 5G]# [CHG] Device 48:74:12:C2:F2:82 Connected: no [bluetooth]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 146 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.1.2.2 Configuring A2DP source profile Steps to configure i.MX 8M EVK board with A2DP source profile: Step 1 ­ Start PipeWire on i.MX 8M EVK board.

$ root@imx8mmevk:~# systemctl --user start pipewire wireplumber $ root@imx8mmevk:~#

Step 2 ­ Connect with a remote Bluetooth device that supports the Audio Sink Profile. Refer to Section "Scan, pair and connect to Bluetooth classic/Bluetooth LE"
Step 3 ­ Verify the Audio Sink Profile capability of the connected device.
Command using the command line utility for Bluetooth operations (bluetoothctl):

$ root@imx8mmevk:~# bluetoothctl

$ [JBL Flip 5]# info

Device B8:F6:53:E8:BF:B7 (public)

Name: JBL Flip 5

Alias: JBL Flip 5

Class: 0x00240414 (2360340)

Icon: audio-card

Paired: yes

Bonded: yes

Trusted: no

Blocked: no

Connected: yes

LegacyPairing: no

UUID: Serial Port

(00001101-0000-1000-8000-00805f9b34fb)

UUID: Headset

(00001108-0000-1000-8000-00805f9b34fb)

UUID: Audio Sink

(0000110b-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control

(0000110e-0000-1000-8000-00805f9b34fb)

UUID: Handsfree

(0000111e-0000-1000-8000-00805f9b34fb)

[DEL] Device AC:C0:48:9F:82:5A Test

[JBL Flip 5]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 147 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 5 ­ Check the available sink cards.

$ root@imx8mmevk:~# bluetoothctl

$ [JBL Flip 5]# info

Device B8:F6:53:E8:BF:B7 (public)

Name: JBL Flip 5

Alias: JBL Flip 5

Class: 0x00240414 (2360340)

Icon: audio-card

Paired: yes

Bonded: yes

Trusted: no

Blocked: no

Connected: yes

LegacyPairing: no

UUID: Serial Port

(00001101-0000-1000-8000-00805f9b34fb)

UUID: Headset

(00001108-0000-1000-8000-00805f9b34fb)

UUID: Audio Sink

(0000110b-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control

(0000110e-0000-1000-8000-00805f9b34fb)

UUID: Handsfree

(0000111e-0000-1000-8000-00805f9b34fb)

[DEL] Device AC:C0:48:9F:82:5A Test

[JBL Flip 5]#

Step 5 - Use the following command to check the available sink cards:

root@imx8mmevk:~# wpctl status

PipeWire 'pipewire-0' [1.0.5, root@imx8mmevk, cookie:815200939]

 Clients:

32. WirePlumber

[1.0.5, root@imx8mmevk, pid:559]

40. WirePlumber [export]

[1.0.5, root@imx8mmevk, pid:559]

80. wpctl

[1.0.5, root@imx8mmevk, pid:665]

Audio

 Devices:



41. Built-in Audio

[alsa]



42. Built-in Audio

[alsa]



43. Built-in Audio

[alsa]



44. Built-in Audio

[alsa]



74. JBL Flip 5

[bluez5]



 Sinks:



46. Built-in Audio Mono

[vol: 0.40]



49. Built-in Audio Stereo

[vol: 0.40]

 * 50. Built-in Audio Stereo

[vol: 0.40]



75. JBL Flip 5

[vol: 0.16]



 Sources:

 * 45. Built-in Audio Mono

[vol: 1.00]



47. Built-in Audio Stereo

[vol: 1.00]



48. Built-in Audio Stereo

[vol: 1.00]



 Filters:



 Streams:

Video

 Devices:



54. i.MX6S_CSI

[v4l2]



55. vsi_v4l2enc

[v4l2]



56. vsi_v4l2dec

[v4l2]



 Sinks:



 Sources:

 * 59. i.MX6S_CSI (V4L2)



 Filters:



 Streams:

Settings

 Default Configured Devices:

0. Audio/Sink alsa_output.platform-sound-wm8524.stereo-fallback

1. Audio/Source alsa_input.platform-sound-bt-sco.mono-fallback

root@imx8mmevk:~#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 148 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 6 ­ Look for the connected sink device in the list of sink cards.
$ root@imx8mmevk:~# wpctl inspect 75 id 75, type PipeWire:Interface:Node
api.bluez5.address = "B8:F6:53:E8:BF:B7" api.bluez5.codec = "sbc" api.bluez5.profile = "a2dp-sink" api.bluez5.transport = "" audio.adapt.follower = "" bluez5.loopback = "false" card.profile.device = "1" * client.id = "40" clock.quantum-limit = "8192" device.api = "bluez5" * device.id = "74" device.routes = "1" * factory.id = "11" factory.mode = "merge" factory.name = "api.bluez5.a2dp.sink" library.name = "audioconvert/libspa-audioconvert" * media.class = "Audio/Sink" media.name = "JBL Flip 5" * node.description = "JBL Flip 5" node.driver = "true" * node.name = "bluez_output.B8_F6_53_E8_BF_B7.1" node.pause-on-idle = "false" * object.serial = "114" * priority.driver = "1010" * priority.session = "1010" root@imx8mmevk:~#
· Select the connected Bluetooth device as an audio sink device.
$ root@imx8mmevk:~# wpctl set-default 75

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 149 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 7 ­ Play the audio file using pw-play utility.
$ root@imx8mmevk:~# pw-play -v Makhna.wav & [1] 715 root@imx8mmevk:~# sndfile: opened file "Makhna.wav" format 00010002 channels:2 rate:44100 sndfile: using default channel map: FL,FR PCM: fmt:s16 rate:44100 channels:2 width:2 rate:44100 latency:4410 (0.100s) connecting playback stream; target=(null) stream state changed unconnected -> connecting stream param change: Spa:Enum:ParamId:Latency stream param change: Spa:Enum:ParamId:Tag stream param change: Spa:Enum:ParamId:Props stream properties:
application.name = "pw-play" node.name = "pw-play" media.title = "Makhna (Drive)(bossmobi)" media.software = "Lavf60.3.100" media.artist = "wapking.fun" media.date = "2019" media.format = "WAV (Microsoft)" media.name = "'Makhna (Drive)(bossmobi)' / 'wapking.fun'" node.rate = "1/44100" node.latency = "4410/44100" media.type = "Audio" media.category = "Playback" media.role = "Music" media.filename = "Makhna.wav" stream.is-live = "true"

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 150 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.1.3 Hands-free profile (HFP)
This section introduces the Ofono package used to dial, hang-up and answer telephone calls, and details the configuration for the hands-free profile.

5.2.1.3.1 Ofono package

Ofono package
Ofono provides a mobile telephony application development framework with minimal and easy-to-use APIs. Ofono is controlled through D-Bus.
ofonod is the daemon that provides the Ofono stack for interfacing mobile telephony devices. For example, one can tell ofonod to send AT commands over /dev/rfcomm0 by calling the D-Bus method org.ofono.at.Manager.Create.
Table 8 describes the AT commands used to dial, hang-up and answer the calls:

Table 8.Hands-free profile AT commands

command

Description

ATA

Command used to answer a call

ATD

Command used to place a call to a phone number

AT+CHUP

Command used to hang up. This command causes the AG to end an active call

For more information on AT commands refer to the.

5.2.1.3.2 Hands-free profile configuration Step 1 ­ Enable the host interface. · 88W8987: Use imx8mq-evk-usdhc2-m2.dtb file to enable SDIO on M.2 connector · 88W8997: Use imx8mq-evk-pcie1-m2.dtb file to enable PCIe on M.2 connector Note: For details on interface enable, refer to ref.[18]. Step 2 ­ Stop PipeWire. If PipeWire is running and needs to be restarted, stop it using:
systemctl -­user status
Command output example:
pipewire
Step 3 ­ Update the sample rate in the configuration file. To change the default sample rate to 8000 samples per second, edit the configuration file:
nano /etc/pipewire/pipewire.conf default.clock.rate = 8000 default.clock.quantum = 1024

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 151 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 4 ­ Start PipeWire on i.MX 8M Quad EVK.
systemctl --user start pipewire
Step 5 ­ List the available sink devices.
pw-cli list-objects Node | grep 'id\|name'
Command output example:
index: 0 name: <alsa_output.platform-sound-bt-sco.mono-fallback>
index: 1 name: <alsa_output.platform-sound-spdif.stereo-fallback>
* index: 2 name: <alsa_output.platform-sound-wm8524.stereo-fallback>
root@imx8mqevk:~#
Step 6 ­ Set external sink device as default sink.
pw-cli set-default-sink <index number of external sink device>
Note: As the i.MX 8M Quad EVK does not have a built-in mic, an external USB audio mic adapter is required to enable the two-way audio. Step 7 ­ List the available source devices.
pw-cli list-objects Node | grep 'id\|name'
Command output example:
index: 0 name: <alsa_output.platform-sound-bt-sco.mono-fallback.monitor>
* index: 1 name: <alsa_input.platform-sound-bt-sco.mono-fallback>
index: 2 name: <alsa_input.platform-sound-hdmi-arc.stereo-fallback>
index: 3 name: <alsa_output.platform-sound-hdmi.stereo-fallback.monitor>
index: 4 name: <alsa_output.platform-sound-spdif.stereo-fallback.monitor>
index: 5 name: <alsa_input.platform-sound-spdif.stereo-fallback>
index: 6 name: <alsa_output.platform-sound-wm8524.stereo-fallback.monitor>
root@imx8mqevk:~#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 152 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 8 ­ Set the external source device as default source.
pw-cli set-default-source <index number of external source device>
Step 9 ­ Enable the audio route.
pw-link alsa_input.platform-sound-bt-sco.mono-fallback <External sink device> pw-link <External source device> alsa_output.platform-sound-bt-sco.mono-fallback
Step 10 ­ Enable PCM line management by the host software. The following command controls the PCM lines. This command should be sent when the host wants to control the PCM lines. The host issues this command to have multiple voices at the same time, and inform the controller that the host software provides the PCM configuration.
hcitool -i hci0 cmd 0x3f 0x0070 0x01

Table 9.Command parameters

Parameter

Length

ogf

1

ocf

2

action

1

Definition 0x3F 0x0070 0x00 = the controller manages the PCM lines(default) 0x01 = the host software manages the PCM lines (enables new use cases)

Command output example:

< HCI Command: ogf 0x3f, ocf 0x0070, plen 1 01
> HCI Event: 0x0e plen 4 01 70 FC 00

Step 11 ­ Connect with a remote Bluetooth device.
Refer to Scan, pair and connect to Bluetooth classic/Bluetooth LE and connect with a remote Bluetooth device that supports HFP Audio Gateway.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 153 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 12 ­ Verify the Hands-free Audio Gateway Profile capability of the connected Bluetooth device.

bluetoothctl [GT-S7560M]# info 04:1B:BA:C7:92:36

Output command example:

Device 04:1B:BA:C7:92:36 (public)

Name: GT-S7560M

Alias: GT-S7560M

Class: 0x005a020c

Icon: phone

Paired: yes

Trusted: yes

Blocked: no

Connected: yes

LegacyPairing: no

UUID: OBEX Object Push

(00001105-0000-1000-8000-00805f9b34fb)

UUID: Audio Source

(0000110a-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

UUID: Headset AG

(00001112-0000-1000-8000-00805f9b34fb)

UUID: NAP

(00001116-0000-1000-8000-00805f9b34fb)

UUID: Handsfree Audio Gateway (0000111f-0000-1000-8000-00805f9b34fb)

UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb)

UUID: Message Access Server

(00001132-0000-1000-8000-00805f9b34fb)

UUID: PnP Information

(00001200-0000-1000-8000-00805f9b34fb)

Modalias: bluetooth:v0075p0100d0100

[GT-S7560M]#

Step 13 ­ Set SCO voice data path through PCM interface.

hcitool -i hci0 cmd 0x3F 0x001D 0x01

Table 10.Command parameters

Parameter

Length

OGF

1

OCF

2

Voice path

1

Definition 0x3F 0x001D 0x00 = Host/DMA 0x01 = PCM

Command output example:

< HCI Command: ogf 0x3f, ocf 0x001d, plen 1 01
> HCI Event: 0x0e plen 4 01 1D FC 00
root@imx8mqevk:~#

Note: Host voice path is not a supported feature with i.MX 8M Quad.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 154 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 14 ­ Write PCM settings. hcitool -i hci0 cmd 0x3F 0x0007 0x00

Table 11.Command parameters

Parameter

Length

OGF

1

OCF

2

PCM_Setting

1

Definition
0x3F
0x0007
Bit[4]: PCM clock ON · 0 = PCM clock is terminated after last data bit has been transmitted · 1 = make PCM clock available continuously Bit[3]: Reserved Bit[2]: PCM Sync source · 0 = PCM sync page generated from system clock · 1 = PCM sync page generated from frame clock Bit[1]: Central/peripheral · 0 = PCM I/F peripheral, external PCM clock and synchronization · 1 = PCM I/F central, internal PCM clock and synchronization Bit[0]: PCM direction · 0 = port A receives, port B transmits · 1 = port A transmits, port B receives

Command output example:

< HCI Command: ogf 0x3f, ocf 0x0007, plen 1 00
> HCI Event: 0x0e plen 4 01 07 FC 00
root@imx8mqevk:~#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 155 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 15 ­ Write PCM sync settings hcitool -i hci0 cmd 0x3F 0x0028 0x03 0x00 0x03

Table 12.Command parameters

Parameter

Length

OGF

1

OCF

2

PCM Sync Settings 1 1

PCM Sync Settings 2 2

Definition
0x3F
0x0028
Default = 0x03 ISR (IramSyncRate) only valid if IF = Host:
PCM Sync Settings 1 Bit[0]: · 0 = bursts controlled by Tx or Rx of voice packets · 1 = fixed rate of 8 ksample/s ISS (IramSyncSource) only valid if IF = Host and ISR = Fixed Rate:
PCM Sync Settings 1 Bit[1]: · 0 = 0 = ISR not aligned to frame tick · 1 = ISR aligned to frame tick (this field should be set to 1)
Default = 0x0000 pcmIfMode in PCM Descriptor
PCM Sync Settings 2 Bits[1:0]: · 00 = PCM short sync · 01 = PCM long sync · 10 = I2S audio mode pcmLRCPol in PCM Descriptor
PCM Sync Settings 2 Bit[4]: · 0 = LRC is same polarity as PCM sync · 1 = LRC is inverted pcmMClkEn in PCM Descriptor
PCM Sync Settings 2 Bit[8]: · 0 = disable generation of PCM main clock · 1 = enable pcm2048MClkSel in PCM Descriptor
PCM Sync Settings 2 Bit[9]: · 0 = default · 1 = select 2.048MHz clock for PCM clock 16k Sync in PCM
PCM Sync Settings 2 Bit[10]: · 0 = 8k Sync · 1 = 16k Sync

Command output example:

< HCI Command: ogf 0x3f, ocf 0x0028, plen 3 03 00 03
> HCI Event: 0x0e plen 4 01 28 FC 00
root@imx8mqevk:~#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 156 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 16 ­ Write PCM Link settings hcitool -i hci0 cmd 0x3F 0x0029 0x04 0x00

Table 13.Command parameters

Parameter

Length

OGF

1

OCF

2

PCM_Link_Setting 2

Definition
0x3F
0x0029
Bits [13:10]: Each bit corresponds to 1 of 4 PCM timeslots (if 0, the slot is used by the
BTU) Bits[9:2]:
Defines start of PCM slot relative to start of PCM synchronization (must be greater than the size of the PCM slot) Bits[1:0]:
Indicates which PCM slots should be used. Default: · 0x0004 = first SCO link · 0x0045 = second SCO link · 0x0086 = third SCO link

Note: The PCM Link settings command should be given after HCI reset and before setting up the voice link. Also, if multiple voice links are supported, this command should be given before setting up the voice link with the respective parameters of each voice link.
Command output example:

< HCI Command: ogf 0x3f, ocf 0x0029, plen 2 04 00
> HCI Event: 0x0e plen 4 01 29 FC 00
root@imx8mqevk:~#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 157 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 17 ­ Write the voice settings. To write the required voice settings, use HCI_Write_Voice_Setting command defined in ref.[12].
hcitool -i hci0 cmd 0x03 0x0026 0x60 0x00
Command output example:
< HCI Command: ogf 0x03, ocf 0x0026, plen 2 60 00
> HCI Event: 0x0e plen 4 01 26 0C 00
root@imx8mqevk:~#
Step 18 ­ Run Ofono test scripts. Go to the repository where Ofono test scripts are available:
cd /usr/lib/ofono/test/
Run the dial number test script
root@imx8mqevk:/usr/lib/ofono/test# python3 ./dial-number 1234567890
Command output example:
Using modem /hfp/org/bluez/hci0/dev_04_1B_BA_C7_92_36 /hfp/org/bluez/hci0/dev_04_1B_BA_C7_92_36/voicecall01 root@imx8mqevk:~/test#
Step 19 ­ Initialize the PCM interface. The command below initializes and configures PCM. This command should be sent in any of the following situations: · To initialize PCM after starting voice call on a particular SCO connection · To switch call from SCO connection 1 to SCO connection 2 · To route SCO connection 1 voice data to SCO connection 2 · To de-initialize PCM once the voice call is over on a particular SCO connection To initialize the PCM interface:
root@imx8mqevk:/usr/lib/ofono/test# hcitool -i hci0 cmd 0x3f 0x006f 0x00 0x00 0x08 0x00 0x00 0x00
Command output example:
< HCI Command: ogf 0x3f, ocf 0x006f, plen 6 00 00 08 00 00 00
> HCI Event: 0x0e plen 4 01 6F FC 00
Command to de-initialize the PCM interface
root@imx8mqevk:/usr/lib/ofono/test# hcitool -i hci0 cmd 0x3f 0x006f 0x01 0x00 0x08 0x00 0x00 0x00

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 158 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Table 14.Command parameters

Parameter

Length

OGF

1

OCF

2

Action

1

Operation mode

1

SCO Handle1

2

SCO Handle2

2

Definition
0x3F
0x006F
0x00 = PCM will be initialized 0x01 = PCM will be de-initialized
0x00 = normal mode This mode is used when only 1 voice call needs to be active at a time. Depending on the Action parameter, either the PCM will be initialized or deinitialized. 0x01 = internal loopback This mode is used when there are 2 HF connections and audio data on first connection needs to be routed to second connection. This can be used only when both SCO links are of the same type (that is, NB to NB, or WB to WB only). 0x02 = remote loopback on same link 0x03 = local loopback on same link 0x04 to 0xFF = reserved
Synchronous connection handle for which PCM configuration is to be done Range from 8 to 10
Synchronous connection handle for which PCM configuration is to be done Parameter valid only when Operation Mode = 0x01.

Command output example:

< HCI Command: ogf 0x3f, ocf 0x006f, plen 6 01 00 08 00 00 00
> HCI Event: 0x0e plen 4 01 6F FC 00

Step 20 ­ Use Ofono test script to hang up a call. Ofono hangup-all script uses the AT command AT+CHUP to hangup a call.

root@imx8mqevk:/usr/lib/ofono/test# python3 ./hangup-all root@imx8mqevk:/usr/lib/ofono/test#

Step 21 ­ Use Ofono test script to answer a call. Ofono answer-calls script uses the AT command ATA to answer a call.

root@imx8mqevk:/usr/lib/ofono/test# python3 ./answer-calls

Command output example:

[ /hfp/org/bluez/hci0/dev_04_1B_BA_C7_92_36 ] [ /hfp/org/bluez/hci0/dev_04_1B_BA_C7_92_36/voicecall01 ] incoming root@imx8mqevk:/usr/lib/ofono/test#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 159 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 22 ­ Initialize PCM. Refer to Step 19. Step 23 ­ Use Ofono test script to hang up an active call. Ofono hangup-active script uses the AT command AT+CHUP to hang up an active call
root@imx8mqevk:/usr/lib/ofono/test# python3 ./hangup-active [ /hfp/org/bluez/hci0/dev_04_1B_BA_C7_92_36/voicecall01 ] active root@imx8mqevk:/usr/lib/ofono/test#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 160 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.1.4 Object Push Profile
This section explains how to send the file to a remote device over Bluetooth. BlueZ Stack provides the obexctl user space utility to send the files to a Bluetooth device. Use the following steps to configure Object Push Profile using OBEX Control utility (obexctl) Start the OBEX daemon on i.MX 8M Quad

/usr/libexec/bluetooth/obexd & [1] 768
root@imx8mqevk:~#

Connect with a remote Bluetooth device that supports Object Push Profile Refer to Scan, pair and connect to Bluetooth classic/Bluetooth LE . Run the following commands to verify the Object Push Profile capability of the connected Bluetooth device.

bluetoothctl

Agent registered

[Moto E]# info B4:F5:00:31:CB:4E

Device B4:F5:00:31:CB:4E (public)

Name: Moto E

Alias: Moto E

Class: 0x005a020c

Icon: phone

Paired: yes

Trusted: yes

Blocked: no

Connected: yes

LegacyPairing: no

UUID: OBEX Object Push

(00001105-0000-1000-8000-00805f9b34fb)

UUID: Audio Source

(0000110a-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control

(0000110e-0000-1000-8000-00805f9b34fb)

UUID: Headset AG

(00001112-0000-1000-8000-00805f9b34fb)

UUID: PANU

(00001115-0000-1000-8000-00805f9b34fb)

UUID: NAP

(00001116-0000-1000-8000-00805f9b34fb)

UUID: Handsfree Audio Gateway (0000111f-0000-1000-8000-00805f9b34fb)

UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb)

UUID: Message Access Server

(00001132-0000-1000-8000-00805f9b34fb)

UUID: PnP Information

(00001200-0000-1000-8000-00805f9b34fb)

UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)

UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)

Modalias: bluetooth:v000Fp1200d1436

[Moto E]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 161 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Start OBEX Control
Use the following commands to start the OBEX Control and connect to the remote Bluetooth device paired using Bluetooth Control.
obexctl [NEW] Client /org/bluez/obex [obex]# connect B4:F5:00:31:CB:4E Attempting to connect to B4:F5:00:31:CB:4E [NEW] Session /org/bluez/obex/client/session0 [default] [NEW] ObjectPush /org/bluez/obex/client/session0 Connection successful [B4:F5:00:31:CB:4E]#
Send a file from i.MX 8M Quad to the connected remote Bluetooth device
[B4:F5:00:31:CB:4E]# send /home/root/sample_audio.wav Attempting to send /home/root/sample_audio.wav to /org/bluez/obex/client/session0 [NEW] Transfer /org/bluez/obex/client/session0/transfer0 Transfer /org/bluez/obex/client/session0/transfer0 Status: queued Name: sample_audio.wav Size: 1073218 Filename: /home/root/sample_audio.wav Session: /org/bluez/obex/client/session0 [CHG] Transfer /org/bluez/obex/client/session0/transfer0 Status: active [CHG] Transfer /org/bluez/obex/client/session0/transfer0 Transferred: 8030 (@8KB/s
02:12) [B4:F5:00:31:CB:4E]#
Select ACCEPT or DECLINE on the remote Bluetooth device
Select ACCEPT or DECLINE on the remote Bluetooth device depending on the file to be received. The following logs appear once the file transfer is completed.
[CHG] Transfer /org/bluez/obex/client/session1/transfer1 Status: complete [DEL] Transfer /org/bluez/obex/client/session1/transfer1 [B4:F5:00:31:CB:4E]#
Disconnect and exit from the obexctl
[B4:F5:00:31:CB:4E]# disconnect Attempting to disconnect to /org/bluez/obex/client/session2 [DEL] Session /org/bluez/obex/client/session2 [default] [DEL] ObjectPush /org/bluez/obex/client/session2 Disconnection successful [obex]# quit
Note: The OBEX Control receiving is not working for some users with the current version 5.65 of BlueZ. It may be resolved in a later version.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 162 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.1.5 Human Interface Device Profile
This section provides the configuration steps to connect a Bluetooth keyboard and/or mouse. The Human Interface Device Profile is used to establish the connection. Use the following steps to configure Human Interface Device (HID) Profile to connect with the Bluetooth device. Connect with a remote Bluetooth device that supports Human Interface Device profile Refer to Scan, pair and connect to Bluetooth classic/Bluetooth LE . Verify the Human Interface Device Profile capability of the connected Bluetooth device

[Rapoo E6700]# info 6C:5D:63:20:40:AA

Device 6C:5D:63:20:40:AA

Name: Rapoo E6700

Alias: Rapoo E6700

Class: 0x002540

Icon: input-keyboard

Paired: yes

Trusted: yes

Blocked: no

Connected: yes

LegacyPairing: no

UUID: Service Discovery Server (00001000-0000-1000-8000-00805f9b34fb)

UUID: Human Interface Device (00001124-0000-1000-8000-00805f9b34fb)

UUID: PnP Information

(00001200-0000-1000-8000-00805f9b34fb)

Modalias: usb:v0A5Cp8502d011B

[Rapoo E6700]#

The connected keyboard can be used as a normal keyboard now.
Note: To enable HID profile, enable the user-space I/O driver support for HID subsystem in i.MX Linux BSP source code.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 163 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.1.6 Serial port profile (SPP) The serial port profile (SPP) feature is used to set emulated serial cable connections using an RFCOMM connection between two peer devices. This section describes the procedure to verify the serial port profile feature. It shows how to send and receive a message string to and from the remote device over Bluetooth connection using SPP. To validate SPP feature with the i.MX host platform, you need an Android mobile phone and SPP Android application Bluespp. BlueSPP application is available for download on Google play store.
5.2.1.6.1 Enable serial port profile Steps to enable SPP support on i.MX 8M Quad EVK running with Linux OS: Step 1 - Cancel previous bluetoothd services.
killall bluetoothd
Step 2 - Start bluetoothd with--compat option.
/usr/lib/bluetooth/bluetoothd --compat &
Step 3 - Bring up the HCI interface Example of command:
hciconfig hci0 up
Step 4 - Check which profiles or services are supported by default. Example of command:
sdptool browse local | grep -i name
Example of command output:
Service Name: Generic Access Profile Service Name: Generic Attribute Profile Service Name: Device Information Service Name: AVRCP CT Service Name: AVRCP TG Service Name: hfp_hf
Note: SPP is not supported by default. Step 5 - Add the channel for serial port profile
sdptool add --channel=22 SP
Command output example:
Serial Port service registered

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 164 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 6 - Start rfcomm to watch a specific port.
rfcomm watch /dev/rfcomm0 22 > /dev/null &
Command output example:
Serial Port service registered
Step 7 - Check that the serial port profile is enabled. Example of command:
sdptool browse local | grep -i name
Example of command output:
Service Name: Generic Access Profile Service Name: Generic Attribute Profile Service Name: Device Information Service Name: AVRCP CT Service Name: AVRCP TG Service Name: hfp_hf Service Name: Serial Port

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 165 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.1.6.2 Verify serial port profile Steps to verify SPP profile on i.MX 8M Quad EVK running with Linux OS after you have enabled SPP ( Enable serial port profile ). Step 1 - Check if SPP is enabled.
sdptool browse local | grep -i name
Example of command output:
Service Name: Generic Access Profile Service Name: Generic Attribute Profile Service Name: Device Information Service Name: AVRCP CT Service Name: AVRCP TG Service Name: hfp_hf Service Name: Serial Port
Step 2 - Add the channel for serial port profile.
sdptool add --channel=22 SP
Example of command output:
Serial Port service registered
Step 3 - Start rfcomm to watch the connection on a specific port.
rfcomm watch /dev/rfcomm0 22 > /dev/null &
Step 4 - Pair the DUT with a mobile phone. Follow the steps in Scan, pair and connect to Bluetooth classic/Bluetooth LE .

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 166 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 5 - Establish the serial port profile connection.
· Open Bluespp application on an Android phone. · Select imx8mqevk platform device from the list of devices (Figure 39). · Click Connect to initiate the connection (Figure 40).

Figure 39.Select the device to connect

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 167 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Figure 40.Click CONNECT

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 168 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 6 - Get confirmation that SPP connection is established.
When the connection is successful, Connected to imx8mqevk pops up on the mobile application, and rfcomm0 file is generated in /dev/ directory (Figure 41).

Figure 41.Confirmation of SPP connection

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 169 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 7 - Send a message from the DUT to the mobile phone application. echo "hello from NXP!" > /dev/rfcomm0

Figure 42.Sending a message from the DUT

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 170 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Step 8 - Send a message from the mobile phone application to the DUT.

Figure 43.Send a message to the DUT Example of command to read the message:
cat /dev/rfcomm0 Example of command output:
Hello from Mobile

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 171 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.2 Bluetooth LE
5.2.2.1 Bluetooth LE device as GATT server
This section shows how to configure the i.MX 8M Quad board as a Bluetooth LE GATT Server using the example of Battery Service registration.
Use the following steps to configure the Battery Service for LE GATT server. To configure more services refer to ref.[13].
Start bluetoothctl to interact with the Bluetooth daemon from the command line
bluetoothctl Agent registered [bluetooth]#
Register the Battery Service
[bluetooth]# menu gatt Menu gatt: [bluetooth]# register-service 0x180F [NEW] Primary Service /org/bluez/app/service0xbf29850 0x180F Battery Service [/org/bluez/app/service0xbf29850] Primary (yes/no): yes
[bluetooth]#
Configure the characteristics for Battery Service
[bluetooth]# register-characteristic 0x2A19 notify,read [NEW] Characteristic /org/bluez/app/service0xbf29850/chrc0xbf32890 0x2A19 Battery Level [/org/bluez/app/service0xbf29850/chrc0xbf32890] Enter value: 0x64
[bluetooth]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 172 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Register the Battery Service
[bluetooth]# register-application 0000180F-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 00001112-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000110a-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 00001800-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 00001801-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000180f-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000111e-0000-1000-8000-00805f9b34fb Application registered [CHG] Controller 00:50:43:24:34:F7 UUIDs: 00001112-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000110a-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 00001800-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 00001801-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000180f-0000-1000-8000-00805f9b34fb [CHG] Controller 00:50:43:24:34:F7 UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [bluetooth]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 173 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Check that the Battery Service was added successfully

[bluetooth]# back

Menu main:

[bluetooth]# show

Controller 00:50:43:24:34:F7 (public)

Name: imx8mqevk

Alias: imx8mqevk

Class: 0x002c0000

Powered: yes

Discoverable: no

DiscoverableTimeout: 0x000000b4

Pairable: yes

UUID: Headset AG

(00001112-0000-1000-8000-00805f9b34fb)

UUID: Audio Source

(0000110a-0000-1000-8000-00805f9b34fb)

UUID: PnP Information

(00001200-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control

(0000110e-0000-1000-8000-00805f9b34fb)

UUID: Audio Sink

(0000110b-0000-1000-8000-00805f9b34fb)

UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)

UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)

UUID: Battery Service

(0000180f-0000-1000-8000-00805f9b34fb)

UUID: Handsfree

(0000111e-0000-1000-8000-00805f9b34fb)

Modalias: usb:v1D6Bp0246d0532

Discovering: no

Roles: central

Roles: peripheral

Advertising Features:

ActiveInstances: 0x00 (0)

SupportedInstances: 0x04 (4)

SupportedIncludes: tx-power

SupportedIncludes: appearance

SupportedIncludes: local-name

SupportedSecondaryChannels: 1M

SupportedSecondaryChannels: 2M

SupportedSecondaryChannels: Coded

[bluetooth]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 174 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Start Bluetooth LE advertising
[bluetooth]# advertise on [CHG] Controller 00:50:43:24:34:F7 SupportedInstances: 0x04 [CHG] Controller 00:50:43:24:34:F7 ActiveInstances: 0x01 Advertising object registered Tx Power: off Name: off Apperance: off Discoverable: off
[bluetooth]#
Connect to the i.MX host platform using the application "nRF connect LE Cell Phone" (ref.[8])
Check for the available Battery Service in the application.

Figure 44.Battery Service
Read operation can be performed using the options from the nRF connect application. The following logs will be displayed on the i.MX 8M Quad console:
ReadValue: 41:CB:E2:8F:BA:62 offset 0 link LE

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 175 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.2.2 Bluetooth LE device as GATT client
This section describes the procedure to configure the i.MX 8M Quad as a Bluetooth LE client. It also shows the options to list the attributes available in the Bluetooth LE server and access information.
Follow these steps to configure the Bluetooth LE GATT client.
Connect with a remote Bluetooth LE device
Refer to Scan, pair and connect to Bluetooth classic/Bluetooth LE .
List the attributes
[LE Device]# menu gatt Menu gatt [LE Device]# list-attributes 5F:82:1E:F1:DE:CC
Primary Service /org/bluez/hci0/dev_5F_82_1E_F1_DE_CC/service0001 00001801-0000-1000-8000-00805f9b34fb Generic Attribute Profile
Characteristic /org/bluez/hci0/dev_5F_82_1E_F1_DE_CC/service0001/char0002
00002a05-0000-1000-8000-00805f9b34fb Service Changed [LE Device]#
Retrieve the attribute information
Issue the command to retrieve the attribute information
[LE Device]# attribute-info /org/bluez/hci0/dev_5F_82_1E_F1_DE_CC/service0001/char0002
Command output example:
Characteristic - Service Changed UUID: 00002a05-0000-1000-8000-00805f9b34fb Service: /org/bluez/hci0/dev_5F_82_1E_F1_DE_CC/service0001 Notifying: no Flags: indicate [LE Device]#

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 176 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.3 Bluetooth power configurations

This section describes the support for Bluetooth and Bluetooth LE power configuration with vendor specific commands, and with examples using calibration data. The following considerations apply to power configuration:
· At power up, the initial power configuration of the device is based on the calibration data stored in the OTP. · During runtime, the Bluetooth calibration data can be updated using vendor-specific commands (VSC). · The max TX power can be updated using a vendor-specific command and the value can be reflected only in
the range of the power class set in the calibration data. · The values of the set and measured transmit power can be different due to various factors, including
environmental conditions and interference.
Table 15 shows Bluetooth and Bluetooth LE power class configurations.

Table 15.Power class and max power levels

Type

Max power level

Class 1

20 dBm

Class 1.5

12 dBm

Class 2

4 dBm

Designed operating range Up to 100 m (328 feet) Up to 30 m (100 feet) Up to 10 m (33 feet)

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 177 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.4 Human Interface Device Service
This section describes the configuration steps to connect the NXP-based Bluetooth LE module with a Bluetooth Low Energy device that supports Human Interface Device Profile. Follow these steps to configure Human Interface Device Service. Connect with the Bluetooth LE device Refer to Scan, pair and connect to Bluetooth classic/Bluetooth LE . Verify the Human Interface Device Service capability of the connected Bluetooth LE device

bluetoothctl

Agent registered

[LE Device]# info D4:18:20:A0:48:5F

Device D4:18:20:A0:48:5F (public)

Name: LE Device

Alias: LE Device

Paired: yes

Trusted: yes

Blocked: no

Connected: yes

LegacyPairing: no

UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)

UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)

UUID: Device Information

(0000180a-0000-1000-8000-00805f9b34fb)

UUID: Battery Service

(0000180f-0000-1000-8000-00805f9b34fb)

UUID: Human Interface Device (00001812-0000-1000-8000-00805f9b34fb)

UUID: Vendor specific

(3dda0001-957f-7d4a-34a6-74696673696d)

ManufacturerData Key: 0x00df

ManufacturerData Value:

57 30 46 39 30 32 31 39 59 32

W0F90219Y2

[LE Device]#

The connected keyboard can be used as a normal keyboard now.
Note: To enable HID profile, enable the user-space I/O driver support for HID subsystem in i.MX Linux BSP source code.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 178 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.5 Wake-on Bluetooth/Bluetooth LE Refer to ref.[4].
5.2.6 Bluetooth audio framework · Start Pipewire on the i.MX host platform.
systemctl --user start pipewire wireplumber · Get Pipewire version.
pipewire ­version Command output example:
pipewire Compiled with libpipewire 1.2.0 Linked with libpipewire 1.2.0 · Check Pipewire/Wireplumber status. wpctl status · Select the default sink/source for sound. wpctl set-default <node id from wpctl status> · Play an audio sample from Pipewire default player. pw-play <--target to specify node> <audio_file.wav> · For advanced options, refer to ref.[34].

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 179 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.2.6.1 Classic audio
· Modify /usr/share/wireplumber/wireplumber.conf.d/51-bluez-imx.conf.
Note: Look for a similar file if the above path does not match.
Modification for A2DP source:
monitor.bluez.properties = { ## These features do not work on all headsets, so they are enabled
....... bluez5.hfphsp-backend = "ofono" bluez5.roles = <a2dp_source>
}
Modification for A2DP sink:
monitor.bluez.properties = { ## These features do not work on all headsets, so they are enabled
....... bluez5.hfphsp-backend = "ofono" bluez5.roles = <a2dp_sink>
}
· Check that the remote Bluetooth device supports the A2DP profile feature. · Establish the Bluetooth connection between two devices. Refer to Section 5.2.2.1.
The corresponding Node pops up in wpctl status under Sinks/Sources. · Select the node with remote Bluez address and start streaming the music.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 180 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.3 802.15.4
5.3.1 OpenThread
5.3.1.1 Create and join a Thread network This section describes the steps and configurations to create a thread network and join the thread network. Note: For details on 802.15.4 interface, refer to section Bring-up of 802.15.4 interface in ref.[18]. Step 1 ­ Create a Thread Network ot-ctl utility commands are used to configure the Thread network · Stop the existing thread networks
root@imx8mmevk:/usr/sbin# ot-ctl thread stop Done root@imx8mmevk:/usr/sbin# ot-ctl ifconfig down Done
· Apply a factory reset on 802.15.4 radio
root@imx8mmevk:/usr/sbin# ot-ctl factoryreset
· Set the channel of operation
root@imx8mmevk:/usr/sbin# ot-ctl channel 26 Done
· Set the panid and the extpanid for the network
root@imx8mmevk:/usr/sbin# ot-ctl panid 0x1234 Done root@imx8mmevk:/usr/sbin# ot-ctl extpanid dead00beef00cafe Done
· Set networkkey for the network
root@imx8mmevk:/usr/sbin# ot-ctl networkkey
Command output example:
00112233445566778899aabbccddeeff Done
· Set the name for the network
root@imx8mmevk:/usr/sbin# ot-ctl networkname ThreadTest Done
· Start the Thread network
root@imx8mmevk:/usr/sbin# ot-ctl ifconfig up Done root@imx8mmevk:/usr/sbin# ot-ctl thread start Done

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 181 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

· Verify that the state of the device is leader
root@imx8mmevk:/usr/sbin# ot-ctl state
Command output example:
leader Done
Step 2 ­ Join network from the end device Follow the steps listed below on the end device that will join the nThread network created in Step 1. Note: The end device can be a Full Thread Device (FTD) or Minimal Thread Device (MTD). ot-ctl utility/commands are used to join the Thread network. · Stop the existing thread networks
root@imx8mmevk:/usr/sbin# ot-ctl thread stop Done root@imx8mmevk:/usr/sbin# ot-ctl ifconfig down Done
· Apply a factory reset on 802.15.4 radio
root@imx8mmevk:/usr/sbin# ot-ctl factoryreset
· Set the channel of operation
root@imx8mmevk:/usr/sbin# ot-ctl channel 26 Done
· Set the panid and extpanid of the network to join
root@imx8mmevk:/usr/sbin# ot-ctl panid 0x1234 Done root@imx8mmevk:/usr/sbin# ot-ctl extpanid dead00beef00cafe Done
· Set the networkkey for the network
root@imx8mmevk:/usr/sbin# ot-ctl networkkey
Command output example:
00112233445566778899aabbccddeeff Done
· Set name for the network
root@imx8mmevk:/usr/sbin# ot-ctl networkname ThreadTest Done

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 182 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

· Start the Thread network
root@imx8mmevk:/usr/sbin# ot-ctl ifconfig up Done root@imx8mmevk:/usr/sbin# ot-ctl thread start Done
· Ensure that the device state is leader
root@imx8mmevk:/usr/sbin# ot-ctl state
Command output example:
leader Done
Initially the device state is going to be leader. Once the End device is accepted as a child by the Parent device, its state changes to Child.
root@imx8mmevk:/usr/sbin# ot-ctl state Child Done root@imx8mmevk:/usr/sbin# ot-ctl ipaddr fdc0:de7a:b5c0:0:0:ff:fe00:0c01 # Routing Locator (RLOC) fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f # Mesh-Local EID (ML-EID) fe80:0:0:0:18e5:29b3:a638:943b # Link-Local Address (LLA) Done
Step 3 ­ Ping the child using the mesh-local address
root@imx8mmevk:/usr/sbin# ot-ctl ping fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f 16 bytes from fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f icmp_seq=1 hlim=64 time=17ms
Step 4 ­ Run the throughput test using iPerf tool and mesh-local address. · Start iPerf server at device A (Leader or Child)
root@imx8mmevk:/usr/sbin# iperf -s -u -i 1 -w 400k -p5005 -V -B <mesh-local address of device A>
· Start iPerf client at device B (Child or Leader)
root@imx8mmevk:/usr/sbin# iperf -c <mesh-local address of device A> -B <mesh-local address of device B> -u -b 250k -l500 -V -i1 -t 20 -p5005

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 183 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.4 Coexistence
5.4.1 Introduction to coexistence
The coexistence architecture has three major components: · Central hardware Packet Traffic Arbiter (PTA): arbitrates between on-chip Wi-Fi and narrowband radios.
Controls the front end components such as RF switches. · Local hardware arbiter: arbitrates the packets between Bluetooth and Bluetooth Low Energy (LE). · Coexistence software: configures the central HW PTA and works with the Wi-Fi and narrowband firmware.

Coexistence software

Firmware Wi-Fi radio

Firmware Narrowband radio

Traffic arbitration configuration

Request/grant

Central hardware packet traffic arbiter (PTA)

Request/grant

Control path
Radio front end
Figure 45.Coexistence subsystem
The coexistence mechanism of NXP is a combination of interference avoidance and arbitration between the WiFi and narrowband radios. Interference avoidance is the coordination between the Wi-Fi and narrowband radios in order to avoid overlapping frequency usage. The coordination helps the narrowband radio to adapt the AFH map and avoid hopping into the Wi-Fi channel, reducing the interference to each other. In addition to interference avoidance, the central HW PTA provides real-time arbitration between the Wi-Fi and narrowband radios on a per-packet basis. This arbitration can be statically enabled/disabled. The individual radios post a request to the central HW PTA to access the radio front-end. The central HW PTA grants access to the individual radios based on the configured priorities and grant rules.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 184 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.4.2 Operating mode ­ Antenna configuration
5.4.2.1 Shared antenna application
In a shared antenna application, one antenna is shared between the Wi-Fi and narrowband radios. Access to the antenna is through an RF switch. The Wi-Fi and narrowband radios do not have simultaneous access to the antenna. The central HW PTA manages the arbitration between the Wi-Fi and narrowband radio access to the antenna, and controls the switch in real time.
5.4.2.2 Dedicated antenna application
In applications where the Wi-Fi and narrowband radios have a dedicated antenna, the central HW PTA arbitrates between the Wi-Fi and narrowband radios. The need for arbitration between the Wi-Fi and narrowband radios depends on the antenna isolation, the target output powers, and the operating environments. The arbitration setup can be reviewed for each product implementation.
5.4.2.3 Antenna isolation
Low antenna isolation The configuration uses coexistence schemes to balance the throughput performance. Depending on the arbitration time, the throughput is a percentage of a baseline for each radio. Bluetooth audio profiles are protected from glitches.
The central HW PTA controls the simultaneous transmission of the Wi-Fi and narrowband radios for regulatory purposes.
High antenna isolation The configuration enables concurrent operation of the Wi-Fi and narrowband radios. The throughput is close to the baseline.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 185 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

6 Certifications
Wireless devices must go through certifications and compliance testing before being used in commercial applications.
· Regulatory certifications: certifications for different countries / regions with regulatory rules that a device must abide by to be allowed operation in that country / region. The certifications are related with RF, physical layer performance, and conformance rather than specific protocol layer conformance.
· Standards-based certifications and qualification testing: connectivity technology certifications offered by the Wi-Fi alliance, Bluetooth special interest group (SIG), Thread Group, Connectivity Standards Alliance (Zigbee, Matter). These certify that a device complies to standards, and check for device interoperability.
· Security certifications: certifications such as Federal Information Processing Information Standards (FIPS) for security.
The last section introduces NXP pro support services for enhanced certification support.
6.1 Regulatory certifications
If using modules, note that:
· The module manufacturer has already gone through regulatory certifications. · Some countries do not allow modular regulatory certifications, and the regulatory certification testing may be
required on the end-product.
Regulatory certification testing refers to RF and physical layer performance and conformance rather than protocol layer testing. Tests items such as dynamic frequency selection (DFS) and adaptivity refer to some aspects of the protocol layer to test the conformance to the standards.
For an overview of compliance and certification, refer to ref.[1].
Contact the module maker vendor for any question about regulatory certification on the module being used.
6.1.1 Device calibration and performance optimization
Before any regulatory certification testing, the module should already be characterized and tuned for optimal transmit and receive performance. To check if any additional tuning must be completed in the final application, contact the module maker.
6.1.2 Tools in use for regulatory certification testing
The module maker should have completed the regulatory certification testing.
Some countries do not allow modular certification, or require the regulatory certification to be completed on the final product. Confirm with the module maker which countries the module has already been certified in.
For cases where regulatory certification testing must be performed on the final product, use RF test mode in the NXP production software.
To learn how to use RF test mode during certification testing, refer to ref.[3].

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 186 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

6.1.3 Guidelines for specific regulatory tests
Module makers should have completed the Dynamic frequency selection (DFS), EU Adaptivity, and Japan carrier sense regulatory tests. Some detection thresholds may need to be adjusted when the module is paired onto the final platform depending on the antenna gain and cable losses. Contact your module maker to know if any adjustment is needed when the module is used on the final platform.
6.1.4 Creating transmit power tables from regulatory certification passing limits
During the regulatory certification, the targeted transmit output power levels are set and tested for compliance with the regulatory limits for each country and/or region. Contact your module maker to obtain the regulatory compliant transmit power tables for your module, and to know if any adjustment is required for the antenna gain or path loss on the final product.
6.2 Standards-based certifications and qualification testing
In addition to the regulatory certifications required for the country where the device will be used, the standardsbased certification or qualification testing allow to advertise the compliance of the device on the website of the standards organizations, and promotes the device interoperability with other device vendors.
6.2.1 Wi-Fi alliance (WFA)
Wi-Fi alliance offers certification for a range of Wi-Fi standards and features. Refer to ref.[35], ref.[2], and ref. [19].
6.2.2 Bluetooth special interest group (Bluetooth SIG)
The Bluetooth SIG qualification program is used to qualify devices. Refer to ref.[36]. NXP performs the controller certification for each Bluetooth device. To speed up the certification process and reduce costs, re-use NXP qualified design ID (QID) or device number (DN) for a given device. Since the RF and RFPHY part of the controller testing must be performed on each final product, run these specific tests at a Bluetooth qualified test facility (BQTF). · For Bluetooth classic qualification testing, procedure to enable scan and test mode, refer to ref.[3]. · For Bluetooth LE qualification testing, standard HCI commands and syntax to use to manually perform the
qualification testing, refer to ref.[3]. Note: Contact your module maker or local NXP representative for the list of QDID / DN to refer to for the different NXP Bluetooth devices.
6.2.3 Thread
NXP obtains Thread certification on its devices. If you keep the default Thread system functionality, the Thread Group offers certification via inheritance: · Derivative products may inherit the certification of a parent product. · Modules may inherit stack certification. · End products may inherit component certification. To learn about Thread certification processes, costs, timeline, and certification via inheritance, refer to ref.[37].

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 187 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

6.2.4 Zigbee
The Connectivity Standards Alliance (CSA) maintains Zigbee worldwide open standard. Certification allows the use of certified product logos and lists the product on the CSA website. In addition, certifications show compliance and interoperability in Zigbee networks.
The main types of certification for Zigbee are platform certification and end-product certification. Use an authorized test lab to perform the official testing.
NXP obtains Zigbee certification on its devices. For an example of Zigbee certification on NXP solutions, refer to ref.[20]. And for details about Zigbee certification, refer to ref.[38].
6.2.5 Matter
The Matter smart home standard requires all Matter devices to be certified in order to commission into or join a Matter network. The certification for the networking protocol used on the product (Thread, Bluetooth, Bluetooth LE, and/or Wi-Fi) must be completed before the testing for Matter certification.
To test your product for Matter certification, use a CSA approved test lab (ATL), or use a CSA hosted specification validation event (SVE). NXP is a CSA promoter, and one of the leading companies that contribute to new specifications and development of CSA SDK. NXP appointed partner labs are familiar with NXP software operation and NXP boards operation, through SVE and certifications. Customers can benefit from NXP partner lab when arranged through NXP Pro Support Wireless Certification Concierge.
Contact your local NXP representative for more information regarding NXP Matter certification via NXP pro support services for wireless certification.
For more information about matter and certification, refer to ref.[39], and ref.[40].
6.3 Security
For security certification, refer to standard and certification programs such as Federal Information Processing Information Standards (FIPS).
6.3.1 FIPS
The American Federal Information Processing Standard (FIPS) defines the security requirements for cryptographic modules. NXP wireless SoCs contain an encryption block (AEU) for FIPS grade encryption and decryption.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 188 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

6.4 NXP pro support services
If you have little experience with testing for certification and compliance, or to offload some certification tasks to NXP, you can use NXP pro support services.
· Regulatory certifications ­ NXP monitors regulation updates worldwide. ­ NXP acts as certification lab liaison with global labs to consolidate the testing, certification proposals, and certification options. ­ NXP can oversee and triage issues related to certification.
· Wi-Fi Alliance (WFA) ­ As a WFA approved solutions test lab, NXP can perform WFA approved Quick Track Tests on your platform, and help to complete WFA certification process.
· Bluetooth SIG ­ As a Bluetooth recognized test facility (BRTF), NXP can perform Bluetooth RF qualification pre certification testing on customer designs, and provide support in case of issues. ­ As BRTF, NXP can qualify requests for customized firmware builds from customers. ­ NXP in-house Bluetooth qualified consultant (BQC) can provide initial guidance and discuss with your appointed BQC for a project. ­ NXP performs Bluetooth stack certification testing on customer designs through partner labs, and provides support in case of issues. ­ NXP acts as certification lab liaison with global labs to consolidate the testing, certification proposals, and certification options.
· Zigbee ­ NXP acts as certification lab liaison with global labs to consolidate the testing, certification proposals, and certification options.
· Matter ­ NXP acts as certification lab liaison with global labs to consolidate the testing, certification proposals, and certification options.
· Apple CarPlay ­ NXP performs Apple CarPlay pre-certification tests on customer designs. ­ NXP can arrange an Apple qualified CarPlay certification lab to pre-certify a customer design and provide support in case of issues.
To complete the certification prior to launching your product, contact the certification concierge of NXP pro support services. Refer to your local NXP representative and ref.[41].

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 189 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

7 PSIRT and vulnerability management
7.1 Introduction
NXP has a well-established vulnerability management process.
Benchmarked against recognized Industry standards (not limited to):
· CERT® ­ Guide to Coordinated Vulnerability Disclosure (August 2017) · FIRST ­ Guidelines and Practices for Multi-party Vulnerability Coordination (v1.1; Spring 2020) · Auto-ISAC ­ Best Practice Guide on Incident Response (v1.3; July 2019) · ISO/IEC 29147:2018 ­ Vulnerability disclosure · ISO/IEC 30111:2019 ­ Vulnerability handling processes · ISO/SAE 21434:2021 ­ Road vehicles ­ Section for `Cybersecurity event assessment' and `Cybersecurity
incident response'
A cohesive and dedicated team of stakeholders executes NXP process:
· Product security incident response team (PSIRT) ­ Central contact point reachable via email and ref.[33].
· Incident response core team (IRCT) ­ Dedicated team for each incident management
· Security champions in global support teams ­ For all regions ­ Go-to persons for customer communication and questions

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 190 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

7.2 Product security incident process (PSIRP)
Figure 46 illustrates the product security incident process (PSIRP).

Figure 46.Product security incident process (PSIRP)
Stage 1 ­ Receive the report.
· The team receives and acknowledges the report.
Stage 2 ­ Evaluate the vulnerability.
The team:
· Determines the affected products and customers. · Assesses the risk. · Determines the impact. · Assigns an initial severity level.
Stage 3 ­ Define the solution.
The incident response core team (IRCT):
· Develops the mitigation strategies. · Prepares the customer communication plan. · Determines the feasibility of a fix. · Involves the global sales and support teams.
Stages 4 to 6 ­ Communication to customers and closure
· In most cases, NXP issues directed communication to affected customers through the global support channels.
· In certain cases, Auto-ISAC and CERTs may be notified, and in extreme situations, law enforcement may also be involved.
· NXP might issue a Common Vulnerabilities and Exposures (CVE) for the vulnerability. · NXP follows a coordinated disclosure policy which allows customers to assess and protect their products from
the impact of disclosure. See Coordinated disclosure and timely communication .
7.3 Coordinated disclosure and timely communication
· NXP believes in responsible and coordinated disclosure to protect the customer's interest · NXP commits to communicate and act on vulnerabilities in a "timely manner" 1. · Report receipt
­ NXP strives to acknowledge the receipt of vulnerability reported through PSIRT channel within 24 hours. · Initial customer communication following a detailed investigation and the definition of a solution. · Remediation efforts
­ Coordinated, aligned and agreed with the affected customers.

1 A "timely manner" for acting on vulnerabilities varies considerably and is incident-specific. However, the vulnerability process is completed within 12 weeks for a software solution, including availability of patches and notification of the issue. A hardware fix can take considerably longer to address than a software fix. Additionally, a fix that has to be deployed to devices can take time to roll out compared with a server software fix.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 191 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

8 Abbreviations

Table 16.Abbreviations Abbreviation Description

A2DP

advanced audio distribution profile

AFH

adaptive frequency hopping

AP

access point

API

application programming interface

ATL

approved test lab

AXIHP

advanced extensible interface high performance

BD

Bluetooth device

BQC

Bluetooth qualified consultant

BRTF

Bluetooth recognized test facility

BSSID

basic service set identifiers

CLI

command line interface

CMD

command

CPU

central processor unit

CSA

connectivity standards alliance

CVE

common vulnerabilities and exposures

DDR

double data rate

DFS

dynamic frequency selection

DN

device number

DUT

device under test

ED

energy detection

EUI-64

64-bit extended unique identifier

EVK

evaluation kit

FED

full end device

FIPS

federal information processing information standards

FT

fast transition

FTD

full thread device

FW

firmware

GATT

generic attribute profile

GPIO

general purpose input output

HCI

host controller interface

HFP

hands free profile

HID

human interface device

HW

hardware

IEEE

institute of electrical and electronics engineers

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 192 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Table 16.Abbreviations...continued Abbreviation Description

IPv6

internet protocol version 6

IR

independent reset

IRCT

incident response core team

LE

low energy

MAC

media access control

MFG

manufacturing

MTD

minimal thread device

NB

narrow band

NCP

network coprocessor

OCF

opcode command field

OGF

opcode group field

OOB

out of band

OPP

object push profile

OTP

one time programmable

OWE

opportunistic wireless encryption

PMS

power save mode

PSIRP

product security incident process

PSIRT

product security incident response team

PTA

packet traffic arbitration

PTA

Packet Traffic Arbiter

QID

qualified design

QoS

quality of service

RCP

radio coprocessor

REED

router enabled end device

SDK

software development kit

SED

sleepy end device

SIG

special interest group

SoC

system on chip

SPI

serial peripheral interface

STA

station

STBC

space time block coding

SW

software

TDLS

tunneled direct link support

TP

throughput

UART

universal asynchronous receiver transmitter

WCI-2

wireless coexistence interface 2

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 193 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Table 16.Abbreviations...continued Abbreviation Description

WFA

Wi-Fi alliance

WLAN

wireless local area network

WoWLAN

wake on wireless local area network

WPA

Wi-Fi protected access

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 194 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

9 References

[1] Application note ­ AN13006: Compliance and Certification Considerations (link) [2] Application note ­ AN12976: Wi-Fi Alliance Derivative Certification Process for Linux OS (link) [3] Application note ­ AN14114: RF Test Mode on Linux OS (link) [4] Application note ­ AN13958: Host Wake-up over Bluetooth or Bluetooth Low Energy (LE) (link) [5] Application note ­ AN14212: 802.11kvr Roaming (link) [6] Application note ­ AN14213: Wi-Fi Firmware Automatic Recovery for Linux OS (link) [7] Application note ­ AN14310: NXP Bluetooth UART Driver Integration (link) [8] Nordic Semiconductor - nRF Connect for Desktop (link) [9] Software ­ Embedded Linux for i.MX application processors (link) [10] Release notes ­ RN00104: NXP Wireless SoC Features and Release Notes for Linux OS (link) [11] Specification ­ IEEE802.15.4-2015 [12] Specification ­ Hands-Free Profile Specification(link) [13] Specification ­ Gatt Bluetooth specification (link) [14] Specification ­ Spinel protocol (link) [15] User guide ­ NXP ­ i.MX Yocto Project User's Guide (link) [16] User guide ­ i.MX Linux user's guide (link) [17] User manual ­ IMX93EVKQSG: i.MX 93 EVK Quick Start Guide (link) [18] User manual ­ UM11483: Getting Started with NXP-based Wireless Modules on i.MX 8M Quad EVK
Running Linux OS (link) [19] User manual ­ UM11560: WFA Certification Guide for NXP-based Wireless Modules on i.MX 8M Quad
EVK Running Linux OS (link) [20] User manual ­ UM12200: Zigbee certification for tri-radio single-chip solutions (link) [21] Webpage ­ 88W8801: 2.4 GHz Single-band 1x1 Wi-Fi® 4 (802.11n) Solution (link) [22] Webpage ­ 88W8987: 2.4/5 GHz Dual-band 1x1 Wi-Fi® 5 (802.11ac) + Bluetooth® Solution (link) [23] Webpage ­ 88W8997: 2.4/5 GHz Dual-band 2x2 Wi-Fi® 5 (802.11ac) + Bluetooth® Solution (link) [24] Webpage ­ 88W9098: 2.4/5 GHz Dual-band 2x2 Wi-Fi® 6 (802.11ax) + Bluetooth® (link) [25] Webpage ­ IW416: 2.4/5 GHz Dual-band 1x1 Wi-Fi® 4 (802.11n) + Bluetooth® Solution (link) [26] Webpage ­ IW610: 2.4/5GHz Dual-Band 1x1 Wi-Fi® 6 + Bluetooth Low Energy + 802.15.4 Tri-Radio
Solution (link) [27] Webpage ­ IW611: 2.4/5GHz Dual-band 1x1 Wi-Fi® 6 (802.11ax) + Bluetooth® Solution (link) [28] Webpage ­ IW612: 2.4/5 GHz Dual-band 1x1 Wi-Fi® 6 (802.11ax) + Bluetooth® + 802.15.4 Tri-radio
Solution (link) [29] Webpage ­ Getting Started with FRDM-IMX91 Development Board (link) [30] Webpage ­ Getting Started with FRDM-IMX93 (link) [31] Webpage ­ Thread group (link) [32] Webpage ­ OpenThread introduction (link) [33] Webpage ­ Product Security Vulnerability (link) [34] Webpage ­ WirePlumber (link) [35] Webpage ­ Certification | Wi-Fi Alliance (link) [36] Webpage ­ Develop with Bluetooth, qualify your product (link) [37] Webpage ­ Thread certification ( link) [38] Webpage ­ Zigbee, the full-stack solution for all smart devices (link) [39] Webpage ­ matter, the foundation for connected things (link) [40] Webpage ­ Certification, bring credibility to your product (link) [41] Webpage ­ NXP Engineering Services ­ Wireless Connectivity Services (link) [42] Webpage ­ NXP Community homepage (link)

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 195 / 203

NXP Semiconductors
[43] Webpage ­ NXP support (link)

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 196 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

10 Note about the source code in the document
The example code shown in this document has the following copyright and BSD-3-Clause license:
Copyright 2025 NXP Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials must be provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 197 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

11 Revision history

Table 17.Revision history Document ID
RM00297 v.1.0

Release date 24 April 2025

Description · Initial version

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 198 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Legal information
Definitions
Draft -- A draft status on a document indicates that the content is still under internal review and subject to formal approval, which may result in modifications or additions. NXP Semiconductors does not give any representations or warranties as to the accuracy or completeness of information included in a draft version of a document and shall have no liability for the consequences of use of such information.
Disclaimers
Limited warranty and liability -- Information in this document is believed to be accurate and reliable. However, NXP Semiconductors does not give any representations or warranties, expressed or implied, as to the accuracy or completeness of such information and shall have no liability for the consequences of use of such information. NXP Semiconductors takes no responsibility for the content in this document if provided by an information source outside of NXP Semiconductors. In no event shall NXP Semiconductors be liable for any indirect, incidental, punitive, special or consequential damages (including - without limitation lost profits, lost savings, business interruption, costs related to the removal or replacement of any products or rework charges) whether or not such damages are based on tort (including negligence), warranty, breach of contract or any other legal theory. Notwithstanding any damages that customer might incur for any reason whatsoever, NXP Semiconductors' aggregate and cumulative liability towards customer for the products described herein shall be limited in accordance with the Terms and conditions of commercial sale of NXP Semiconductors.
Right to make changes -- NXP Semiconductors reserves the right to make changes to information published in this document, including without limitation specifications and product descriptions, at any time and without notice. This document supersedes and replaces all information supplied prior to the publication hereof.
Suitability for use -- NXP Semiconductors products are not designed, authorized or warranted to be suitable for use in life support, life-critical or safety-critical systems or equipment, nor in applications where failure or malfunction of an NXP Semiconductors product can reasonably be expected to result in personal injury, death or severe property or environmental damage. NXP Semiconductors and its suppliers accept no liability for inclusion and/or use of NXP Semiconductors products in such equipment or applications and therefore such inclusion and/or use is at the customer's own risk.
Applications -- Applications that are described herein for any of these products are for illustrative purposes only. NXP Semiconductors makes no representation or warranty that such applications will be suitable for the specified use without further testing or modification. Customers are responsible for the design and operation of their applications and products using NXP Semiconductors products, and NXP Semiconductors accepts no liability for any assistance with applications or customer product design. It is customer's sole responsibility to determine whether the NXP Semiconductors product is suitable and fit for the customer's applications and products planned, as well as for the planned application and use of customer's third party customer(s). Customers should provide appropriate design and operating safeguards to minimize the risks associated with their applications and products. NXP Semiconductors does not accept any liability related to any default, damage, costs or problem which is based on any weakness or default in the customer's applications or products, or the application or use by customer's third party customer(s). Customer is responsible for doing all necessary testing for the customer's applications and products using NXP Semiconductors products in order to avoid a default of the applications and the products or of the application or use by customer's third party customer(s). NXP does not accept any liability in this respect.

Terms and conditions of commercial sale -- NXP Semiconductors products are sold subject to the general terms and conditions of commercial sale, as published at https://www.nxp.com/profile/terms, unless otherwise agreed in a valid written individual agreement. In case an individual agreement is concluded only the terms and conditions of the respective agreement shall apply. NXP Semiconductors hereby expressly objects to applying the customer's general terms and conditions with regard to the purchase of NXP Semiconductors products by customer.
Export control -- This document as well as the item(s) described herein may be subject to export control regulations. Export might require a prior authorization from competent authorities.
Suitability for use in non-automotive qualified products -- Unless this document expressly states that this specific NXP Semiconductors product is automotive qualified, the product is not suitable for automotive use. It is neither qualified nor tested in accordance with automotive testing or application requirements. NXP Semiconductors accepts no liability for inclusion and/or use of non-automotive qualified products in automotive equipment or applications. In the event that customer uses the product for design-in and use in automotive applications to automotive specifications and standards, customer (a) shall use the product without NXP Semiconductors' warranty of the product for such automotive applications, use and specifications, and (b) whenever customer uses the product for automotive applications beyond NXP Semiconductors' specifications such use shall be solely at customer's own risk, and (c) customer fully indemnifies NXP Semiconductors for any liability, damages or failed product claims resulting from customer design and use of the product for automotive applications beyond NXP Semiconductors' standard warranty and NXP Semiconductors' product specifications.
HTML publications -- An HTML version, if available, of this document is provided as a courtesy. Definitive information is contained in the applicable document in PDF format. If there is a discrepancy between the HTML document and the PDF document, the PDF document has priority.
Translations -- A non-English (translated) version of a document, including the legal information in that document, is for reference only. The English version shall prevail in case of any discrepancy between the translated and English versions.
Security -- Customer understands that all NXP products may be subject to unidentified vulnerabilities or may support established security standards or specifications with known limitations. Customer is responsible for the design and operation of its applications and products throughout their lifecycles to reduce the effect of these vulnerabilities on customer's applications and products. Customer's responsibility also extends to other open and/or proprietary technologies supported by NXP products for use in customer's applications. NXP accepts no liability for any vulnerability. Customer should regularly check security updates from NXP and follow up appropriately. Customer shall select products with security features that best meet rules, regulations, and standards of the intended application and make the ultimate design decisions regarding its products and is solely responsible for compliance with all legal, regulatory, and security related requirements concerning its products, regardless of any information or support that may be provided by NXP. NXP has a Product Security Incident Response Team (PSIRT) (reachable at [email protected]) that manages the investigation, reporting, and solution release to security vulnerabilities of NXP products.
NXP B.V. -- NXP B.V. is not an operating company and it does not distribute or sell products.
Trademarks
Notice: All referenced brands, product names, service names, and trademarks are the property of their respective owners.
NXP -- wordmark and logo are trademarks of NXP B.V.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 199 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Bluetooth -- the Bluetooth wordmark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by NXP Semiconductors is under license.

Matter, Zigbee -- are developed by the Connectivity Standards Alliance. The Alliance's Brands and all goodwill associated therewith, are the exclusive property of the Alliance.

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 200 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Tables

Tab. 1.
Tab. 2.
Tab. 3.
Tab. 4. Tab. 5. Tab. 6. Tab. 7.

SPI interface related signals for IW612 wireless SoC ..................................................... 9 Firmware binary files included in FwImage directory ...........................................................29 wifi_mod_para.conf configuration blocks for the supported wireless SoCs .......................... 34 NXP driver debug log types ............................ 46 Command parameters .....................................74 Statistics and counters .................................. 131 Throughput performance related driver parameters .................................................... 137

Tab. 8. Tab. 9. Tab. 10. Tab. 11. Tab. 12. Tab. 13. Tab. 14. Tab. 15. Tab. 16. Tab. 17.

Hands-free profile AT commands .................. 151 Command parameters ...................................153 Command parameters ...................................154 Command parameters ...................................155 Command parameters ...................................156 Command parameters ...................................157 Command parameters ...................................159 Power class and max power levels ............... 177 Abbreviations .................................................192 Revision history ............................................. 198

Figures

Fig. 1. Fig. 2. Fig. 3. Fig. 4. Fig. 5.
Fig. 6. Fig. 7. Fig. 8. Fig. 9.
Fig. 10. Fig. 11.
Fig. 12. Fig. 13.
Fig. 14. Fig. 15.
Fig. 16. Fig. 17.
Fig. 18. Fig. 19. Fig. 20. Fig. 21. Fig. 22.

Wi-Fi driver architecture .................................... 3 Wi-Fi layer interface .......................................... 5 Bluetooth layer interface ................................... 6 802.15.4 software architecture .......................... 7 SPI_INT pin behavior in SPI data communication .................................................. 9 SPI data format in OpenThread network ........... 9 Example of Linux release for i.MX .................. 21 Serial port settings .......................................... 24 .dtb files in /run/media/boot-mmcblk2p1 directory ...........................................................25 Design Resources on IW612 product page ..... 27 Software secure files in Design Resources section ............................................................. 28 Software files on IW612 webpage ...................28 Default /lib/firmware/nxp directory content for i.MX 8M Quad host platform ...................... 29 USB-C to USB adapter connections ............... 30 Example of recovery scenario using othost-monitor.sh script ...................................... 44 Click Sign in/Register on NXP website ............52 Capture your credential or create an account ............................................................ 52 NXP support page ...........................................52 Create a case ................................................. 53 Capture information about the case ................ 54 Select or create a project ................................54 Click Sign in/Register on NXP website ............56

Fig. 23.
Fig. 24. Fig. 25.
Fig. 26. Fig. 27. Fig. 28. Fig. 29. Fig. 30. Fig. 31. Fig. 32. Fig. 33.
Fig. 34.
Fig. 35.
Fig. 36. Fig. 37. Fig. 38. Fig. 39. Fig. 40. Fig. 41. Fig. 42. Fig. 43. Fig. 44. Fig. 45. Fig. 46.

Capture your credential or create an account ............................................................ 56 Access to NXP Community page .................... 56 ASK A QUESTION button on NXP Community page ............................................. 57 Set the location ............................................... 57 Association request example .......................... 71 Association request example (continued) ........71 Association response example ........................72 Association response example (continued) ..... 72 Command output on the DUT ......................... 79 Command output on CCT2 ............................. 81 Set connector key, csign, and netaccess values .............................................................. 82 RSN information setting showing PMF enabled ..........................................................105 RSN information settings showing PMF set to capable ......................................................107 Neighbor solicitation request ......................... 121 Neighbor advertisement ................................ 121 iPerf setup diagram ....................................... 135 Select the device to connect ......................... 167 Click CONNECT ............................................168 Confirmation of SPP connection ................... 169 Sending a message from the DUT ................ 170 Send a message to the DUT .........................171 Battery Service .............................................. 175 Coexistence subsystem ................................ 184 Product security incident process (PSIRP) ....191

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 201 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

Contents

1 1.1 2 2.1 2.1.1 2.1.1.1 2.1.1.2 2.1.2 2.2 2.2.1 2.3 2.3.1
2.3.1.1 2.3.1.2 2.3.1.3
3 3.1 3.2 3.2.1 3.2.1.1 3.2.1.2 3.2.1.3 3.2.2 3.2.2.1 3.2.2.2 3.2.2.3
3.2.2.4 3.2.2.5
3.3 3.3.1 3.3.2 3.3.3 3.3.4 4 4.1 4.1.1 4.1.1.1 4.1.2 4.1.2.1 4.1.2.2 4.1.2.3 4.1.3 4.1.3.1 4.1.3.2 4.1.3.3
4.2 4.2.1 4.2.1.1 4.2.2 4.2.2.1

Introduction ...................................................... 2 Supported products ........................................... 2 Connectivity software architecture ................ 3 Wi-Fi software architecture ................................ 3 Wi-Fi driver architecture .................................... 3 MOAL module ....................................................4 MLAN module ....................................................4 Wi-Fi layer interfaces .........................................5 Bluetooth software architecture ......................... 6 Bluetooth layer interfaces .................................. 6 802.15.4 software architecture .......................... 7 OpenThread radio coprocessor (RCP) software architecture ......................................... 7 Host ....................................................................8 Controller ........................................................... 8 Communication between host and controller ............................................................ 9 What you need ...............................................10 Connectivity hardware ..................................... 10 Host platforms ................................................. 10 NXP i.MX host processors .............................. 10 FRDM development board .............................. 10 i.MX 8M Quad evaluation kit (EVK) ................. 10 i.MX 93 EVK .................................................... 10 Integration with i.MX host processors .............. 11 Set up the build environment ...........................11 Add the Wi-Fi utilities and drivers .................... 13 Add the utilities and drivers for Bluetooth/ Bluetooth LE .................................................... 16 Modify the DTS file for PCIe interface ............. 17 Cross compile the wireless driver/utilities and flash the image .........................................19 Software ...........................................................21 Flash the image ...............................................23 Serial console setup ........................................ 24 Enabling Wi-Fi host interfaces with dtb files .....25 Linux OS login ................................................. 26 Connectivity software integration ................ 27 Start-up and initialization ................................. 27 Download the software package ......................27 Firmware types ................................................ 29 Transfer the files to i.MX host platform ............ 30 USB-C to USB adapter ....................................30 SCP utility (optional) ........................................ 32 Extract the files ................................................33 Load the firmware ............................................34 Combo firmware .............................................. 36 Standalone Wi-Fi firmware .............................. 38 Standalone Bluetooth/802.15.4 firmware via btnxpuart .......................................................... 39 Bring-up and basic operation ...........................40 Bring-up of Wi-Fi ............................................. 40 Bring up the Wi-Fi interface .............................40 Bring-up of Bluetooth .......................................41 Bring-up of Bluetooth using btnxpuart ............. 41

4.2.3
4.3 4.3.1 4.3.2 4.3.2.1
4.3.2.2
4.3.3
4.4 4.4.1 4.4.1.1 4.4.1.2 4.4.1.3 4.4.2 4.4.2.1 4.4.2.2 4.5 4.5.1 4.5.2 5 5.1 5.1.1 5.1.1.1 5.1.1.2 5.1.1.3
5.1.2 5.1.2.1 5.1.2.2 5.1.3 5.1.3.1 5.1.3.2 5.1.3.3 5.1.4 5.1.5 5.1.5.1 5.1.5.2 5.1.6 5.1.6.1 5.1.6.2 5.1.6.3 5.1.6.4 5.1.6.5 5.1.7 5.1.7.1 5.1.7.2 5.1.8
5.1.8.1 5.1.8.2 5.1.8.3 5.1.8.4 5.1.8.5

Bring-up of 802.15.4 (IW610 and IW612 only) ................................................................. 41 Error handling and fatal error recovery ............ 42 Wi-Fi independent reset .................................. 42 Bluetooth independent reset ............................42 Bluetooth independent reset using in-band method ............................................................. 42 Bluetooth independent reset using NXP Bluetooth UART driver .....................................42 802.15.4 software recovery process example ........................................................... 43 Logging and debugging ................................... 45 Wi-Fi driver debugging .................................... 45 Enable the driver debug logs ...........................45 Driver debug log types .................................... 46 Firmware dump ................................................47 Bluetooth debugging ........................................48 Bluetooth protocol debugging .......................... 48 Bluetooth driver debugging ..............................51 Reporting an issue or posting a query ............. 52 Opening a case ............................................... 52 Community post ...............................................56 Connectivity features .................................... 58 Wi-Fi .................................................................58 Scan .................................................................58 Using iw command .......................................... 58 Get wpa_supplicant version .............................59 Using wpa_supplicant and wpa_cli commands ....................................................... 60 Association .......................................................62 Create the configuration file .............................62 Use wpa_supplicant to connect with the AP .... 62 STA security features ...................................... 63 WPA2 security ................................................. 63 WPA3 security ................................................. 66 Wi-Fi Enhanced Open ..................................... 69 STA roaming and configuration ....................... 73 STA provisioning protocols .............................. 75 Wi-Fi easy connect (DPP) ............................... 75 Wi-Fi protected setup (WPS) ...........................84 uAP configuration ............................................ 91 Get the hostpad version .................................. 91 Configure the 2.4 GHz Access Point ............... 91 Configure the 5 GHz Access Point .................. 92 Set up udhcp server ........................................ 92 Start the Access Point ..................................... 93 uAP security features ...................................... 95 Hostapd configuration file ................................ 95 Example ........................................................... 99 Configure IEEE 802.11a/b/g/n/ac/ax standards ....................................................... 101 Configure IEEE 802.11b standard ................. 101 Configure IEEE 802.11a standard ................. 101 Configure IEEE 802.11g standard ................. 101 Configure IEEE 802.11n standard ................. 102 Configure IEEE 802.11ac standard ................102

RM00297
Reference manual

All information provided in this document is subject to legal disclaimers.
Rev. 1.0 -- 24 April 2025

© 2025 NXP B.V. All rights reserved.
Document feedback 202 / 203

NXP Semiconductors

RM00297
Linux Software Reference Manual for NXP Wireless Connectivity

5.1.8.6 5.1.9 5.1.9.1 5.1.9.2 5.1.10 5.1.11 5.1.11.1
5.1.12 5.1.12.1 5.1.12.2 5.1.13
5.1.13.1 5.1.13.2 5.1.14
5.1.15 5.1.16 5.1.17 5.1.18 5.1.19 5.1.20 5.2 5.2.1 5.2.1.1
5.2.1.2 5.2.1.3 5.2.1.4 5.2.1.5 5.2.1.6 5.2.2 5.2.2.1 5.2.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.6.1 5.3 5.3.1 5.3.1.1 5.4 5.4.1 5.4.2 5.4.2.1 5.4.2.2 5.4.2.3 6 6.1 6.1.1
6.1.2
6.1.3

Configure IEEE802.11ax standard .................103 Configure and test 802.11w (PMF) ................ 104 Enable 802.11w (PMF) .................................. 104 Set 802.11w (PMF) capable .......................... 106 Wi-Fi direct .................................................... 108 Suspend and resume .................................... 116 Enable dmesg logs for device in supended state ............................................................... 117 Offload during host suspend ..........................118 Neighbor solicitation (NS) offload .................. 118 Multicast DNS (mDNS) wake-up ................... 122 Configure energy detection (ED) and TX power ............................................................. 125 Load ED-MAC configuration .......................... 125 Load TX power table configuration ................ 125 Operating dynamic frequency selection (DFS) region .................................................. 126 Software antenna diversity (SAD) ..................127 Tunneled direct link support (TDLS) .............. 128 UNII-4 channel support ..................................130 Statistics and counters .................................. 131 Measuring the throughput ..............................135 Throughput performance tuning .................... 137 Bluetooth ........................................................138 Bluetooth Classic ........................................... 138 Scan, pair and connect to Bluetooth classic/ Bluetooth LE .................................................. 138 Advanced audio distribution profile (A2DP) ... 142 Hands-free profile (HFP) ............................... 151 Object Push Profile ........................................161 Human Interface Device Profile ..................... 163 Serial port profile (SPP) .................................164 Bluetooth LE .................................................. 172 Bluetooth LE device as GATT server .............172 Bluetooth LE device as GATT client .............. 176 Bluetooth power configurations ..................... 177 Human Interface Device Service ................... 178 Wake-on Bluetooth/Bluetooth LE ...................179 Bluetooth audio framework ............................ 179 Classic audio ................................................. 180 802.15.4 ......................................................... 181 OpenThread ...................................................181 Create and join a Thread network ................. 181 Coexistence ................................................... 184 Introduction to coexistence ............................ 184 Operating mode ­ Antenna configuration ...... 185 Shared antenna application ........................... 185 Dedicated antenna application ...................... 185 Antenna isolation ........................................... 185 Certifications ................................................ 186 Regulatory certifications ................................ 186 Device calibration and performance optimization ....................................................186 Tools in use for regulatory certification testing ............................................................ 186 Guidelines for specific regulatory tests .......... 187

6.1.4
6.2
6.2.1 6.2.2
6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.4 7 7.1 7.2 7.3
8 9 10
11

Creating transmit power tables from regulatory certification passing limits ............. 187 Standards-based certifications and qualification testing ........................................ 187 Wi-Fi alliance (WFA) ......................................187 Bluetooth special interest group (Bluetooth SIG) ................................................................187 Thread ............................................................187 Zigbee ............................................................ 188 Matter .............................................................188 Security .......................................................... 188 FIPS ............................................................... 188 NXP pro support services ..............................189 PSIRT and vulnerability management ........190 Introduction .................................................... 190 Product security incident process (PSIRP) .... 191 Coordinated disclosure and timely communication ...............................................191 Abbreviations ............................................... 192 References ....................................................195 Note about the source code in the document ......................................................197 Revision history ...........................................198 Legal information .........................................199

Please be aware that important notices concerning this document and the product(s) described herein, have been included in section 'Legal information'.

© 2025 NXP B.V.
For more information, please visit: https://www.nxp.com

All rights reserved.
Document feedback Date of release: 24 April 2025 Document identifier: RM00297


Apache FOP Version 2.8

Search Any Device: