<?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>DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/54716/dfu-issues-on-android-10</link><description>Hi, 
 We are currently testing DFU upgrades on Android. In my current setup I have two different phones, a Sony one running Android 8 and a OnePlus running Android 10. 
 The bootloader uses bonds and the application uses the buttonless DFU service. 
</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 02 Dec 2019 15:21:30 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/54716/dfu-issues-on-android-10" /><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/223112?ContentTypeID=1</link><pubDate>Mon, 02 Dec 2019 15:21:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:819d3fd5-ce05-4aad-87f4-a9988e340e66</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi Anton,&lt;/p&gt;
&lt;p&gt;Good question. It is not logical in my mind to send it before&amp;nbsp;BLE_GAP_EVT_CONN_SEC_UPDATE, since that is when we know we are connected to a known peer (which has hopefully enabled service changed indications). You could try to send it before, but it anyway should not be before the peer has enabled indication&amp;nbsp;(since you cannot know it is the same old peer before the link is encrypted). You could try to send in on the&amp;nbsp;BLE_GAP_EVT_CONNECTED, or start an app_timer to send it a certain delay after.&lt;/p&gt;
&lt;p&gt;I am surprised that the phone handles it like this. It would be interesting to know why this is so slow on the phone side, but no progress there yet.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222965?ContentTypeID=1</link><pubDate>Mon, 02 Dec 2019 08:58:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:60b39f87-2cf5-4c12-a766-dfa6f0da83e2</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Hi Einar,&lt;/p&gt;
&lt;p&gt;Thanks for the update. We will try both solutions and see what works best.&lt;/p&gt;
&lt;p&gt;Regarding sending a service changed indication earlier than BLE_GATTS_EVT_SYS_ATTR_MISSING or&amp;nbsp;BLE_GAP_EVT_CONN_SEC_UPDATE, do you have any suggestions on what event would be appropriate to use for sending the service changed indication?&lt;/p&gt;
&lt;p&gt;Br,&lt;br /&gt;Anton&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222792?ContentTypeID=1</link><pubDate>Fri, 29 Nov 2019 12:27:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bc970a86-735b-449f-9331-9dee7d7e9d03</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Looking more closely at this with one of our Android developers he commented hat from the log is seems like the phone did receive SC indication, as it switched to 7.5 ms connection interval (which it does for service discovery), but it did receive it too late. The DFU service has already received cached services from the system and tries to use them.&amp;nbsp;Service discovery was delayed 1.6 sec, but that seems not to be enough for the device, as 300 ms later the SC indication comes. Had it come earlier, the system would have cleared the cache, performed service discovery and returned the new services to the DFU library.&lt;/p&gt;
&lt;p&gt;You can try to fix this in your app by&amp;nbsp;including the library as a module, not from jcenter, and modify&amp;nbsp;&lt;a href="https://github.com/NordicSemiconductor/Android-DFU-Library/blob/58bd4c2aec66b85e779d8be7d6e05ca8a47cb1ed/dfu/src/main/java/no/nordicsemi/android/dfu/DfuBaseService.java#L881"&gt;this line&lt;/a&gt;&amp;nbsp;to be &amp;gt; 2000 ms. You can also try fixing in the bootloader by always sending a service changed indication earlier (if enabled), i.e. before getting the&amp;nbsp;BLE_GATTS_EVT_SYS_ATTR_MISSING or&amp;nbsp;BLE_GAP_EVT_CONN_SEC_UPDATE event.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222557?ContentTypeID=1</link><pubDate>Thu, 28 Nov 2019 09:46:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0e0cab7b-140c-4313-bd7e-1516f82c38b1</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Thanks. All looks good here as far as I can see. I am wondering if there could be a timing issue in the Android DFU library itself, as you suggested earlier. Perhaps &lt;a href="https://github.com/NordicSemiconductor/Android-DFU-Library/commit/9c6885b22c958787199eb3559f0f3b4e0552d7d6"&gt;fixed by this&lt;/a&gt;. I am checking with the library developer and will get back to you.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222523?ContentTypeID=1</link><pubDate>Thu, 28 Nov 2019 08:03:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3c4bb889-cd13-44a2-9037-3d35c133d0c2</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/2816.sniffer.pcapng"&gt;devzone.nordicsemi.com/.../2816.sniffer.pcapng&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the sniffer trace from wireshark. At package 6130 the connection to the bootloader starts.&lt;/p&gt;
&lt;p&gt;Hopefully you can read the data, I&amp;#39;m not very experienced with wireshark so I dont know if this is the correct way to do it.&lt;/p&gt;
&lt;p&gt;The sequence is here is write to DFU characteristic to &amp;quot;manually&amp;quot; put it in bootloader and then connect.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222368?ContentTypeID=1</link><pubDate>Wed, 27 Nov 2019 13:32:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:17ba6150-2926-40c2-bae8-8f8972bf7521</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I see. Then I think it would be very useful with a sniffer trace and a log from the bootloader to know exactly what is going on (we have based it on assumptions up to now).&lt;/p&gt;
&lt;p&gt;Regarding problem 2, that is also a bit of a mystery. We may get a bit close if you look at the implementation in&amp;nbsp;components\libraries\bootloader\dfu\nrf_dfu_svci_handler.c, an put breakpoints on all conditions that cause a NRF_ERROR_INVALID_STATE return value. I fail to see the reason, but reading &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/42828/request-to-enter-bootloader-mode-failed-asynchronously"&gt;this thread&lt;/a&gt; might suggest a link with problem 1.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222295?ContentTypeID=1</link><pubDate>Wed, 27 Nov 2019 10:29:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6f81842a-497c-4977-bde9-b0a84c638729</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Here&amp;#39;s the changes I made to nrf_dfu_ble.c. I copied the service_changed_cccd function and In case the softdevice call to service_changed fails I call that function. If I understand the code in gatt_cache_manager.c that&amp;#39;s how it works there aswell.&lt;/p&gt;
&lt;p&gt;It does not seem to help.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static ret_code_t service_changed_cccd(uint16_t conn_handle, uint16_t * p_cccd)
{
    bool       sc_found = false;
    uint16_t   end_handle;

    ret_code_t err_code = sd_ble_gatts_initial_user_handle_get(&amp;amp;end_handle);
    ASSERT(err_code == NRF_SUCCESS);

    for (uint16_t handle = 1; handle &amp;lt; end_handle; handle++)
    {
        ble_uuid_t uuid;
        ble_gatts_value_t value = {.p_value = (uint8_t *)&amp;amp;uuid.uuid, .len = 2, .offset = 0};

        err_code = sd_ble_gatts_attr_get(handle, &amp;amp;uuid, NULL);
        if (err_code != NRF_SUCCESS)
        {
            return err_code;
        }
        else if (!sc_found &amp;amp;&amp;amp; (uuid.uuid == BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED))
        {
            sc_found = true;
        }
        else if (sc_found &amp;amp;&amp;amp; (uuid.uuid == BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG))
        {
            value.p_value = (uint8_t *)p_cccd;
            return sd_ble_gatts_value_get(conn_handle, handle, &amp;amp;value);
        }
    }
    return NRF_ERROR_NOT_FOUND;
}


#if (NRF_DFU_BLE_REQUIRES_BONDS)
static uint32_t service_changed_send(void)
{
    uint32_t err_code;

    NRF_LOG_DEBUG(&amp;quot;Sending Service Changed indication&amp;quot;);

    err_code = sd_ble_gatts_sys_attr_set(m_conn_handle,
                                         m_peer_data.sys_serv_attr,
                                         sizeof(m_peer_data.sys_serv_attr),
                                         BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS);
    VERIFY_SUCCESS(err_code);

    err_code = sd_ble_gatts_sys_attr_set(m_conn_handle,
                                         NULL,
                                         0,
                                         BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS);
    VERIFY_SUCCESS(err_code);

    err_code = sd_ble_gatts_service_changed(m_conn_handle, m_dfu.service_handle, 0xFFFF);

    if (   (err_code == BLE_ERROR_INVALID_CONN_HANDLE)
        || (err_code == NRF_ERROR_INVALID_STATE)
        || (err_code == NRF_ERROR_BUSY))
    {
        uint16_t cccd;
        err_code = service_changed_cccd(m_conn_handle, &amp;amp;cccd);
        if ((err_code == NRF_SUCCESS) &amp;amp;&amp;amp; cccd)
        {
            NRF_LOG_DEBUG(&amp;quot;Service changed cccd returned err_code: %d&amp;quot;, err_code);
            // Possible ATT_MTU exchange ongoing.
            // Do nothing, treat as busy.
            return err_code;
        }
        else
        {
            if (err_code != NRF_SUCCESS)
            {
                NRF_LOG_WARNING(&amp;quot;Client did not have the Service Changed indication set to enabled.&amp;quot;
                        &amp;quot;Error: 0x%08x&amp;quot;, err_code);
                err_code = NRF_SUCCESS;

                //NRF_LOG_DEBUG(&amp;quot;Unexpected error when looking for service changed CCCD: %s&amp;quot;,
                //              nrf_strerror_get(err_code));
            }
            // CCCDs not enabled or an error happened. Drop indication.
            // Fallthrough.
        }
        /* These errors can be expected when trying to send a Service Changed indication */
        /* if the CCCD is not set to indicate. Thus, set the returning error code to success. */
    }

    return err_code;
}
#endif
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The service changed notification is still sent from the events (no changes there):&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;case BLE_GAP_EVT_CONN_SEC_UPDATE:
case BLE_GATTS_EVT_SYS_ATTR_MISSING:
    {
        #if (NRF_DFU_BLE_REQUIRES_BONDS)
            err_code = service_changed_send();
        #else
            err_code = sd_ble_gatts_sys_attr_set(p_gap-&amp;gt;conn_handle, NULL, 0, 0);
        #endif
        APP_ERROR_CHECK(err_code);
        NRF_LOG_DEBUG(&amp;quot;Finished handling conn sec update&amp;quot;);
    } break;

&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222273?ContentTypeID=1</link><pubDate>Wed, 27 Nov 2019 10:06:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:36c9a2e0-6513-4e13-bdcd-e654451fb4a0</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;I will implement the fix and see what happens.&lt;/p&gt;
&lt;p&gt;Regarding problem 2:&lt;/p&gt;
&lt;p&gt;ret = nrf_dfu_set_peer_data(&amp;amp;m_peer_data);&lt;/p&gt;
&lt;p&gt;is the function that returns INVALID_STATE, row 178 in ble_dfu_bonded.c&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222248?ContentTypeID=1</link><pubDate>Wed, 27 Nov 2019 08:56:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5f8980fc-9150-4397-9b55-d4ac308cd3b5</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The service changed indication in the bootloader in SDK 15.0 is sent by the call to&amp;nbsp;service_changed_send() on line 882 in nrf_dfu_ble.c.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222113?ContentTypeID=1</link><pubDate>Tue, 26 Nov 2019 13:36:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5fcef420-f916-4702-a8c8-7f1a409922ac</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I see. We could confirm with a sniffer trace, but your tests strengthen the theory of a timing difference. Different mobile devices, operating systems, SW/DFU library changes, all affect timing slightly. The fix is probably to do the &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/51172/service-changed-characteristic-not-enabled-on-ios"&gt;same workaround as you did in your application&lt;/a&gt; in the bootloader as well.&lt;/p&gt;
&lt;p&gt;- In the application I currently trigger pm_local_database_has_changed() in the peer manager event handler when we get the event CACHE_APPLY_FAILED, If I understand you correctly I should implement the same in the bootloader?&lt;/p&gt;
&lt;p&gt;Currently the bootloader does not make use of the Peer Manager.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/222009?ContentTypeID=1</link><pubDate>Tue, 26 Nov 2019 08:33:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e5425f54-8459-4e9a-bae4-0a34a0ae3579</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I see. We could confirm with a sniffer trace, but your tests strengthen the theory of a timing difference. Different mobile devices, operating systems, SW/DFU library changes, all affect timing slightly. The fix is probably to do the &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/51172/service-changed-characteristic-not-enabled-on-ios"&gt;same workaround as you did in your application&lt;/a&gt; in the bootloader as well.&lt;/p&gt;
&lt;p&gt;For problem 2 to you get a return value 8, which is&amp;nbsp;NRF_ERROR_INVALID_STATE. From which function?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221879?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2019 14:04:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b0fdb3c8-cd4c-44c2-9d3a-b8316894f417</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;So I just finished a longer test session.&lt;/p&gt;
&lt;p&gt;It seems like the GATT Service changed notifications is not working properly in the bootloader.&lt;/p&gt;
&lt;p&gt;If I take these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the application, write to the DFU characteristic to enter bootloader&lt;/li&gt;
&lt;li&gt;Enters bootloader&lt;/li&gt;
&lt;li&gt;Reconnect&lt;/li&gt;
&lt;li&gt;Still shows the attribute table from the application. Logs indicate that the Indication was sent successfully (returns NRF_SUCCESS inside nrf_dfu_ble.c)&lt;/li&gt;
&lt;li&gt;Disconnect and then reconnect. Now displays the DFU service/characteristic (Sometimes requires more than one disconnect/reconnect in order to display the new attribute table).&lt;/li&gt;
&lt;li&gt;Start FW upload&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With the above sequence DFU was successful 10 out of 10 tries.&lt;/p&gt;
&lt;p&gt;Automatic DFU from the application fails on either GATT_INVALID_HANDLE or GATT_ERROR which can be explained by the behavior above.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221843?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2019 12:48:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5c080fba-ecac-47e9-87d9-f4010710b91a</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Update on problem 2:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;info&amp;gt; app: Retriving Peer data returned err_code: 0
&amp;lt;info&amp;gt; app: Setting peer data for bootloader returned err_code: 8
&amp;lt;error&amp;gt; app: Request to enter bootloader mode failed asynchroneously.
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221812?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2019 10:36:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6d920683-1317-41f4-a6e1-e9646c5be960</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Update regarding problem 1:&lt;/p&gt;
&lt;p&gt;Logs indicate that the Service Changed notifications are working correctly in the bootloader:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;debug&amp;gt; nrf_dfu_ble: Connected
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST.
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_DATA_LENGTH_UPDATE (27, max_rx_time 328).
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_PHY_UPDATE_REQUEST.
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_PHY_UPDATE (RX:2, TX:2, status:0)
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE
&amp;lt;debug&amp;gt; nrf_dfu_ble: max_conn_interval: 12
&amp;lt;debug&amp;gt; nrf_dfu_ble: min_conn_interval: 12
&amp;lt;debug&amp;gt; nrf_dfu_ble: slave_latency: 0
&amp;lt;debug&amp;gt; nrf_dfu_ble: conn_sup_timeout: 600
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_SEC_INFO_REQUEST
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_CONN_SEC_UPDATE
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GATTS_EVT_SYS_ATTR_MISSING
&amp;lt;debug&amp;gt; nrf_dfu_ble: Sending Service Changed indication
&amp;lt;debug&amp;gt; nrf_dfu_ble: Service changed notification returned err_code: 0
&amp;lt;debug&amp;gt; nrf_dfu_ble: Finished handling conn sec update
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE
&amp;lt;debug&amp;gt; nrf_dfu_ble: max_conn_interval: 6
&amp;lt;debug&amp;gt; nrf_dfu_ble: min_conn_interval: 6
&amp;lt;debug&amp;gt; nrf_dfu_ble: slave_latency: 0
&amp;lt;debug&amp;gt; nrf_dfu_ble: conn_sup_timeout: 500
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE
&amp;lt;debug&amp;gt; nrf_dfu_ble: max_conn_interval: 12
&amp;lt;debug&amp;gt; nrf_dfu_ble: min_conn_interval: 12
&amp;lt;debug&amp;gt; nrf_dfu_ble: slave_latency: 0
&amp;lt;debug&amp;gt; nrf_dfu_ble: conn_sup_timeout: 600
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE
&amp;lt;debug&amp;gt; nrf_dfu_ble: max_conn_interval: 6
&amp;lt;debug&amp;gt; nrf_dfu_ble: min_conn_interval: 6
&amp;lt;debug&amp;gt; nrf_dfu_ble: slave_latency: 0
&amp;lt;debug&amp;gt; nrf_dfu_ble: conn_sup_timeout: 500
&amp;lt;debug&amp;gt; nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE
&amp;lt;debug&amp;gt; nrf_dfu_ble: max_conn_interval: 12
&amp;lt;debug&amp;gt; nrf_dfu_ble: min_conn_interval: 12
&amp;lt;debug&amp;gt; nrf_dfu_ble: slave_latency: 0
&amp;lt;debug&amp;gt; nrf_dfu_ble: conn_sup_timeout: 600
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Edit:&lt;br /&gt;Another intresting observation. According to Google Play nRF Connect uses:&lt;/p&gt;
&lt;p&gt;- DFU Library 1.9.1 (improved DFU performance with devices based on SDK 15.x and 16)&lt;/p&gt;
&lt;p&gt;Using nRF Connect DFU I received GATT ERROR (0x85)&lt;/p&gt;
&lt;p&gt;Then I tried upgrading using nRF Toolbox which uses DFU Library 1.9.0 which went successfully without any issues.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221804?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2019 10:20:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:26cacd07-2652-4996-9707-465e48ca8c01</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Problem 1: This is the exact same issue.&amp;nbsp;But remember that this needs to work both in the application and in the bootloader. Have you done anything with this issue in the bootloader?&lt;/p&gt;
&lt;p&gt;- No I have not modified the bootloader source. I can try to debug it and see if It successfully sends Service Changed Notifications before I do any modifications. In general I dont like to modify SDK files since it becomes hard to keep track of the changes which could be dangerous in the long run, especially if I do the changes myself (perhaps poor solutions).&lt;/p&gt;
&lt;p&gt;Problem 2:&lt;/p&gt;
&lt;p&gt;I will try to debug it further on the nRF side&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221796?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2019 10:00:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2dec9a50-a696-494e-992e-db5e9a1f9140</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Problem 1: This is the exact same issue.&amp;nbsp;But remember that this needs to work both in the application and in the bootloader. Have you done anything with this issue in the bootloader?&lt;/p&gt;
&lt;p&gt;Problem 2: I see. Then I suggest you debug on the nRF side to see what happens before printing the &amp;quot;bootloader mode failed asynchronously&amp;quot; error message, as there are several issues that can lead to this being printed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221788?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2019 09:47:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2ec9941f-b825-4583-acc0-1239d0e6aee4</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Hi Einar,&lt;/p&gt;
&lt;p&gt;Problem 1:&lt;/p&gt;
&lt;p&gt;I dont think Service changed colliding with MTU exchange is a problem. There was a bug in SDK V15.0 that I have resolved with help from your team that skipped Service changed indications if there was an ongoing MTU Exchange.&lt;br /&gt;&lt;br /&gt;You can see that ticket here: &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/51172/service-changed-characteristic-not-enabled-on-ios"&gt;Service changed indication MTU exchange&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Problem 2:&lt;/p&gt;
&lt;p&gt;The logs from the nRF52832 application that I provided in the post are me trying to write to the characteristic manually&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221784?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2019 09:41:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7c49cb14-dae5-419c-b236-1ed724a6e5d6</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I have not found any reports of&amp;nbsp;similar issues with Android 10 specifically, but a possible explanation is if Service changed collides with MTU exchange. The timing can be different between phones and SW versions, so perhaps you incidentally see this on Android 10 on the OnePlus. If so, this could actually be a similar issue in your problem 1 and 2. Sniffer traces could be useful to see if this theory makes sense.&lt;/p&gt;
&lt;p&gt;For problem 2, can you try to trigger DFU mode by manually writing to the DFU characteristic in the nRF Connect app? Doing it manually should change the timing, and it would be interesting to see if you still get the issue with &amp;quot;Request to enter bootloader mode failed asynchroneously&amp;quot; or not.&lt;/p&gt;
&lt;p&gt;For problem 1, it would be good to delay the serviced changed indication from the bootloader do see if that fixes the issue.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221746?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2019 08:03:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:29e222a7-b7c0-4a66-a9b7-16537801821a</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Hi again,&lt;/p&gt;
&lt;p&gt;Here is another screenshot from my OnePlus 5 running Android 9, attempting DFU through the NRF Connect App.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve never had any issues on this phone before.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/1040x240/__key/communityserver-discussions-components-files/4/3750.Screenshot_5F00_Service_5F00_changed.jpg" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221559?ContentTypeID=1</link><pubDate>Fri, 22 Nov 2019 12:59:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e6234ab-a0d5-44ea-ba72-0fb165f698af</guid><dc:creator>AntonHellbe</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Doubled checked that three or four times now: NRF_SDH_BLE_SERVICE_CHANGED 1.&lt;/p&gt;
&lt;p&gt;I found a similar issue here on devzone where the suggested solution was to move the DFU service to the top of the attribute table to line it up with the bootloader attribute table. In the application we are making changes to the attribute table quite often.&lt;/p&gt;
&lt;p&gt;Accidently closed the tab with that issue so I dont have think link at the moment, will try to find it again.&lt;/p&gt;
&lt;p&gt;Also In the application I have given the Peer Manager control over Service Changed Indications, could that have any consequences?&lt;/p&gt;
&lt;p&gt;Edit: &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/38801/android-secure-dfu-and-bonds/150140#150140"&gt;Found the link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;/ Anton&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU issues on Android 10</title><link>https://devzone.nordicsemi.com/thread/221556?ContentTypeID=1</link><pubDate>Fri, 22 Nov 2019 12:52:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9b625ff9-4e60-4cb2-a4ff-c5b1ce2ac941</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Both these issues could be explained by missing service changed. Have you made sure the&amp;nbsp;NRF_SDH_BLE_SERVICE_CHANGED is set to the same value in both the applications and bootloaders sdk_config.h? What is it?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>