This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Mesh DFU Relay Problem

Hi ,

     I have tested two boarrds(PCA10040) with  same application id and higher application version,These work  well done.Then I want to test mesh DFU Relay function,However ,the target board does not upgrade.

    Prepare: Name two boards, Board A which is connected to pc,acts as source ,Board B which is the targect to upgrade using mesh  .

   The follow is what i do:

   (1) To generate Device Page with config  "application_id": 1,"application_version": 1, .Using it to program Board   as mesh dfu guide .

   (2)To generate Device Page with config  "application_id": 2,"application_version": 1, .Using it to program Board  B  as mesh dfu guide .

 (3)To generate DFU file with command  :nrfutil dfu genpkg --application ... using config  "application_id": 2,"application_version": 2, 

   (4)Then ,Baord A connect PC with USB serial. Board B is just supplied power .Using command: nrfutil --verbose dfu serial -pkg ... to start mesh dfu.

   The result is:

     At the first few seconds ,both boards  go to dfu with LED 0and LED2 be lighted, A few mnutes later ,Baords B ends dfu with LED 0and Led1 be lighted . and Board A is still going with dos  windows shows rate of progress.About an hour later ,the dfu transport for Baord A is done,Even I still wait for another nearly one hour, However Board B is still not be upgarded.

  I check the Board B's final ending RTT log:

......

0> <t: 16666007>, nrf_mesh_dfu.c, 324, Write complete (0x2000FE90)
0> <t: 16666010>, nrf_mesh_dfu.c, 333, Flash idle.
0> <t: 16688463>, nrf_mesh_dfu.c, 528, RADIO TX! SLOT 6, count 3, interval: exponential, handle: FFFC
0> <t: 16688479>, nrf_mesh_dfu.c, 324, Write complete (0x2000FE90)
0> <t: 16688483>, nrf_mesh_dfu.c, 333, Flash idle.
0> <t: 16700264>, nrf_mesh_dfu.c, 383, Abort event. Reason: 0x3
0> <t: 16700267>, main.c, 175, Mesh DFU End !

    The Abort Reason:0x3 is found out in file dfu_types_mesh.h  DFU_END_ERROR_PACKET_LOSS  .  So the relay dfu fail  may be packet loss over RF radio.How  to repair this ? who can give me some advice ? Thanks you.

Best Regards,

Panda.

  • Hi Hung,

      PS E:\Project\Mesh_v3.2.0\nrf5_SDK_for_Mesh_v3.2.0_src\build> cmake -G Ninja -DTOOLCHAIN=gccarmemb -DPLATFORM=nrf52832_xxAA -DBOARD=pca10040 -DSOFTDEVICE=s132_6.1.1 ..
    -- Configuring CMake for nRF5 SDK for Bluetooth Mesh 3.2.0
    CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
    -- Configuring incomplete, errors occurred!
    See also "E:/Project/Mesh_v3.2.0/nrf5_SDK_for_Mesh_v3.2.0_src/build/CMakeFiles/CMakeOutput.log".

     CMake Error happens,how to solve it ? thanks .

  • Hi Hung,

        I have read the link content you gave above. When I go on This link STEP 1. It happens some warning as below document :

          

    E:\Project\Mesh_v3.2.0\nrf5_SDK_for_Mesh_v3.2.0_src\mesh\bootloader\build>cmake -G Ninja ..
    -- The C compiler identification is GNU 6.3.0
    -- The CXX compiler identification is GNU 6.3.0
    -- Check for working C compiler: C:/MinGW/bin/gcc.exe
    -- Check for working C compiler: C:/MinGW/bin/gcc.exe - works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: C:/MinGW/bin/c++.exe
    -- Check for working CXX compiler: C:/MinGW/bin/c++.exe - works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Configuring done
    -- Generating done
    -- Build files have been written to: E:/Project/Mesh_v3.2.0/nrf5_SDK_for_Mesh_v3.2.0_src/mesh/bootloader/build
    
    E:\Project\Mesh_v3.2.0\nrf5_SDK_for_Mesh_v3.2.0_src\mesh\bootloader\build>cmake -G Ninja -DTOOLCHAIN=gccarmemb -DPLATFORM=nrf52832_xxAA ..
    -- The C compiler identification is GNU 6.3.0
    -- The CXX compiler identification is GNU 6.3.0
    -- Check for working C compiler: C:/MinGW/bin/gcc.exe
    -- Check for working C compiler: C:/MinGW/bin/gcc.exe - works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: C:/MinGW/bin/c++.exe
    -- Check for working CXX compiler: C:/MinGW/bin/c++.exe - works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Configuring done
    -- Generating done
    CMake Warning:
      Manually-specified variables were not used by the project:
    
        PLATFORM
        TOOLCHAIN
    
    
    -- Build files have been written to: E:/Project/Mesh_v3.2.0/nrf5_SDK_for_Mesh_v3.2.0_src/mesh/bootloader/build
    
    
    E:\Project\Mesh_v3.2.0\nrf5_SDK_for_Mesh_v3.2.0_src\mesh\bootloader\build>cmake -G Ninja -DTOOLCHAIN=gccarmemb -DPLATFORM=nrf52832_xxAA -DBOARD=pca10040 -DSOFTDEVICE=s132_6.1.1 ..
    -- Configuring done
    -- Generating done
    CMake Warning:
      Manually-specified variables were not used by the project:
    
        BOARD
        SOFTDEVICE
    
    
    -- Build files have been written to: E:/Project/Mesh_v3.2.0/nrf5_SDK_for_Mesh_v3.2.0_src/mesh/bootloader/build
    
    E:\Project\Mesh_v3.2.0\nrf5_SDK_for_Mesh_v3.2.0_src\mesh\bootloader\build>

          I have added two lines :cmake_minimum_required(VERSION 3.17)
    project (mesh_bootloader) to CMakeLists.txt under path: ...\nrf5_SDK_for_Mesh_v3.2.0_src\mesh\bootloader.

          Is the "build "file path is right?How to solve the warning ? Does it need to use ...\nrf5_SDK_for_Mesh_v3.2.0_src\CMake files? Please give me some help ,thanks in advance.

    Best Regards,

    Panda

  • I would suggest testing of building a normal example first. Just follow what in the documentation. 


    After you call cmake -G Ninja ..................
    You need to call "ninja" to actually build the hex file. 

    You don't need to make the build folder inside the bootloader location. 

Related