<?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>Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/124136/challenges-migrating-from-nrf5-sdk-17-to-nrf-connect-bare-metal-sdk-for-nrf54-integration</link><description>We are working to add support for the new nRF54 chips using the nRF Connect Bare Metal SDK within our existing mono-repo, which currently supports multiple product generations using the nRF5 SDK (versions 15 and 17). 
 Our expectation was that the Bare</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Sat, 07 Mar 2026 03:23:07 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/124136/challenges-migrating-from-nrf5-sdk-17-to-nrf-connect-bare-metal-sdk-for-nrf54-integration" /><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/562749?ContentTypeID=1</link><pubDate>Sat, 07 Mar 2026 03:23:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dc90d283-e813-4078-be10-81ac11f78734</guid><dc:creator>Nguyen Hoan Hoang</dc:creator><description>&lt;p&gt;Hi Ligo,&lt;/p&gt;
&lt;p&gt;Thanks for writing this up &amp;mdash; we hit the same friction moving an nRF5-SDK monorepo mindset toward nRF54.&lt;/p&gt;
&lt;p&gt;Also, thanks Edvin for clarifying the DFU architecture. For anyone following: in NCS BM the transport is handled by the Firmware Loader (using the SoftDevice/BLE stack), while MCUboot is primarily image validation/boot, and the new doc link helps clear up the &amp;ldquo;where is BLE transport?&amp;rdquo; question.&lt;/p&gt;
&lt;p&gt;On the tooling/monorepo side (West/Kconfig + DT partitions): if your main goal is to keep a &amp;ldquo;single codebase / bare-metal C/C++ workflow&amp;rdquo; without adopting Zephyr-style configuration as the primary model, I&amp;rsquo;ve been building an alternative workflow around Nordic&amp;rsquo;s nRF54 bare-metal vendor layer (sdk-nrf-bm + nrfx) but with configuration expressed as normal C/C++ structures + a simple pin-map header.&lt;/p&gt;
&lt;p&gt;Disclosure: I&amp;rsquo;m the author of IOcomposer/IOsonata.&lt;/p&gt;
&lt;p&gt;Unedited demo (~3 min): AI creates a complete nRF54L15 bare-metal BLE project from a prompt, then it builds and launches debug:&lt;br /&gt;&lt;a href="https://youtu.be/LR2vYtMeC8A"&gt;https://youtu.be/LR2vYtMeC8A&lt;/a&gt;&lt;br /&gt;Try/install: &lt;a href="https://iocomposer.io"&gt;https://iocomposer.io&lt;/a&gt;&lt;br /&gt;Framework (MIT): &lt;a href="https://github.com/IOsonata/IOsonata"&gt;github.com/.../IOsonata&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you end up trying it, I&amp;rsquo;d love to hear whether it fits your monorepo workflow (and what breaks first).&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;mdash; Hoan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547923?ContentTypeID=1</link><pubDate>Fri, 05 Sep 2025 13:14:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c4f71139-5fae-437f-b33d-b9935ac81d58</guid><dc:creator>Ligo George</dc:creator><description>&lt;p&gt;Thanks for the update. I will try this out.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547916?ContentTypeID=1</link><pubDate>Fri, 05 Sep 2025 12:37:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:41d78d17-a54f-4739-a472-3245904cbb50</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;This documentation was also just released (since my last reply).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.nordicsemi.com/bundle/nrf-bm-latest/page/migration/nrf5_bm_migration_5.html#dfu"&gt;https://docs.nordicsemi.com/bundle/nrf-bm-latest/page/migration/nrf5_bm_migration_5.html#dfu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It explains the differences between the old (nRF5 SDK) bootloader and the new (NCS BM) bootloader.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547868?ContentTypeID=1</link><pubDate>Fri, 05 Sep 2025 08:15:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:28ef623d-4632-44e4-95de-24e3dbd0127a</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Sorry, what I wrote about DFU in my previous reply was incorrect.&lt;/p&gt;
&lt;p&gt;The bootloader in NCS BM does use the same bluetooth stack as the application, but seeing as it is a standalone hex file, you can update the application without doing it via the application. That means the bootloader can use the softdevice, and hence, you don&amp;#39;t need dual bank, which allows for a larger application footprint.&amp;nbsp;&lt;/p&gt;
[quote user="Ligo George"]We’re particularly interested in achieving bootloader-level BLE DFU without relying on application-layer solutions like mcumgr[/quote]
&lt;p&gt;So this is what we currently have in NCS BM, and it is very similar to the nRF5 SDK&amp;#39;s bootloader. There are some differences, but from a user perspective it will feel similar. To go a bit more in depth, the bootloader, which is based on mcuboot used in NCS, is now only responsible for validating the images, and start the correct image: Application or Firmware Loader.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Firmware Loader handles transport of new DFU images. It uses the softdevice to receive the new image. The new image can either contain a new application, or it can contain a softdevice image.&lt;/p&gt;
&lt;p&gt;The application image is quite simple, as it contains the new application, and it will just place it directly in it&amp;#39;s target destination.&lt;/p&gt;
&lt;p&gt;A SoftDevice image is a bit more complex. It is as simple as the application to update for the users, as it is a signed binary file, but it contains the softdevice itself, a new Firmware Loader (compatible with the new SoftDevice, and an installer.&lt;/p&gt;
&lt;p&gt;Since the softdevice image is placed in the application&amp;#39;s RRAM (NVME), when it is transferred and booted up, it will start the installer, which will delete the old Firmware Loader and the old Softdevice. Then it will move the new Firmware Loader and the new SoftDevice to the correct addresses, before it will delete itself. After this, you have the new softdevice and firmware loader, and it will enter DFU mode again, ready to receive a new application, which is compatible with the new SoftDevice.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I hope that makes things a bit clear, and I want to underline that what I said in the previous reply about it having it&amp;#39;s own small BLE stack is incorrect.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You can read about the new bootloader and DFU, and the different components of the bootloader here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.nordicsemi.com/bundle/nrf-bm-latest/page/app_dev/dfu/single_bank_dfu.html#application_update"&gt;Application Update&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.nordicsemi.com/bundle/nrf-bm-latest/page/app_dev/dfu/single_bank_dfu.html#softdevice_and_firmware_loader_update"&gt;SoftDevice and Firmware Loader update&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;To test this, please see the &amp;quot;&lt;a href="https://docs.nordicsemi.com/bundle/nrf-bm-latest/page/app_dev/dfu/ug_dfu.html#building_and_running"&gt;building and running&lt;/a&gt;&amp;quot;. You can skip all the theory above it, as it explains how to create your own board files for a custom board. This is already done for the DK, so just build for the board named bm_nrf54l15dk/nrf54l15/cpuapp/s115_softdevice/mcuboot&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1757059894300v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;And follow the instructions. The bootloader will be built and flashed when you flash this application project (you still need to flash the softdevice separately). The images will also be generated when you build, so to test, change something in the application (add a line of logging), and build it again. In the build folder you will find the zephyr.signed.bin, which contains the application image, and the installer_softdevice_firmware_loader.bin, which contains the new softdevice, firmware loader, and installer image.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We currently only have one softdevice, so there is really no good ways of testing this, but you can transfer the installer_softdevice_firmware_loader.bin, and it will replace the &amp;quot;old&amp;quot; softdevice and firmware loader with the &amp;quot;new&amp;quot; one.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547817?ContentTypeID=1</link><pubDate>Thu, 04 Sep 2025 21:20:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3650d495-e9fa-4f30-bdc4-4f8eda5b7f7d</guid><dc:creator>Ligo George</dc:creator><description>&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;As for DFU. Actually, the bootloader in NCS BM is not dependent on the application to perform BLE transfers. In fact, it is not even dependent on the softdevice. It has it&amp;#39;s own, small, BLE stack. So you can, like you could in the old nRF5 SDK, update the softdevice and application, without dual bank. It is still a bit rough around the edges, but I believe you will have the same capabilities that you did in the nRF5 SDK.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="auto"&gt;This is encouraging, as it aligns with our need for bootloader-level BLE DFU, similar to what we use in nRF5 SDK. However, I&amp;rsquo;m a bit confused because the Nordic documentation states that MCUboot does not include transport support (such as BLE) in NCS BM, unlike the nRF5 SDK bootloader. Specifically, the migration guide here notes: &amp;quot;&lt;a href="https://docs.nordicsemi.com/bundle/nrf-bm-latest/page/migration/nrf5_bm_migration.html#:~:text=A%20major%20difference%20is%20that%20the%20nRF5%20bootloader%20included%20the%20transport%20(such%20as%20BLE%2C%20UART)%2C%20whereas%20MCUboot%20does%20not"&gt;A major difference is that the nRF5 bootloader included the transport (such as BLE, UART), whereas MCUboot does not.&lt;/a&gt;&amp;quot;&lt;/p&gt;
&lt;p dir="auto"&gt;Could you please clarify how BLE DFU is implemented in the NCS BM bootloader? If MCUboot indeed supports BLE transport with its own stack, could you share a link to relevant documentation, a sample project, or a guide that demonstrates how to set this up for nRF54? We&amp;rsquo;re particularly interested in achieving bootloader-level BLE DFU without relying on application-layer solutions like mcumgr, as we do in nRF5 SDK. Any examples or steps to test this functionality (e.g., updating the SoftDevice and application) would be greatly appreciated.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547791?ContentTypeID=1</link><pubDate>Thu, 04 Sep 2025 15:36:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:67ffe4d8-8a93-4cd6-8ee1-6685ce0a263b</guid><dc:creator>rbence</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t want to hijack OP&amp;#39;s post but do your words about DFU mean that the NCS BM&amp;#39;s&amp;nbsp;mcuboot + softdevice + firmware loader could be used as a DFU method with a &amp;quot;really&amp;quot; bare metal application FW(no zephyr stuff, just simple cmake + GCC and the NRFX MDK)? I suppose an image must be created with mcuboot&amp;#39;s image tool.&lt;br /&gt;&lt;br /&gt;Thank you in advance.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Bence&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547770?ContentTypeID=1</link><pubDate>Thu, 04 Sep 2025 13:59:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e517e087-313a-4261-8b7a-de23e5fa5dbd</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello, and thank you for your feedback!&lt;/p&gt;
&lt;p&gt;Yes, there are differences between the NCS Bare Metal (NCS BM) and the old nRF5 SDK, such as the toolchain and some library changes. And it does depend on some Zephyr features, such as the devicetree. But this is only limited to the partitions, and doesn&amp;#39;t require you to use it for enabling peripherals, like you do in the &amp;quot;full&amp;quot; nRF Connect SDK.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I do see your concern with it being difficult to have a shared codebase for both the nRF5SDK and NCS BM. But the idea is that it should be fairly simple to port an application from nRF5 SDK to NCS BM. While I agree it is probably a bit more work than a normal nRF5 SDK port job, it will be far easier in the future to port applications between different nRF54L targets, and any future devices that will be supported in NCS BM. It would simply be a change of the target board. That is one of the big advantages with NCS and NCS BM.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:line-through;"&gt;As for DFU. Actually, the bootloader in NCS BM is not dependent on the application to perform BLE transfers. In fact, it is not even dependent on the softdevice. It has it&amp;#39;s own, small, BLE stack. So you can, like you could in the old nRF5 SDK, update the softdevice and application, without dual bank. It is still a bit rough around the edges, but I believe you will have the same capabilities that you did in the nRF5 SDK.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:line-through;"&gt;Currently, there is only one softdevice, but you can test it by updating to the same softdevice, as described in the application.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547653?ContentTypeID=1</link><pubDate>Wed, 03 Sep 2025 13:24:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:96fffbbc-b821-47b8-85f8-c05d38ae193e</guid><dc:creator>patjshan</dc:creator><description>&lt;p&gt;Ah I see, thanks for clarifying&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547640?ContentTypeID=1</link><pubDate>Wed, 03 Sep 2025 13:08:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b75eb8c1-c029-4c84-be10-145b57004eff</guid><dc:creator>Ligo George</dc:creator><description>&lt;p&gt;&lt;span&gt;I want to clarify that my inquiry goes beyond just enabling DFU via BLE within the application. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;What I&amp;#39;m referring to is the feature in the nRF5 SDK where the bootloader itself has the inherent capability to perform BLE transfers, without relying on an application layer solution like mcumgr. In the nRF5 SDK, the BLE DFU transport mechanism in the bootloader directly utilizes the SoftDevice.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Challenges Migrating from nRF5 SDK 17 to nRF Connect Bare Metal SDK for nRF54 Integration</title><link>https://devzone.nordicsemi.com/thread/547639?ContentTypeID=1</link><pubDate>Wed, 03 Sep 2025 13:04:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e725b906-4be8-4f8c-9f7b-aaceca22781b</guid><dc:creator>patjshan</dc:creator><description>&lt;p&gt;I&amp;#39;m just getting into the nrf Bare metal sdk myself but I believe it does support DFU over BLE if thats what your referring to in your second point. I was able to get the MCUboot examples working and perform an OTA DFU using the device manager app on iOS.&lt;/p&gt;
&lt;p&gt;The other points I agree with, but I see no way around just having to manage a separate repository for your new products. Maybe you could manage it all in one place with a lot of preprocessor defines in your files but that seems like it could get more confusing than the alternative&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>