<?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>nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/68394/nrf52840-bonded-devices</link><description>Good morning, 
 I have my BLE application developed on the nRF52840 and S140. 
 My application is perfectly working and I&amp;#39;m able to bond (pin required) any Android smartphone. 
 At this point I have two questions: 
 1.- Is there any limit regarding the</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 25 Nov 2020 17:15:27 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/68394/nrf52840-bonded-devices" /><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/281899?ContentTypeID=1</link><pubDate>Wed, 25 Nov 2020 17:15:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f310c15c-9611-4bdd-9906-f49372efed1c</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;In BLE it is not configurable (PASSKEY_LENGTH must be 6). So maybe Android discard the last 2-digits?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;case BLE_GAP_EVT_PASSKEY_DISPLAY:
{
    char passkey[PASSKEY_LENGTH + 1];
    memcpy(passkey, p_ble_evt-&amp;gt;evt.gap_evt.params.passkey_display.passkey, PASSKEY_LENGTH);
    passkey[PASSKEY_LENGTH] = 0;

    NRF_LOG_INFO(&amp;quot;Passkey: %s&amp;quot;, nrf_log_push(passkey));
} break;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/281896?ContentTypeID=1</link><pubDate>Wed, 25 Nov 2020 16:59:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ee3b0997-318d-4f9b-827d-f9e570094c6d</guid><dc:creator>Dani</dc:creator><description>&lt;p&gt;I&amp;#39;ll go back to 6 digit?&lt;/p&gt;
&lt;p&gt;Is this code internally used for authentication? Could the 8-digit passkey be the reason of my problem with Apple? (It works fine with Android...)&lt;/p&gt;
&lt;p&gt;Dani&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/281892?ContentTypeID=1</link><pubDate>Wed, 25 Nov 2020 16:31:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bd6b536d-7e16-4b71-9b8e-0314d64412c4</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;8-digit passkey? It should be 6 digit in BLE.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/281719?ContentTypeID=1</link><pubDate>Wed, 25 Nov 2020 08:22:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:541581e2-6a00-495b-a75f-343f82b06d6f</guid><dc:creator>Dani</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Here you have the sniffer trace in following situation:&lt;/p&gt;
&lt;p&gt;My device was advertising and using nRF Connect (ioS) I have been able to connect and receive some data. When I want to write into a characteristic, I&amp;#39;m prompted for the passkey: when entering it, it is always impossible and device disconnects... (This happens at item 3359 in trace and LL_TERMINATE_IND is received)&lt;/p&gt;
&lt;p&gt;Hope to solve this.&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/IoS_5F00_pairing_5F00_problem.pcapng"&gt;devzone.nordicsemi.com/.../IoS_5F00_pairing_5F00_problem.pcapng&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/281655?ContentTypeID=1</link><pubDate>Tue, 24 Nov 2020 17:01:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:04a20549-2998-428a-9256-36e08572bfc8</guid><dc:creator>Dani</dc:creator><description>&lt;p&gt;Hi Kenneth,&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve sniffer already working, but what information do you need to be catched?&lt;/p&gt;
&lt;p&gt;As I&amp;#39;m using a 8-digit passkey, I have entered this passkey into Wireshark passkey field. This is right?&lt;/p&gt;
&lt;p&gt;I&amp;#39;m deeping a bit more into this application, but meanwhile, if you can detail the information that is useful for you, it will be great!!!&lt;/p&gt;
&lt;p&gt;All the best,&lt;/p&gt;
&lt;p&gt;Dani.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/281553?ContentTypeID=1</link><pubDate>Tue, 24 Nov 2020 12:56:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d9dbe4d5-4537-410c-96e1-02bc377fe403</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Are you able to make an on-air sniffer log using nrf sniffer?&lt;br /&gt;&lt;a href="https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Sniffer-for-Bluetooth-LE"&gt;https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Sniffer-for-Bluetooth-LE&lt;br /&gt;&lt;/a&gt;&lt;a href="https://infocenter.nordicsemi.com/topic/ug_sniffer_ble/UG/sniffer_ble/intro.html"&gt;https://infocenter.nordicsemi.com/topic/ug_sniffer_ble/UG/sniffer_ble/intro.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/281243?ContentTypeID=1</link><pubDate>Mon, 23 Nov 2020 08:13:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ce9d2e70-7fab-47ab-8658-2673a99c3857</guid><dc:creator>Dani</dc:creator><description>&lt;p&gt;Do you have any other suggestion regarding IoS fucntionality?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve followed gls example, and everything seems to match but I continue having the same problem when being requested for the passkey: impossible to connect!!&lt;/p&gt;
&lt;p&gt;Dani&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/280912?ContentTypeID=1</link><pubDate>Thu, 19 Nov 2020 13:38:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:30159320-c002-4f27-bb04-0e2944e76599</guid><dc:creator>Dani</dc:creator><description>&lt;p&gt;OK. Thank you. I&amp;#39;ll implement it...&lt;/p&gt;
&lt;p&gt;And what about my last comment:: IoS connection and PM_EVT_CONN_SEC_FAILED? Debugging I&amp;#39;ve seen that reported error (p_evt.params.conn_sec_failed.error) is 0x0088&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/280836?ContentTypeID=1</link><pubDate>Thu, 19 Nov 2020 10:42:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:29d2ed57-e874-4468-b125-7fd89372c61a</guid><dc:creator>Kenneth</dc:creator><description>[quote user="dtarrago"]I suppose you mean to call pm_peer_count() in while() loop (main). And in what regards call to pm_peer_ranks_get and pm_peer_delete: which is the best place to implement them? In the same while loop or inside a certain event in pm_evt_handler? And, it is necessary to call pm_peer_rang_highest() when the event PM_EVT_BONDED_PEER_CONNECTED is given?[/quote]
&lt;p&gt;I would suggest to only call&amp;nbsp;&lt;span&gt;pm_peer_count() in the beginning of main() and on disconnect event. If&amp;nbsp;pm_peer_count() &amp;gt; N, then&amp;nbsp;call&amp;nbsp;pm_peer_ranks_get() to get the &amp;#39;p_lowest_ranked_peer&amp;#39; and delete it by calling&amp;nbsp;pm_peer_delete(lowest_ranked_peer). There is no need to call&amp;nbsp;pm_peer_rang_highest() from the application, it will already be handled by peer manager if you have enabled&amp;nbsp;PM_PEER_RANKS_ENABLED in sdk_config.h and running pm_handler_flash_clean().&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: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/280821?ContentTypeID=1</link><pubDate>Thu, 19 Nov 2020 10:18:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:752573de-a71d-4a19-a9d0-2153a72ba7cf</guid><dc:creator>Dani</dc:creator><description>&lt;p&gt;In what regards connection with IoS: I have followed the example you have suggested and now IoS is requesting me the passkey. Nevertheless, when I write the passkey, the&amp;nbsp;PM_EVT_CONN_SEC_FAILED event is received. Which can be the reason? For clarification: I&amp;#39;m using a 8-digit passkey.&lt;/p&gt;
&lt;p&gt;Dani&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/280760?ContentTypeID=1</link><pubDate>Thu, 19 Nov 2020 07:31:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a07eefd2-b456-4088-8621-c11cd6de753a</guid><dc:creator>Dani</dc:creator><description>&lt;p&gt;You said &amp;quot;&lt;span&gt;You can for instance in beginning of main() call&amp;nbsp;&lt;/span&gt;&lt;span&gt;pm_peer_count() to find the numbers of peer bonded, and if you have more than 5 peers bonded you can call&amp;nbsp;pm_peer_ranks_get() to get the &amp;#39;p_lowest_ranked_peer&amp;#39; and delete it by calling&amp;nbsp;pm_peer_delete(lowest_ranked_peer).&lt;/span&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;I suppose you mean to call pm_peer_count() in while() loop (main). And in what regards call to pm_peer_ranks_get and pm_peer_delete: which is the best place to implement them? In the same while loop or inside a certain event in pm_evt_handler? And, it is necessary to call pm_peer_rang_highest() when the event PM_EVT_BONDED_PEER_CONNECTED is given?&lt;/p&gt;
&lt;p&gt;On the other side, I will compare my application with the one you suggested in order to make my application working with IoS devices. I will keep you informed.&lt;/p&gt;
&lt;p&gt;Dani&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/280701?ContentTypeID=1</link><pubDate>Wed, 18 Nov 2020 18:58:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:62d3e068-3dab-46ce-a2ef-bc8894b2220e</guid><dc:creator>Kenneth</dc:creator><description>[quote user="dtarrago"]Thank you for the bonding inputs. In what regards this: I&amp;#39;m already calling &amp;#39;pm_handelr_flash_clean()&amp;#39; in pm_evt_handler. Should it be enough to be sure bonding space will not be full? Should I also call &amp;#39;pm_handler_flash_clean_on_return&amp;#39; when&amp;nbsp;NRF_ERROR_STORAGE_FULL event is given? And I guess, that using this fucntions, it is not necessary to call pm_peer_delete(), right?[/quote]
&lt;p&gt;It should be sufficient to call&amp;nbsp;&lt;span&gt;pm_handler_flash_clean() in&amp;nbsp;pm_evt_handler(). You can find for instance that&amp;nbsp;pm_handler_flash_clean() will already handle&amp;nbsp;PM_EVT_STORAGE_FULL.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;It&amp;#39;s not necessary to delete bonds no, but I think it may be a good idea to limit the number of bonds overall (to avoid potentially old peers to connect).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You can for instance in beginning of main() call&amp;nbsp;&lt;span&gt;pm_peer_count() to find the numbers of peer bonded, and if you have more than 5 peers bonded you can call&amp;nbsp;pm_peer_ranks_get() to get the &amp;#39;p_lowest_ranked_peer&amp;#39; and delete it by calling&amp;nbsp;pm_peer_delete(lowest_ranked_peer).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;I do not understand why Apple don&amp;#39;t trigger passkey here no, do you have an on-air sniffer log (e.g. nRF Sniffer)? For comparison you may try take a look at the code inside the glucose application example in the SDK. This example implements LESC bonding with passkey. This example can be found in folder \examples\ble_peripheral\ble_app_gls and the documentation from the infocenter is found &lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.2/ble_sdk_app_gls.html?cp=7_1_4_2_2_11"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kenneth&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/280539?ContentTypeID=1</link><pubDate>Wed, 18 Nov 2020 09:09:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5379332a-6cbd-4711-9414-c3352c82ea98</guid><dc:creator>Dani</dc:creator><description>&lt;p&gt;Hi Kenneth,&lt;/p&gt;
&lt;p&gt;Thank you for the bonding inputs. In what regards this: I&amp;#39;m already calling &amp;#39;pm_handelr_flash_clean()&amp;#39; in pm_evt_handler. Should it be enough to be sure bonding space will not be full? Should I also call &amp;#39;pm_handler_flash_clean_on_return&amp;#39; when&amp;nbsp;NRF_ERROR_STORAGE_FULL event is given? And I guess, that using this fucntions, it is not necessary to call pm_peer_delete(), right?&lt;/p&gt;
&lt;p&gt;In what regards connection with Apple device: by using nRFConnect app, I&amp;#39;m able to read data that my device is sending without being asked for a passkey. If I want to send some data, then I&amp;#39;m asked for the passkey. But, as in Android, I should be asked for a passkey when connecting to device.&lt;/p&gt;
&lt;p&gt;In what regards services and characterisitics: for each service, I have one characteristic to send data (like button example) and another one to received data (like LED example).&lt;/p&gt;
&lt;p&gt;In what regards &amp;#39;button example&amp;#39;, when adding the characteristic:&lt;/p&gt;
&lt;p&gt;......&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ble_gatts_char_md_t char_md;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_gatts_attr_md_t cccd_md;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_gatts_attr_t attr_char_value;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_uuid_t ble_uuid;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_gatts_attr_md_t attr_md;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;memset(&amp;amp;cccd_md, 0, sizeof(cccd_md));&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;BLE_GAP_CONN_SEC_MODE_SET_OPEN(&amp;amp;cccd_md.read_perm);&lt;/em&gt;&lt;br /&gt;&lt;em&gt; BLE_GAP_CONN_SEC_MODE_SET_OPEN(&amp;amp;cccd_md.write_perm);&lt;/em&gt;&lt;br /&gt;&lt;em&gt; //BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&amp;amp;cccd_md.write_perm);&lt;/em&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; cccd_md.vloc = BLE_GATTS_VLOC_STACK;&lt;/em&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; memset(&amp;amp;char_md, 0, sizeof(char_md));&lt;/em&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; char_md.char_props.read = 1;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.char_props.notify = 1;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_char_user_desc = NULL;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_char_pf = NULL;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_user_desc_md = NULL;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_cccd_md = &amp;amp;cccd_md;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_sccd_md = NULL;&lt;/em&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; ble_uuid.type = p_lbs-&amp;gt;uuid_type;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_uuid.uuid = FABRICA_UUID_TX_CHAR;&lt;/em&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; memset(&amp;amp;attr_md, 0, sizeof(attr_md));&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;em&gt;BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&amp;amp;attr_md.read_perm);&lt;/em&gt;&lt;br /&gt;&lt;em&gt; BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(&amp;amp;attr_md.write_perm);&lt;/em&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; attr_md.vloc = BLE_GATTS_VLOC_STACK;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_md.rd_auth = 0;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_md.wr_auth = 0;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_md.vlen = 0;&lt;/em&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; memset(&amp;amp;attr_char_value, 0, sizeof(attr_char_value));&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;attr_char_value.p_uuid = &amp;amp;ble_uuid;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.p_attr_md = &amp;amp;attr_md;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.init_len = sizeof(u8);&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.init_offs = 0;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.max_len = BLE_TAMANY_FABRICA_RX_TX_CHAR;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.p_value = NULL;&lt;/em&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; return sd_ble_gatts_characteristic_add(p_lbs-&amp;gt;service_handle, &amp;amp;char_md,&lt;/em&gt;&lt;br /&gt;&lt;em&gt; &amp;amp;attr_char_value,&lt;/em&gt;&lt;br /&gt;&lt;em&gt; &amp;amp;p_lbs-&amp;gt;tx_char_handles);&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;....&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And in what regards &amp;#39;LED example&amp;#39;:&lt;/p&gt;
&lt;p&gt;....&lt;/p&gt;
&lt;p&gt;&lt;em&gt;u32 err_code;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_gatts_char_md_t char_md; &lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_gatts_attr_t attr_char_value;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_uuid_t ble_uuid;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_gatts_attr_md_t attr_md; &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;em&gt; //Metadata Structure for the Characteristic, which has info about properties available (read, write, notification,...)&lt;/em&gt;&lt;br /&gt;&lt;em&gt; memset(&amp;amp;char_md, 0, sizeof(char_md));&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;char_md.char_props.read = 1;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.char_props.write = 1;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_char_user_desc = NULL;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_char_pf = NULL;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_user_desc_md = NULL;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_cccd_md = NULL;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; char_md.p_sccd_md = NULL;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ble_uuid.type=p_lbs-&amp;gt;uuid_type;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; ble_uuid.uuid=FABRICA_UUID_RX_CHAR;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;//attr_md: Description of the value attribute&lt;/em&gt;&lt;br /&gt;&lt;em&gt; memset(&amp;amp;attr_md, 0, sizeof(attr_md));&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&amp;amp;attr_md.read_perm);&lt;/em&gt;&lt;br /&gt;&lt;em&gt; BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&amp;amp;attr_md.write_perm);&lt;/em&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; attr_md.vloc = BLE_GATTS_VLOC_STACK;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_md.rd_auth = 0;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_md.wr_auth = 0;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_md.vlen = 0;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;memset(&amp;amp;attr_char_value, 0, sizeof(attr_char_value));&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;attr_char_value.p_uuid = &amp;amp;ble_uuid;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.p_attr_md = &amp;amp;attr_md;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.init_offs = 0;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.max_len = BLE_TAMANY_FABRICA_RX_TX_CHAR;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; attr_char_value.p_value = NULL;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;err_code = sd_ble_gatts_characteristic_add(p_lbs-&amp;gt;service_handle, &amp;amp;char_md,&lt;/em&gt;&lt;br /&gt;&lt;em&gt; &amp;amp;attr_char_value,&lt;/em&gt;&lt;br /&gt;&lt;em&gt; &amp;amp;p_lbs-&amp;gt;rx_char_handles);&lt;/em&gt;&lt;br /&gt;&lt;em&gt; if (err_code != NRF_SUCCESS)&lt;/em&gt;&lt;br /&gt;&lt;em&gt; {&lt;/em&gt;&lt;br /&gt;&lt;em&gt; return err_code;&lt;/em&gt;&lt;br /&gt;&lt;em&gt; }&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;return NRF_SUCCESS;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;....&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;This is perfectly working on Android. Which is the difference with Apple?&lt;/p&gt;
&lt;p&gt;Dani&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 bonded devices</title><link>https://devzone.nordicsemi.com/thread/280409?ContentTypeID=1</link><pubDate>Tue, 17 Nov 2020 15:04:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bc6bd8e3-89d9-45fc-97e7-f5e1b94416cb</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;In general you may find documentation useful:&lt;br /&gt;&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.2/group__peer__manager.html"&gt;https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.2/group__peer__manager.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is no specific limit to the number of bonds that the peer manager can handle. So typically you can call pm_peer_count(), use pm_next_peer_id_get() to for instance call&amp;nbsp;pm_peer_delete() if you exceed the number of bonds you want to support.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;For instance to loop through stored bonds you can call the following in a while()-loop:

pm_peer_id_t peer_id;
peer_id = pm_next_peer_id_get(PM_PEER_ID_INVALID);        

while ((peer_id != PM_PEER_ID_INVALID))
{
    // You can delete the bond if you like by calling pm_peer_delete(peer_id)
    
    peer_id = pm_next_peer_id_get(peer_id);
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Typically you can include&amp;nbsp;pm_handler_flash_clean() in&amp;nbsp;pm_evt_handler(), such that if flash storage is full, it will delete the oldest bond that have not been used.&lt;/p&gt;
&lt;p&gt;I do not understand why Apple does not&amp;nbsp;display a pin code, are you sure you have configured characteristics which require MITM security level?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>