<?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>A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/36346/a-problem-on-buttonless-dfu-bonding-valid</link><description>Currently, we are testing that 「buttonless DFU + Bonding valid」 in our App. 
 But After performing F / W Update with DFU, other BLE Service became invisible.(※2) 
 So, as a result of comparing the log of the Normal Project(No problem) with the log of</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 31 Aug 2018 13:20:20 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/36346/a-problem-on-buttonless-dfu-bonding-valid" /><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/146791?ContentTypeID=1</link><pubDate>Fri, 31 Aug 2018 13:20:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:41584b01-888f-4674-a996-91324d933de0</guid><dc:creator>cw-park</dc:creator><description>&lt;p&gt;You don&amp;rsquo;t know about&amp;nbsp;&lt;span&gt;NRF_BLE_GATT_BLE_OBSERVER_PRIO .&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;OK. thanks.&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: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/146765?ContentTypeID=1</link><pubDate>Fri, 31 Aug 2018 12:26:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ecdc4e2e-9305-48d6-a31f-2d5e4aa27a07</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;I&amp;#39;m not sure why changing&amp;nbsp;&lt;span&gt;NRF_BLE_GATT_BLE_OBSERVER_PRIO&amp;nbsp;can solve the problem.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;By &amp;quot;timing delay&amp;quot; I&amp;#39;m not talking about a loop delay, but about to start a timer and only trigger&amp;nbsp;sd_ble_gattc_exchange_mtu_request&amp;nbsp;() after a period of time.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You are saying that by commenting out&amp;nbsp;sd_ble_gattc_exchange_mtu_request&amp;nbsp;() you still have trouble&amp;nbsp;when calling sd_ble_gatts_service_changed() ? Could you check which error code you have ? A &lt;a href="https://www.nordicsemi.com/eng/Products/Bluetooth-Smart-Bluetooth-low-energy/nRF-Sniffer/"&gt;sniffer trace&lt;/a&gt; would really help as well.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/146681?ContentTypeID=1</link><pubDate>Fri, 31 Aug 2018 08:57:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:733ccf3e-e067-417f-860b-9eccf014bd27</guid><dc:creator>cw-park</dc:creator><description>&lt;p&gt;Hi Hung.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;I understood what you said. Thank you.&lt;/p&gt;
&lt;p&gt;And I comment out the 「sd_ble_gattc_exchange_mtu_request ()」 from 「on_connected_evt ()」 and tried the test.&lt;/p&gt;
&lt;p&gt;For this reason too, the problem seems to have occurred in 「sd_ble_gatts_service_changed ()」.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;However, I want to take permanent measures against this problem.&lt;/p&gt;
&lt;p&gt;In other words, because of delay is not good in event driven processing based on interrupt, The following measures were taken.&lt;/p&gt;
&lt;p&gt;There was no problem with the test.&lt;/p&gt;
&lt;p&gt;・#define NRF_BLE_GATT_BLE_OBSERVER_PRIO 1 &amp;rarr;&amp;nbsp;#define NRF_BLE_GATT_BLE_OBSERVER_PRIO 2&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;But I am curious about the effect on this.&lt;/p&gt;
&lt;p&gt;Please let me know if there are any problems.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/146546?ContentTypeID=1</link><pubDate>Thu, 30 Aug 2018 14:29:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:72758010-6cb7-43cf-9ef8-396592512ee3</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Chan,&lt;/p&gt;
&lt;p&gt;BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST is the event when the central (iphone) request MTU exchange. We are not talking about that, we are talking about the opposite, the nRF5 requests MTU exchange.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can simply test this by comment out&amp;nbsp;sd_ble_gattc_exchange_mtu_request() call inside&amp;nbsp;on_connected_evt() in nrf_ble_gatt.c to test if it works.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If it works, then you can think of adding a timing delay before calling that function, so that in case the central didn&amp;#39;t do a MTU exchange request, we can request from our side.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/146270?ContentTypeID=1</link><pubDate>Wed, 29 Aug 2018 10:30:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4e4efaae-4100-4f11-a787-2070fbc080e9</guid><dc:creator>cw-park</dc:creator><description>&lt;p&gt;Hi Hung.&lt;/p&gt;
&lt;p&gt;I am sorry that confirmation is delayed.&lt;/p&gt;
&lt;p&gt;when 「NRF_SDH_BLE_GATT_MAX_MTU_SIZE」 is defined as 247,&lt;/p&gt;
&lt;p&gt;Rather, the Event of「BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST」does not occur.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;(Conversely, when 「NRF_SDH_BLE_GATT_MAX_MTU_SIZE」 is defined as 23, the Event of 「BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST」occurs).&lt;/p&gt;
&lt;p&gt;so that Because of &amp;quot;An ATT_MTU exchange is ongoing&amp;quot;, The NRF_ERROR_INVALID_STATE error will not occur.&lt;/p&gt;
&lt;p&gt;It seems to be a different timing problem.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;By the way,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;I would like to test the following proposal separately.&lt;/p&gt;
&lt;p&gt;I would be grateful if you could give me a more specific method.&lt;/p&gt;
&lt;p&gt;「My suggestion is to modify the code to delay the MTU exchange. 」&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140742?ContentTypeID=1</link><pubDate>Thu, 19 Jul 2018 20:13:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dcd78497-97e4-4da3-a513-43e3908736ed</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Chan,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think we found the root cause of the issue. When you set the MTU to something else not the default that the iPhone set when connected, the nrf_ble_gatt.c will try to request&amp;nbsp;sd_ble_gattc_exchange_mtu_request() immediately right after CONNECTED event.&amp;nbsp;&lt;br /&gt;This process will take some time, and if we call&amp;nbsp;sd_ble_gatts_service_changed() right after that call we will receive error 9x08&amp;nbsp;NRF_ERROR_INVALID_STATE. In the description of&amp;nbsp;sd_ble_gatts_service_changed() you can find:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true:&lt;br /&gt; * - Invalid Connection State&lt;br /&gt; * - Notifications and/or indications not enabled in the CCCD&lt;br /&gt; * - An ATT_MTU exchange is ongoing&lt;br /&gt;&lt;br /&gt;My suggestion is to modify the code to delay the MTU exchange after we finish with sending service changed indication.&amp;nbsp;&lt;br /&gt;I will report this to R&amp;amp;D to get it fixed in the future.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140473?ContentTypeID=1</link><pubDate>Wed, 18 Jul 2018 03:57:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b19242c3-29f4-4c02-ac0e-e8aff81c40a8</guid><dc:creator>cw-park</dc:creator><description>&lt;p&gt;Hi Hung.&lt;/p&gt;
&lt;p&gt;・「Could you confirm if you modify the buttonless dfu example in the SDK to have MTU size to 247, you see the same problem ?&amp;nbsp;if you can check that, we can reproduce the issue here and find out what could be the wrong.」&lt;/p&gt;
&lt;p&gt;--&amp;gt; I tested. Also in the buttonless dfu example, if you change the MTU size to 247, this problem occurs.&lt;br /&gt;I hope you test it out.&lt;/p&gt;
&lt;p&gt;Since the problem is reproducible, please let us know which part is the problem.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;※&lt;span&gt;Which phone did you use ?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; I used iPhone X.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140424?ContentTypeID=1</link><pubDate>Tue, 17 Jul 2018 15:23:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2fc45de3-ba01-4e65-bb56-4b7e5a0e8550</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Chan,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for updating us.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Could you confirm if you modify the buttonless dfu example in the SDK to have MTU size to 247, you see the same problem ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you can check that, we can reproduce the issue here and find out what could be the wrong. Which phone did you use ?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140360?ContentTypeID=1</link><pubDate>Tue, 17 Jul 2018 09:53:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6e7762b4-45b7-40a8-80db-204e63b3f4b8</guid><dc:creator>cw-park</dc:creator><description>&lt;p&gt;Hi Hung Bui.&lt;/p&gt;
&lt;p&gt;・「&lt;span&gt;You may need to dig deeper, and check on the first time booting up,after a DFU, would the new firmware be able to read the&amp;nbsp;peer information data and get&amp;nbsp;p_service_changed_pending = 1&amp;nbsp; ? or not.&amp;nbsp;&lt;/span&gt;」&lt;/p&gt;
&lt;p&gt;--&amp;gt;I Checked. it was&amp;nbsp;&lt;span&gt;p_service_changed_pending&amp;nbsp; = 0.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;・「&lt;span&gt;Maybe you put a break point in right after this printed out:&amp;nbsp;Finished updating Service Changed indication for peers&amp;nbsp; , and check in flash if the data is written correctly. (you can simply dump the flash content to a hex and compare 2 hexes, before and after you trigger Start DFU)&amp;nbsp;&lt;/span&gt;」&lt;/p&gt;
&lt;p&gt;--&amp;gt; I did.&amp;nbsp;But When comparing HEX Dump,Because i do not know the storage address (because it saved the data with pdb_raw_store), I could not identify the location of p_service_changed_pending.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;・「&lt;span&gt;I assume you don&amp;#39;t change attribute table&lt;/span&gt;」&lt;/p&gt;
&lt;p&gt;--&amp;gt;&amp;nbsp;Thank you.&amp;nbsp;I looked at this part.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After all, the cause was the definition of &amp;quot;NRF_SDH_BLE_GATT_MAX_MTU_SIZE&amp;quot;.&lt;/p&gt;
&lt;p&gt;To increase the transfer speed, set the MTU size to I changed it from 23 to 247.&lt;/p&gt;
&lt;p&gt;When I restored it(247 -&amp;gt; 23),&lt;br /&gt;&amp;middot; PM_EVT_SERVICE_CHANGED_IND_CONFIRMED&lt;br /&gt;&amp;middot; PM_EVT_PEER_DATA_UPDATE_SUCCEEDED&lt;br /&gt;An event occurred. it&amp;#39;s OK.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;By the way, I have the following questions so please check.&lt;br /&gt;1) First of all, why does this part cause this problem phenomenon?&lt;/p&gt;
&lt;p&gt;2) Next, in order to increase the transfer speed, I would like to maintain the MTU size as 247,&lt;br /&gt;How can I deal with it?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140259?ContentTypeID=1</link><pubDate>Mon, 16 Jul 2018 16:01:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d3f0ea23-f5e1-4f91-a885-b7ec18f6c040</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;You may need to dig deeper, and check on the first time booting up,after a DFU, would the new firmware be able to read the&amp;nbsp;peer information data and get&amp;nbsp;p_service_changed_pending = 1&amp;nbsp; ? or not. Maybe you put a break point in right after this printed out:&amp;nbsp;Finished updating Service Changed indication for peers&amp;nbsp; , and check in flash if the data is written correctly. (you can simply dump the flash content to a hex and compare 2 hexes, before and after you trigger Start DFU)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You mentioned that you didn&amp;#39;t have trouble when testing with the buttonless example ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I assume you don&amp;#39;t change attribute table or anything, simply DFU update the same firmware ?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140115?ContentTypeID=1</link><pubDate>Sat, 14 Jul 2018 12:52:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:828c6f06-9ca4-465c-9984-7ebd58c72c28</guid><dc:creator>cw-park</dc:creator><description>&lt;p&gt;&lt;span&gt;・「Did you do bonding&amp;nbsp; in your application and in your DFU bootloader ? If you do bonding, have you set&amp;nbsp;NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS = 1&amp;nbsp; ? and use ble_dfu_bonded.c in your application code ?」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Yes, of cource.No Problem.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;For Application,&lt;/p&gt;
&lt;p&gt;#define BLE_DFU_ENABLED 1&lt;/p&gt;
&lt;p&gt;#define NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS 1&lt;/p&gt;
&lt;p&gt;#define NRF_SDH_BLE_SERVICE_CHANGED 1&lt;/p&gt;
&lt;p&gt;I am defining it.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;In the case of DFU,&lt;/p&gt;
&lt;p&gt;#define NRF_BL_DFU_ENTER_METHOD_BUTTONLESS 1&lt;/p&gt;
&lt;p&gt;#define NRF_DFU_BLE_REQUIRES_BONDS 1&lt;/p&gt;
&lt;p&gt;#define NRF_SDH_BLE_SERVICE_CHANGED 1&lt;/p&gt;
&lt;p&gt;I am defining it.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;・「The line you commented out checking if the service changed flag has been set or not. If it has been set, gatt_cache_manager.c will send a service changed indication to the iPhone and the iPhone will do a service discovery. By removing that check, you always request the phone to do service discovery, resulting in the full att table read by iPhone.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To get the flag set, you would need to call&amp;nbsp;gscm_local_database_has_changed(). This is done inside&amp;nbsp;ble_dfu_buttonless_bootloader_start_prepare(), if you set the NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS&amp;nbsp; flag correctly, it should be called before you switch to the bootloader.&amp;nbsp;」&lt;/p&gt;
&lt;p&gt;Yes, I already understand the above content.&lt;/p&gt;
&lt;p&gt;I also confirmed the contents of &amp;quot;ble_dfu_buttonless_bootloader_start_prepare ()&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;・「&lt;span&gt;Note that you need to make sure the flash is being updated properly before you switch to bootloader.&amp;nbsp;&lt;/span&gt;」&lt;/p&gt;
&lt;p&gt;Yes, I do not think that writing to Flash eventually went well.&lt;br /&gt;However, as in the log of (★) below, Write to Flash was also Success.&lt;/p&gt;
&lt;p&gt;In the end, despite successfully writing to Flash correctly,&lt;br /&gt;Why does this problem occur?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;========================LOG==================================&lt;br /&gt;&lt;span&gt;0&amp;gt; &amp;lt;info&amp;gt; app:&amp;nbsp;&lt;/span&gt;Writing peer data to the bootloader...&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: system attribute table len: 8&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: In ble_dfu_buttonless_bootloader_start_prepare&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: Device is preparing to enter bootloader mode.&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: Disconnected peer&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: peers_count 1&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: peer id 0&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: PM_EVT_PEER_DATA_UPDATE_SUCCEEDED&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: Updating Service Changed indication for peers, 0 left&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: Finished updating Service Changed indication for peers&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;------★&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: Device will enter bootloader mode.&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: Start....&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: gpiote_init&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: button_init&lt;br /&gt; 0&amp;gt; &amp;lt;info&amp;gt; app: initADPD153GGRI&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140080?ContentTypeID=1</link><pubDate>Fri, 13 Jul 2018 14:34:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f433e6b0-f13a-47cf-b952-bd596fa2eb6b</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Did you do bonding&amp;nbsp; in your application and in your DFU bootloader ? If you do bonding, have you set&amp;nbsp;NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS = 1&amp;nbsp; ? and use ble_dfu_bonded.c in your application code ?&lt;/p&gt;
&lt;p&gt;The line you commented out checking if the service changed flag has been set or not. If it has been set, gatt_cache_manager.c will send a service changed indication to the iPhone and the iPhone will do a service discovery. By removing that check, you always request the phone to do service discovery, resulting in the full att table read by iPhone.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To get the flag set, you would need to call&amp;nbsp;gscm_local_database_has_changed(). This is done inside&amp;nbsp;ble_dfu_buttonless_bootloader_start_prepare(), if you set the NRF_DFU_BLE_BUTTONLESS_SUPPORTS_BONDS&amp;nbsp; flag correctly, it should be called before you switch to the bootloader.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Note that you need to make sure the flash is being updated properly before you switch to bootloader.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140048?ContentTypeID=1</link><pubDate>Fri, 13 Jul 2018 10:25:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e8b11248-9611-48ba-a408-2e0e2229abec</guid><dc:creator>cw-park</dc:creator><description>&lt;div class="g-unit" id="gt-src-c"&gt;
&lt;div id="gt-src-p"&gt;
&lt;div class="" id="gt-src-wrap"&gt;
&lt;div&gt;&lt;span&gt;Hi Hung Bui,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="gt-src-tools"&gt;
&lt;div id="gt-src-tools-l"&gt;
&lt;div id="gt-input-tool"&gt;
&lt;div id="itamenu"&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="ita-kd-img ita-kd-icon ita-kd-icon-span ita-icon-28"&gt;&lt;/span&gt;&lt;span class="ita-kd-img ita-kd-arrow ita-kd-icon-span"&gt;&lt;/span&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;span&gt;&amp;gt;「Please clarify, that you can actually do DFU update with our buttonless DFU. Meaning a new image has been sent to the device and run to 100%, device updated to the new firmware?」&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;span&gt;Yes, I could transfer 100% without problems.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;I also attach evidence log(※1).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span&gt;&amp;gt;「 If it&amp;#39;s the case which firmware you use first and which you used later?」&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span&gt;No, the newly burned F / W and Update F / W are exactly the same.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;gt;「Please aware that when you trigger a DFU update via buttonless application, the application first switch to the DFU bootloader. And in DFU bootloader you only have the DFU service as you see in the screenshot. 」&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="" lang="en"&gt;&lt;span class=""&gt;Yes, I know.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span class=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span class=""&gt;&amp;gt;「&lt;span&gt;You need to verify that the new application is running.&amp;nbsp;Could you use another&amp;nbsp;central device and check that after the update you actually have the new application running with all the services ?」&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span class=""&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span class=""&gt;&lt;span&gt;Yes, i confirmed that it works.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span class=""&gt;Attach the evidence.(※2)&amp;nbsp; &amp;lt;-----&amp;nbsp;Do you know the cause of this part?&amp;nbsp; Give me advice.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;span class=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" id="result_box" lang="en"&gt;(※1)&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" id="result_box" lang="en"&gt;&amp;lt;buttonless dfu update process log&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/buttonless_5F00_dfu_5F00_update_5F00_process_5F00_log.txt"&gt;devzone.nordicsemi.com/.../buttonless_5F00_dfu_5F00_update_5F00_process_5F00_log.txt&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" id="result_box" lang="en"&gt;&amp;lt;application_dfu_update_process_log&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/application_5F00_dfu_5F00_update_5F00_process_5F00_log.txt"&gt;devzone.nordicsemi.com/.../application_5F00_dfu_5F00_update_5F00_process_5F00_log.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;(※2)&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;After deleting the attachment file LINE 443(「if (*peer_data.p_service_changed_pending)」), it was displayed successfully.&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="goog-container goog-container-vertical"&gt;&lt;span class="" lang="en"&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/gatt_5F00_cache_5F00_manager.c"&gt;devzone.nordicsemi.com/.../gatt_5F00_cache_5F00_manager.c&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="g-unit" id="gt-res-c"&gt;
&lt;div id="gt-res-p"&gt;
&lt;div id="gt-res-data"&gt;
&lt;div id="gt-res-wrap"&gt;
&lt;div id="gt-res-content"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/140038?ContentTypeID=1</link><pubDate>Fri, 13 Jul 2018 09:31:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:26c253ff-4774-4cc7-9569-26afb5ee7b75</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Chan,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I was suggesting turn off and on the phone to avoid attribute table caching, but maybe it&amp;#39;s not the case.&lt;/p&gt;
&lt;p&gt;Please clarify, that you can actually do DFU update with our buttonless DFU. Meaning a new image has been sent to the device and run to 100% , device updated to the new firmware ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If it&amp;#39;s the case which firmware you use first and which you used later ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please aware that when you trigger a DFU update via buttonless application, the application first switch to the DFU bootloader. And in DFU bootloader you only have the DFU service as you see in the screenshot.&lt;/p&gt;
&lt;p&gt;You need to verify that the new application is running.&amp;nbsp;Could you use another&amp;nbsp;central device and check that after the update you actually have the new application running with all the services ?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/139992?ContentTypeID=1</link><pubDate>Fri, 13 Jul 2018 04:16:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d3d675fb-623d-43b5-8920-49abf6f5c466</guid><dc:creator>cw-park</dc:creator><description>&lt;p&gt;Hi Hung Bui,&lt;/p&gt;
&lt;p&gt;&amp;gt;I suspect that the service changed characteristic was not included in either the application or the bootloader.&lt;/p&gt;
&lt;p&gt;No, both Bootloader (DFU) and Application are defined and activated as follows.&lt;/p&gt;
&lt;p&gt;#define NRF_SDH_BLE_SERVICE_CHANGED 1&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;gt; I would suggest to turn off and on the iPhone and test again.&lt;/p&gt;
&lt;p&gt;I tested it again, but it was the same result.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;gt; You mention a &amp;quot;normal case&amp;quot; what was that? Which firmware did you use when you have a normal case?&lt;/p&gt;
&lt;p&gt;I added Device Information Service based on &amp;quot;ble_app_buttonless_dfu&amp;quot; in example and tested it.&lt;/p&gt;
&lt;p&gt;This is OK, DIS (Device Information Service) is displayed even after F / W Update.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;gt; Have you test and verify your new firmware actually has other services ? (test without bootloader, flash softdevice + application directly)&lt;/p&gt;
&lt;p&gt;Yes, My Application includes &amp;quot;DIS&amp;quot;, &amp;quot;Battery Service&amp;quot;, and self-defined Service like the attached photo (&amp;quot;Before DFU Update&amp;quot;).&lt;/p&gt;
&lt;p&gt;Of course, it is tested and there is no problem.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So, you do not know why this problem happens after all?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: A Problem on Buttonless DFU + Bonding valid.</title><link>https://devzone.nordicsemi.com/thread/139936?ContentTypeID=1</link><pubDate>Thu, 12 Jul 2018 15:45:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ee5248d3-ccf7-4a87-9521-1e28b3b8e0ac</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Cerevo,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I suspect that the service changed characteristic was not included in either the application or the bootloader.&lt;/p&gt;
&lt;p&gt;I would suggest to turn off and on the iPhone and test again.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You mentioned&amp;nbsp; a &amp;quot;normal case&amp;quot; what was that ? Which firmware did you use when you have a normal case ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Have you test and verify your new firmware actually has other services ? (test without bootloader, flash softdevice + application directly)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>