How to set up Hardware & Software, Build & Compile Firmware, Validate DFU, and Wifi SCAN using Raytac’s Nordic nRF7002+nRF5340 WiFi+BLE Devkit-AN7002Q-DB-5340-M

Raytac has advanced the dev kit version of bundle offer – WIFI+BLE: AN7002Q-DB-
5340-M with an on-board flash memory(MX25R64) to create easy evaluation
for Wi-Fi project developments.

Table of Content———————————————————————————————————

  1. Hardware Set Up
    A. Project WITHOUT External Flash MX25R64 needed
    B. Project WITH External Flash MX25R64 needed
  2. Software Resources & Preparations
  3. Firmware Build & Compile
    A. Project WITHOUT External Flash MX25R64 needed
    B. Project WITH External Flash MX25R64 needed
  4. Validate DFU Process & WIFI SCAN

—————————————————————————————————————————-


1. Hardware Set Up

Hardware Kit on hand:

Note: Pease make sure to have both “Nordic nRF5340-DK” and “AN7002Q-DB-5340-M” connected and running during the WIFI+BLE (nRF7002+nRF5340) project development.

Hardware Network:
IDC Ribbon Wire(J-Link Cable): Connect nRF5340-DK to AN7002Q-DB-5340-M
USB Wire –Type C USB: Power supply to AN7002Q-DB-5340-M through USB TYPE-C
USB Wire-Micro USB: Power supply to nRF5340-DK through Micro USB

A. Project WITHOUT External Flash MX25R64 needed
– Allocate QSPI for communication between MDBT53 (BLE) and AN7002Q (WIFI)
– External flash MX25R64 flash memory is not activated
NO additional resistor swapping needed, keep it as it is on board now. The Resistors on board align with the Nordic board definition (same as nRF7002-DK).
– Please closely follow the definition chart printed on back side of board AN7002Q-DB-5340-M.
“Component Options Table” > “AN7002Q active with QSPI (Typ)”


– Photo showing the resistor allocation:


– Schematic of the AN7002Q-DB-5340-M(Click on the image to zoom in):


B. Project WITH External Flash MX25R64 needed
– Allocate SPI for communication between MDBT53 (BLE) and AN7002Q (WIFI)
– Allocate QSPI for XIP: External flash MX25R64 is activated
– It is REQUIRED to reallocate resistors to swap the QSPI and SPI on the AN7002Q-DB-5340-M in order to activate the circuit for MX25R64.
Do necessary resistors swapping manually (closely follow the definition chart printed on back side of board AN7002Q-DB-5340-M.)
Component Options Table” >  “External flash and AN7002Q active with SPI enable


– Photo showing the resistor allocation:
Detach the resistor -R27
Component Options Table” >  “External flash and AN7002Q active with SPI enable
<<< Necessary resistors swapping manually needed ↓ >>>


– Schematic of the AN7002Q-DB-5340-M(Click on the image to zoom in):
Modify the above resistors swapped and necessary component based on the chart:
“Component Options Table” >  “External flash and AN7002Q active with SPI enable”


!! Important Note:!!
The circuit of SW1(p1.08)/SW2(p1.09)/LED1(p1.06) on AN7002Q-DB-5340-M is NOT COMPATIBLE to Nordic WI-FI Control Pin of swctrl1(p1.08)/host_irq(p1.09)/grant(p1.06).
In this case, if you’re working with external flash MX25R64 for the WIFI project, Please avoid pin SW1/SW2/LED1 usage while LED2(p1.07) remains available as normal usage.
For the design perspective of mother board/carrier board /target board (mounted with AN7002Q & MDBT53 modules), it is required to design the circuit align to SW1(p0.23)/SW2(p0.24)/LED1(p0.28).



2. Software Resources & Preparations
Download nRF Connect For Desktop (Please Click Me)
Download nRF Command Line Tools (Please Click Me)

Step 1: Prepared with the latest version of nRF Connect for Desktop, using Windows 64-bit – 5.2.0
Step 2: Prepared with the latest version of Command Line Tools, using Windows X86 64 – 10.24.2

**Note: SEGGER J-LINK Upgrade message might pop up while you’re doing above downloads.

 If you’re initiating Segger Embedded Studio (SES) application, please check the guideline here(Click me) 

Step 3: Locate all the necessary kits for programming in PC



3. Firmware Build & Compile
After you download and set up nRFConnect SDK (NCS), you will be able to apply free VS (Visual Studio) Code IDE as firmware programming tool.
Here’re the guidelines to developing programs without/with External Flash MX25R64.

A. Project WITHOUT External Flash MX25R64 needed
You can directly build/compile on Nordic NCS without any additional configurations/modifications needed.

B. Project WITH External Flash MX25R64 needed
– Allocate SPI for communication between MDBT53 (BLE) and AN7002Q (WIFI)
– Allocate QSPI for XIP: External flash MX25R64 is activated

The below example uses NCS v3.1.1 and runs the under: C:\ncs

Step 1: Start with a Wi-Fi Scan project and run the program under: C:\ncs\v3.1.1\raytac
<<Create a new application and Copy a sample>>


Step 2: Select SDK v3.1.1 to copy the sample


Step 3: Select example by entering keyword: wifi scan(Wi-Fi Scan)


Step 4: Enter application location and name the project as: wifi_scan_uart_dfu


Step 5: Open an existing application and find the registered project: wifi_scan_uart_dfu

★★How to activate the Devicetree setting of Wi-Fi nRF7002 and Create file: nrf5340dk_nrf5340_cpuapp.overlay
Code example is as follows:
/ {
  chosen {
              aliases {
                       /delete-node/ leds;
                       /delete-node/ buttons;               
              }; 
          }; 

          leds {
                   compatible = “gpio-leds";

                   led1: led_1 {
                             gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
                             label = “Green LED 1″;
                   };

          };

          /* These aliases are provided for compatibility with samples */
          aliases {
                   led1 = &led1;
          };
};

&mx25r64 {
  status = “okay";
};

/ {
          chosen {
                   nordic,pm-ext-flash = &mx25r64;
                   zephyr,wifi = &wlan0;
          };
};

&gpio_fwd {
    /delete-node/ uart;
};

&gpio_fwd
{
  status = “disabled";
};

&qspi {
          status = “okay";
          pinctrl-0 = <&qspi_default>;
          pinctrl-1 = <&qspi_sleep>;
          pinctrl-names = “default", “sleep";
          mx25r64: mx25r6435f@0 {
                   compatible = “nordic,qspi-nor";
                   reg = <0>;
                   /* MX25R64 supports only pp and pp4io */
                   writeoc = “pp4io";
                   /* MX25R64 supports all readoc options */
                   readoc = “read4io";
                   sck-frequency = <8000000>;
                   jedec-id = [c2 28 17];
                   sfdp-bfp = [
                             e5 20 f1 ff  ff ff ff 03  44 eb 08 6b  08 3b 04 bb
                             ee ff ff ff  ff ff 00 ff  ff ff 00 ff  0c 20 0f 52
                             10 d8 00 ff  23 72 f5 00  82 ed 04 cc  44 83 68 44
                             30 b0 30 b0  f7 c4 d5 5c  00 be 29 ff  f0 d0 ff ff
                   ];
                   size = <67108864>;
                   has-dpd;
                   t-enter-dpd = <10000>;
                   t-exit-dpd = <35000>;
          };
};

&spi1 {
    status = “okay";
    compatible = “nordic,nrf-spim";
    pinctrl-0 = <&spi1_default>;
    pinctrl-1 = <&spi1_sleep>;
    pinctrl-names = “default", “sleep";
cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW >;
nrf70: nrf7002@0 {
    status = “okay";
compatible = “nordic,nrf7002-spi";
reg = <0>;
spi-max-frequency = <24000000>;
/* Wi-Fi Pins used */
iovdd-ctrl-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
bucken-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
host-irq-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
wlan0: wlan {
compatible = “nordic,wlan";
};
wifi-max-tx-pwr-2g-dsss = <21>;
wifi-max-tx-pwr-2g-mcs0 = <16>;
wifi-max-tx-pwr-2g-mcs7 = <16>;
wifi-max-tx-pwr-5g-low-mcs0 = <9>;
wifi-max-tx-pwr-5g-low-mcs7 = <9>;
wifi-max-tx-pwr-5g-mid-mcs0 = <11>;
wifi-max-tx-pwr-5g-mid-mcs7 = <11>;
wifi-max-tx-pwr-5g-high-mcs0 = <13>;
wifi-max-tx-pwr-5g-high-mcs7 = <13>;       
};

nrf_radio_coex: nrf7002-coex {
status = “okay";
compatible = “nordic,nrf700x-coex";
req-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
status0-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
grant-gpios = <&gpio1 6 (GPIO_PULL_DOWN | GPIO_ACTIVE_LOW)>;
swctrl1-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>; 
};         
};

&pinctrl {
  spi1_default: spi1_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 15)>,
<NRF_PSEL(SPIM_MOSI, 1, 13)>,
<NRF_PSEL(SPIM_MISO, 1, 14)>;
};
  };
  spi1_sleep: spi1_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 15)>,
<NRF_PSEL(SPIM_MOSI, 1, 13)>,
<NRF_PSEL(SPIM_MISO, 1, 14)>;
low-power-enable;
};
  };
};

/ {
chosen {
zephyr,console = &uart2;
zephyr,shell-uart = &uart2;                                 
};
};

&uart2 {
status = “okay";
current-speed = <115200>;
pinctrl-0 = <&uart2_default>;
pinctrl-1 = <&uart2_sleep>;
pinctrl-names = “default", “sleep";
};

&pinctrl {
uart2_default: uart2_default {
                  group1 {
                          psels = <NRF_PSEL(UART_TX, 1, 2)>,
                                     <NRF_PSEL(UART_RX, 1, 3)>;
                          bias-pull-up;
                  };
};
uart2_sleep: uart2_sleep {
                  group1 {
                          psels = <NRF_PSEL(UART_TX, 1, 2)>,
                                     <NRF_PSEL(UART_RX, 1, 3)>;
                          low-power-enable;
                  };
};
};


Step 7: It is required to do MCUBoot before working with DFU using External Flash
Please do the code configuration in sysbuild.conf as following reference code.

SB_CONFIG_BOOTLOADER_MCUBOOT=y
# DFU with UART
SB_CONFIG_MCUBOOT_MODE_SINGLE_APP=n

# DFU with external flash
SB_CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y

Step 8: It is required to do MCUMGR before working with DFU over UART
Please do the code configuration in prj.conf as following reference code.

# Enable QSPI driver for Application
CONFIG_NORDIC_QSPI_NOR=y

# Enable mcumgr DFU in application
CONFIG_MCUMGR=y    
CONFIG_NET_BUF=y
CONFIG_ZCBOR=y  
CONFIG_CRC=y    

# Enable mcumgr management for both OS and Images
CONFIG_MCUMGR_GRP_OS=y 
CONFIG_MCUMGR_GRP_IMG=y
CONFIG_FLASH=y
CONFIG_IMG_MANAGER=y
CONFIG_STREAM_FLASH=y
CONFIG_FLASH_MAP=y

# Configure MCUMGR transport to UART
CONFIG_MCUMGR_TRANSPORT_UART=y
CONFIG_BASE64=y

Step 9: Add with MCUBoot setting , and create a root for sysbuild ; Build with file mucboot.overlay & file mcuboot.conf

9A. With mucboot.overlay
&mx25r64 {
status = “okay";
};

/ {
          chosen {
                   nordic,pm-ext-flash = &mx25r64;
          };
};

&gpio_fwd {
/delete-node/ uart;
};

&gpio_fwd
{
status = “disabled";
};

9B. With file: mcuboot.conf

CONFIG_NORDIC_QSPI_NOR=y
CONFIG_BOOT_MAX_IMG_SECTORS=512

Step 10: Create a VERSION file by referencing the following code when testing DFU over UART.
VERSION_MAJOR = 99
VERSION_MINOR = 0
PATCHLEVEL = 0
VERSION_TWEAK = 0
EXTRAVERSION =

Step 11: Add build configuration.


Step 12: Add build configuration >> Choose Board target: nrf5340dk/nrf5340/cpuapp


Step 13: Generate and Build


Step 14: Generate a Merged.hex file after compiling the program


Step15: You can choose Build/Debug/Flash under ACTIONS during development
<< Build >>


<< Debug >>


<< Flash >>


Step 16: Go to ACTIONS >> Memory report


Now you can see partitions available in the system. mcu_secondary has already been located in MX25R64 flash memory.



4. Test/Validate DFU Process & WIFI SCAN
After the firmware programmed to MDBT53 module on board, we use the USB to UART adaptor board for connection AN7002Q-DB-5340-M through: A. MCUMGR UART to PC and through: B. WiFi Scan UART to PC respectively.
Note: We suggest you finish connecting A. and B. before running tests.



Now we can run the tests.

A. DFU over UART – Using AuTerm Program
1. We can locate Image version=V99.0.0 under the current VERSION file


It also indicates Image version: 99.0.0 in MCUmgr-Slot 0.


2. Try to modify the file version from V99 to V100 under VERSION file:
VERSION_MAJOR = 100

VERSION_MINOR = 0

PATCHLEVEL = 0

VERSION_TWEAK = 0

EXTRAVERSION =

And go with “Pristine Build”


3. We’re about to run DFU over UART , Please DO NOT do “Flash” or “Erase”.


Proceed with “Force reboot”


4. It’s now Version 100.0.0 in Slot 0 under MCUgr ⭢ DFU over UART successfully done!


Before it was Version 99.0.0 in Slot 1 under MCUgr.


B. WIFI SCAN – PuTTY Console
WIFI SCAN credentials can be located under PC Console – PuTTY.



Useful references:
Nordic Developer Academy
nRF Connect SDK Documentation
Wi-Fi Samples
Nordic DevZone – Technical Forum



Edited by Business Development Manager: Jocelyn Tsai
Technical Guidance by R&D Manager: MW Lee

Raytac Corporation 勁達國際電子股份有限公司 / Raytac Corporation (USA) / abietec Inc.
A Bluetooth, Wi-Fi, and LoRa Module Maker/ODM & OEM Manufacturer based on
Nordic nRF54; nRF53: nRF52; nRF51; nRF7002
Semtech Specification: SX1262

Bluetooth Specification: BT6 ; BT5.4 ; BT5.3 ; BT5.2.
Wi-Fi Specification: Wi-Fi 6
LoRa Specification: LoRaWAN

All products are FCC/IC/CE/Telec/KC/RCM/SRRC/NCC/WPC/RoHS/Reach Pre-Certified.
http://www.raytac.com
https://www.raytac.com/contact/
email: sales@raytac.com
Tel: +886-2-3234-0208(TW)/+1-626-217-3139(USA)



nRF52840 Nordic SoC USB Dongle – MDBT50Q-CX-40, Now Supports Zephyr RTOS

Zephyr RTOS hosted in Linux system has become a leading IoT ecosystem and it has been widely adopted as an open-source , real-time operation system for embedded devices, making it easier for developers to integrate the project smoothly.

Nordic Semiconductor , a main contributor to Zephyr, from the Bluetooth LE controller and USB stack to test tools, DFU frameworks.. and more, is making great effort and strategic decisions to adopt the Zephyr open-source into its nRFConnect(NCS) SDK program.

Raytac Corporation , a hardware-based manufacturer and a comprehensive solution developer with Nordic SoC development for multi-protocol complied wireless modules, now expands support for Zephyr RTOS ecosystem with its nRF52840 USB-C dongle – MDBT50Q-CX-40.

Zephyr support package for MDBT50Q-CX-40: https://docs.zephyrproject.org/latest/boards/raytac/mdbt50q_cx_40_dongle/doc/index.html


Reminder: The current Nordic released NCS SDK may NOT upgrade with Zephyr package at the same pace ; It is recommended to get the latest NCS SDK version to access the complete Zephyr support package.

If you’re interested in how Zephyr becomes powerful for a developer to start a project design easier and how the Nordic nRFConnect SDK community brings you to the world of Zephyr RTOS system, never hesitate to save the spot in the upcoming webinar on July 2nd, 2025. How Zephyr became the leading open-source RTOS for IoT (Click on the link to know more)

Resources:
– Begin your journey with Nordic nRFConnect SDK community – nRF Connect SDK Fundamentals
User Manual of MDBT50Q-CX (nRF52840/nRF52833-based USB-C Dongle)


Edited by Business Development Manager: Ms. Jocelyn Tsai


Raytac Corporation 勁達國際電子股份有限公司 / Raytac Corporation (USA)
A Bluetooth, Wi-Fi, and LoRa Module Maker/ODM & OEM Manufacturer based on
Nordic nRF54; nRF53: nRF52; nRF51; nRF7002
Semtech Specification: SX1262


Bluetooth Specification: BT6.1 ; BT6 ; BT5.4 ; BT5.3 ; BT5.2.
Wi-Fi Specification: Wi-Fi 6
LoRa Specification: LoRaWAN


All products are FCC/IC/CE/Telec/KC/RCM/SRRC/NCC/WPC Pre-Certified.
http://www.raytac.com
https://www.raytac.com/contact/
email: sales@raytac.com
Tel: +886-2-3234-0208(TW)/+1-626-217-3139(USA)

MCUboot DFU Guide For Raytac MDBT50Q-DB-40 (Using NCS V2.9.1)

This guide teaches you how to use MCUboot for DFU (Device Firmware Update),
Combined with nRF Connect SDK (NCS) V2.9.1 to upgrade firmware on Raytac’s MDBT50Q series modules.


Table of contents:

  1. Hardware Set Up
  2. Software Kits resource download & install
  3. Compile and load the program
    a. Open VS Code
    b. Project setup
    c. Setup the situation for DFU over UART or DFU over USB
    d. Start compiling your project
    e. Load your compiled program into the MDBT50Q-DB-40 demo board
  4. DFU to MDBT50Q-DB-40 over UART / USB
  5. Execute USB DFU using AuTerm
  6. DFU using your custom keys

1. Hardware setup
– Equip Raytac’s MDBT50Q-DB-40 development board
– Ensure the board is connected via USB to your PC


2.Software Kits resources download & install
– Resources download:
nRF Connect for Desktop – Download nRF Connect for Desktop (Please Click Me)
nRF Command Line Tools – Download nRF Command Line Tools (Please Click Me)
Visual Studio Code – Download Visual Studio Code(Please Click Me)

Install nRF Connect for Desktop ➔ install Programmer and Toolchain Manager.


Open Toolchain Manager and install SDK V2.9.1.


Install Visual Studio Code


3. Compile and load the program
a. Open VS Code(Visual Studio Code)


Note:
If it’s your first time using the software: after installing all the extensions, you should see the same on your screen.


b. Project setup
b.1 Create an example code(In this article: peripheral_uart)
Please refer to the following steps:
Create a new application ➔ Copy a sample ➔ NCS V2.9.1


b.2 Name the Project: peripheral_uart
Input peripheral_uart and the corresponding example program will appear in the options section below.


Note: We named the project peripheral_uart_mcuboot to distinguish it.
This project will create a directory named peripheral_uart_mcuboot.

c. Build an environment for DFU over UART or DFU over USB
– Create a new application ➔ Open

Right click on the project name you just created (peripheral_uart_mcuboot), a pop-up menu will appear. Select the first option “Show in Explorer" from the pop-up menu to display all project files.


Then select New File to create a sysbuild.conf file.


select sysbuild.conf, left-click on it, and a blank box will show.


Input the file name and write: SB_CONFIG_BOOTLOADER_MCUBOOT=y


Parameters and instructions
Add a new file mcuboot.conf, in the sysbuild folder, and input the following parameters into the file. (Add relevant parameters according to UART or USB)
(Note: Please be informed if you want to use DFU over UART in the end, you should use UART when you first create the environment. Similarly, if you want to use DFU over USB, you should create the USB environment at the beginning.)

For DFU over UART
# Enable logging for MCUboot
CONFIG_LOG=y
CONFIG_MCUBOOT_LOG_LEVEL_WRN=y
# Enable Serial Recovery over UART
CONFIG_MCUBOOT_SERIAL=y
# Disable UART, since Serial Recovery uses it
CONFIG_UART_CONSOLE=n
# Configure the bootloader to use two slots
CONFIG_SINGLE_APPLICATION_SLOT=n
# Turn on a LED so we can see when Serial Recovery mode is active
CONFIG_MCUBOOT_INDICATION_LED=y


For DFU over USB
# Enable logging for MCUboot
CONFIG_LOG=y
CONFIG_MCUBOOT_LOG_LEVEL_WRN=y
# Enable Serial Recovery over UART
CONFIG_MCUBOOT_SERIAL=y
# Disable UART, since Serial Recovery uses it
CONFIG_UART_CONSOLE=n
# Configure bootloader to use two slots
CONFIG_SINGLE_APPLICATION_SLOT=n
# Turn on a LED so we can see when Serial Recovery mode is active
CONFIG_MCUBOOT_INDICATION_LED=y
# Configure serial recovery to use CDC_ACM, which by default uses the USB
CONFIG_BOOT_SERIAL_CDC_ACM=y
# Increase flash space for the MCUboot image to fit USB drivers
CONFIG_PM_PARTITION_SIZE_MCUBOOT=0x10000


Create a new file: mcuboot.overlay and add the following parameters.


For DFU over UART
/* Configure button and LED for Serial Recovery */
/ {
    aliases {
          mcuboot-button0 = &button0;
          mcuboot-led0 = &led0;
    };
  };


For DFU over USB
/* Configure button and LED for Serial Recovery */
/ {
    aliases {
          mcuboot-button0 = &button0;
          mcuboot-led0 = &led0;
    };
  };
/* Configure CDC ACM */
&zephyr_udc0 {
            cdc_acm_uart0: cdc_acm_uart0 {
                        compatible = “zephyr,cdc-acm-uart";
            };
};


Note: if you use DFU over USB, please enable the USB subsystem in prj.conf.


After all the setup is completed, you can start compiling your project.


d. Start compiling your project
Add Build Configuration ➔ Select target board ➔ In this example, choose raytac_mdbt50q_db_40/nrf52840.


Start compiling by clicking “Generate and Build" at the bottom-right corner.


e. Load your compiled program into the MDBT50Q-DB-40 demo board
After compiling without error, select the flash function to load your program into the MDBT50Q-DB-40 demo board.


If the below is shown, it means that you have successfully loaded your program into the demo board.


4. DFU to MDBT50Q-DB-40 through UART / USB
DFU over UART
Hold the SW2 button then plug the power into the USB connector.
The system will enter the bootloader mode.
You can then DFU the new firmware via the UART.


DFU over USB
If you update your firmware through USB, please also hold the SW2 button and connect the USB cable.


5. Execute USB DFU using AuTerm
AuTerm is a free-for-download PC software on Windows.
It allows you to update your new firmware on the MDBT50Q-DB-40 demo board.
Download link:
https://github.com/thedjnK/AuTerm/releases/download/v0.35a-pre/AuTerm_test_Win_x64_v0.35a.7z

Steps:
Select the tab Config to set the correct COM port.


Follow the sequences in the below screenshot.


You can use the file peripheral_uart_mcuboot.signed.bin for testing.
It is located in peripheral_uart_mcuboot/build.
Then follow the sequences in the below screenshot.
DFU will be completed when the progress reaches 100%.


6. DFU using your custom keys
When you compile the code, you will see the below warning.
Reason: It’s required to have your own private key to ensure your product’s security.
Following are the steps to enable security features.


Step 1. Create the key
First, install the imgtool program using pip.


Then use the following command to generate your private key in your project folder.
After the private key is generated, you can access it in your directory.


Step 2. Configure the project to use this key in sysbuild.conf

# Add MCUboot
SB_CONFIG_BOOTLOADER_MCUBOOT=y
#Add private key for MCUboot
SB_CONFIG_BOOT_SIGNATURE_KEY_FILE="\${APP_DIR}/private_key.pem"
# Configure key type
SB_CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256=y


Step 3. Build and flash the project again. Your firmware will have security features.


Edited by Account Manager: Mr. Welson Kuo


Raytac Corporation 勁達國際電子股份有限公司 / Raytac Corporation (USA)
A Bluetooth, Wi-Fi, and LoRa Module Maker/ODM & OEM Manufacturer based on
Nordic nRF54; nRF53: nRF52; nRF51; nRF7002
Semtech Specification: SX1262


Bluetooth Specification: BT6.1 ; BT6 ; BT5.4 ; BT5.3 ; BT5.2.
Wi-Fi Specification: Wi-Fi 6
LoRa Specification: LoRaWAN


All products are FCC/IC/CE/Telec/KC/RCM/SRRC/NCC/WPC Pre-Certified.
http://www.raytac.com
https://www.raytac.com/contact/
email: sales@raytac.com
Tel: +886-2-3234-0208(TW)/+1-626-217-3139(USA)


Secure DFU OTA for nRF52832 solution modules: Creating hex/zip file for implementation – Part 2(Combining/merging built files)

Following up – Part 1: Bootloader & Application (Click for article link),

We will be focusing on:

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




Step 1. Execute the combine batch file in bootloader (nrf52832_bootloader_setting_merge.bat) and generate file of nrf52832_bootloader_secure_combin_settings.hex :

@echo off
title = [ J-Link Tool ] %CD%
set nrfDir=C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin
set BS= nrf52832_bootloader_secure_settings.hex
set BL= nrf52832_xxaa_s132.hex
set BSBLCombind= nrf52832_bootloader_secure_combin_settings.hex
set path=%nrfDir%;%path%
pause
echo ———–merge image file——————-
mergehex.exe -m %BS% %BL% -o %BSBLCombind%
pause



Step 2. Create a Final.hex file by 3-in-1 batch file(nrf52832_3in1_merge.bat)
※Note : This hex file is created for the production line to pre-load firmware into modules prior to shipment.

@echo off
title = [ J-Link Tool ] %CD%
set nrfDir=C:UsersuserDesktopNordic BLEnRF5_merge toolsnRF52 bin
set SD= s140_nrf52_7.2.0_softdevice.hex
set BLT= nrf52832_bootloader_secure_combin_settings.hex
set APP= nrf52832_xxaa.hex
set SD_BLT=SD_BLT.hex
set Finalfile=Final.hex
set path=%nrfDir%;%path%
pause
echo ———–merge image file——————-
mergehex.exe -m %SD% %BLT% -o %SD_BLT%
pause
mergehex.exe -m %SD_BLT% %APP% -o %Finalfile%
pause



Step 3. Create a DFU(OTA).zip file of nrf52832_xxaa.zip
※Note : This zip file is created for end device DFU(OTA) implementation.

nrfutil pkg generate –hw-version 52 –sd-req 0xCB –application-version 0xFF –application
nrf52832_xxaa.hex –key-file private.pem nrf52832_xxaa.zip

The DFU OTA zip file will be derived.

※Note :
The “0xCB" appeared in the above DOS code(in red font) is the FWID(Firmware ID) for s140_nrf52_7.2.0_softdevice.hex;
FWID can be found from the soft device documents on the Nordic website.




Step 4: Run DFU OTA (On mobile in this example)


4A. Install the nRF Connect APP on mobile, with DFU OTA file: nrf52832_xxaa.zip. (Download link)


4B. Send nrf52832_xxaa.zip via email to mobile device after combination is done on PC, then download it.


4C. Open nRF Connect APP and run connection;


4D. Execute DFU and select “Distribution packet(ZIP)", thus starting the DFU OTA process.


4E. Start DFU OTA → exit the APP after DFU OTA is completed → restart the mobile device.



Secure DFU OTA for nRF52832 solution modules: Guide to create hex/zip file for implementation
Detailed links of articles:
Part 1: Bootloader & Application (Click for article link)
Part 2: Combining & merging built files



Technical guidelines provided by R&D Manager: Mr. MW Lee
Edited by Sales Manager: Ms. Mandy Chao


Raytac Corporation 勁達國際電子股份有限公司 
Raytac Corporation: A Bluetooth, Wi-Fi, and LoRa Module Maker based on
Nordic nRF54; nRF53: nRF52; nRF51; nRF7002
Semtech Specification: SX1262

Bluetooth Specification: BT5.4 ; BT5.3; BT5.2.
Wi-Fi Specification: Wi-Fi 6
LoRa Specification: LoRaWAN

All products are FCC/IC/CE/Telec/KC/RCM/SRRC/NCC Pre-Certified.
http://www.raytac.com
email: sales@raytac.com
Tel: +886-2-3234-0208

Secure DFU OTA for nRF52832 solution modules: Guide to create hex/zip file for implementation – Part 1(Bootloader & Application)

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.



Path: ..\nRF5_SDK_16.0.0_98a08e2\examples\dfu\secure_bootloader\pca10040_s132_ble\arm5_no_packs
Specifically for nRF52832, programmers need to embed ECC(Elliptic Curve Cryptography) into the bootloader.


Step 1. ’micro_ecc_lib_nrf52.lib’ library can be found in the path below, but we need to boot it up first.


Step 2. Unzip ’micro-ecc-master.zip’ to the below path(create a new “micro-ecc” file first).


Step 3. Run ’gcc-arm-none-eabi-7-2018-q2-update-win32.exe’.


Step 4. Make sure the Environment variables in Win10 are set as below. (Follow the steps 1 to 6)


Step 5. Open DOS → run the “make” command under armgcc path → generate’micro_ecc_lib_nrf52.lib’


Step 6. Add ’micro_ecc_lib_nrf52.lib’ into folder: nRF_micro-ecc


Step 7. An error may occur while building bootloader without a public key:
(Shown in red frames in below screenshot)


Step 8. How to generate the public key file in Bootloader?
A. Visit DOS at path: ..\Python27\Scripts
B. Then execute:

nrfutil keys generate private.pem
nrfutil keys display --key pk --format code private.pem --out_file public_key.c


Step 9. Copy the pk[64] code from (public_key.c) into (dfu_public_key.c)
(Shown in red frames in below screenshot)

※Note: Make sure to save the 3 generated files:
private.pem
public_key.c
dfu_public_key.c


Step 10. Generate the bootloader file: nrf52832_xxaa_s132.hex after re-compiling the code files.


Application


Path:
..\nRF5_SDK_16.0.0_98a08e2\examples\ble_peripheral\ble_app_uart\pca10040\s132\arm5_no_packs
Before building Application code , some amendments need to be made regarding DFU-related settings and code inside Application:


Step 1. Add code in definition in C/C++ :
BL_SETTINGS_ACCESS_ONLY NRF_DFU_SVCI_ENABLED NRF_DFU_TRANSPORT_BLE=1
(Total 3 steps definitions need to be set up)


Step 2. Add the 3 paths shown below in C/C++ to make DFU work.


Step 3. Add the .c files inside red frame in (Screenshots 1 & 2)
and add the 2 groups of (nRF_DFU & nRF_SVC)(Screenshot 4) under Project(Screenshot 3)


Step 4. Add code into main.c file in Application (..\examples\ble_peripheral\ble_app_uart\main.c)
(Please refer to: main.c file at: ..\examples\ble_peripheral\ ble_app_buttonless_dfu)


Step 5.
The code of file: sdk_config.h (..\examples\ble_peripheral\ble_app_uart\pca10040\s132\config\sdk_config.h)

inside Application needs to be modified.


Step 6. Adjust the IRAM1 value in Target after implementing DFU service:
Make sure the IRAM1 Value of *p_app_ram_start is modified from default: 0x20002AD8 0xD528 to
0x20002AE8 0xD518, as shown in the red frame in the bottom right corner.
In this case, the program should run/advertise successfully.


Step 7. Create a file of: nrf52832_xxaa.hex after building application code files.



Step 8. Create a bootloader setting file of nrf52832_bootloader_secure_settings.hex via DOS.
nrfutil settings generate –family NRF52 –application nrf52832_xxaa.hex –application-version 3 —
bootloader-version 2 –bl-settings-version 1 nrf52832_bootloader_secure_settings.hex –no-backup

※Stay tuned for Part 2: Combining and merging built files in the next article, scheduled release in next week(04-Sep-2024).


Technical guidelines provided by R&D Manager: Mr. MW Lee
Edited by Sales Manager: Ms. Mandy Chao



Raytac Corporation 勁達國際電子股份有限公司 
Raytac Corporation: A Bluetooth, Wi-Fi, and LoRa Module Maker based on
Nordic nRF54; nRF53: nRF52; nRF51; nRF7002
Semtech Specification: SX1262

Bluetooth Specification: BT5.4 ; BT5.3; BT5.2.
Wi-Fi Specification: Wi-Fi 6
LoRa Specification: LoRaWAN

All products are FCC/IC/CE/Telec/KC/RCM/SRRC/NCC Pre-Certified.
http://www.raytac.com
email: sales@raytac.com
Tel: +886-2-3234-0208

Transition tips for program from MDBT50Q-RX (USB-A) to MDBT50Q-CX (USB-C)  with current NRF52840 project

Intro:

This is a guidance provided for those who is 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.


RX-1                    CX-1

    MDBT50Q-RX                           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

Comparison chart


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.

Firmware configuration-nRF5


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″;
                                   };
};
};

Firmware configuration-NCS


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

3A-1

3A-2


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

3D-a


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

3D-b


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

Raytac Corporation 勁達國際電子股份有限公司
Bluetooth & WiFi & LoRa module maker based on Nordic nRF54, nRF53, nRF52, nRF7002 solution
BT5.4 &BT5.3 & BT5.2 & BT5.1 Qualified, FCC/IC/CE/Telec/KC/RCM/SRRC/NCC/WPC Pre-Certified.
Bluetooth Solution: nRF54, nRF5340, nRF52840, nRF52833, nRF52832, nRF52820, nRF52811, nRF52810, nRF52805, nRF51822
WiFi Solution: nRF7002
http://www.raytac.com
email: sales@raytac.com
Tel: +886-2-3234-0208

User Manual of MDBT50Q-CX (nRF52840/nRF52833-based USB-C Dongle)

MDBT50Q-CX is an advanced version of Raytac’s MDBT50Q-RX(USB-A Dongle).

MDBT50Q-CX has a more compact size, equips an up-to-date Type C USB Connector, and it has a built-in open bootloader for simple DFU process.

If you’ve been developing projects using MDBT50Q-RX in the past, you can find out in this manual how MDBT50Q-CX makes firmware compiling and loading much easier than before.

If you want to load firmware into MDBT50Q-CX, no wiring is needed. 

Simply plug the dongle into your device and USB DFU will be available.

MDBT50Q-CX (USB-C Dongle, nRF52840/nRF52833 solution): Product link

Size: 15.10 x32.85mm (0.59×1.29inches)


Table of Contents

A. Hardware intro

B. Software development environment setup

C. Firmware Implementation with NCS (nRF Connect SDK) or NRF5 SDK

D. Execute DFU (Device Firmware Update)


A. Hardware Intro

 <Pin Allocation>

2

< Schematic> (Click on the image to redirect to product page for Higher resolution photo)

Schematic Spec_MDBT50Q-CX_-240806


B.  Software development environment setup

Option 1. Compile in NCS(nRF Connect SDK)

(1) Install nRF Connect for Desktop:

B1

(2) Install Toolchain Manager and Programmer

B2

(3) Install nRF Connect SDK (NCS) → V2.6.0 is recommended.

B3

Option2. Compile in nRF5 SDK

(1) Download open source nRF5 SDK (Recommend: download the latest version:  17.1.0)

B4

(2) Install Segger Embedded Studio v5.42a (Recommended version)

https://www.segger.com/downloads/embedded-studio/

B5

※Welcome to contact Raytac sales team for v5.42a file of Segger Embedded Studio.


C. Implement firmware in NCS (nRF Connect SDK) or NRF5 SDK

We will use the two example codes below for this demo:

C1. NCS (nRF Connect SDK):

Example code path: \v2.6.0\nrf\samples\bluetooth\peripheral_uart

C2. nRF5 SDK:

Example code path: \nRF5_SDK_17.1.0_ddde560\examples\peripheral\usbd_ble_uart


C1. NCS (nRF Connect SDK): (Using nRF Connect SDK V2.6.0)

Step C1-1. Add build configuration to Board name: nrf52840dongle_nrf52840

C1

Step C1-2. Disable DCDC & DCDCHV by adding the below code into  prj.conf  file

CONFIG_BOARD_ENABLE_DCDC=n

CONFIG_BOARD_ENABLE_DCDC_HV=n

C2

Step C1-3. Fix the VDD power to 3.0V or 3.3V in board.c  file

The default power is 3.0V if you use board name: nrf52840dongle_nrf52840.

In this case, you don’t need to alter the power.

C3

Step C1-4. Click the rebuild icon to reconfigure the program.

C4

Step C1-5. The program will be saved automatically in the path below:

C:\ncs\v2.6.0\nrf\samples\bluetooth\peripheral_uart\build\zephyr\zephyr.hex


C2. nRF5 SDK:

Step C2-1. Open the program under:

\nRF5_SDK_17.1.0_ddde560\examples\peripheral\usbd_ble_uart\pca10056\s140\ses\ usbd_ble_uart_pca10056_s140.emProject

Step C2-2.  Fix the VDD power supply to 3.0V or 3.3V.

C2-1

Step C2-3. Start editing the project by opening the solution in Editor.

C2-2

Change the board name from PCA10056(nRF52840-DK) to PCA10059(nRF52840 dongle).

Save and re-compile the program after the amendment.

C2-3

Click the program file name and save the modified project.

C2-4

Press “Yes” to re-load the new set up value into configuration.

C2-5

The default code in sdk_config.h is: NRF_LOG_BACKEND_UART_ENABLED 1 (in red frame);

Please change 1 to 0 to make the LED light work.

Stanley修改內容_20240806

Press “Rebuild Solution” to make sure all the parameters you’ve modified are reconfigured.

C2-6

Step C2-4. The program will be saved automatically under the path below:

V:\nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10056\s140\ses\Output\Release\Exe\ble_app_uart_pca10056_s140.hex


D. Execute DFU (Device Firmware Update)

Reminder: 

No extra bootloader can be programmed into MDBT50Q-CX until you manually wire the pins on the PCB and erase the built-in bootloader.  You can simply operate DFU using MDBT50Q-CX’s bootloader.

Step D1. How to enable DFU?

(1) Press the button on MDBT50Q-CX

(2) Plug MDBT50Q-CX into your device while pressing the button

(3) Press and wait for approx.1 second until the LED light turns on. → DFU is activated.

(4) Release the button

※When Bootloader mode is enabled, the LED light on MDBT50Q-CX will twinkle continuously. 

D1

Step D2. Open the built-in DFU Bootloader

nRF Connect Desktop →  Programmer  → SELECT DEVICE  → Open DFU Bootloader

D2

You have successfully entered bootloader mode after you see the screen as below.

D3

Step D3. Add ready firmware file into the Programmer

(The program completed and saved during Step C1-5(NCS) or Step C2-4(nRF5 SDK))

※If you’re using nRF5 SDK, you need to add the soft device file into your program for loading firmware.

※Soft device path:

nRF5_SDK_17.1.0_ddde560\components\softdevice\s140\hex\s140_nrf52_7.2.0_softdevice.hex

D4

Step D4. Load the firmware and write it into the MDBT50Q-CX

D5

Step D5. Process FW DFU

D6

Step D6.  DFU Completed. The appointed firmware is successfully loaded into MDBT50Q-CX.

D7

※Any failure during the DFU process will leave you under bootloader mode.

Last-failure

If this happens, simply restart the firmware writing process from Step D4 to reload your firmware into MDBT50Q-CX.

 




Edited by Sales Manager: Ms. Jocelyn Tsai
Technical guidance provided by Firmware Deputy Manager: Mr. Stanley Huang

Raytac Corporation 勁達國際電子股份有限公司
Bluetooth & WiFi & LoRa module maker based on Nordic nRF54, nRF53, nRF52, nRF7002 solution
BT5.4 &BT5.3 & BT5.2 & BT5.1 Qualified, FCC/IC/CE/Telec/KC/RCM/SRRC/NCC/WPC Pre-Certified.
Bluetooth Solution: nRF54, nRF5340, nRF52840, nRF52833, nRF52832, nRF52820, nRF52811, nRF52810, nRF52805, nRF51822
WiFi Solution: nRF7002
http://www.raytac.com
email: sales@raytac.com
Tel: +886-2-3234-0208

 

Secure DFU OTA for nRF52840 solution modules: Guide to create hex/zip file for implementation – #3(Combining/merging built files)

Following up – Part A: Bootloader (Click for article link) and Part B: Application (Click for article link)

We will be focusing on:

in this article.

IC: nRF52840
DK: PCA10056 (for nRF52840)
SDK: 17.1.0
Softdevice: s140_nrf52_7.2.0_softdevice.hex
IDE: Keil C
PC: Win 10



Step 1. Execute the combine batch file in bootloader (nrf52840_bootloader_setting_merge.bat) and generate file of nrf52840_bootloader_secure_combin_settings.hex :

@echo off
title = [ J-Link Tool ] %CD%
set nrfDir=C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin
set BS= nrf52840_bootloader_secure_settings.hex
set BL= nrf52840_xxaa_s140.hex
set BSBLCombind= nrf52840_bootloader_secure_combin_settings.hex
set path=%nrfDir%;%path%
pause
echo ———–merge image file——————-
mergehex.exe -m %BS% %BL% -o %BSBLCombind%
pause


Step 2. Create a Final.hex file by 3-in-1 batch file(nrf52840_3in1_merge.bat)
※Note : This hex file is created for the production line to pre-load firmware into modules prior to shipment.

@echo off
title = [ J-Link Tool ] %CD%
set nrfDir=C:\Users\user\Desktop\Nordic BLE\nRF5_merge tools\nRF52 bin
set SD= s140_nrf52_7.2.0_softdevice.hex
set BLT= nrf52840_bootloader_secure_combin_settings.hex
set APP= nrf52840_xxaa.hex
set SD_BLT=SD_BLT.hex
set Finalfile=Final.hex
set path=%nrfDir%;%path%
pause
echo ———–merge image file——————-
mergehex.exe -m %SD% %BLT% -o %SD_BLT%
pause
mergehex.exe -m %SD_BLT% %APP% -o %Finalfile%
pause


Step 3. Create a DFU(OTA).zip file of nrf52840_xxaa.zip
※Note : This zip file is created for end device DFU(OTA) implementation.

nrfutil pkg generate –hw-version 52 –sd-req 0x100 –application-version 0xFF –application
nrf52840_xxaa.hex –key-file private.pem nrf52840_xxaa.zip

The DFU OTA zip file will be derived.

※Note :
The “0x100" appeared in the above DOS code(in red font) is the FWID(Firmware ID) for s140_nrf52_7.2.0_softdevice.hex;
FWID can be found from the soft device documents on the Nordic website.



Step 4: Run DFU OTA (On mobile in this example)


4A. Install the nRF Connect APP on mobile, with DFU OTA file: nrf52840_xxaa.zip. (Download link)


4B. Send nrf52840_xxaa.zip via email to mobile device after combination is done on PC, then download it.


4C. Open nRF Connect APP and run connection;


4D. Execute DFU and select “Distribution packet(ZIP)", thus starting the DFU OTA process.


4E. Start DFU OTA → exit the APP after DFU OTA is completed → restart the mobile device.



Secure DFU OTA for nRF52840 solution modules: Guide to create hex/zip file for implementation
Detailed links of articles:
Part A: Bootloader (Click for article link)
Part B: Application
(Click for article link)
Part C: Combining and merging built files
(Click for article link)



Technical guidelines provided by R&D Manager: Mr. MW Lee
Edited by Sales Manager: Mr. Tony Yin

Raytac Corporation 勁達國際電子股份有限公司 
Bluetooth & WiFi module maker based on Nordic nRF54, nRF53, nRF52, nRF7002 solution
BT5.4 &BT5.3 & BT5.2 & BT5.1 Qualified, FCC/IC/CE/Telec/KC/RCM/SRRC/NCC Pre-Certified.
Bluetooth Solution: nRF54, nRF5340, nRF52840, nRF52833, nRF52832, nRF52820, nRF52811, nRF52810, nRF52805, nRF51822
WiFi Solution: nRF7002
http://www.raytac.com
email: service@raytac.com
Tel: +886-2-3234-0208

Secure DFU OTA for nRF52840 solution modules: Guide to create hex/zip file for implementation – #2(Application)

Following up-Part A: Bootloader (Click for article link)

We will be focusing on:

in this article.

IC: nRF52840
DK: PCA10056 (for nRF52840)
SDK: 17.1.0
Softdevice: s140_nrf52_7.2.0_softdevice.hex
IDE: Keil C
PC: Win 10


Path: nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10056\s140\arm5_no_packs

Before building Application code , some amendments need to be made regarding DFU-related settings and code inside Application:

Step 1.


1A. Add code in definition in C/C++ :
BL_SETTINGS_ACCESS_ONLY NRF_DFU_SVCI_ENABLED NRF_DFU_TRANSPORT_BLE=1
(Total 3 steps definitions need to be set up)


1B. Add “include path” in C/C++


1C. Add the .c files inside red frame in (Screenshots 1 & 2)
and the 2 groups of (nRF_DFU & nRF_SVC)(Screenshot 3) under Project(Screenshot 4)



1D. Add code into main.c file in Application (..\examples\ble_peripheral\ble_app_uart\main.c)
(Please refer to: main.c file at: ..\examples\ble_peripheral\ ble_app_buttonless_dfu)


1E. The code of file: sdk_config.h (..\examples\ble_peripheral\ble_app_uart\pca10056\s140\config\
sdk_config.h) inside Application needs to be modified.


1F. Adjust the IRAM1 value in Target after implementing DFU service:
Check on the IRAM1 Value of *p_app_ram_start to be modified from default: 0x20002AE8 0x3D518 to 0x20002AF8 0x3D508, as shown in the red frame in the bottom right corner.
In this case, the program should run successfully.


1G: Create a file of: nrf52840_xxaa.hex after building application code files.


Step 2. Create a bootloader setting file of nrf52840_bootloader_secure_settings.hex : (via DOS)

nrfutil settings generate –family NRF52840 –application nrf52840_xxaa.hex –application-version 3 — bootloader-version 2 –bl-settings-version 1 nrf52840_bootloader_secure_settings.hex –no-backup


※Stay tuned for #3 – Part C: Combining and merging built files in the next article,

scheduled release in next week(05/06/2024).


Technical guidelines provided by R&D Manager: Mr. MW Lee
Edited by Sales Manager: Mr. Tony Yin

Raytac Corporation 勁達國際電子股份有限公司 
Bluetooth & WiFi module maker based on Nordic nRF54, nRF53, nRF52, nRF7002 solution
BT5.4 &BT5.3 & BT5.2 & BT5.1 Qualified, FCC/IC/CE/Telec/KC/RCM/SRRC/NCC Pre-Certified.
Bluetooth Solution: nRF54, nRF5340, nRF52840, nRF52833, nRF52832, nRF52820, nRF52811, nRF52810, nRF52805, nRF51822
WiFi Solution: nRF7002
http://www.raytac.com
email: service@raytac.com
Tel: +886-2-3234-0208

Secure DFU OTA for nRF52840 solution modules: Guide to create hex/zip file for implementation – #1(Bootloader)

Below are the following steps to implement Secure DFU OTA by using nRF52840 chip set, SDK17.1.0.
It consists of 3 parts:

Part A: Bootloader

Part B: Application (Click for article link)

Part C: Combining and merging built files (Click for article link)

In this article, we will be focusing on Part A: Bootloader.

Path: nRF5_SDK_17.1.0_ddde560\examples\dfu\secure_bootloader\pca10056_s140_ble\arm5_no_packs


Step 1. An error may occur while building bootloader without a public key:
(Shown in red frames in below screenshot)


Step 2. How to generate the public key file in Bootloader?
A. Visit DOS at path: ..\Python27\Scripts
B. Then execute:

nrfutil keys generate private.pem
nrfutil keys display --key pk --format code private.pem --out_file public_key.c


Step 3. Copy the pk[64] code from (public_key.c) into (dfu_public_key.c)
(Shown in red frames in below screenshot)

※Note: Make sure to save the 3 generated files:
private.pem
public_key.c
dfu_public_key.c


Step 4. Generate the bootloader file: nrf52840_xxaa_s140.hex after re-compiling the code files.


※Stay tuned for #2 – Part B: Application in the next article, scheduled release in next week(29/05/2024).



Technical guidelines provided by R&D Manager: Mr. MW Lee
Edited by Sales Manager: Mr. Tony Yin


Raytac Corporation 勁達國際電子股份有限公司 
Bluetooth & WiFi module maker based on Nordic nRF54, nRF53, nRF52, nRF7002 solution
BT5.4 &BT5.3 & BT5.2 & BT5.1 Qualified, FCC/IC/CE/Telec/KC/RCM/SRRC/NCC Pre-Certified.
Bluetooth Solution: nRF54, nRF5340, nRF52840, nRF52833, nRF52832, nRF52820, nRF52811, nRF52810, nRF52805, nRF51822
WiFi Solution: nRF7002
http://www.raytac.com
email: service@raytac.com
Tel: +886-2-3234-0208