diff --git a/doc/nrf/glossary.rst b/doc/nrf/glossary.rst index 5de400d5f151..0a210b4f6f7a 100644 --- a/doc/nrf/glossary.rst +++ b/doc/nrf/glossary.rst @@ -227,6 +227,9 @@ Glossary Dynamic Voltage and Frequency Scaling (DVFS) A power management technique that allows adjusting the operating voltage and operating frequency of a CPU, depending on the workload. + Dynamic Host Configuration Protocol (DHCP) + A network management protocol used for automatic and centralized management of IP addresses within a network. + Docker A set of software tools using OS-level virtualization to create and run applications and their dependencies in self-contained environments called :term:`Docker containers `. @@ -260,6 +263,12 @@ Glossary Easy Direct Memory Access (EasyDMA) A module that some peripherals implement to gain direct access to data RAM. + Electromagnetic Compatibility (EMC) + A measure of how well electrical equipment coexists with its electromagnetic environment without causing or experiencing interference. + + Electrostatic Discharge (ESD) + A sudden discharge of electric current between two electrically charged objects. + Embedded Universal Integrated Circuit Card (eUICC) A component of a SIM card that enables switching Mobile Network Operators over-the-air. @@ -656,6 +665,9 @@ Glossary Packet Traffic Arbitration (PTA) A collaborative coexistence mechanism for colocated wireless protocols. + Packet Error Rate (PER) + The number of incorrectly received data packets divided by the total number of received packets. + Password-Authenticated Session Establishment (PASE) A method of establishing a secure session between two network nodes, using a pre-shared secret. @@ -864,6 +876,9 @@ Glossary Software Development Kit (SDK) A set of tools used for developing applications for a specific device or operating system. + Spectral Emission Mask (SEM) + A spectrum mask where the spectrum emissions should not be higher at any frequency offset than the values specified in the mask. + Spin-Transfer Torque Magneto-Resistive Random Access Memory (MRAM (STT-MRAM)) An alternative :term:`Non-volatile memory (NVM)` to flash memory. Compared to flash, MRAM does not have to be erased before writing and can simply be written, making it easier to use. @@ -940,6 +955,9 @@ Glossary TrustZone Provides a cost-effective methodology to isolate security-critical components in an ARM Cortex CPU by hardware separating a rich operating system from smaller, secure operating system. + Two-wire Interface (TWI) + An I\ :sup:`2`\ C compatible serial communication protocol that enables devices to exchange data by using a two-wire bus system, allowing multiple devices to be connected and controlled by a master device. + UART Hardware Flow Control (UART HWFC) A handshaking mechanism used to prevent a buffer overflow in the receiver (in embedded computing use cases). In a serial connection, when the transmission baud rate is high enough for data to appear faster than it can be processed by the receiver, the communicating devices can synchronize with each other, using :term:`Request to Send (RTS)` and :term:`Clear to Send (CTS)` pins. diff --git a/doc/nrf/links.txt b/doc/nrf/links.txt index 817687173e71..e847eacf4d4f 100644 --- a/doc/nrf/links.txt +++ b/doc/nrf/links.txt @@ -816,11 +816,13 @@ .. _`Measuring current`: https://docs.nordicsemi.com/bundle/ug_nrf7002_dk/page/UG/nrf7002_DK/hw_measure_current.html .. _`nRF70 Series`: +.. _`Guidelines for nRF70 Series devices`: .. _`Guidelines and application notes for nRF70 Series devices`: https://docs.nordicsemi.com/category/nrf-70-series .. _`nRF70 Series power states`: https://docs.nordicsemi.com/bundle/ps_nrf7002/page/chapters/functional/doc/power_states.html .. _`nRF7002 EK`: +.. _`nRF7002 EK Hardware`: .. _`nRF7002 EK User Guide`: https://docs.nordicsemi.com/bundle/ug_nrf7002_ek/page/UG/nrf7002_EK/intro.html .. _`nRF7002 EB User Guide`: https://docs.nordicsemi.com/bundle/ug_nrf7002_eb/page/UG/nrf7002_EB/intro.html .. _`nRF7002 EB PCB edge connector`: https://docs.nordicsemi.com/bundle/ug_nrf7002_eb/page/UG/nrf7002_EB/pcb_edge_connector.html diff --git a/doc/nrf/protocols/wifi/index.rst b/doc/nrf/protocols/wifi/index.rst index 3473da801034..6d5b0337e6d6 100644 --- a/doc/nrf/protocols/wifi/index.rst +++ b/doc/nrf/protocols/wifi/index.rst @@ -38,3 +38,4 @@ If you want to go through an online training course to familiarize yourself with regulatory_support debugging stack_configuration + regulatory_certification/index diff --git a/doc/nrf/protocols/wifi/regulatory_certification/adaptivity_test_procedure.rst b/doc/nrf/protocols/wifi/regulatory_certification/adaptivity_test_procedure.rst new file mode 100644 index 000000000000..28af979f1585 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/adaptivity_test_procedure.rst @@ -0,0 +1,101 @@ +.. _ug_wifi_adaptivity_test_procedure: + +EN 301 893 V2.1.1 based adaptivity test procedure +################################################# + +.. contents:: + :local: + :depth: 2 + +This section describes two methods of adaptivity testing, using the Wi-Fi® Shell and Wi-Fi Radio test samples. + +The test requirements and methods for adaptivity (channel access mechanism) are described in EN 301 893 V2.1.1: + +* Test requirements in Section 4.2.7 Adaptivity (channel access mechanism) +* Test method in Section 5.4.9 Adaptivity (channel access mechanism) + +The nRF7002 device is a supervised device and complies with EN 301 893, clause 4.2.7.3.2.4, Table 8. + +The following figure shows a test setup for adaptivity verification using two nRF7002 Development Kit (DK)s. + +.. figure:: images/adaptivity_test_setup.svg + :alt: Test set up for verifying the adaptivity of nRF7002 DK + + Test set up for verifying the adaptivity of nRF7002 DK + +The :term:`Device Under Test (DUT)` is an nRF7002 DK configured to a transmit (TX) mode through the following samples: + +* Wi-Fi Shell sample that can connect to an access point and run DUT TX through a zperf session. + For details, see :ref:`ug_using_wifi_shell_sample`. + +* Wi-Fi Radio test sample which includes an internal traffic source used for the transmitted packets. + +The companion device is an optional nRF7002 DK or :term:`Evaluation Kit (EK)` configured as a receiving device through the Wi-Fi Radio test sample. +It only acts as a monitoring device for the transmissions from the DUT. +This device can be omitted if the monitoring of the transmissions is accomplished by the spectrum analyzer. +A Wi-Fi sniffer or any other compliant Wi-Fi device capable of monitoring Wi-Fi traffic can also be used. + +The following test procedure is recommended: + +1. Validate the test setup as shown in Test set up for verifying the adaptivity of nRF7002 DK. +#. Set up the companion device for monitoring traffic on the required channel used by the DUT. + If the monitoring device is another nRF7002 DK or EK, see :ref:`ug_wifi_radio_test_for_per_measurements` for setting it up in the receive mode for monitoring. + Omit the transmit part of the instructions as the DUT will be configured to transmit continuously. + +#. Set up the DUT to transmit on the required channel or mode either using the Wi-Fi Shell sample or the Wi-Fi Radio test sample. + + * DUT as Wi-Fi Shell sample running UDP TX + + .. toggle:: + + Set up the DUT to transmit on the required channel or mode using the Wi-Fi Shell sample. + + The nRF7002 Wi-Fi device is designed for low-power IoT applications, featuring a low-power host device with low processing frequency and memory. + When connected to an access point in infrastructure mode and utilizing the suggested User Datagram Protocol (UDP) transmit traffic, the DUT cannot maintain full transmission queues due to host limitations. + + This leads to misleading results, despite the underlying channel access mechanism's compliance with the defined IEEE 802.11 standards. + To achieve the required transmit packet duty cycle above 30%, it is necessary to limit the device to a lower data rate, such as 6 Mbps or MCS0. + + Example command on the access point side: + + .. code-block:: bash + + iperf -s -i 1 -u + + Example commands on the DUT side for fixing data rate to 6 Mbps: + + .. code-block:: bash + + wifi connect + wifi_util tx_rate 0 6 + zperf udp upload 192.168.1.20 5001 20 1k 20M + + * DUT as Wi-Fi Radio test sample + + .. toggle:: + + Set up the DUT to transmit on the required channel or mode using the Wi-Fi Radio test sample. + + Use the Wi-Fi Radio test sample in transmit mode, which is built on top of the core Wi-Fi driver and firmware. + This includes CSMA/CA, random backoff, and CCA engines, ensuring compliance with all transmission protocols defined in the IEEE 802.11 standards. + + Any set of the TX commands given in :ref:`ug_wifi_radio_sample_for_transmit_tests` can be used for this testing based on required parameters. + + The following example shows how to run a continuous (OFDM) TX traffic sequence in 11a mode: + + * Channel: 100 + * Payload length: 1000 bytes + * Inter-frame gap: 0 µs + * Data rate: 5 Mbps + + Execute the following sequence of commands: + + .. code-block:: bash + + uart:~$ wifi_radio_test init 100 + uart:~$ wifi_radio_test tx_pkt_tput_mode 0 + uart:~$ wifi_radio_test tx_pkt_rate 54 + uart:~$ wifi_radio_test tx_pkt_len 1000 + uart:~$ wifi_radio_test tx_pkt_gap 0 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 diff --git a/doc/nrf/protocols/wifi/regulatory_certification/antenna_gain_compensation.rst b/doc/nrf/protocols/wifi/regulatory_certification/antenna_gain_compensation.rst new file mode 100644 index 000000000000..3857d5c703d4 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/antenna_gain_compensation.rst @@ -0,0 +1,65 @@ +.. _ug_wifi_antenna_gain_compensation: + +Antenna gain compensation +######################### + +.. contents:: + :local: + :depth: 2 + +Determine the accurate TX power on the nRF70 Series development platforms by taking into account the antenna gain of the PCB chip antenna and the corresponding PCB losses for various RF bands. +This facilitates the interpretation of the transmit power measurements. + +Kconfig parameter values are used as inputs to the host software to compensate for the transmit power based on the gain of the antenna. + +To find the Kconfig value, subtract the PCB losses ``PCBLoss`` from the antenna gain ``AntGain`` and round up the result to the nearest whole number: + +.. math:: + + \text{Kconfig value} = \text{AntGain} - \text{PCBLoss} + +The PCB loss is defined as follows: + +.. math:: + + \text{PCBLoss} = \text{PCBLossA} + \text{Coax loss for conducted testing} + +.. math:: + + \text{PCBLoss} = \text{PCBLossA} + \text{PCBLossB for radiated testing} + +The Coax loss is the loss in dB from the point on the PCB where a coaxial cable or equivalent is connected to the I/O connector of the measuring equipment. + +The following figure shows the different losses between the nRF7002 and the PCB chip antenna or SMA. + +.. figure:: images/antenna_gain.svg + :alt: PCB losses + + PCB losses + +The following table shows an example of how to calculate the Kconfig parameter values. + ++-------------------+---------------------------+----------------------+--------------+--------------+--------------------+ +| Bands | Kconfig parameter | Frequency range (MHz)| AntGain (dB) | PCBLoss (dB) | Kconfig value (dB) | ++===================+===========================+======================+==============+==============+====================+ +| ANTGAIN_2G | NRF700X_ANT_GAIN_2G | 2402 to 2494 | 3.38 | 0.54 | 3 | ++-------------------+---------------------------+----------------------+--------------+--------------+--------------------+ +| ANTGAIN_5G_BAND1 | NRF700X_ANT_GAIN_5G_BAND1 | 5150 to 5350 | 2.74 | 1.60 | 2 | ++-------------------+---------------------------+----------------------+--------------+--------------+--------------------+ +| ANTGAIN_5G_BAND2 | NRF700X_ANT_GAIN_5G_BAND2 | 5470 to 5730 | 2.46 | 1.84 | 1 | ++-------------------+---------------------------+----------------------+--------------+--------------+--------------------+ +| ANTGAIN_5G_BAND3 | NRF700X_ANT_GAIN_5G_BAND3 | 5730 to 5895 | 1.77 | 1.51 | 1 | ++-------------------+---------------------------+----------------------+--------------+--------------+--------------------+ + +Setting antenna gain parameters +******************************* + +The Kconfig parameters and their default values are defined in the :file:`/nrf/drivers/wifi/nrf700x/Kconfig` file. +To compensate for antenna gains, set the following Kconfig parameters in the project :file:`prj.conf` configuration file. + +* :kconfig:option:`CONFIG_NRF700X_ANT_GAIN_2G` = ```` +* :kconfig:option:`CONFIG_NRF700X_ANT_GAIN_5G_BAND1` = ```` +* :kconfig:option:`CONFIG_NRF700X_ANT_GAIN_5G_BAND2` = ```` +* :kconfig:option:`CONFIG_NRF700X_ANT_GAIN_5G_BAND3` = ```` + +The Kconfig parameters can also be set in a relevant overlay file or entered as command-line arguments to the CMake build. diff --git a/doc/nrf/protocols/wifi/regulatory_certification/band_edge_compensation.rst b/doc/nrf/protocols/wifi/regulatory_certification/band_edge_compensation.rst new file mode 100644 index 000000000000..752797e776c6 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/band_edge_compensation.rst @@ -0,0 +1,147 @@ +.. _ug_wifi_band_edge_compensation: + +Band edge compensation +###################### + +.. contents:: + :local: + :depth: 2 + +Use backoff to reduce the transmit power on the band edge channels to be within regulatory limits. + +In general, a device transmits at the maximum possible power for a given data rate. +When using this maximum power for band edge channels, the regulatory requirements for :term:`Spectral Emission Mask (SEM)` might be violated. +For such cases, the transmit power is reduced by a particular value called backoff to meet SEM requirements. +The backoff is applied only for edge channels of a frequency band defined by the regulatory domain. + +The following table shows examples of frequency ranges for the U.S. regulatory domain. + ++----------------+-----------------------+ +| Band | Frequency range (MHz) | ++================+=======================+ +| 2.4 GHz band | 2400 to 2472 | ++----------------+-----------------------+ +| UNII-1 | 5150 to 5250 | ++----------------+-----------------------+ +| UNII-2A | 5250 to 5350 | ++----------------+-----------------------+ +| UNII-2C | 5470 to 5730 | ++----------------+-----------------------+ +| UNII-3 | 5730 to 5850 | ++----------------+-----------------------+ +| UNII-4 | 5850 to 5895 | ++----------------+-----------------------+ + +When applying backoff, consider the following: + +* A channel is considered an edge channel if the difference between the edge frequency of a band and the center frequency of the channel is 10 MHz or less. +* In the U.S. regulatory domain, devices operating on channel 11 of the 2.4 GHz band (2462 MHz) must apply backoff as channel 11 is at the edge for this frequency band. +* For world regulatory domain, channel 14 is the edge channel as the frequency range for world regulatory domain is 2400 MHz to 2494 MHz. +* Backoff values also vary based on the frame type, affecting the maximum transmit power. Different backoff values are configured for each frame type. + +Backoff values, which are expressed in dB, are inputs to the Wi-Fi® firmware driver through Kconfig parameters. +The Kconfig parameters are defined in the :file:`/nrf/drivers/wifi/nrf700x/Kconfig` file. + +Set the Kconfig parameter values (which are positive numbers) according to the required backoff in the specific frequency band for the regulatory domain. +The default value of the Kconfig parameter is zero. + +The following tables show the Kconfig parameters for lower and upper edge backoff. + ++---------+-----------+---------------------------------------------------------------+ +| Band | Frame type| Kconfig parameter for lower edge backoff | ++=========+===========+===============================================================+ +| 2.4 GHz | DSSS | CONFIG_NRF700X_BAND_2G_LOWER_EDGE_BACKOFF_DSSS | ++ +-----------+---------------------------------------------------------------+ +| | HT/V HT | CONFIG_NRF700X_BAND_2G_LOWER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_2G_LOWER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-1 | HT/V HT | CONFIG_NRF700X_BAND_UNII_1_LOWER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_1_LOWER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-2A | HT/V HT | CONFIG_NRF700X_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-2C | HT/V HT | CONFIG_NRF700X_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-3 | HT/V HT | CONFIG_NRF700X_BAND_UNII_3_LOWER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_3_LOWER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-4 | HT/V HT | CONFIG_NRF700X_BAND_UNII_4_LOWER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_4_LOWER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ + ++---------+-----------+---------------------------------------------------------------+ +| Band | Frame type| Kconfig parameter for upper edge backoff | ++=========+===========+===============================================================+ +| 2.4 GHz | DSSS | CONFIG_NRF700X_BAND_2G_UPPER_EDGE_BACKOFF_DSSS | ++ +-----------+---------------------------------------------------------------+ +| | HT/V HT | CONFIG_NRF700X_BAND_2G_UPPER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_2G_UPPER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-1 | HT/V HT | CONFIG_NRF700X_BAND_UNII_1_UPPER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_1_UPPER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-2A | HT/V HT | CONFIG_NRF700X_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-2C | HT/V HT | CONFIG_NRF700X_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-3 | HT/V HT | CONFIG_NRF700X_BAND_UNII_3_UPPER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_3_UPPER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ +| UNII-4 | HT/V HT | CONFIG_NRF700X_BAND_UNII_4_UPPER_EDGE_BACKOFF_HT | ++ +-----------+---------------------------------------------------------------+ +| | HE | CONFIG_NRF700X_BAND_UNII_4_UPPER_EDGE_BACKOFF_HE | ++---------+-----------+---------------------------------------------------------------+ + +Setting band edge parameters +**************************** + +Review if the transmission (TX) power of any band-edge channels requires backoff according to the active regulatory domain. +The Kconfig parameters and their default values are defined in the :file:`/nrf/drivers/wifi/nrf700x/Kconfig` file. +If backoff is needed, set the following Kconfig parameters to ```` in the project :file:`prj.conf` configuration file. + +Kconfig parameters for the lower edge backoff: + +* :kconfig:option:`CONFIG_NRF700X_BAND_2G_LOWER_EDGE_BACKOFF_DSSS` +* :kconfig:option:`CONFIG_NRF700X_BAND_2G_LOWER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_2G_LOWER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_1_LOWER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_1_LOWER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_3_LOWER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_3_LOWER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_4_LOWER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_4_LOWER_EDGE_BACKOFF_HE` + +Kconfig parameters for the upper edge backoff: + +* :kconfig:option:`CONFIG_NRF700X_BAND_2G_UPPER_EDGE_BACKOFF_DSSS` +* :kconfig:option:`CONFIG_NRF700X_BAND_2G_UPPER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_2G_UPPER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_1_UPPER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_1_UPPER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_3_UPPER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_3_UPPER_EDGE_BACKOFF_HE` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_4_UPPER_EDGE_BACKOFF_HT` +* :kconfig:option:`CONFIG_NRF700X_BAND_UNII_4_UPPER_EDGE_BACKOFF_HE` diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/adaptivity_test_setup.svg b/doc/nrf/protocols/wifi/regulatory_certification/images/adaptivity_test_setup.svg new file mode 100644 index 000000000000..e6069f6cf53b --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/images/adaptivity_test_setup.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + Page-1 + + Sheet.8 + Signal generator (interferer) + + Signal generator (interferer) + + Sheet.9 + Spectrum analyzer + + Spectrum analyzer + + Sheet.18 + Splitter/combiner + + Splitter/combiner + + Sheet.19 + Splitter/combiner + + Splitter/combiner + + Sheet.20 + Attenuator + + Attenuator + + Sheet.21 + + + + Dynamic connector + + + + Dynamic connector.24 + + + + Dynamic connector.25 + + + + Dynamic connector.26 + + + + Dynamic connector.27 + + + + Sheet.6 + nRF7002 DK (DUT) + + nRF7002 DK (DUT) + + Sheet.30 + Wi-Fi Radio test TX mode + + Wi-Fi Radio test TX mode + + Sheet.7 + nRF7002 DK (companion device) + + nRF7002 DK (companion device) + + Sheet.31 + Wi-Fi Radio test RX mode + + Wi-Fi Radio test RX mode + + diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/antenna_gain.svg b/doc/nrf/protocols/wifi/regulatory_certification/images/antenna_gain.svg new file mode 100644 index 000000000000..4ab1a658e0c1 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/images/antenna_gain.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + Sheet.6 + nRF7002 + + nRF7002 + + Sheet.7 + + + + Sheet.8 + + + + Sheet.9 + PCB chip antenna + + PCB chip antenna + + Sheet.11 + + + + Sheet.12 + + + + Sheet.13 + PCBLossA + + PCBLossA + + Sheet.15 + PCBLossB + + PCBLossB + + Sheet.16 + SMA + + SMA + + Sheet.17 + Coax loss + + Coax loss + + diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/non_signaling_rx_testbed.svg b/doc/nrf/protocols/wifi/regulatory_certification/images/non_signaling_rx_testbed.svg new file mode 100644 index 000000000000..343dc623e40c --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/images/non_signaling_rx_testbed.svg @@ -0,0 +1,68 @@ + + + + + + + + Page-1 + + Sheet.14 + Computer serial terminal (Putty/Tera) + + Computer serial terminal (Putty/Tera) + + Sheet.16 + USB + + USB + + Sheet.26 + Computer serial terminal (Putty/Tera) + + Computer serial terminal (Putty/Tera) + + Sheet.27 + USB + + USB + + Sheet.15 + nRF7002 DK/EK Radio test/ Wi-Fi Radio test firmware + + nRF7002 DK/EK Radio test/ Wi-Fi Radio test firmware + + Sheet.20 + nRF7002 DK/EK Radio test/ Wi-Fi Radio test firmware + + nRF7002 DK/EK Radio test/ Wi-Fi Radio test firmware + + Sheet.31 + TX-DUT + + TX-DUT + + Sheet.32 + RX-DUT + + RX-DUT + + diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/non_signaling_tx_testbed.svg b/doc/nrf/protocols/wifi/regulatory_certification/images/non_signaling_tx_testbed.svg new file mode 100644 index 000000000000..795444aae7ca --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/images/non_signaling_tx_testbed.svg @@ -0,0 +1,45 @@ + + + + + + + + Page-1 + + Sheet.6 + Computer serial terminal (Putty/Tera) + + Computer serial terminal (Putty/Tera) + + Sheet.7 + nRF7002 DK/EK Radio test/ Wi-Fi Radio test firmware + + nRF7002 DK/EK Radio test/ Wi-Fi Radio test firmware + + Sheet.8 + USB + + USB + + Sheet.18 + DUT + + DUT + + diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/nrf7002_dk_front.png b/doc/nrf/protocols/wifi/regulatory_certification/images/nrf7002_dk_front.png new file mode 100644 index 000000000000..3d82165e3b98 Binary files /dev/null and b/doc/nrf/protocols/wifi/regulatory_certification/images/nrf7002_dk_front.png differ diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/nrf7002_ek_top.png b/doc/nrf/protocols/wifi/regulatory_certification/images/nrf7002_ek_top.png new file mode 100644 index 000000000000..d8c911ecec5a Binary files /dev/null and b/doc/nrf/protocols/wifi/regulatory_certification/images/nrf7002_ek_top.png differ diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/signaling_testbed_accesspoint.svg b/doc/nrf/protocols/wifi/regulatory_certification/images/signaling_testbed_accesspoint.svg new file mode 100644 index 000000000000..6967ea3d41e2 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/images/signaling_testbed_accesspoint.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + Sheet.6 + Computer serial terminal (Putty/Tera) + + Computer serial terminal (Putty/Tera) + + Sheet.7 + nRF7002 DK/EK Wi-Fi Shell /Station + + nRF7002 DK/EK Wi-Fi Shell /Station + + Sheet.8 + USB + + USB + + Sheet.53 + + + + Sheet.54 + Access point + + Access point + + Sheet.55 + + Sheet.34 + + + + Sheet.37 + + + + Sheet.38 + + + + Sheet.39 + + + + Sheet.49 + + + + Sheet.50 + + + + Sheet.51 + + + + + Sheet.64 + + Sheet.57 + + + + Sheet.58 + + + + Sheet.59 + + + + Sheet.60 + + + + Sheet.61 + + + + Sheet.62 + + + + Sheet.63 + + + + + Sheet.65 + + + + Sheet.66 + Wi-Fi link + + Wi-Fi link + + Sheet.70 + TX-DUT + + TX-DUT + + diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/sr_radio_test_port.png b/doc/nrf/protocols/wifi/regulatory_certification/images/sr_radio_test_port.png new file mode 100644 index 000000000000..a417e262fa54 Binary files /dev/null and b/doc/nrf/protocols/wifi/regulatory_certification/images/sr_radio_test_port.png differ diff --git a/doc/nrf/protocols/wifi/regulatory_certification/images/wifi_radio_test_port.png b/doc/nrf/protocols/wifi/regulatory_certification/images/wifi_radio_test_port.png new file mode 100644 index 000000000000..672c191d10e7 Binary files /dev/null and b/doc/nrf/protocols/wifi/regulatory_certification/images/wifi_radio_test_port.png differ diff --git a/doc/nrf/protocols/wifi/regulatory_certification/index.rst b/doc/nrf/protocols/wifi/regulatory_certification/index.rst new file mode 100644 index 000000000000..fe3382a02f4e --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/index.rst @@ -0,0 +1,35 @@ +.. _ug_wifi_regulatory_certification: + +Regulatory Certification Testing for nRF70 Series Devices +######################################################### + +The regulatory certification process ensures that products meet specific safety, quality, and performance standards established by regulatory bodies. +Although the operation of radio equipment in the 2.4 GHz and 5 GHz bands is license-free, the end product (not the IC itself) must be type-approved by the appropriate regulatory authority. + +Different regions have regulatory agencies that oversee the requirements for their region, which could be a country or a group of countries. +Each of these agencies plays a crucial role in its respective region, and compliance with their requirements is essential for manufacturers to market and sell their products there. + +Some of the major regulatory agencies are: + +* European Telecommunications Standards Institute (ETSI, Europe) +* Federal Communications Commission (FCC, United States of America) +* Ministry of Internal Affairs and Communications (MIC, Japan) +* State Radio Regulation of China (SRRC, China) +* Korea Communication Commission (KCC, South Korea) + +This application note outlines the test setup, software tools, and configuration options for the nRF70 Series products. +It enables users to configure and conduct regulatory and compliance tests as defined by the standardization bodies. + +.. toctree:: + :maxdepth: 2 + :caption: Subpages: + + test_setup + regulatory_test_cases + antenna_gain_compensation + band_edge_compensation + wifi_radio_test_sample/index + radio_test_short_range_sample/index + using_wifi_shell_sample + using_wifi_station_sample + adaptivity_test_procedure diff --git a/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/ble_radio_test_firmware.rst b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/ble_radio_test_firmware.rst new file mode 100644 index 000000000000..423be80a90e0 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/ble_radio_test_firmware.rst @@ -0,0 +1,31 @@ +.. _ug_wifi_ble_radio_test_firmware: + +Using the Bluetooth Low Energy Radio test firmware +################################################## + +The following example describes how to perform a continuous transmit on a fixed channel. + +Configure the data rate to 1 Mbps and set a random data transmission pattern: + +.. code-block:: shell + + uart:~$ data_rate ble_1Mbit + uart:~$ transmit_pattern pattern_random + +Select the lowest channel, which is 2400 MHz: + +.. code-block:: shell + + uart:~$ start_channel 0 + +Transmit packets continuously with high duty cycle: + +.. code-block:: shell + + uart:~$ start_tx_modulated_carrier + +Terminate the transmission: + +.. code-block:: shell + + uart:~$ cancel diff --git a/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/ble_radio_test_for_per_measurements.rst b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/ble_radio_test_for_per_measurements.rst new file mode 100644 index 000000000000..a5d39fb8b3e9 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/ble_radio_test_for_per_measurements.rst @@ -0,0 +1,46 @@ +.. _ug_ble_radio_test_per_measurements: + +Using the Bluetooth Low Energy Radio test for PER measurements +############################################################## + +You can perform a :term:`Packet Error Rate (PER)` measurement using the Radio test sample running on two nRF7002 :term:`Development Kit (DK)` or :term:`Evaluation Kit (EK)` devices, where one is used as a transmitter and the other as a receiver. + +Configure the receiving device (DK or EK) to receive packets with a known access address at a center frequency of 2400 MHz. + +.. code-block:: shell + + uart:~$ data_rate ble_1Mbit + uart:~$ transmit_pattern pattern_11110000 + uart:~$ start_channel 0 + uart:~$ parameters_print + uart:~$ start_rx + +Configure the transmitting device (DK or EK) to transmit 10000 packets (TX transmit count) with the matching access address at a center frequency of 2400 MHz. + +.. code-block:: shell + + uart:~$ data_rate ble_1Mbit + uart:~$ transmit_pattern pattern_11110000 + uart:~$ start_channel 0 + uart:~$ parameters_print + uart:~$ start_tx_modulated_carrier 10000 + +Record the number of successfully received packets on the receiving device (DK or EK). +Repeat as necessary until the count stops incrementing. +RX success count is displayed as ``dsss_crc32_pass_cnt``. + +.. code-block:: shell + + uart:~$ print_rx + +Terminate receiving on the transmitting device (DK or EK). + +.. code-block:: shell + + uart:~$ cancel + +Calculate PER using the following equation: + +.. math:: + + 1 - \left( \frac{\text{RX success count}}{\text{TX transmit count}} \right) diff --git a/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/index.rst b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/index.rst new file mode 100644 index 000000000000..cc321cfcd926 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/index.rst @@ -0,0 +1,27 @@ +.. _ug_using_short_range_sample: + +Using the Radio test (short-range) sample +######################################### + +The Radio test sample is used to control the short-range device. +The Radio test firmware supports configuration of the short-range radio in specific modes and with various TX and RX parameters to test its performance. + +For more information on the samples in |NCS|, see the following: + +* Overall description: :ref:`radio_test` sample. +* Description of using PuTTY as the terminal application for controlling the :term:`Device Under Test (DUT)`: :ref:`Testing and debugging an application `. +* Description of sub-commands for configuring the radio: :ref:`User interface for short-range Radio test `. + +.. note:: + + The Radio test (short-range) runs on a different UART that is connected to the nRF5340 network core (VCOM0). + For more information, see :ref:`ug_wifi_test_setup_vcom_settings`. + +.. toctree:: + :maxdepth: 2 + :caption: Subpages: + + ble_radio_test_firmware + ble_radio_test_for_per_measurements + thread_radio_testing + thread_radio_test_for_per_measurements diff --git a/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/thread_radio_test_for_per_measurements.rst b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/thread_radio_test_for_per_measurements.rst new file mode 100644 index 000000000000..8a2664a8603d --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/thread_radio_test_for_per_measurements.rst @@ -0,0 +1,44 @@ +.. _ug_thread_radio_test_for_per_measurements: + +Using Thread Radio test for PER measurements +############################################ + +You can perform a :term:`Packet Error Rate (PER)` measurement using the Radio test application running on two nRF7002 :term:`Development Kit (DK)` or :term:`Evaluation Kit (EK)` devices, where one is used as a transmitter and the other as a receiver. + +Configure the receiving device (DK or EK) to receive packets with a known access address at a center frequency of 2400 MHz. + +.. code-block:: shell + + uart:~$ data_rate ieee802154_250Kbit + uart:~$ start_channel 18 + uart:~$ parameters_print + uart:~$ start_rx + +Configure the transmitting device (DK or EK) to transmit 10000 packets (TX transmit count) with the matching access address at center channel 18. + +.. code-block:: shell + + uart:~$ data_rate ieee802154_250Kbit + uart:~$ start_channel 18 + uart:~$ parameters_print + uart:~$ start_tx_modulated_carrier 10000 + +Record the number of successfully received packets on the receiving device (DK or EK). +Repeat as necessary until the count stops incrementing. +RX success count is the final item in the print display: ``Number of packets``. + +.. code-block:: shell + + uart:~$ print_rx + +Terminate receiving on the transmitting device (DK or EK). + +.. code-block:: shell + + uart:~$ cancel + +Calculate PER using the following equation: + +.. math:: + + 1 - \left( \frac{\text{RX success count}}{\text{TX transmit count}} \right) diff --git a/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/thread_radio_testing.rst b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/thread_radio_testing.rst new file mode 100644 index 000000000000..c2d05ab0c96a --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/radio_test_short_range_sample/thread_radio_testing.rst @@ -0,0 +1,30 @@ +.. _ug_thread_radio_testing: + +Using the Thread Radio testing +############################## + +The following example describes how to perform a continuous transmit on a fixed channel. + +.. code-block:: shell + + uart:~$ data_rate ieee802154_250Kbit + +Select the lowest channel 11. +Replace 11 with 18 for mid channel. +Replace 11 with 26 for high channel. + +.. code-block:: shell + + uart:~$ start_channel 11 + +Transmit packets continuously with high duty cycle. + +.. code-block:: shell + + uart:~$ start_tx_modulated_carrier + +Terminate the transmission. + +.. code-block:: shell + + uart:~$ cancel diff --git a/doc/nrf/protocols/wifi/regulatory_certification/regulatory_test_cases.rst b/doc/nrf/protocols/wifi/regulatory_certification/regulatory_test_cases.rst new file mode 100644 index 000000000000..5d51f778d444 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/regulatory_test_cases.rst @@ -0,0 +1,55 @@ +.. _ug_wifi_regulatory_test_cases: + +Regulatory test cases +##################### + +This section provides an overview of required regulatory test cases and describes where to find the recommended command sets for the test applications. + +The following references are CE regulatory compliance documents: + +* 2.4 GHz band RF compliance: EN 300 328 V2.2.2 +* 5 GHz band RF compliance: EN 301 893 V2.1.1 +* :term:`Electromagnetic Compatibility (EMC)` tests: + + * EN 301 489-1 V2.2.3 + * EN 301 489-17 V3.2.3 + +The following table lists general RF compliance tests, recommendations for test samples, and links to the related sections in this document that explains how to use the samples for the nRF70 Series devices. + ++---------------------------------------------+----------------------------+---------------------------------------------------------------+ +| Test case | Test samples | Reference sections | ++=============================================+============================+===============================================================+ +| Center frequencies | Wi-Fi® Radio test (TX) | :ref:`ug_wifi_radio_sample_for_transmit_tests` | ++---------------------------------------------+----------------------------+ + +| Occupied Channel Bandwidth | Wi-Fi Radio test (TX) | | ++---------------------------------------------+----------------------------+ + +| Power, Power Density | Wi-Fi Radio test (TX) | | ++---------------------------------------------+----------------------------+ + +| Transmitter unwanted emissions (Out of Band | Wi-Fi Radio test (TX) | | +| (OOB) and spurious domains) | | | ++---------------------------------------------+----------------------------+---------------------------------------------------------------+ +| Receiver spurious emissions | Wi-Fi Radio test (RX/PER) | :ref:`ug_wifi_radio_test_for_per_measurements` | ++---------------------------------------------+----------------------------+ + +| Receiver Blocking | Wi-Fi Radio test (RX/PER) | | ++---------------------------------------------+----------------------------+---------------------------------------------------------------+ +| Adaptivity | Wi-Fi Radio test (TX) | :ref:`ug_wifi_radio_sample_for_transmit_tests`, | +| | | :ref:`ug_using_wifi_shell_sample`, and | +| | | :ref:`ug_wifi_adaptivity_test_procedure` | ++---------------------------------------------+----------------------------+---------------------------------------------------------------+ +| Dynamic Frequency Selection (DFS) | Wi-Fi Radio test (TX) | :ref:`ug_wifi_radio_sample_for_transmit_tests` | ++---------------------------------------------+----------------------------+ + +| Transmit Power Control (TPC) | Wi-Fi Radio test (TX) | | ++---------------------------------------------+----------------------------+---------------------------------------------------------------+ + +The following table lists general EMC compliance tests, recommendations for test samples, and links to the related sections in this document that explains how to use the samples for the nRF70 Series. + ++---------------------------------+--------------------------+-------------------------------------------------+ +| Test case | Test samples | Reference sections | ++=================================+==========================+=================================================+ +| Emissions | Wi-Fi Radio test (TX) | :ref:`ug_wifi_radio_sample_for_transmit_tests` | ++---------------------------------+--------------------------+-------------------------------------------------+ +| Immunity | Wi-Fi Radio test (RX/PER)| :ref:`ug_wifi_radio_test_for_per_measurements` | ++---------------------------------+--------------------------+-------------------------------------------------+ +| :term:`Electrostatic Discharge | Wi-Fi Station (STA) | :ref:`ug_using_wifi_station_sample` | +| (ESD)` | | | ++---------------------------------+--------------------------+-------------------------------------------------+ diff --git a/doc/nrf/protocols/wifi/regulatory_certification/test_setup.rst b/doc/nrf/protocols/wifi/regulatory_certification/test_setup.rst new file mode 100644 index 000000000000..34e7ab3252b1 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/test_setup.rst @@ -0,0 +1,215 @@ +.. _ug_wifi_test_setup: + +Test setup +########## + +.. contents:: + :local: + :depth: 2 + +An overview of software test samples, hardware development platforms, test modes, and firmware configurations is provided to help prepare your device for regulatory testing. + +Test samples +************ + +You can use the software test samples available in the |NCS| can be used for regulatory testing of the nRF70 Series devices. + +Wi-Fi Radio test sample +======================= + +The Wi-Fi® Radio test sample is used to configure and control the Wi-Fi radio on the nRF70 Series device. +The Wi-Fi Radio test firmware supports the configuration of the Wi-Fi radio in specific modes and with various TX and RX parameters to test its performance. + +For an overall description, see :ref:`wifi_radio_sample_desc`. +The sub-commands that can be used to configure the radio are described in Wi-Fi :ref:`wifi_radio_subcommands`. +For more information on using the sample for regulatory testing, see :ref:`Using the Wi-Fi Radio test sample `. + +Wi-Fi Shell sample +================== + +The Wi-Fi Shell sample runs on the :term:`Device Under Test (DUT)` and allows the control of Wi-Fi functionality through a shell interface. +The sample allows the DUT to connect to a Wi-Fi access point device and expose a shell interface through a UART console to run relevant Wi-Fi Shell commands. + +The Wi-Fi Shell sample has an option to set a static IP address for the DUT at build time by configuring the :file:`prj.conf` file. +If the :term:`Dynamic Host Configuration Protocol (DHCP)` resolution fails, this IP address will be used by the device when connecting to the access point. + +For an overall description, see :ref:`wifi_shell_sample` sample. +For more information on using the sample for regulatory testing, see :ref:`Using the Wi-Fi Shell sample `. + + +Wi-Fi Station sample +==================== + +The Wi-Fi Station (STA) sample demonstrates how to add Wi-Fi functionality to applications programmatically. +The sample allows the DUT to connect to a Wi-Fi access point device and gives visual indication of a connected state through a blinking LED and of a not connected state through the LED not lighting up. + +The Wi-Fi Station sample has an option to set a static IP address for the DUT at build time by configuring the :file:`prj.conf` file. +If the DHCP resolution fails, this IP address is used by the device when connecting to the access point. + +For an overall description, see :ref:`wifi_station_sample` sample. +For more information on using the sample for regulatory testing, see :ref:`Using the Wi-Fi Station sample `. + +Radio test (short-range) sample +=============================== + +The Radio test (short-range) sample demonstrates how to configure and test the performance of a 2.4 GHz radio (Bluetooth® Low Energy, IEEE 802.15.4 and proprietary). + +The Radio test firmware supports the configuration of 2.4 GHz radio in specific modes and with various TX and RX parameters to test its performance. + +For an overall description, see :ref:`radio_test` sample. +For more information on using the sample for regulatory testing, see :ref:`Using the Radio test (short-range) sample `. + +Test hardware +************* + +Use the nRF70 Series hardware development platforms for regulatory testing. + +The nRF70 Series includes the following platforms: + +* nRF7002 :term:`Development Kit (DK)` – A single-board solution featuring the Wi-Fi 6 capabilities of the nRF7002 companion IC and the nRF5340 :term:`System on Chip (SoC)`. +* nRF7002 :term:`Evaluation Kit (EK)` – A shield board used for evaluating the nRF7002 companion IC. The EK is compatible with the nRF52840, nRF5340, and nRF91 DKs through its Arduino connector. + +For hardware information, see the user guides `nRF7002 DK Hardware`_ and `nRF7002 EK Hardware`_. +For more information on the boards in nRF Connect for Desktop, see :ref:`Getting started with nRF70 Series `. + +.. figure:: images/nrf7002_dk_front.png + :alt: nRF7002 DK, top view + + nRF7002 DK, top view + +.. figure:: images/nrf7002_ek_top.png + :alt: nRF7002 EK, top view + + nRF7002 EK, top view + +Test modes +********** + +Set up the nRF70 Series hardware development platforms in test configurations for both non-signaling and signaling mode. +These two test modes are used to execute regulatory certification test cases. + +Non-signaling mode +================== + +This section describes Wi-Fi test setup using applications that do not require the nRF7002 device to be associated with an access point or test equipment supporting Wi-Fi access point mode. + +TX test setup for packet generation +----------------------------------- + +The following testbed setup is used for performing Wi-Fi and short-range RF based transmitter testing. + +.. figure:: images/non_signaling_tx_testbed.svg + :alt: Testbed setup for RF based transmitter testing + + Testbed setup for RF based transmitter testing + +RX test setup for PER measurement +--------------------------------- + +The following testbed setup is used for performing Wi-Fi and short-range :term:`Packet Error Rate (PER)` based TX/RX testing. + +.. figure:: images/non_signaling_rx_testbed.svg + :alt: Testbed setup for PER based TX/RX testing + + Testbed setup for PER based TX/RX testing + +As an alternative, you can replace the TX-DUT with an appropriate Vector Signal Generator (VSG), for example Rohde and Schwarz CMW-500. + +TX test setup for adaptivity testing +------------------------------------ + +For information on TX testing (adaptivity), see :ref:`ug_wifi_adaptivity_test_procedure`. + +Signaling mode +============== + +This section describes Wi-Fi test setup using applications that require the nRF7002 to be associated with an access point or test equipment supporting Wi-Fi Access Point mode. + +.. figure:: images/signaling_testbed_accesspoint.svg + :alt: Testbed setup with access point + + Testbed setup with access point + +Firmware setup +************** + +This describes the flashing, running, and use of the appropriate console ports while using test applications on the nRF7002 DK or EK. + +Programming firmware in the nRF7002 setup +========================================= + +Before you begin, make sure you have the nrfjprog tool installed on your computer. +You can download it at `nRF Command Line Tools Downloads`_. + +To program firmware in the nRF7002 DK or EK setup, complete the following steps. + +1. Connect your computer to the nRF7002 kit with a USB cable. +#. Switch the nRF7002 kit ON. +#. Open a command prompt window. +#. If the read back protection mechanism on the DK or EK is enabled, use the following command to unlock the device and disable the read back protection mechanism before loading the firmware: + + .. code-block:: console + + $ nrfjprog --recover + + .. note:: + Firmware loading returns an error if the read back protection mechanism is enabled. + +#. To program the relevant hex (binaries) to the application core on the nRF7002 DK or EK, copy in the following commands excluding the dollar sign: + + * For Wi-Fi Radio test in combined mode: + + .. code-block:: console + + $ nrfjprog --program merged.hex -f NRF53 --coprocessor CP_APPLICATION --verify --chiperase –-reset + + * For Station (STA), Shell, and stand-alone Wi-Fi Radio test samples: + + .. code-block:: console + + $ nrfjprog --program zephyr.hex -f NRF53 --coprocessor CP_APPLICATION --verify --chiperase –-reset + +#. Program the relevant hex (binaries) to the network core on the nRF7002 DK: + + .. code-block:: console + + $ nrfjprog --program merged_CPUNET.hex -f NRF53 --coprocessor CP_NETWORK --verify --chiperase --reset + +#. To run the firmware on the nRF7002 DK or EK, reset the device. + You can press the reset button, use the reset command in nrfjprog, or power cycle the development kit. + + .. note:: + Set the baud rate to 115,200 bps. + For more information, see :ref:`ug_wifi_test_setup_vcom_settings`. + +.. _ug_wifi_test_setup_vcom_settings: + +VCOM settings +============= + +Use a baud rate setting of 115,200 bps. + +To choose the correct COM port to interact with the network core on the nRF7002 DK or EK, connect your computer to the nRF7002 board with a USB cable and enter the following command in the command prompt window: + +.. code-block:: console + + $ nrfjprog --com + +Typically, VCOM0 is connected to the nRF5340 network core running a Radio test (short-range) and VCOM1 is connected to the nRF5340 application core running a Wi-Fi Radio test. +Verify the mapping of the COM ports based on the available commands for each port, see Short-range Radio test port, Wi-Fi Radio test port, and the following example: + +.. code-block:: console + + $ nrfjprog --com + 1050771296 /dev/ttyACM0 VCOM0 // This is for Radio Test, note baud rate is 115200bps + 1050771296 /dev/ttyACM1 VCOM1 // This is for Wi-Fi Radio Test, note baud rate is 115200bps + +.. figure:: images/sr_radio_test_port.png + :alt: Short-range Radio test port + + Short-range Radio test port + +.. figure:: images/wifi_radio_test_port.png + :alt: Wi-Fi Radio test port + + Wi-Fi Radio test port diff --git a/doc/nrf/protocols/wifi/regulatory_certification/using_wifi_shell_sample.rst b/doc/nrf/protocols/wifi/regulatory_certification/using_wifi_shell_sample.rst new file mode 100644 index 000000000000..202a95991369 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/using_wifi_shell_sample.rst @@ -0,0 +1,91 @@ +.. _ug_using_wifi_shell_sample: + +Using the Wi-Fi Shell sample +############################ + +.. contents:: + :local: + :depth: 2 + +The Wi-Fi® Shell sample runs on a host MCU that drives an nRF70 Series companion device and allows the control of the Wi-Fi functionality through a shell interface. +The Shell sample allows you to test Nordic Semiconductor’s Wi-Fi chipsets. + +For more information on the samples in |NCS|, see the following: + +* Overall description: :ref:`wifi_shell_sample` sample + +Build instructions +****************** + +For information on the build instructions, see :ref:`Wi-Fi Shell sample building and running `. + +Scan, connect, and ping to a network using the Wi-Fi Shell sample +***************************************************************** + +The Shell sample allows the development kit to associate with, and ping to any Wi-Fi capable access point in Station (STA) mode. + +The following commands lets you scan, connect, and ping to a desired network or access point using the Wi-Fi Shell sample. + +1. Scan all the access points in the vicinity: + + .. code-block:: shell + + uart:~$ wifi scan + +#. Connect to the desired access point using SSID from the scan command: + + .. code-block:: shell + + uart:~$ wifi connect + +#. Query the status of the connection: + + .. code-block:: shell + + uart:~$ wifi status + +#. Once the connection is established and you want to fix the data rate: + + .. code-block:: shell + + uart:~$ wifi_util tx_rate + +#. When the connection is established, you can run network tools like ping: + + .. code-block:: shell + + uart:~$ net ping 10 192.168.1.100 + +#. To disconnect: + + .. code-block:: shell + + uart:~$ wifi disconnect + +Setting the MCS rate +==================== + +``tx_rate`` sets TX data rate to a fixed value or ``AUTO``. + +Parameters: + +.. code-block:: + + : The TX data rate type to be set, + + where: + + 0 - LEGACY + 1 - HT + 2 - VHT + 3 - HE_SU + 4 - HE_ER_SU + 5 - AUTO + +.. code-block:: + + : The TX data rate value to be set, valid values are: + + Legacy : <1, 2, 55, 11, 6, 9, 12, 18, 24, 36, 48, 54> + Non-legacy: + AUTO: diff --git a/doc/nrf/protocols/wifi/regulatory_certification/using_wifi_station_sample.rst b/doc/nrf/protocols/wifi/regulatory_certification/using_wifi_station_sample.rst new file mode 100644 index 000000000000..4debb0652742 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/using_wifi_station_sample.rst @@ -0,0 +1,37 @@ +.. _ug_using_wifi_station_sample: + +Using the Wi-Fi Station sample +############################## + +.. contents:: + :local: + :depth: 2 + +The Wi-Fi® Station (STA) sample allows you to test Nordic Semiconductor’s Wi-Fi chipsets and is used to demonstrate how to connect a Wi-Fi station to a specified access point using the Dynamic Host Configuration Protocol (DHCP). +This section describes the build and usage of the Wi-Fi STA sample. + +For more information on the samples in |NCS|, see the following: + +* Overall description: :ref:`wifi_station_sample` sample + +Build instructions +****************** + +For information on the build instructions, see :ref:`Wi-Fi Station sample building and running `. + +Wi-Fi Station sample +******************** + +The Wi-Fi Station (STA) sample is designed to be built with an SSID and a password, which are set in the :file:`prj.conf` file. +When run on an nRF70 Series board, such as the nRF7002 Development Kit (DK), it automatically connects to the Wi-Fi access point. +If the connection is successful, **LED1** on the DK blinks. +If the connection is lost, **LED1** stops blinking. +The process is repeated every time a board reset button is pressed. + +By default, the nRF7002 board obtains an IP address through DHCP protocol exchanges with the access point. +If the DHCP exchange fails and the board does not acquire an IP address, you can set a static IP address in the :file:`prj.conf` file, which then serves as the default. +If the DHCP exchange succeeds, the acquired IP address is used in place of any static IP address settings. + +.. note:: + This sample does not support UART shell. + The UART console only displays debug information from the sample. diff --git a/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/index.rst b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/index.rst new file mode 100644 index 000000000000..2683ce0267b2 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/index.rst @@ -0,0 +1,21 @@ +.. _ug_wifi_radio_test_sample: + +Using the Wi-Fi Radio test sample +################################# + +The Wi-Fi® Radio test sample is used to directly configure and control the Wi-Fi radio on an nRF70 Series device. +The Wi-Fi Radio test firmware supports the configuration of the Wi-Fi radio in specific modes and with various TX and RX parameters to test its performance. + +For more information on the samples in |NCS|, see the following: + +* Overall description: :ref:`Wi-Fi Radio test sample `. +* Description of the sub-commands for configuring the radio: :ref:`Wi-Fi Radio test subcommands `. + +.. toctree:: + :maxdepth: 2 + :caption: Subpages: + + wifi_build_instructions + setting_regulatory_domain + wifi_radio_sample_for_transmit_tests + wifi_radio_test_for_per_measurements diff --git a/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/setting_regulatory_domain.rst b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/setting_regulatory_domain.rst new file mode 100644 index 000000000000..671c161f2c57 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/setting_regulatory_domain.rst @@ -0,0 +1,36 @@ +.. _ug_wifi_setting_regulatory_domain: + +Setting regulatory domain +######################### + +.. contents:: + :local: + :depth: 2 + +In the Wi-Fi® Radio test sample, world regulatory domain regulations apply by default. +To change the regulatory domain to a specific country, use the ``reg_domain`` subcommand. + +.. note:: + Set the ``reg_domain`` subcommand for each session and on reboot of the development board, not with every command set described in this section. + +For more information, see :ref:`nRF70 Series operating with regulatory support `. + +To change the domain, use the following command: + +.. code-block:: shell + + uart:~$ wifi_radio_test reg_domain + +To remove regulatory domain restrictions, use the following command: + +.. code-block:: shell + + uart:~$ wifi_radio_test bypass_reg_domain 1 + +To re-enable regulatory domain restrictions, use the following command: + +.. code-block:: shell + + uart:~$ wifi_radio_test bypass_reg_domain 0 + +For more information, see :ref:`ug_wifi_radio_test_sample` and :ref:`Using the Radio test (short-range) sample `. diff --git a/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_build_instructions.rst b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_build_instructions.rst new file mode 100644 index 000000000000..358750d02705 --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_build_instructions.rst @@ -0,0 +1,32 @@ +.. _ug_wifi_build_instructions: + +Build instructions +################## + +.. contents:: + :local: + :depth: 2 + +This section outlines example instructions to build the Wi-Fi® radio test sample binaries for the nRF7002 :term:`Development Kit (DK)` and :term:`Evaluation Kit (EK)` kits. + +Stand-alone Wi-Fi Radio test +**************************** + +For information on building the stand-alone Wi-Fi Radio test, see :ref:`Wi-Fi Radio test sample building and running `. + +Combined build for Radio test and Wi-Fi Radio test +************************************************** + +The combined build configuration builds the binary files for the Wi-Fi Radio test that resides in the application core and the Radio test (short-range) that resides in the network core. +In the :file:`/nrf/samples/wifi/radio_test/prj.conf` file, set :kconfig:option:`CONFIG_BOARD_ENABLE_CPUNET` = ``y``. + +.. code-block:: shell + + $ west build -p -b nrf7002dk_nrf5340_cpuapp (DK build) + $ west build -p -b nrf5340dk_nrf5340_cpuapp -- -DSHIELD= nrf7002ek (EK build) + +The following HEX files are generated: + +* Combined HEX file: :file:`build/zephyr/merged_domains.hex` +* APP core HEX file: :file:`build/zephyr/merged.hex` +* NET core HEX file: :file:`build/peripheral_radio_test/zephyr/merged_CPUNET.hex` diff --git a/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_radio_sample_for_transmit_tests.rst b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_radio_sample_for_transmit_tests.rst new file mode 100644 index 000000000000..9b8e3790aceb --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_radio_sample_for_transmit_tests.rst @@ -0,0 +1,328 @@ +.. _ug_wifi_radio_sample_for_transmit_tests: + +Using the Wi-Fi Radio sample for transmit tests +############################################### + +.. contents:: + :local: + :depth: 2 + +Set the transmit parameters and modes with the correct order of commands. +The following examples show the input and sequence of commands for the different Wi-Fi® modes. + +Order of commands +***************** + +The order of the Wi-Fi Radio sub-commands is very important. + +Use the following order of sub-commands: + +1. ``init`` – Disables any ongoing TX or RX testing and sets all configured parameters to default. +#. ``tx_pkt_tput_mode`` – Sets the frame format of the transmitted packet. + + other commands... +#. ``ru_tone`` – Configures the Resource Unit (RU) size. +#. ``ru_index`` – Configures the location of RU in 20 MHz spectrum. +#. ``tx_pkt_len`` – Packet data length to be used for the TX stream. + + other commands... +#. ``tx`` – Starts transmit. + + .. note:: + Use the command to start transmit (``tx 1``) only after all the parameters are configured. + Further changes in TX parameters are not allowed during TX transmission. + +The following example of HE TB packet transmit illustrates the required order of the commands. + +The first and second sub-commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 100 + uart:~$ wifi_radio_test tx_pkt_tput_mode 5 + +When used, the following three sub-commands must be in this order: + +.. code-block:: shell + + uart:~$ wifi_radio_test ru_tone 106 + uart:~$ wifi_radio_test ru_index 2 + uart:~$ wifi_radio_test tx_pkt_len 1024 + +These sub-commands can be given in any order: + +.. code-block:: shell + + uart:~$ wifi_radio_test tx_pkt_mcs 7 + uart:~$ wifi_radio_test he_ltf 2 + uart:~$ wifi_radio_test he_gi 2 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num -1 + +The last sub-command: + +.. code-block:: shell + + uart:~$ wifi_radio_test tx 1 + +Adjusting TX power +****************** + +For any Wi-Fi mode and modulation, the regulatory domain control is enabled as a default setting where the TX power defaults to :math:`TX_\text{max}`. +This is the lower of the nRF70 Series Product Specification value and the maximum value set by the regulatory domain for the specified channel. + +To set the transmission power to a specific value, regardless of product specification or regulatory domain limits, you must first disable the regulatory domain settings. +Then, use the ``tx_power`` command to set the required transmit power. +```` is the transmit power expressed in dBm in the range 0 to 24. + +.. code-block:: shell + + uart:~$ wifi_radio_test bypass_reg_domain 1 + uart:~$ wifi_radio_test tx_power + +The TX power cannot be set below :math:`TX_\text{max}` without disabling the regulatory domain control. + +.. note:: + For regulatory certification type testing, both regulatory domain control and TX power should use default settings, meaning that the commands described above should not be issued. + +TX inter-packet gap +******************* + +The ``wifi_radio_test init`` commands reset the inter-packet gap to ``0``. +To explicitly set the inter-packet gap to ``0``, use the following command: + +.. code-block:: shell + + $ wifi_radio_test tx_pkt_gap 0 + +Running a continuous DSSS/CCK TX traffic sequence in 11b mode +============================================================= + +Set the parameters to run a continuous DSSS/CCK TX traffic sequence in 802.11b mode. + +* Channel: 1 +* Payload length: 1024 bytes +* Inter-frame gap: 8600 µs +* Data rate: 1 Mbps +* Long preamble + +This configuration gives a frame duration of 8624 µs and an achieved duty-cycle of 50.07%. + +Execute the following sequence of commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 1 + uart:~$ wifi_radio_test tx_pkt_tput_mode 0 + uart:~$ wifi_radio_test tx_pkt_preamble 0 + uart:~$ wifi_radio_test tx_pkt_rate 1 + uart:~$ wifi_radio_test tx_pkt_len 1024 + uart:~$ wifi_radio_test tx_pkt_gap 8600 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 + +Running a continuous OFDM TX traffic sequence in 11g mode +========================================================= + +Set the parameters to run a continuous OFDM TX traffic sequence in 11g mode. + +* Channel: 11 +* Payload length: 4000 bytes +* Inter-frame gap: 200 µs +* Data rate: 6 Mbps + +This configuration gives a frame duration of 5400 µs and an achieved duty-cycle of 96.4%. + +Execute the following sequence of commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 11 + uart:~$ wifi_radio_test tx_pkt_tput_mode 0 + uart:~$ wifi_radio_test tx_pkt_rate 6 + uart:~$ wifi_radio_test tx_pkt_len 4000 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 + +Running a continuous OFDM TX traffic sequence in 11a mode +========================================================= + +Set the parameters to run a continuous OFDM TX traffic sequence in 11a mode. + +* Channel: 40 +* Payload length: 4000 bytes +* Inter-frame gap: 200 µs +* Data rate: 54 Mbps + +This configuration gives a frame duration of 620 µs and an achieved duty-cycle of 75.6%. + +Execute the following sequence of commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 40 + uart:~$ wifi_radio_test tx_pkt_tput_mode 0 + uart:~$ wifi_radio_test tx_pkt_rate 54 + uart:~$ wifi_radio_test tx_pkt_len 4000 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 + +Running a continuous OFDM TX traffic sequence in HT 11n mode +============================================================ + +Set the parameters to run a continuous OFDM TX traffic sequence in HT 11n mode. + +* Channel: 11 +* Frame format: HT (11n) +* Payload length: 4000 bytes +* Inter-frame gap: 200 µs +* Data rate: MCS7 +* Long guard + +This configuration gives a frame duration of 536 µs and an achieved duty-cycle of 72.8%. + +Execute the following sequence of commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 11 + uart:~$ wifi_radio_test tx_pkt_tput_mode 1 + uart:~$ wifi_radio_test tx_pkt_preamble 2 + uart:~$ wifi_radio_test tx_pkt_mcs 7 + uart:~$ wifi_radio_test tx_pkt_len 4000 + uart:~$ wifi_radio_test tx_pkt_sgi 0 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 + +Running a continuous OFDM TX traffic sequence in VHT 11ac mode +============================================================== + +Set the parameters to run a continuous OFDM TX traffic sequence in VHT 11ac mode. + +* Channel: 40 +* Frame format: VHT (11ac) +* Payload length: 4000 bytes +* Inter-frame gap: 200 µs +* Data rate: MCS7 +* Long guard + +This configuration gives a frame duration of 540 µs and an achieved duty-cycle of 73%. + +Execute the following sequence of commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 40 + uart:~$ wifi_radio_test tx_pkt_tput_mode 2 + uart:~$ wifi_radio_test tx_pkt_mcs 7 + uart:~$ wifi_radio_test tx_pkt_len 4000 + uart:~$ wifi_radio_test tx_pkt_sgi 0 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 + +Running a continuous OFDM TX traffic sequence in HE-SU 11ax mode +================================================================ + +Set the parameters to run a continuous OFDM TX traffic sequence in HE-SU 11ax mode. + +* Channel: 116 +* Frame format: HESU (11ax) +* Payload length: 4000 bytes +* Inter-frame gap: 200 µs +* Data rate: MCS7 +* 3.2 µs GI +* 4xHELTF + +This configuration gives a frame duration of 488 µs and an achieved duty-cycle of 70.9%. + +Execute the following sequence of commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 116 + uart:~$ wifi_radio_test tx_pkt_tput_mode 3 + uart:~$ wifi_radio_test tx_pkt_mcs 7 + uart:~$ wifi_radio_test tx_pkt_len 4000 + uart:~$ wifi_radio_test he_ltf 2 + uart:~$ wifi_radio_test he_gi 2 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 + +Running a continuous OFDM TX traffic sequence in HE-ER-SU 11ax mode +=================================================================== + +Set the parameters to run a continuous OFDM TX traffic sequence in HE-ER-SU 11ax mode. + +* Channel: 100 +* Frame format: HE-ERSU (11ax) +* Payload length: 1000 bytes +* Inter-frame gap: 200 µs +* Data rate: MCS0 +* 3.2 µs GI +* 4xHELTF + +This configuration gives a frame duration of 1184 µs and an achieved duty-cycle of 85.5%. + +Execute the following sequence of commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 100 + uart:~$ wifi_radio_test tx_pkt_tput_mode 4 + uart:~$ wifi_radio_test tx_pkt_mcs 0 + uart:~$ wifi_radio_test tx_pkt_len 1000 + uart:~$ wifi_radio_test he_ltf 2 + uart:~$ wifi_radio_test he_gi 2 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 + +Running a continuous OFDM TX traffic sequence in HE-TB-PPDU 11ax mode +===================================================================== + +Set the parameters to run a continuous OFDM TX traffic sequence in HE-TB-PPDU 11ax mode. + +* Channel: 100 +* Frame format: HE-TB (11ax) +* Payload length: 1024 bytes +* Inter-frame gap: 200 µs +* Data rate: MCS7 +* 3.2 µs GI +* 106 Tone +* 4xHELTF +* RU Index 2 + +This configuration gives a frame duration of 332 µs and an achieved duty-cycle of 62.4%. + +Execute the following sequence of commands: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 100 + uart:~$ wifi_radio_test tx_pkt_tput_mode 5 + uart:~$ wifi_radio_test tx_pkt_mcs 7 + uart:~$ wifi_radio_test ru_tone 106 + uart:~$ wifi_radio_test ru_index 2 + uart:~$ wifi_radio_test tx_pkt_len 1024 + uart:~$ wifi_radio_test he_ltf 2 + uart:~$ wifi_radio_test he_gi 2 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num -1 + uart:~$ wifi_radio_test tx 1 + +At any point in time, you can use the following command to verify the configurations set. +Use the command before setting ``tx`` or ``rx`` to ``1``: + +.. code-block:: shell + + uart:~$ wifi_radio_test show_config + +To set payload parameters for a maximum duty cycle, assume a 200 µs inter-packet gap and set ``tx_pkt_len`` to the following: + +* 11b - 1Mbps: 1024 (97% duty cycle) +* OFDM - 6Mbps/MCS0: 4000 (> 95% duty cycle) diff --git a/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_radio_test_for_per_measurements.rst b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_radio_test_for_per_measurements.rst new file mode 100644 index 000000000000..7f535395134f --- /dev/null +++ b/doc/nrf/protocols/wifi/regulatory_certification/wifi_radio_test_sample/wifi_radio_test_for_per_measurements.rst @@ -0,0 +1,303 @@ +.. _ug_wifi_radio_test_for_per_measurements: + +Using the Wi-Fi Radio test for PER measurements +############################################### + +.. contents:: + :local: + :depth: 2 + +You can perform a :term:`Packet Error Rate (PER)` measurement using the Wi-Fi® Radio test sample running on two nRF7002 :term:`Development Kit (DK)` or :term:`Evaluation Kit (EK)` devices, where one is used as a transmitter and the other as a receiver. + +PER measurements in 802.11b mode +******************************** + +Set up and configure the :term:`Device Under Test (DUT)` to perform PER measurements in 802.11b mode. + +Configure the receiving DK or EK to receive packets on the required channel number. + +Use the following set of commands to configure the DUT in channel 1 and receive mode: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 1 + uart:~$ wifi_radio_test rx 1 #this will clear the earlier stats and wait for packets + +Configure the transmitting DK or EK to send 10,000 packets (TX transmit count) with the required channel, frame format, and MCS rate, for example, channel 1, 11b, and 1 Mbps. + +.. code-block:: shell + + uart:~$ wifi_radio_test init 1 + uart:~$ wifi_radio_test tx_pkt_tput_mode 0 + uart:~$ wifi_radio_test tx_pkt_preamble 1 + uart:~$ wifi_radio_test tx_pkt_rate 1 + uart:~$ wifi_radio_test tx_pkt_len 1024 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num 10000 + uart:~$ wifi_radio_test tx 1 + +Record the number of successfully received packets on the receiving DK or EK. +Repeat as necessary until the count stops incrementing. +The RX success count is displayed as ``dsss_crc32_pass_cnt``. + +.. code-block:: shell + + uart:~$ wifi_radio_test get_stats + +Terminate receiving on the transmitting DK or EK: + +.. code-block:: shell + + uart:~$ wifi_radio_test rx 0 + +Calculate PER using the following equation: + +.. math:: + + 1 - \left( \frac{\text{RX success count}}{\text{TX transmit count}} \right) + +PER measurements in 802.11g mode +******************************** + +Set up and configure the DUT to perform PER measurements in 802.11g mode. + +Configure the receiving DK or EK to receive packets on the required channel number. + +The following set of commands configures the DUT in channel 11, receive mode: + +.. code-block:: shell + + wifi_radio_test init 11 + wifi_radio_test rx 1 #this will clear the earlier stats and wait for packets + +Configure the transmitting DK or EK to send 10,000 packets (TX transmit count) with the required channel, frame format, and MCS rate, for example, channel 11, 11g, and 54 Mbps. + +Change the TX commands. +To prevent lengthy transmission times, keep the interpacket gap at minimum 200 µs. + +.. code-block:: shell + + uart:~$ wifi_radio_test init 11 + uart:~$ wifi_radio_test tx_pkt_tput_mode 0 + uart:~$ wifi_radio_test tx_pkt_rate 54 + uart:~$ wifi_radio_test tx_pkt_len 1024 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num 10000 + uart:~$ wifi_radio_test tx 1 + +Record the number of successfully received packets on the receiving DK or EK. +Repeat as necessary until the count stops incrementing. +The RX success count is displayed as ``ofdm_crc32_pass_cnt``. + +.. code-block:: shell + + uart:~$ wifi_radio_test get_stats + +Terminate receiving on the transmitting DK or EK: + +.. code-block:: shell + + uart:~$ wifi_radio_test rx 0 + +Calculate PER using the following equation: + +.. math:: + + 1 - \left( \frac{\text{RX success count}}{\text{TX transmit count}} \right) + +PER measurements in 802.11a mode +******************************** + +Set up and configure the DUT to perform PER measurements in 802.11a mode. + +Configure the receiving DK or EK to receive packets on the required channel number. +The following set of commands configures the DUT in channel 36, receive mode: + +.. code-block:: shell + + wifi_radio_test init 36 + wifi_radio_test rx 1 #this will clear the earlier stats and wait for packets + +Configure the transmitting DK or EK to send 10,000 packets (TX transmit count) with the required channel, frame format, and MCS rate, for example, channel 36, 11a, and 54 Mbps. + +Change the TX commands. +To prevent lengthy transmission times, keep the interpacket gap at minimum 200 µs. + +.. code-block:: shell + + uart:~$ wifi_radio_test init 36 + uart:~$ wifi_radio_test tx_pkt_tput_mode 0 + uart:~$ wifi_radio_test tx_pkt_rate 54 + uart:~$ wifi_radio_test tx_pkt_len 1024 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num 10000 + uart:~$ wifi_radio_test tx 1 + +Record the number of successfully received packets on the receiving DK or EK. +Repeat as necessary until the count stops incrementing. +The RX success count is displayed as ofdm_crc32_pass_cnt. + +.. code-block:: shell + + uart:~$ wifi_radio_test get_stats + +Terminate receiving on the transmitting DK or EK: + +.. code-block:: shell + + uart:~$ wifi_radio_test rx 0 + +Calculate PER using the following equation: + +.. math:: + + 1 - \left( \frac{\text{RX success count}}{\text{TX transmit count}} \right) + +PER measurements in 802.11n mode +******************************** + +Set up and configure the DUT to perform PER measurements in 802.11n mode. + +Configure the receiving DK or EK to receive packets on the required channel number. +The following set of commands configures the DUT in channel 36, receive mode: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 36 + uart:~$ wifi_radio_test rx 1 #this will clear the earlier stats and wait for packets + +Configure the transmitting DK or EK to send 10,000 packets (TX transmit count) with the required channel, frame format, and MCS rate, for example, channel 36, 11n, and MCS0. + +Change the TX commands. +To prevent lengthy transmission times, keep the interpacket gap at minimum 200 µs. + +.. code-block:: shell + + uart:~$ wifi_radio_test init 36 + uart:~$ wifi_radio_test tx_pkt_tput_mode 1 + uart:~$ wifi_radio_test tx_pkt_preamble 2 + uart:~$ wifi_radio_test tx_pkt_mcs 0 + uart:~$ wifi_radio_test tx_pkt_len 4000 + uart:~$ wifi_radio_test tx_pkt_sgi 0 + uart:~$ wifi_radio_test tx_pkt_gap 1000 + uart:~$ wifi_radio_test tx_pkt_num 10000 + uart:~$ wifi_radio_test tx 1 + +Record the number of successfully received packets on the receiving DK or EK. +Repeat as necessary until the count stops incrementing. +The RX success count is displayed as ``dsss_crc32_pass_cnt``. + +.. code-block:: shell + + uart:~$ wifi_radio_test get_stats + +Terminate receiving on the transmitting DK or EK: + +.. code-block:: shell + + uart:~$ wifi_radio_test rx 0 + +Calculate PER using the following equation: + +.. math:: + + 1 - \left( \frac{\text{RX success count}}{\text{TX transmit count}} \right) + +PER measurements in 802.11ac mode +********************************* + +Set up and configure the DUT to perform PER measurements in 802.11ac mode. + +Configure the receiving DK or EK to receive packets on the required channel number. +The following set of commands configures the DUT in channel 40, receive mode: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 40 + uart:~$ wifi_radio_test rx 1 #this will clear the earlier stats and wait for packets + +Configure the transmitting DK or EK to send 10,000 packets (TX transmit count) with the required channel, frame format, and MCS rate, for example, channel 40, 11ac, and MCS7. + +Change the TX commands. +To prevent lengthy transmission times, keep the interpacket gap at minimum 200 µs. + +.. code-block:: shell + + uart:~$ wifi_radio_test init 40 + uart:~$ wifi_radio_test tx_pkt_tput_mode 2 + uart:~$ wifi_radio_test tx_pkt_mcs 7 + uart:~$ wifi_radio_test tx_pkt_len 4000 + uart:~$ wifi_radio_test tx_pkt_sgi 0 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num 10000 + uart:~$ wifi_radio_test tx 1 + +Record the number of successfully received packets on the receiving DK or EK. +Repeat as necessary until the count stops incrementing. +The RX success count is displayed as ``dsss_crc32_pass_cnt``. + +.. code-block:: shell + + uart:~$ wifi_radio_test get_stats + +Terminate receiving on the transmitting DK or EK: + +.. code-block:: shell + + uart:~$ wifi_radio_test rx 0 + +Calculate PER using the following equation: + +.. math:: + + 1 - \left( \frac{\text{RX success count}}{\text{TX transmit count}} \right) + +PER measurements in 802.11ax mode +********************************* + +Set up and configure the DUT to perform PER measurements in 802.11ax mode. + +Configure the receiving DK or EK to receive packets on the required channel number. +The following set of commands configures the DUT in channel 100, receive mode: + +.. code-block:: shell + + uart:~$ wifi_radio_test init 100 + uart:~$ wifi_radio_test rx 1 #this will clear the earlier stats and wait for packets + +Configure the transmitting DK or EK to send 10,000 packets (TX transmit count) with the required channel, frame format, and MCS rate, for example, channel 100, 11ax, and MCS0. + +Change the TX commands. +To prevent lengthy transmission times, keep the interpacket gap at minimum 200 µs. + +.. code-block:: shell + + uart:~$ wifi_radio_test init 100 + uart:~$ wifi_radio_test tx_pkt_tput_mode 3 + uart:~$ wifi_radio_test tx_pkt_mcs 0 + uart:~$ wifi_radio_test tx_pkt_len 4000 + uart:~$ wifi_radio_test he_ltf 2 + uart:~$ wifi_radio_test he_gi 2 + uart:~$ wifi_radio_test tx_pkt_gap 200 + uart:~$ wifi_radio_test tx_pkt_num 10000 + uart:~$ wifi_radio_test tx 1 + +Record the number of successfully received packets on the receiving DK or EK. +Repeat as necessary until the count stops incrementing. +The RX success count is displayed as ``dsss_crc32_pass_cnt``. + +.. code-block:: shell + + uart:~$ wifi_radio_test get_stats + +Terminate receiving on the transmitting DK or EK: + +.. code-block:: shell + + uart:~$ wifi_radio_test rx 0 + +Calculate PER using the following equation: + +.. math:: + + 1 - \left( \frac{\text{RX success count}}{\text{TX transmit count}} \right) diff --git a/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst b/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst index 5ab4fd42b4ed..e0f41dd1a364 100644 --- a/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst +++ b/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst @@ -195,7 +195,7 @@ Zigbee Wi-Fi ----- -|no_changes_yet_note| +* The :ref:`ug_wifi_regulatory_certification` documentation is now moved under :ref:`ug_wifi` protocol page. Applications ============ diff --git a/samples/wifi/radio_test/multi_domain/sample_description.rst b/samples/wifi/radio_test/multi_domain/sample_description.rst index 90d949080246..2c85f3e1cd6e 100644 --- a/samples/wifi/radio_test/multi_domain/sample_description.rst +++ b/samples/wifi/radio_test/multi_domain/sample_description.rst @@ -44,6 +44,8 @@ See :ref:`wifi_radio_ficr_prog_subcmds` for a list of available subcommands. All the FICR registers are stored in the one-time programmable (OTP) memory. Consequently, the write commands are destructive. Once written, the contents of the OTP registers cannot be reprogrammed. +.. _wifi_radio_sample_building_and_running: + Building and running ******************** @@ -571,9 +573,9 @@ Testing * :math:`P_\text{reg}` is the applicable regulatory power limit, as described in :ref:`ug_nrf70_developing_regulatory_support`. * :math:`P_\text{rt}` is the power set via the ``tx_power`` command when using Radio Test sample, as described in :ref:`wifi_radio_subcommands`. - * ``AntGain`` is the compensation for the antenna gain in the TX direction, as described in `Antenna gain compensation`_. + * ``AntGain`` is the compensation for the antenna gain in the TX direction, as described in :ref:`ug_wifi_antenna_gain_compensation`. ``AntGain`` can be set to ``0`` using ``wifi_radio_test set_ant_gain`` command. - * ``EdgeBackoff`` is the backoff applied to band edge channels, as described in `Band edge compensation`_. + * ``EdgeBackoff`` is the backoff applied to band edge channels, as described in :ref:`ug_wifi_band_edge_compensation`. ``EdgeBackoff`` can be set to ``0`` using ``wifi_radio_test set_edge_bo`` command. .. note:: diff --git a/samples/wifi/shell/README.rst b/samples/wifi/shell/README.rst index a4553ab6b955..078e1fe56794 100644 --- a/samples/wifi/shell/README.rst +++ b/samples/wifi/shell/README.rst @@ -23,6 +23,8 @@ The sample can perform all Wi-Fi operations in the 2.4GHz and 5GHz bands dependi Using this sample, the development kit can associate with, and ping to, any Wi-Fi capable access point in :abbr:`STA (Station)` mode. +.. _wifi_shell_sample_building_and_running: + Building and running ******************** diff --git a/samples/wifi/sta/README.rst b/samples/wifi/sta/README.rst index f8028412df7c..ba89a789e667 100644 --- a/samples/wifi/sta/README.rst +++ b/samples/wifi/sta/README.rst @@ -87,6 +87,8 @@ You can change the following default static configuration in the :file:`prj.conf CONFIG_NET_CONFIG_MY_IPV4_NETMASK="255.255.255.0" CONFIG_NET_CONFIG_MY_IPV4_GW="192.168.1.1" +.. _wifi_station_sample_building_and_running: + Building and running ******************** @@ -232,7 +234,7 @@ Performance testing and memory footprint analysis The sample can be used to test the performance of the Wi-Fi connection. The performance tuning is done to achieve a trade-off between memory usage and performance. -You can use the at :file:`overlay-zperf.conf` file to run the performance test. +You can use the :file:`overlay-zperf.conf` file to run the performance test. The default build, without the overlay, is used for memory footprint testing and analysis. The overlay must be enabled to run the performance test corresponding to the memory footprints.