The Ultimate Guide to Acquiring MAC Addresses from IEEE
The Ultimate Guide to Acquiring MAC Addresses from IEEE
Following up – Part 1: Bootloader & Application (Click for article link),
We will be focusing on:
Part 2: Combining and merging built files
in this article.
IC: nRF52832
DK: PCA10040 (for nRF52832)
SDK: 16.0.0
Softdevice: s132_nrf52_7.0.1_softdevice.hex
IDE: Keil C
PC: Win 10
Part 2: Combining and merging built files
Here are the guidelines for users to implement Secure DFU OTA(over-the-air) while using nRF52832 Solution modules. (Click on link for Raytac nRF52832 module series)
IC: nRF52832
DK: PCA10040 (for nRF52832)
SDK: 16.0.0
Softdevice: s132_nrf52_7.0.1_softdevice.hex
IDE: Keil C
PC: Win 10
Below are the guidelines to implement Secure DFU OTA by using Raytac’s nRF52832 modules, SDK16.0.0.
It consists of 2 parts:
Part 1: Bootloader & Application
Part 2: Combining and merging built files (Article link)
In this article, we will be focusing on Part 1: Bootloader & Application.
Recently we have received the FAQ: how to write MAC address into the OTP memory of AN7002Q-P Wi-Fi module? In this article, we’ll get this question explained to give customers a more smooth experience using the AN7002Q-nRF5340 Demo Board(AN7002Q-DB-5340).
Is there an existing Wi-Fi MAC address in the AN7002Q part on the DevKit?
Currently, the AN7002Q module on Raytac’s AN7002Q-DB-5340 board isn’t loaded with a Wi-Fi MAC address.
When running Wi-Fi Scan code/Station code/Shell code…etc. on NCS v2.6.0 (and later versions), the AN7002Q module must have a programed Wi-Fi MAC address to function properly.
Therefore, it’s necessary to follow the below process:
1. Program the original Wi-Fi radio test code (..\nrf\samples\wifi\radio_test) into the MDBT53 section,
2. Then write the Wi-Fi MAC address in to the AN7002Q section via command.
After this, program the original Wi-Fi Scan code/Station code /Shell code … into the 5340, and it will function properly.
*Raytac will assign 2 MAC addresses(for both 2.4GHz & 5GHz) to every AN7002Q module.
*If customers don't have MAC addresses for DevKit development yet, please reach out to service@raytac.com
=========================================================
Case study 1. SCAN code example
Scenario:
Following error occurred when building the SCAN example code, flash it onto the AN7002Q-DB-5340 board, and run the test.
Solution:
When running Wi-Fi scan code on NCS v.2.6.0 or later version, the OTP memory in the AN7002Q module must have a Wi-Fi MAC address programmed in for the Wi-Fi scan functionality to work properly.
(Note: OTP is a One-Time programmable memory, which means the value can only be written once.
The customer must aware of this before performing the OTP operation.)
1. Program the original Wi-Fi radio test code (..\nrf\samples\wifi\radio_test) into the MDBT53 section,
then manually input and execute the following OTP read command.wifi_radio_ficr_prog otp_read_params
If you see both MAC0 and MAC1 display a value of 0xFF, as shown in above, it means that you haven’t written the Wi-Fi MAC address into the AN7002Q’s OTP.
2. Manually issue the OTP write command to write the Wi-Fi MAC address into the OTP.
https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/wifi/radio_test/ficr.html
wifi_radio_ficr_prog otp_write_params 0x120 0xDDCCBBAA 0xFFEE
wifi_radio_ficr_prog otp_write_params 0x128 0xDDCCBBAA 0xFFEE
After you complete the above, use the OTP read command in below to check if the Wi-Fi MAC address value was written.
The MAC0 and MAC1 should display the value you’ve input from the OTP write command.wifi_radio_ficr_prog otp_read_params
3. Program the original Wi-Fi SCAN code back into the MDBT53, the Wi-Fi scan functionality should work properly.
==================================================================
Case study 2. Shell code example
SDK Wi-Fi example test – Running Shell Code on AN7002Q-DB-5340:
Scenario:
An error occurs while running Shell code on AN7002Q-DB-5340.
Solution:
The AN7002Q-DB-5340 is paired with nRF5340 DK for development,
but neither of the 2 boards has an external MX25R64 (Serial NOR Flash) component.
So far, only the nRF7002DK board is equipped with the MX25R64.
Therefore, while running the original Wi-Fi shell code, the program will enable SPI NOR.
When using AN7002Q-DB-5340, you should add CONFIG_SPI_NOR=n in the prj.conf file to disable SPI NOR, to turn off any configurations related to it.
After recompiling and flashing, the shell code function
( e.g., Wi-Fi scan/Wi-Fi connect/net ping ..) should work properly.
Intro:
This is a guidance provided for those who are going to transit (or replicate) their project from Raytac MDBT50Q-RX (USB-A Dongle) to MDBT50Q-CX(USB-C Dongle). In addition to the hardware spec change (Compact Size , LED, Button, Pin definition change) , the key firmware configuration should be made with changes to fit new USB-C Dongle MDBT50Q-CX.
Table of Contents:
1. Comparison chart: MDBT50Q-RX(USB-A) & MDBT50Q-CX(USB-C)
2. Firmware configuration
3. Create a merged hex file (2 in 1 or 4 in 1)
4. Firmware flashing process
1. Comparison chart: MDBT50Q-RX & MDBT50Q-CX
2. Firmware configuration : MDBT50Q-RX → MDBT50Q-CX
Edit your current MDBT50Q-RX firmware with configuration change to align the PIN change to accommodate the hardware change.
Option 1. Using nRF5 SDK:
Make the definition set up of LED, BUTTON pin in the highlighted 4 sections.
Option 2. Using NCS V2.6.X:
Use the board name: nrf52840dongle_nrf52840 and add the overlay file:
nrf52840dongle_nrf52840.overlay to the program (Devicetree Overlays),
then configure the below code definition into the overlay file:
/ {
leds {
compatible = "gpio-leds";
led0_green: led_0 {
gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
label = "Green LED 0";
};
led1_red: led_1 {
gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
label = "Red LED 1";
};
};
buttons {
compatible = "gpio-keys";
button0: button_0 {
gpios = <&gpio1 6(GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
label = "Push button switch 0";
};
};
};
3. Create a merged hex file (2-in-1 or 4-in-1 hex file)
3A. Bootloader public key product
nrfutil keys generate public_key.pem → for zipping new firmware
nrfutil keys display --key pk --format code public_key.pem --out_file public_key.c
→ include public key to compile bootloader hex file
3B. Examples Demo
nRF5 SDK: nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10056\s140
NCS V2.6.X: ncs\v2.6.0\nrf\samples\bluetooth\peripheral_uart
3C. How to generate bootloader setting file (if you need bootloader):
nrfutil.exe settings generate --family NRF52840 --application nrf52840_xxaa.hex --application-version 255 --bootloader-version 2 --bl-settings-version 1 bootloader_settings.hex
3D. Merge and create a 2-in-1 or 4-in-1 hex file
a). Merge 2-in-1 (no Bootloader file required):
mergehex.exe -m s140_nrf52_7.2.0_softdevice.hex nrf52840_xxaa.hex -o merge.hex
b). Merge 4-in-1 (with Bootloader file & Bootloader settings file required):
mergehex.exe -m bootloader.hex bootloader_settings.hex s140_nrf52_7.2.0_softdevice.hex nrf52840_xxaa.hex -o merge.hex
4. Firmware flashing process
MDBT50Q-RX(USB-A):Manual wiring is required to have the firmware uploaded.
Please refer to the article: Firmware Coding & DFU onto MDBT50Q-RX
MDBT50Q-CX(USB-C):Built-in open bootloader included for simple DFU process..
Please refer to the article: User Manual of MDBT50Q-CX (nRF52840/nRF52833-based USB-C Dongle)
Edited by Sales Manager: Ms. Jocelyn Tsai
Technical guidance provided by Firmware Deputy Manager: Mr. Stanley Huang