<?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>Firmware Update from IOS</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/129316/firmware-update-from-ios</link><description>Hello, 
 after having a product using a nrf52832 MCU for a while in production using nrf connect sdk 2.5.1, we now wanted to supply a first firmware update. However, while the system was tested to work beforehand we now noticed that the firmware update</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 01 Oct 2026 15:07:36 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/129316/firmware-update-from-ios" /><item><title>RE: Firmware Update from IOS</title><link>https://devzone.nordicsemi.com/thread/571845?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2026 15:07:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d1d0d610-d4a6-4224-9558-789cd7205875</guid><dc:creator>Iskailko</dc:creator><description>&lt;p&gt;I dont have this Icon in the IOS device manager app. I have it only in the android app. There it leads me to the nrf logger, but I cannot find the nrf logger in the Apple Store.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Firmware Update from IOS</title><link>https://devzone.nordicsemi.com/thread/571841?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2026 14:51:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:23836c50-9fe3-4866-9699-85348f745fcf</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;&lt;span&gt;You only share logs from the DK&amp;#39;s side. We also need the logs from the App side. You can get the logs via the icon&amp;nbsp;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1790866117102v1.png" alt=" " /&gt; on the top right of the nRF Device Manager. These logs can be exported. Also, the logs can show more information by tapping &amp;quot;Level&amp;quot; and setting it to Debug. There&amp;#39;s more information there from the library (app) side.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Firmware Update from IOS</title><link>https://devzone.nordicsemi.com/thread/571794?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2026 06:50:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bed02411-91b3-4e2f-946f-df13c974e701</guid><dc:creator>Iskailko</dc:creator><description>&lt;p&gt;Thank you for the answer.&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;I cannot use this: CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP=y because I get RAM overflow on the nrf52832.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The problem does not exist from Android Phones. There the nordic device manager app and our own implementation works as usual and at a decent speed. That&amp;#39;s why I think that everything is fine with the external flash.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;img style="height:328px;" height="328" src="https://devzone.nordicsemi.com/resized-image/__size/422x656/__key/communityserver-discussions-components-files/4/CC944B2A_2D00_C558_2D00_4245_2D00_9A93_2D00_5586AB2F72BC.png_2D00_640x480.png" width="210" alt=" " /&gt;Here&amp;nbsp;is a screenshot of the device manager on IOS app being connected to our device. I will also ask for the complete logs from the McuMGr library. It might take some time as I will have to get back to our app developer. For now I go this information from him, that he obtained from the logs:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&amp;quot;Before the upload, the device communicate infos with the app.&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;McuMgr parameters&amp;nbsp;&lt;ul&gt;
&lt;li&gt;Buffer SMP (2 x 2475)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;takes 2s (quite normal)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bootlader name&amp;nbsp;&lt;ul&gt;
&lt;li&gt;MCUBoot&lt;/li&gt;
&lt;li&gt;takes 20s (not normal at all)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bootlader mode&amp;nbsp;&lt;ul&gt;
&lt;li&gt;Swap without scratch&lt;/li&gt;
&lt;li&gt;takes 20s (not normal at all)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The upload speed is more or less 0.6 KB/S&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Furthermore I checked the logs that I get from my device during the firmware update using&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;CONFIG_MCUMGR_LOG_LEVEL_DBG=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;CONFIG_MCUMGR_TRANSPORT_LOG_LEVEL_DBG=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The major difference I saw is that IOS negotiates immediately during connection an MTU of 185 and also uses this during firmware transfer:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;IOS log output during transfer&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;quot;&amp;lt;\n&amp;gt;D: collect = 1149&amp;lt;\r&amp;gt;&lt;br /&gt;&amp;lt;\n&amp;gt;D: started = true, buf len = 182&amp;lt;\r&amp;gt;&lt;br /&gt;&amp;lt;\n&amp;gt;D: buf = &amp;lt;\r&amp;gt;&amp;quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;While the android transfer does not negotiate a new mtu after connection but uses a much larger buffer:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Android log output during transfer&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;quot;&amp;lt;\n&amp;gt;D: collect = 1483&amp;lt;\r&amp;gt;&lt;br /&gt;&amp;lt;\n&amp;gt;D: started = true, buf len = 495&amp;lt;\r&amp;gt;&lt;br /&gt;&amp;lt;\n&amp;gt;D: buf = &amp;lt;\r&amp;gt;&amp;quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;I also just realised that from my newer devices using nrf54l10 the device manager app has no trouble displaying Bootloader Name and Mode. Could a problem be there? As our own app already takes very long simply starting the update waiting for the bootloader name and mode.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Firmware Update from IOS</title><link>https://devzone.nordicsemi.com/thread/571776?ContentTypeID=1</link><pubDate>Wed, 30 Sep 2026 15:55:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:895843d9-2f94-4c6b-9764-41d0106ea14c</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Hi Vito,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Have you&amp;nbsp;tried setting&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP"&gt;CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP&lt;/a&gt;?&amp;nbsp;Does that help?&lt;/p&gt;
&lt;p&gt;Does it also happen to the nRF Device on the Android phone?&lt;/p&gt;
&lt;p&gt;Also, the device&amp;#39;s flash is a limiting factor. If it can&amp;#39;t write fast enough the data that is being sent over DFU / Bluetooth LE, increasing the number of buffers won&amp;#39;t do a thing, since the flash will be a higher limiting factor.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When it comes to the number of buffers:&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;There is a &amp;quot;McuMgr Params&amp;quot; command in the OS Group in McuMgr that returns the number and length of available buffers on the fw side. The app just reads that and applies it.&lt;/li&gt;
&lt;li&gt;One buffer is assumed to be for user outgoing notifications from the device to the phone. So if it claims 4, we use 3.&lt;/li&gt;
&lt;li&gt;The command also provides the length of the buffer. This allows sending longer SMP packets than the MTU allows. They are later reassembled on the device side. This saves quite a lot of time, as the SMP Header is 8 bytes per packet + some CBOR wrapping.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;If the command is not supported, the buffer size defaults to ATT MTU-3. Make sure it&amp;#39;s &amp;quot;big&amp;quot;. The bigger, the faster DFU. 498 recommended.&lt;/li&gt;
&lt;li&gt;The number of buffers can be set in code and override the McuMgr Params response if not supported.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Mind that it is the device that has to have the buffers in the configuration. The settings in the app should reflect the actual state. One can&amp;#39;t set the number of buffers in the app to 123 and expect the transfer to be immediate.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It would be great to provide logs from the McuMgr library on iOS. They should be produced in Xcode in your app. W&lt;span&gt;e would also like to know what the nRF Connect Device Manager app shows in the Device section at the top. It lists the params there.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Amanda H.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>