<?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>Custom board USB DFU (buttonless)</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/122886/custom-board-usb-dfu-buttonless</link><description>Trying to add the capability of USB DFU (buttonless, because I forgot to have a button for it) to my custom board (nrf52840, MS88SF31 module). Reading about this process from different places gives different answers and I can&amp;#39;t quite wrap my head around</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 16 Jul 2025 17:41:54 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/122886/custom-board-usb-dfu-buttonless" /><item><title>RE: Custom board USB DFU (buttonless)</title><link>https://devzone.nordicsemi.com/thread/542675?ContentTypeID=1</link><pubDate>Wed, 16 Jul 2025 17:41:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6dd027c8-4d8d-4184-a4b9-de5c2a9d596a</guid><dc:creator>nordicator_prim3</dc:creator><description>&lt;p&gt;I&amp;#39;m on version 2.7.0, but my prj and dts have these things (some of which you may not need). I&amp;#39;ll put the stuff I think is important that I dont see in yours at the top of the files.&lt;br /&gt;&lt;br /&gt;MCUBoot_usb.conf&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;CONFIG_MCUMGR_TRANSPORT_UART=y
CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n # This just lets you write less code

CONFIG_USB_DEVICE_STACK=y
CONFIG_SERIAL=y
CONFIG_UART_LINE_CTRL=y
CONFIG_CONSOLE=y
CONFIG_BASE64=y&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;DTS&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;/dts-v1/;
#include &amp;lt;nordic/nrf52840_qiaa.dtsi&amp;gt;

/ {
	model = &amp;quot;optix_bigfoot&amp;quot;;
	compatible = &amp;quot;nordic-semiconductor,optix-bigfoot&amp;quot;;

	chosen {
		zephyr,sram = &amp;amp;sram0;
		zephyr,flash = &amp;amp;flash0;
		zephyr,code-partition = &amp;amp;slot0_partition;
		zephyr,uart-mcumgr = &amp;amp;cdc-acm-uart; // &amp;lt;--------------------------
		nordic,pm-ext-flash = &amp;amp;mx25r1;
	};&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Custom board USB DFU (buttonless)</title><link>https://devzone.nordicsemi.com/thread/542649?ContentTypeID=1</link><pubDate>Wed, 16 Jul 2025 13:30:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3d8b1a27-4f33-4e8b-878c-6c436cd8d3e9</guid><dc:creator>edition</dc:creator><description>&lt;p&gt;I have gotten the stuff I need working on an NRF52480 dongle (i2c devices, ble etc.) and I now want to use this stuff on my custom board.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I got myself a nrf52dk so I could actually get some info back from the board. I am working with ncs 3.0.2.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;As far as I can see, the SMP server example&amp;nbsp;runs on my board without errors, but I can&amp;#39;t seem to get the USB to show up anywhere. My best guesses are I am missing something in prj.conf or something is wrong in the devicetree, but not sure what is wrong.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;# Enable MCUmgr and dependencies.
CONFIG_NET_BUF=y
CONFIG_ZCBOR=y
CONFIG_CRC=y
CONFIG_MCUMGR=y
CONFIG_STREAM_FLASH=y
CONFIG_FLASH_MAP=y


# Some command handlers require a large stack.
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2304
CONFIG_MAIN_STACK_SIZE=2176

# Ensure an MCUboot-compatible binary is generated.
CONFIG_BOOTLOADER_MCUBOOT=y

# Enable flash operations.
CONFIG_FLASH=y

# Required by the `taskstat` command.
CONFIG_THREAD_MONITOR=y

# Support for taskstat command
CONFIG_MCUMGR_GRP_OS_TASKSTAT=y

# Enable statistics and statistic names.
CONFIG_STATS=y
CONFIG_STATS_NAMES=y

# Enable most core commands.
CONFIG_FLASH=y
CONFIG_IMG_MANAGER=y
CONFIG_MCUMGR_GRP_IMG=y
CONFIG_MCUMGR_GRP_OS=y
CONFIG_MCUMGR_GRP_STAT=y

# Enable logging
CONFIG_LOG=y

CONFIG_LOG_PRINTK=y

CONFIG_USE_SEGGER_RTT=y

CONFIG_CONSOLE=y

#USB stuff?
CONFIG_USB_DEVICE_STACK=y
CONFIG_SERIAL=y
CONFIG_UART_LINE_CTRL=y

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;/dts-v1/;
#include &amp;lt;nordic/nrf52840_qiaa.dtsi&amp;gt;
#include &amp;quot;nrflode_v000-pinctrl.dtsi&amp;quot;

/ {
	model = &amp;quot;NRF Lode&amp;quot;;
	compatible = &amp;quot;trimsense,nrflode-v000&amp;quot;;

	chosen {
		zephyr,sram = &amp;amp;sram0;
		zephyr,flash = &amp;amp;flash0;
		zephyr,code-partition = &amp;amp;slot0_partition;
	};

	gpio-leds {
		compatible = &amp;quot;gpio-leds&amp;quot;;
		led0: led0 {
			label = &amp;quot;led0&amp;quot;;
			gpios = &amp;lt;&amp;amp;gpio0 16 0&amp;gt;;
		};
	};
};

&amp;amp;flash0 {
	partitions {
		compatible = &amp;quot;fixed-partitions&amp;quot;;
		#address-cells = &amp;lt;1&amp;gt;;
		#size-cells = &amp;lt;1&amp;gt;;

		boot_partition: partition@0 {
			label = &amp;quot;mcuboot&amp;quot;;
			reg = &amp;lt;0x00000000 DT_SIZE_K(48)&amp;gt;;
		};

		slot0_partition: partition@c000 {
			label = &amp;quot;image-0&amp;quot;;
			reg = &amp;lt;0x0000c000 DT_SIZE_K(472)&amp;gt;;
		};

		slot1_partition: partition@82000 {
			label = &amp;quot;image-1&amp;quot;;
			reg = &amp;lt;0x00082000 DT_SIZE_K(472)&amp;gt;;
		};

		storage_partition: partition@f8000 {
			label = &amp;quot;storage&amp;quot;;
			reg = &amp;lt;0x000f8000 DT_SIZE_K(32)&amp;gt;;
		};
	};
};
&amp;amp;gpio0 {
	status = &amp;quot;okay&amp;quot;;
};

&amp;amp;gpiote {
	status = &amp;quot;okay&amp;quot;;
};


&amp;amp;usbd {
	cdc_acm_uart: cdc-acm-uart {
		compatible = &amp;quot;zephyr,cdc-acm-uart&amp;quot;;
		status = &amp;quot;okay&amp;quot;;
	};

	status = &amp;quot;okay&amp;quot;;
};
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Custom board USB DFU (buttonless)</title><link>https://devzone.nordicsemi.com/thread/542408?ContentTypeID=1</link><pubDate>Mon, 14 Jul 2025 15:11:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9cedeee3-1049-4020-9525-48041d88e692</guid><dc:creator>edition</dc:creator><description>&lt;p&gt;Thanks for your answer, it has cleared some things up.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I have been trying to get SMP server example running, but I haven&amp;#39;t had much success. I can build it and upload it to my board, but as I understand it, I should be able to now see the board in device manager. My best guess is that I haven&amp;#39;t properly setup my USB in my board files or somewhere else. Don&amp;#39;t really know where to look because I am not getting any errors.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Custom board USB DFU (buttonless)</title><link>https://devzone.nordicsemi.com/thread/542239?ContentTypeID=1</link><pubDate>Fri, 11 Jul 2025 12:25:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:507a2cdd-9383-4dbb-be10-fd2fb95cf4b8</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hello (to both of you);&lt;/p&gt;
&lt;p&gt;nordicator_prim3 answers to your questions are correct, but I would also like to inform you of the courses we have on our academy pages at&amp;nbsp;&lt;a href="https://academy.nordicsemi.com/"&gt;https://academy.nordicsemi.com/&lt;/a&gt;&amp;nbsp;which sole purpose is to bring the learning curve down to a less steep level when it comes to getting started with nRF Connect SDK and Zephyr.&lt;/p&gt;
&lt;p&gt;For both new and intermediate developers I strongly recommend this path when you&amp;#39;re getting started (or if you need to repeat something)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Decide which SDK version you&amp;#39;re working with. For instance if you&amp;#39;re not going to use sysbuild, you will have to stick with NCS v2.6.x. If it doesn&amp;#39;t really matter, start with the latest tagged release (currently NCS v3.0.2)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/"&gt;Fundamentals NCS&lt;/a&gt;&amp;nbsp;lesson 1, 2, 3, 4 and 5&lt;/li&gt;
&lt;li&gt;&lt;a href="https://academy.nordicsemi.com/courses/nrf-connect-sdk-intermediate/"&gt;Intermediate&lt;/a&gt;&amp;nbsp;NCS lesson 1, 2, 3, 8, and 9 and then maybe 7&lt;/li&gt;
&lt;li&gt;Any other lesson that contains peripherals that you will be using presented within these courses&lt;/li&gt;
&lt;li&gt;BLE fundamentals if you intend to have something BLE related on your application or the cellular and/or Wifi fundamentals course(s)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I will say that at least steps 1-3 are &amp;quot;mandatory&amp;quot; to go through, but solely based on your description I strongly recommend you to at least have a look at lesson 8 and 9 in the intermediate course, which contains theory, links and samples relevant to MCUboot and DFU specifically. All the lessons&amp;nbsp;&lt;em&gt;should&lt;/em&gt; link to our official documentation at&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/"&gt;https://docs.nordicsemi.com/&lt;/a&gt;&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: Custom board USB DFU (buttonless)</title><link>https://devzone.nordicsemi.com/thread/542159?ContentTypeID=1</link><pubDate>Thu, 10 Jul 2025 23:07:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dd54a3e8-2523-4f00-abd4-acf9f2933461</guid><dc:creator>nordicator_prim3</dc:creator><description>&lt;p&gt;Yeah, I remember starting with DFU and MCUboot and having a rough time haha. These aren&amp;#39;t complete answers but I think it will get you moving in the right direction. Everything I talk about below can be seen in the SMP Server example built into Zephyr. So you should just be able to build that, flash it with the programmer once, then test DFU.&lt;br /&gt;&lt;br /&gt;1. MCUboot is included in Zephyr, you &amp;quot;get&amp;quot; it by using Kconfig options to include it in your build and make any configuration changes to the bootloader. Testing MCUboot will not involve NRF connect or the programmer; it will only involve a client (like mcumgr) that uses USB in your case. The programmer lets you write anywhere in memory while MCUboot and the DFU process is essentially for making sure you only affect your application binary and not the bootloader binary. Another easy way to test (if you have bluetooth) is to add some extra kconfig to hook mcuboot up to bluetooth and use the NRF Device Manager phone app.&lt;/p&gt;
&lt;p&gt;2. If you want to test DFU and only update your application code it would not involve NRF Connect or the programmer. There are many clients that can talk to mcuboot. One you mentioned is mcumgr command line tool. I&amp;#39;ve used that to test DFU over USB and it worked fine. MCUboot is expecting something to talk to it with the SMP protocol. mcumgr (and many other programs) already speak SMP protocol so you don&amp;#39;t need to learn how to speak it. Another example is the python package SMPClient which can use USB; using this is more involved though and I would recommend mcumgr for quick testing).&lt;br /&gt;&lt;br /&gt;3. You (usually) don&amp;#39;t need to &amp;quot;change&amp;quot; the bootloader at all. Virtually any change you need to make can be done with Kconfig statements. In the SMP server example, all you have to do is enable your USB port in your application code and it should work. All the bootloader does is check if there&amp;#39;s a pending firmware update, handle it if so, and then point to the first memory address of your application code. Your application code just needs to know to enable the usb port.&lt;br /&gt;&lt;br /&gt;In short, check out the SMP server example and maybe try &lt;a href="https://www.youtube.com/watch?v=nmTRWR9b1AY"&gt;this video&lt;/a&gt; out. Hopefully this helps!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>