<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ota</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/124777/ota</link><description>Hi,Team, 
 I am currently using the nrf5415 to develop OTA. My NCS version is v3.0.2. Now I have two types of devices: Hub and Terminal. Both of these devices use nrf54l15. Our OTA design scheme is: Hub ota: Enables the mcuboot function, establishes BLE</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 04 Dec 2025 10:05:17 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/124777/ota" /><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/556224?ContentTypeID=1</link><pubDate>Thu, 04 Dec 2025 10:05:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:49ff967d-8ac0-40d6-9243-690b023362be</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi Dede,&lt;/p&gt;
&lt;p&gt;As previously mentioned I can&amp;#39;t give you any examples since we don&amp;#39;t have anything showcasing how OTA of remote devices are done with exception of the lwm2m exercise and the DFU Target mentioned by Hieu and the unofficial sample I sent you 30 days ago.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/556217?ContentTypeID=1</link><pubDate>Thu, 04 Dec 2025 09:15:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:559bd69b-2172-423b-8873-f227b765d225</guid><dc:creator>dede</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Thank you for your reply. I haven&amp;#39;t solved the problem yet. Could you please give an example?&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/556121?ContentTypeID=1</link><pubDate>Wed, 03 Dec 2025 13:31:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:51c1c022-31fe-409c-be58-d609da60e082</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi again,&lt;/p&gt;
&lt;p&gt;I see Hieu has pointed you to the DFU Target in &amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/125703/nrf54l15-manually-perform-firmware-update"&gt;Nrf54l15 Manually perform firmware update&lt;/a&gt;&amp;nbsp;. My bad for not mentioning this earlier. Let me know if this resolves the latest hurdle you were on.&lt;/p&gt;
[quote user="dede"] My idea is that the hub sends the firmware data of the mcuboot third version to the aura, the aura stores it in the mcuboot secondary, and then the terminal makes its own judgment based on certain conditions and performs the firmware upgrade. If possible, how can I add the judgment conditions?[/quote]
&lt;p&gt;You can for instance read something in the image header or image trailer:&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/mcuboot/design.html#image_trailer"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/mcuboot/design.html#image_trailer&lt;/a&gt;&amp;nbsp;to be able to determine where the image should be placed.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/554866?ContentTypeID=1</link><pubDate>Thu, 20 Nov 2025 08:21:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:96be26f4-2648-4493-adad-b35b33cafd91</guid><dc:creator>dede</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I can now write the firmware data to the mcuboot_secondary of the terminal, but I don&amp;#39;t know how to implement the firmware update for the terminal.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/554865?ContentTypeID=1</link><pubDate>Thu, 20 Nov 2025 08:20:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:215fe434-1644-4109-bb45-adc8f05ed9b8</guid><dc:creator>dede</dc:creator><description>&lt;p&gt;Hi,team,&lt;/p&gt;
&lt;p&gt;I haven&amp;#39;t solved this problem yet. Who can help me?&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/553626?ContentTypeID=1</link><pubDate>Fri, 07 Nov 2025 07:25:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0db1a7b9-1bc1-48b8-8d8c-ca36b47fd4a1</guid><dc:creator>dede</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Thank you for your reply.&lt;br /&gt;Because the terminal cannot establish a connection with the app to perform OTA (Over-The-Air Update), it can only communicate with the hub. I have now successfully implemented app splitting, and I have written the terminal&amp;#39;s firmware into the mcuboot third area of the hub. So, is there such a custom Ota method? My idea is that the hub sends the firmware data of the mcuboot third version to the aura, the aura stores it in the mcuboot secondary, and then the terminal makes its own judgment based on certain conditions and performs the firmware upgrade. If possible, how can I add the judgment conditions?&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/553277?ContentTypeID=1</link><pubDate>Tue, 04 Nov 2025 10:12:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:25ae80c5-d109-4979-a32b-dcaa2b231be2</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user="dede"]&lt;p&gt;I have created a flag. If the flag is 0x55AA5511, it means to update the hub because the firmware of the hub is defaultly downloaded to mcuboot_secondary. So I can easily implement the firmware update of the hub. If the flag is 0x55AA5522, it means to download the terminal firmware. But the problem is that I don&amp;#39;t know how to download the firmware to mcuboot_third.&lt;/p&gt;
&lt;p&gt;Do you know how to solve this problem?&lt;/p&gt;[/quote]
&lt;p&gt;The short answer is unfortunately no, I don&amp;#39;t know this.&lt;/p&gt;
&lt;p&gt;I did some more digging and found this unofficial sample that a colleague of mine made for NCS 2.4.0&amp;nbsp;&lt;a href="https://github.com/hellesvik-nordic/samples_for_nrf_connect_sdk/tree/v2.6.0/bootloader_samples/client_smp/smp_client_ble"&gt;https://github.com/hellesvik-nordic/samples_for_nrf_connect_sdk/tree/v2.6.0/bootloader_samples/client_smp/smp_client_ble&lt;/a&gt;. The implementation is hacky and you will have to do some patching, but hopefully it might be good enough to show case how to transfer data to a remote device. There&amp;#39;s an issue if you attempt to transfer the candidate image in chunks to the remote if you call the transfer within an ISR. This sample shows how to do it in a workqueue.&lt;/p&gt;
&lt;p&gt;It doesn&amp;#39;t use sysbuild so this porting needs to be done as well.&lt;/p&gt;
&lt;p&gt;I might have another sysbuild version that showcases how to do this in a thread context, but lets focus on the other one for now..&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/553105?ContentTypeID=1</link><pubDate>Mon, 03 Nov 2025 03:08:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3f950436-9688-4f8c-91ba-19276d311a86</guid><dc:creator>dede</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Thank you for your reply.&lt;br /&gt;Your analysis is correct.&lt;/p&gt;
&lt;p&gt;I have created a flag. If the flag is 0x55AA5511, it means to update the hub because the firmware of the hub is defaultly downloaded to mcuboot_secondary. So I can easily implement the firmware update of the hub. If the flag is 0x55AA5522, it means to download the terminal firmware. But the problem is that I don&amp;#39;t know how to download the firmware to mcuboot_third.&lt;/p&gt;
&lt;p&gt;Do you know how to solve this problem?&lt;/p&gt;
&lt;p&gt;Reference for the overwrite file is as follows:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;app:
  address: 0x14800
  end_address: 0x177000
  region: flash_primary
  size: 0x162800
external_flash:
  address: 0x2C6000
  end_address: 0x7FF000
  region: external_flash
  size: 0x539000
external_flash_update_flag:
  address: 0x7FF000
  end_address: 0x800000
  region: external_flash
  size: 0x1000
littlefs_storage:
  address: 0x177000
  end_address: 0x17d000
  placement:
    before:
    - end
  region: flash_primary
  size: 0x6000
mcuboot:
  address: 0x0
  end_address: 0x14000
  placement:
    align:
      end: 0x1000
    before:
    - mcuboot_primary
  region: flash_primary
  size: 0x14000
mcuboot_pad:
  address: 0x14000
  end_address: 0x14800
  placement:
    before:
    - mcuboot_primary_app
  region: flash_primary
  size: 0x800
mcuboot_primary:
  address: 0x14000
  end_address: 0x177000
  orig_span: &amp;amp;id001
  - app
  - mcuboot_pad
  region: flash_primary
  size: 0x163000
  span: *id001
mcuboot_primary_app:
  address: 0x14800
  end_address: 0x177000
  orig_span: &amp;amp;id002
  - app
  region: flash_primary
  size: 0x162800
  span: *id002
mcuboot_secondary:
  address: 0x0
  device: DT_CHOSEN(nordic_pm_ext_flash)
  end_address: 0x163000
  placement:
    align:
      start: 0x4
  region: external_flash
  share_size:
  - mcuboot_primary
  size: 0x163000
  
mcuboot_third:
  address: 0x163000
  device: DT_CHOSEN(nordic_pm_ext_flash)
  end_address: 0x2C6000
  placement:
    align:
      start: 0x4
  region: external_flash
  share_size:
  - mcuboot_primary
  size: 0x163000  

otp:
  address: 0xffd500
  end_address: 0xffd9fc
  region: otp
  size: 0x4fc
sram_primary:
  address: 0x20000000
  end_address: 0x2002f000
  region: sram_primary
  size: 0x2f000&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/553029?ContentTypeID=1</link><pubDate>Fri, 31 Oct 2025 13:49:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8799d1b9-cc73-4b4d-b6b1-8713c5f0081c</guid><dc:creator>AHaug</dc:creator><description>[quote user="dede"]How can the hub set secondary slot 1 and secondary slot 2 outside the flash? [/quote]
&lt;p&gt;The hub doesn&amp;#39;t per say &amp;quot;set this&amp;quot;, but I&amp;#39;m guessing that you&amp;#39;re asking about how to write the candidate image from the hub to the secondary slot of the remote device?&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s break it down once more.&lt;/p&gt;
&lt;p&gt;In your OTA hub you want to be able to do two things (w.r.t DFU): Update it&amp;#39;s own firmare and update remote devices. This means that you either have to&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a flag that separates if the candidate image in hub_mcuboot_secondary is for the hub or for the remote device (proprietary). If it&amp;#39;s for the hub, then do DFU as normal and if it&amp;#39;s for the remote then proceed with the routine you make for instance as described below&lt;/li&gt;
&lt;li&gt;Have a storage partition for the remote device(s) and mcuboot_secondary is for only the candidate image to the hub.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After you&amp;#39;ve uploaded the image to the hub, the next thing you need to do is to connect to the remote. From there, you transfer the image using MCUMGRs img_mgnt to specify what to send to the remote. Depending on the solution above you need to take the contents of the candidate image slot in your hub and write to mcuboot_secondary on the remote. This is described in&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/cellular/lwm2m_client/fota_external_mcu.html"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/cellular/lwm2m_client/fota_external_mcu.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m sorry but we really don&amp;#39;t have any implementations other than the lwm2m that shows how to update a remote device.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/552583?ContentTypeID=1</link><pubDate>Tue, 28 Oct 2025 06:22:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:48be4b59-d12e-414f-9acc-c13eeccf22ba</guid><dc:creator>dede</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;May I ask if there has been any progress on this issue?&lt;br /&gt;My step is:&lt;br /&gt;1. Implement the use of mcuboot_third to update the firmware of the hub, but currently I can only use the mcuboot_secondary of the off-chip flash to update the firmware of the hub.&lt;br /&gt;2. Enable mcuboot to implement mcuboot_third using off-chip flash, which only stores the firmware without updating it. I speculate that perhaps modifying a certain logo word or firmware can achieve this function.&lt;br /&gt;Overall, I still don&amp;#39;t have any ideas at present. What should I do to achieve these two steps?&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/552238?ContentTypeID=1</link><pubDate>Thu, 23 Oct 2025 11:34:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5de6cd3a-8cee-43c8-9b5b-d2a0e2004848</guid><dc:creator>dede</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;How can the hub set secondary slot 1 and secondary slot 2 outside the flash? Currently, the hub can only set secondary slot 1 and then perform its own update. However, I want to add another function: when receiving the firmware, download the terminal&amp;#39;s firmware to secondary slot 2. How should I do this?&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/551671?ContentTypeID=1</link><pubDate>Thu, 16 Oct 2025 08:08:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:944f3617-ac6e-43ee-bad1-7ff05b570c2c</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user="dede"]The path is exactly as you described: mcuboot_third on the hub -&amp;gt; mcuboot_secondary on the external device -&amp;gt; mcuboot_primary on the external device. If there are any other simpler methods, they can also be tried.[/quote]
&lt;p&gt;Noted, this is the recommended way. If you place it on the secondary on the external device, then the MCUboot bootloader on the external flash should know how to handle the candidate image given that you&amp;#39;ve uploaded the correct one. As soon as the image is in the external MCU&amp;#39;s secondary application slot, then the external MCUBoot should go&amp;nbsp;&lt;/p&gt;
[quote user="dede"]2. If the Ota solution for the terminal is feasible, then what should I do? However, you mentioned that this solution must be a proprietary one, which means the development process will be quite complex. Are there any other options? As long as the functions are achieved, it&amp;#39;s fine: the terminal receives the firmware from the hub, and the terminal itself verifies and updates the firmware.[/quote]
&lt;p&gt;I&amp;#39;ve spent some time looking around if we have any other options, and the answer is no, not for the specific use case that you have. We have a central to peripheral sample that you may be able to adapt, but note that this is a zephyr sample:&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/bluetooth/central_smp_client/README.html"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/bluetooth/central_smp_client/README.html&lt;/a&gt;&amp;nbsp;in addition to the lwm2m sample.&lt;/p&gt;
&lt;p&gt;Have you had a look at the central smp sample to see if there&amp;#39;s a distribution feature that you can use from there?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/550959?ContentTypeID=1</link><pubDate>Thu, 09 Oct 2025 02:53:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cfce0b93-43eb-4d54-8a3f-98e7cbc0230b</guid><dc:creator>dede</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;1. Our custom app software will implement firmware updates by referring to the nrf connect tool. So when the nrf connect tool shows an error, it means that the custom app will also have the same error, which indicates that the firmware download for the device has failed.&lt;br /&gt;The path is exactly as you described: mcuboot_third on the hub -&amp;gt; mcuboot_secondary on the external device -&amp;gt; mcuboot_primary on the external device. If there are any other simpler methods, they can also be tried.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;2. If the Ota solution for the terminal is feasible, then what should I do? However, you mentioned that this solution must be a proprietary one, which means the development process will be quite complex. Are there any other options? As long as the functions are achieved, it&amp;#39;s fine: the terminal receives the firmware from the hub, and the terminal itself verifies and updates the firmware.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ota</title><link>https://devzone.nordicsemi.com/thread/550721?ContentTypeID=1</link><pubDate>Mon, 06 Oct 2025 13:48:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:357637bb-02bd-404f-9f3a-0c20998da08d</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I think this sample sample where we&amp;#39;ve evaluated OTA of an external device through LwM2M may be helpful for you:&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/cellular/lwm2m_client/README.html"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/cellular/lwm2m_client/README.html &lt;/a&gt;and&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/cellular/lwm2m_client/fota_external_mcu.html"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/cellular/lwm2m_client/fota_external_mcu.html&lt;/a&gt;. The downside is that it doesn&amp;#39;t show a use case for BLE OTA, but the application shows somewhat the same procedure that you describe.&lt;/p&gt;
[quote user=""]&lt;p&gt;Question 1.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I used the nrf connect firmware to download to the mcuboot_third area in the Hub, but the nrf connect tool reported an error.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;[/quote]
&lt;p&gt;Does the error affect anything other than affecting the status? Do you intend to go directly from mcuboot_third to the external MCU&amp;#39;s MCUboot_primary slot? Or is the path:&lt;/p&gt;
&lt;p&gt;mcuboot_third on hub -&amp;gt; mcuboot_secondary on external device -&amp;gt; mcuboot_primary on external device?&amp;nbsp;&lt;/p&gt;
[quote user=""]Is the terminal&amp;#39;s OTA solution feasible? Currently, the only way to perform firmware OTA for Aura is through the Hub. If not, how should I update the firmware for the terminal?[/quote]
&lt;p&gt;The solution is feasible yes, but the solution has to be a proprietary solution since what we have that showcases OTA of an external device is only the lwm2m exercise above..&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>