OTA over UART on nRF54L15 - Upload completes but firmware doesn't boot

Dear Nordic Team,

I am working on implementing OTA (Over-The-Air) firmware updates over UART on the nRF54L15 platform. I have been following the "Exercise 1 - DFU over UART" tutorial from the Nordic Developer Academy:

Exercise 1 - DFU over UART - Nordic Developer Academy

I have configured my project according to the exercise. I have attached the following files for your review:

1. prj.conf   

/cfs-file/__key/communityserver-discussions-components-files/4/7713.prj.conf

2. sysbuild.conf

/cfs-file/__key/communityserver-discussions-components-files/4/4571.sysbuild.conf

3. sysbuild/mcuboot.conf

/cfs-file/__key/communityserver-discussions-components-files/4/3806.mcuboot.conf

4. sysbuild/mcuboot.overlay

/cfs-file/__key/communityserver-discussions-components-files/4/0410.mcuboot.overlay

5. ophelia4ev_nrf54l15_cpuapp.overlay

/cfs-file/__key/communityserver-discussions-components-files/4/ophelia4ev_5F00_nrf54l15_5F00_cpuapp.overlay

My Setup

  • Target device: nRF54L15_M33
  • UART used for DFU: UART30 (configured in the overlay file)
  • DFU tool: AuTerm
  • Image file: custom .signed.bin image

What I Observed

  1. I connected to the DFU UART (UART30) using AuTerm.
  2. I uploaded the generated .signed.bin image.
  3. The upload reaches 100% successfully.
  4. However, after the upload completes, AuTerm displays the following message:

       "Upload finished. Set image state failed. Command not supported (likely MCUboot serial recovery)".

  • After the upload reaches 100%, I close the COM port in AuTerm.
  • I then open the same UART in my terminal application.
  • Finally, I manually reset the board.

Expected Behavior

After resetting the board, I expect MCUboot to boot the newly uploaded application. The new application is configured to print debug messages over the same UART30 interface used for the DFU process, so I expect to see those debug messages on the terminal after the board resets.

Actual Behavior

After resetting the board, no debug messages are printed, and the application does not appear to start.

Request

Could you please review the attached configuration files and let me know if I have missed any required configuration for DFU over UART on the nRF54L15?

Also, could you help me understand why AuTerm reports:

Set image state failed.
Command not supported (likely MCUboot serial recovery).

Is this expected behavior for MCUboot serial recovery, or does it indicate that my DFU configuration is incorrect?

Regards,

Venkata Kishore P

Parents Reply Children
  • Hi Amanda H,

    Thank you for your response and for providing the link to the official solution.

    1. NCS Version:
    I am using nRF Connect SDK v3.2.4.

    2. Build Issue with the Official Solution:
    I attempted to build the official solution (l9_e1_sol) from the GitHub link you provided:
    https://github.com/NordicDeveloperAcademy/ncs-inter/tree/v3.2.0/l9/l9_e1_sol

    However, the build fails with the following error:

    text
    region 'FLASH' overflowed by 2296 bytes

    Full Error Log:

    text
    FAILED: zephyr/zephyr_pre0.elf
    c:/ncs/toolchains/fd21892d0f/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd.exe: zephyr\zephyr_pre0.elf section `rodata' will not fit in region `FLASH'
    c:/ncs/toolchains/fd21892d0f/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd.exe: region `FLASH' overflowed by 2296 bytes
    collect2.exe: error: ld returned 1 exit status
    ninja: build stopped: subcommand failed.

    3. My Environment:

    Item Details
    Board nRF54L15 DK (nrf54l15dk/nrf54l15/cpuapp)
    NCS Version v3.2.4
    Toolchain Zephyr SDK 0.17.0
    Build Command west build -b nrf54l15dk/nrf54l15/cpuapp
    Solution Tested https://github.com/NordicDeveloperAcademy/ncs-inter/tree/v3.2.0/l9/l9_e1_sol

    My Questions:

    1. Are there any specific configuration changes required for the nRF54L15 to reduce the firmware size?

    2. Is there a known issue with NCS v3.2.4 and the nRF54L15 regarding flash size?

    3. Could you please provide a minimal configuration that works for this board?

    I would appreciate any guidance on resolving this build issue so I can proceed with testing the OTA over UART functionality.

    Thank you for your time and support.


    Regards,
    Venkata Kishore P.

  • Hi, 

    I cannot reproduce the issue. 

     Please try to delete the build folder and rebuild. 

    -Amanda H.

  • H

    i Amanda H,

    Thanks for your guidance. I am now able to build the code successfully.

    Current Status:

    1. Build succeeds without errors

    2. Flashed the firmware over J-Link to my custom boardFile flashed: D:\Venkatakishore\Fleet_Panda\Lora_NRF\Gansan\nrf_devzone\ncs-inter-main\l9\l9_e1_sol\build\l9_e1_sol\zephyr\zephyr.hex

    3. Configured UART pins in the mcuboot.overlay file (attached for reference)

      /cfs-file/__key/communityserver-discussions-components-files/4/5280.mcuboot.overlay

    The Issue:
    When I try to perform OTA using AuTerm:

    1. I connect to the specific UART port

    2. I select the .signed.bin file (peripheral_nus.signed.bin)

    3. I click "Go" (Upload)

    4. The progress stays at 0% and I get the error:

      "Timeout (Mode: Upload firmware)"

    Attachments:

    • mcuboot.overlay file

    • Screenshot of AuTerm showing the timeout error

    My Configuration:

    Item Details
    Board Custom board (nRF54L15)
    NCS Version v3.2.4
    UART for OTA UART30 (P0.01 TX, P0.00 RX)
    Tool AuTerm v0.35a
    Build Official l9_e1_sol solution

    What I've Checked:

    • White check mark The UART pins are correctly configured in mcuboot.overlay

    • White check mark The board is powered on and connected

    • White check mark The correct COM port is selected in AuTerm

    • White check mark Baud rate is set to 115200

    • White check mark The .signed.bin file exists and is not empty

    My Questions:

    1. Is there any specific configuration required in the custom board overlay for UART OTA to work?

    2. Could the timeout be due to incorrect UART pin mapping in the bootloader?

    3. Do I need to enable any additional Kconfig options for Serial Recovery on a custom board?

    4. Is the mcuboot-button0 and mcuboot-led0 alias mapping correct for my custom board?

    5. Could this be related to the SB_CONFIG_PARTITION_MANAGER or SB_CONFIG_MCUBOOT_MODE_SINGLE_APP settings?

    I would appreciate any guidance on resolving this timeout issue.

    Thank you for your time and support.


    Regards,
    Venkata Kishore P.

  • Are you able to reproduce the issue on nRF54L15DK?

    I suggest you use nRF54L15DK to familiarize yourself with Exercise 1 - DFU over UART - Nordic Developer Academy, then move to your custom board. 

Related