<?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>nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/46761/nrfconnect-app-on-ios-cannot-do-take-app-into-dfu-mode-with-sdk15-2</link><description>Hi, 
 nRFConnect is behaving differently for apps on different SDK versions. I am able to do a DFU via script something similar to the one here https://thegecko.github.io/web-bluetooth-dfu/examples/web.html . The app uses SDK 15.2. However, on testing</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 14 May 2019 14:59:31 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/46761/nrfconnect-app-on-ios-cannot-do-take-app-into-dfu-mode-with-sdk15-2" /><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/187048?ContentTypeID=1</link><pubDate>Tue, 14 May 2019 14:59:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e90fe9a-3862-45df-b46f-cfe8b8eefd4d</guid><dc:creator>bjorn-spockeli</dc:creator><description>&lt;p&gt;If you are not bonded with the iOS device you do not need the PM and you do not have to send any Service Changed notification as the nRF device in bootloader mode will have another address than the device in application mode. The nRF Connect app should look for advertisment packets from both addresses.&lt;/p&gt;
&lt;p&gt;If I could see the sniffer trace I would be able to see if the bootloader is changing the address or not and if the iOS device is attempting to connect to the bootloader or not.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/186764?ContentTypeID=1</link><pubDate>Mon, 13 May 2019 14:30:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:89315c6e-3493-4306-944b-ab5172b41ba9</guid><dc:creator>chaitz</dc:creator><description>&lt;p&gt;OK, so even with&amp;nbsp;NRF_DFU_BLE_REQUIRES_BONDS not defined, why cannot iOS do DFU/get notification unless peer manager is added to the application? What am I missing here?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/186752?ContentTypeID=1</link><pubDate>Mon, 13 May 2019 14:00:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ba54b385-6ef2-4dac-970e-3d76ea43f506</guid><dc:creator>bjorn-spockeli</dc:creator><description>&lt;p&gt;No, service changed indication should only be necessary if you are bonded with the iOS device. You can initiate a Service Changed Indication through the SD API, i.e.&amp;nbsp;sd_ble_gatts_service_changed()&lt;/p&gt;
&lt;p&gt;If you are not bonded the the Bootloader will increment the device address by one so that it appears as a &amp;quot;new&amp;quot; device&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#if (!NRF_DFU_BLE_REQUIRES_BONDS)
static uint32_t gap_address_change(void)
{
    uint32_t       err_code;
    ble_gap_addr_t addr;

    err_code = sd_ble_gap_addr_get(&amp;amp;addr);
    VERIFY_SUCCESS(err_code);

    /* Increase the BLE address by one when advertising openly. */
    addr.addr[0] += 1;

    err_code = sd_ble_gap_addr_set(&amp;amp;addr);
    VERIFY_SUCCESS(err_code);

    return NRF_SUCCESS;
}
#endif&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;So if you are not bonding to the iOS device and you do accept DFU from unbonded peers, then you should not need to use the peer manager.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/186727?ContentTypeID=1</link><pubDate>Mon, 13 May 2019 13:17:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:860ccf0b-282d-4824-b885-b858e001383c</guid><dc:creator>chaitz</dc:creator><description>&lt;p&gt;&lt;span&gt;NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS is set to 0 and we are using ble_dfu_unbonded.c.&amp;nbsp;So does this mean that peer manager is still needed for sending the service change indication?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/186691?ContentTypeID=1</link><pubDate>Mon, 13 May 2019 12:06:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c2c8bb0e-f9fa-4f79-ac58-85904ad57268</guid><dc:creator>bjorn-spockeli</dc:creator><description>&lt;p&gt;You can use our bootloader in two configurations; allow DFU from unbonded devices&amp;nbsp;&lt;span&gt;(use&amp;nbsp;&lt;/span&gt;&lt;span&gt;ble_dfu_unbonded.c&lt;/span&gt;&lt;span&gt;)&lt;/span&gt; or only allow DFU from bonded devices(use ble_dfu_bonded.c with&amp;nbsp;NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS in the Preprocessor Definitions) . If the latter configuration is chosen, then you need to use the Peer Manager, as the bootloader uses its API to retrieve peer data( encryption keys, identity resolving keys etc).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Peer Manager and its dependencies is about 15kB I think.&amp;nbsp;GATT table caching should only be an issue if you have bonded with the iOS device.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/186690?ContentTypeID=1</link><pubDate>Mon, 13 May 2019 12:06:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:065c3db8-d176-4890-8f69-b281650d4273</guid><dc:creator>bjorn-spockeli</dc:creator><description>&lt;p&gt;You can use our bootloader in two configurations; allow DFU from unbonded devices&amp;nbsp;&lt;span&gt;(use&amp;nbsp;&lt;/span&gt;&lt;span&gt;ble_dfu_unbonded.c&lt;/span&gt;&lt;span&gt;)&lt;/span&gt; or only allow DFU from bonded devices(use ble_dfu_bonded.c with&amp;nbsp;NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS in the Preprocessor Definitions) . If the latter configuration is chosen, then you need to use the Peer Manager, as the bootloader uses its API to retrieve peer data( encryption keys, identity resolving keys etc).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Peer Manager and its dependencies is about 15kB I think.&amp;nbsp;GATT table caching should only be an issue if you have bonded with the iOS device.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/186663?ContentTypeID=1</link><pubDate>Mon, 13 May 2019 11:19:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d3f65f4e-2a05-47e5-ad14-6866d6da9879</guid><dc:creator>chaitz</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi Bj&amp;oslash;rn,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks for the response. I will send you the sniffer logs soon. Meanwhile, I added peer manager (it was missing somehow!) to the applications and it seems to be working now. I am still validating this change. Can you please let me know whether it is mandatory to have peer manager? How much flash does it use and I see that it distributes service change indications - this will affect DFU isn&amp;#39;t it? What is the effect of disabling peer manager?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/186582?ContentTypeID=1</link><pubDate>Mon, 13 May 2019 08:17:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c6ebb1ea-e26d-4a8c-979d-62cccff1f406</guid><dc:creator>bjorn-spockeli</dc:creator><description>&lt;p&gt;Hi Chaitz,&lt;/p&gt;
&lt;p&gt;1. By subscribe you mean allowing notifications by writing to the CCCD of the characteristic? Did you capture a sniffer trace of the LightBlue app as well?&lt;/p&gt;
&lt;p&gt;2. Can you attach the sniffer trace?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. If the nRF device has been put in bootloader mode and the central that initiated the DFU procedure does not reconnect, then the bootloader will reset due to inactivity.&lt;/p&gt;
&lt;p&gt;To me it could sound like the central(i.e. iOS device) is not connecting to the nRF device after it has triggered it to switch to bootloader mode from the application. This switch is done by the the application writing a magic number to a retained register, resetting the device and then the bootloader, which is always run on boot will check this retained register. The bootloader will then enable the SoftDevice and populate the GATT table with the DFU service.&lt;/p&gt;
&lt;p&gt;Another issue is that the device will still have the physical address and the GATT table of the bootloader will not be identical to the application which the iOS device has been connected to, so the bootloader should send a Service Changed notification to indicate that the GATT table has changed and that a new service discovery must be performed.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So it could also be that theiOS device has cached the GATT table of the application and is using those handles when communicating with the nRF Device. I will know more if I can see the sniffer trace. Attaching any debug logs from the nRF device and the nRF Connect app would also be helpful.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/186150?ContentTypeID=1</link><pubDate>Thu, 09 May 2019 10:57:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:322e7b2a-6298-405d-89c9-7c71f315008f</guid><dc:creator>chaitz</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi Bj&amp;oslash;rn&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Apologies for the delayed response. I have the following observations&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1. The characteristics in the app cannot be subscribed to using the nrfConnect app, however it works fine with LightBlue app.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2. Using the sniffer I see that there are errors in ATT protocol - 0x0a attribute not found&amp;#39;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;3. Also the slave device disconnects from nrfConnect after a certain interval of time.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Any clues why this happens with nrfConnect/iOS?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFConnect App on iOS cannot do take app into DFU mode with SDK15.2</title><link>https://devzone.nordicsemi.com/thread/185170?ContentTypeID=1</link><pubDate>Fri, 03 May 2019 12:03:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c88eb221-f0c1-4cd4-8a66-ddb2da164320</guid><dc:creator>bjorn-spockeli</dc:creator><description>&lt;p&gt;Hi Chaitz,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;No, I have not seen this issue before. Our mobile applications should be compatible with the latest version of our SDK as well as backwards-compatible with older versions of the SDK.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Can you provide a sniffer trace of the on-air packets between the nRF device running SDK v15.2.0 and the iOS device? You can use our nRF Sniffer to do the trace, see&amp;nbsp;&lt;a href="https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Sniffer"&gt;https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Sniffer&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Any log output from the nRF device or the nRF connect app on the iOS side would also be helpful.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;
&lt;p&gt;Bjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>