<?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>Can&amp;#39;t erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/108568/can-t-erase-peers-pm_evt_peers_delete_succeeded-event-is-raised-but-bondings-remain</link><description>Hi, I&amp;#39;m working on a nRF 52840 running the SDK 15.2 with SoftDevice s140_nrf52_6.1.0_softdevice.hex 
 I&amp;#39;m having this issue where I can&amp;#39;t delete all peers, and it looks like it&amp;#39;s coming from the SDK. It seems like it&amp;#39;s more frequent when there are many</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 04 Mar 2024 08:17:04 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/108568/can-t-erase-peers-pm_evt_peers_delete_succeeded-event-is-raised-but-bondings-remain" /><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/471952?ContentTypeID=1</link><pubDate>Mon, 04 Mar 2024 08:17:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:aa8fed2e-16d5-4646-99e4-8ba4276b4d24</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;No,, I do not think bool can be guaranteed to be atomic in multi context access and Yes, you should use one of the many&amp;nbsp;&lt;a href="https://docs.zephyrproject.org/latest/kernel/services/other/atomic.html"&gt;atomic features &lt;/a&gt;provided by Zephyr or nRF.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/471514?ContentTypeID=1</link><pubDate>Thu, 29 Feb 2024 12:15:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b3d25525-3bb9-45a7-963e-4edbc1a5926b</guid><dc:creator>Federico</dc:creator><description>&lt;p&gt;Hi Susheel,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for the advice. Reading and writing a bool flag isn&amp;#39;t atomic? Should I use an nrf_atomic_flag or something like that?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/471503?ContentTypeID=1</link><pubDate>Thu, 29 Feb 2024 11:36:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:18e58bc6-0e62-4c60-bb68-8ceeab9de136</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;That is a nice workaround to call&amp;nbsp;&lt;span&gt;pm_peer_delete&amp;nbsp;inside&amp;nbsp;pm_peers_delete&amp;nbsp;and delete the peer one by one. Just be careful on how you are waiting for the PM_EVT_PEER_DELETE_SUCCEEDED&amp;nbsp; event. If you are using a wait for a flag condition then you might introduce a race condition since this flag is accessed in two different interrupt contexts (mostly main and SWI interrupt context where you process SD events).&lt;/span&gt;&lt;/p&gt;
[quote user="Federico"]If the issue happens again I&amp;#39;ll try to port to SDK17 and report the results.[/quote]
&lt;p&gt;Got it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/471023?ContentTypeID=1</link><pubDate>Tue, 27 Feb 2024 13:04:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ccae074e-4428-49e1-872b-a8ffeae334e8</guid><dc:creator>Federico</dc:creator><description>&lt;p&gt;Hi susheel,&lt;/p&gt;
&lt;p&gt;This is an older project, that&amp;#39;s why we are on an old SDK version. We could port it to SDK17 but porting it to Connect SDK would be a massive change and we don&amp;#39;t have the resources to do that now.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I tried a different approach: I reimplemented pm_peers_delete myself, calling pm_peer_delete one at a time, waiting for&amp;nbsp;&lt;span&gt;PM_EVT_PEER_DELETE_SUCCEEDED before calling it again. This got rid of the re-entry and seems to work just fine.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If the issue happens again I&amp;#39;ll try to port to SDK17 and report the results.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/470935?ContentTypeID=1</link><pubDate>Tue, 27 Feb 2024 08:03:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:721047df-cdcc-4ada-bf03-f0f0511c631a</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;Hi Federico,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;nRF5SDK is deprecated and there is a lot of hesitation by developers when asking for help debugging for potential issues. I am testing on nRF5SDK v17.1 and will not spend time on older versions(v15.x) of already deprecated sdk..I took some time to modify and setup a &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v17.1.0%2Fble_sdk_app_multiperipheral.html&amp;amp;cp=9_1_4_2_2_26"&gt;multilink peripheral&lt;/a&gt;&amp;nbsp;and I can the repeated log&amp;nbsp; but I did not manage to reproduce the bonds not being erased. After I get&amp;nbsp;&amp;nbsp;&lt;span&gt;PM_EVT_PEERS_DELETE_SUCCEEDED&amp;nbsp; I start a timer and soft reset the chip after 1 second. I do not see any connections or bonds after. I have to admit that I have only tested this with 4 peers.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Is it possible for you to test your application with nRF5SDKv17 libraries (some porting will be needed)&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/470860?ContentTypeID=1</link><pubDate>Mon, 26 Feb 2024 20:26:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1cd7a5f6-2280-45b6-b4d2-b0e3c7753902</guid><dc:creator>Federico</dc:creator><description>&lt;p&gt;Hi again, I&amp;#39;m struggling here to find the cause. I did a new test with lot&amp;#39;s of prints and got this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;[00:02:13.601,745] &amp;lt;info&amp;gt; app: Total of 4 devices bonded
    conn_handle=65535, connected=0, rank=00001, peer_id=00000, mac=6E:12:A4:23:BC:10
    conn_handle=65535, connected=0, rank=00002, peer_id=00001, mac=FC:16:7D:1A:5C:71
    conn_handle=00001, connected=1, rank=00003, peer_id=00002, mac=E8:0D:A1:A1:E4:B6
&amp;gt;&amp;gt;&amp;gt; conn_handle=00002, connected=1, rank=65535, peer_id=00003, mac=48:51:C5:35:87:4C

[00:02:28.329,711] &amp;lt;info&amp;gt; app: Restarted advertising.
[00:00:00.000,000] &amp;lt;info&amp;gt; app_timer: RTC: initialized.
[00:00:00.311,340] &amp;lt;info&amp;gt; app: BLEP nRF v1.7 started.
[00:00:00.311,340] &amp;lt;info&amp;gt; app: Starting auto DFU timeout.
[00:00:00.311,401] &amp;lt;info&amp;gt; app: Erase bonds!
[00:00:00.311,431] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 0
[00:00:00.311,492] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.312,164] &amp;lt;info&amp;gt; peer_manager_pds: Deleting file 49152 for peer 0
[00:00:00.312,194] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.312,194] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 1
[00:00:00.312,225] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.312,774] &amp;lt;info&amp;gt; peer_manager_pds: Deleting file 49152 for peer 0
[00:00:00.312,774] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.312,805] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 2
[00:00:00.313,018] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.313,568] &amp;lt;info&amp;gt; peer_manager_pds: Deleting file 49152 for peer 0
[00:00:00.313,568] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.313,598] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 3
[00:00:00.313,629] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.313,873] &amp;lt;info&amp;gt; peer_manager_pds: File deleted: 49152
[00:00:00.314,117] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.314,147] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.314,483] &amp;lt;info&amp;gt; peer_manager_pds: Deleting file 49153 for peer 1
[00:00:00.314,483] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.314,880] &amp;lt;info&amp;gt; peer_manager_pds: File deleted: 49152
[00:00:00.315,124] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.315,155] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.315,490] &amp;lt;info&amp;gt; peer_manager_pds: Deleting file 49153 for peer 1
[00:00:00.315,521] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.315,887] &amp;lt;info&amp;gt; peer_manager_pds: File deleted: 49152
[00:00:00.316,131] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.316,162] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.316,497] &amp;lt;info&amp;gt; peer_manager_pds: Deleting file 49153 for peer 1
[00:00:00.316,528] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.317,443] &amp;lt;info&amp;gt; peer_manager_pds: old peer id = 0, new peer id = 1
[00:00:00.317,474] &amp;lt;info&amp;gt; peer_manager_pds: old peer id = 1, new peer id = 2
[00:00:00.317,504] &amp;lt;info&amp;gt; peer_manager_pds: old peer id = 2, new peer id = 3
[00:00:00.317,901] &amp;lt;info&amp;gt; peer_manager_pds: old peer id = 3, new peer id = 65535
[00:00:00.317,932] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.318,572] &amp;lt;info&amp;gt; peer_manager_pds: File deleted: 49153
[00:00:00.319,000] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.319,030] &amp;lt;info&amp;gt; peer_manager_handler: All peers deleted.
[00:00:00.319,213] &amp;lt;info&amp;gt; app: Total of 0 devices bonded
[00:00:00.319,427] &amp;lt;info&amp;gt; app: Peers deleted complete result=1
[00:00:00.319,671] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.319,702] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.320,068] &amp;lt;info&amp;gt; peer_manager_pds: File deleted: 49153
[00:00:00.320,098] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.320,312] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.320,343] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.320,709] &amp;lt;info&amp;gt; peer_manager_pds: File deleted: 49153
[00:00:00.320,739] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.320,983] &amp;lt;info&amp;gt; peer_manager_pds: Enter peer_data_delete_process
[00:00:00.320,983] &amp;lt;info&amp;gt; peer_manager_pds: Exit peer_data_delete_process
[00:00:00.321,380] &amp;lt;info&amp;gt; app: Total of 0 devices bonded
[00:00:00.000,000] &amp;lt;info&amp;gt; app_timer: RTC: initialized.
[00:00:00.312,255] &amp;lt;info&amp;gt; app: BLEP nRF v1.7 started.
[00:00:00.312,255] &amp;lt;info&amp;gt; app: Starting auto DFU timeout.
[00:00:00.312,500] &amp;lt;info&amp;gt; app: Total of 2 devices bonded
    conn_handle=65535, connected=0, rank=00003, peer_id=00002, mac=E8:0D:A1:A1:E4:B6
    conn_handle=65535, connected=0, rank=00004, peer_id=00003, mac=48:51:C5:35:87:4C
[00:00:00.320,159] &amp;lt;info&amp;gt; app: Stop Peripheral Role order
[00:00:00.000,000] &amp;lt;info&amp;gt; app_timer: RTC: initialized.
[00:00:00.311,706] &amp;lt;info&amp;gt; app: BLEP nRF v1.7 started.
[00:00:00.311,737] &amp;lt;info&amp;gt; app: Starting auto DFU timeout.
[00:00:00.311,981] &amp;lt;info&amp;gt; app: Total of 2 devices bonded
    conn_handle=65535, connected=0, rank=00003, peer_id=00002, mac=E8:0D:A1:A1:E4:B6
    conn_handle=65535, connected=0, rank=00004, peer_id=00003, mac=48:51:C5:35:87:4C
[00:00:00.758,148] &amp;lt;info&amp;gt; app: Init Peripheral Role order
[00:00:00.758,819] &amp;lt;info&amp;gt; app: Fast advertising.
[00:00:00.758,850] &amp;lt;info&amp;gt; app: Stopping auto DFU timeout.
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;My focus is on the&amp;nbsp;&lt;span&gt;peer_data_delete_process function. So I added prints like &amp;quot;Enter peer_data_delete_process&amp;quot; and &amp;quot;Exit&amp;nbsp;peer_data_delete_process&amp;quot;. From that I was able to learn that&amp;nbsp;peer_data_delete_process is being called concurrently, from&amp;nbsp;peer_data_storage.c::fds_evt_handler, in&amp;nbsp;FDS_EVT_DEL_FILE. I&amp;#39;m guessing this&amp;nbsp;reentry is part of the design because I can&amp;#39;t see any way intention to prevent it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;I also added prints like &amp;quot;Deleting file 49152 for peer 0&amp;quot; when&amp;nbsp;peer_data_delete_process() calls&amp;nbsp;&lt;code&gt;fds_file_delete&lt;/code&gt;() and &amp;quot;File deleted: 49152&amp;quot; on the&amp;nbsp;FDS_EVT_DEL_FILE event. When &lt;code&gt;peer_data_delete_process&lt;/code&gt;() iterates over peer ids by calling &amp;quot;&lt;code&gt;peer_id = peer_id_get_next_deleted(peer_id);&lt;/code&gt;&amp;quot; I added a print like this: &amp;quot;&lt;code&gt;NRF_LOG_INFO( &amp;quot;old peer id = %u, new peer id = %u&amp;quot;, bk_peer_id, peer_id );&lt;/code&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;From what I can see, the loop in&amp;nbsp;pm_peers_delete that calls&amp;nbsp;pm_peer_delete on each peer doesn&amp;#39;t wait for the previous one to finish deletion, so when this eventually calls&amp;nbsp;peer_data_delete_process, it searches for the first id to delete and calls for deletion on the same id several times. This explains the repeated events that I get later.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;However, I don&amp;#39;t understand why sometimes&amp;nbsp;peer_data_delete_process will call&amp;nbsp;fds_file_delete for every file and sometimes it will stop early. The call after an&amp;nbsp;FDS_EVT_DEL_FILE should keep the state machine going, but for some reason I guess that&amp;nbsp;peer_id_get_next_deleted is returning&amp;nbsp;PM_PEER_ID_INVALID.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Any suggestions on how to fix this or debug it?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thank you!&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: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/470794?ContentTypeID=1</link><pubDate>Mon, 26 Feb 2024 14:51:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fda4deb4-26a6-49c0-b041-9faad84da230</guid><dc:creator>Federico</dc:creator><description>&lt;p style="padding-left:30px;"&gt;&lt;em&gt;&lt;span&gt;Is it possible that you have been adding and deleting single peers before deleting all peers and before any garbage collection is done in between?&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;We don&amp;#39;t delete peers individually, we only call pm_peers_delete(). Right before calling pm_peers_delete, the nRF has been reset, as I explained in the original post. I can guarantee that no new pairings are created in the time between the reset and call to pm_peers_delete, but it is possible a new one is created a few seconds before the reset. Can this be an issue?&amp;nbsp; Is there any way to call the the garbage collector manually?&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;From what you say, I understand that the ordering of the numbers and the known issue are unrelated to my problem. What I&amp;#39;m seeing is that in&amp;nbsp;peer_data_delete_process(), at some point&amp;nbsp;peer_id_get_next_deleted returns an incorrect value. It either skips a peer or returns 0xFFFF and the deletion stops early, both cases leaving undeleted peers. What can cause this?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;One last extra question:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;But we cannot do this in our official release as nRF5SDK are frozen/deprecated and no patches or features will be done for nRf5SDK based solutions&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I thought this SDK was in maintenance mode, doesn&amp;#39;t that mean that you make bugfixes?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/470606?ContentTypeID=1</link><pubDate>Mon, 26 Feb 2024 06:38:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2861a5a5-76ee-4c4e-b4ad-007fcc8e985b</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;As mentioned &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v17.1.0%2Fgroup__peer__manager.html&amp;amp;anchor=gga4a0e37cf07eb91e1a1808995b957808bac60e271288362aa95be06402d9c219a2"&gt;here &lt;/a&gt;the event is called&amp;nbsp; when&amp;nbsp;&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/group__peer__manager.html#gaa99779ab5b8b4cfde65974bdf75a1e7c"&gt;pm_peers_delete&lt;/a&gt;&lt;span&gt;&amp;nbsp;or internal cleanup. is done.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;By internal cleanup it means that peer manager need to call&amp;nbsp;&lt;strong&gt;fds_gc &lt;/strong&gt;for garbage collection. Garbage collection is a complex process and it depends on what has happened before doing delete all peers. Is it possible that you have been adding and deleting single peers before deleting all peers and before any garbage collection is done in between?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Regarding the ordering of the numbers, I think it might have to do with the &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v17.1.0%2Fgroup__peer__manager.html&amp;amp;anchor=gacc5d71e8a81c55d6df58b8025b49da1c"&gt;rank &lt;/a&gt;of the bond in the peer manager.. If all the bonds are deleted at the end, then I think it should be ok to have a different order of execution of deleting peers.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;There is a wrong order in the above logs&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style="color:rgba(255, 0, 0, 1);"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;[00:00:00.322,052] &amp;lt;info&amp;gt; peer_manager_handler: All peers deleted.&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;[00:00:00.322,265] &amp;lt;info&amp;gt; app: Total of 0 devices bonded&lt;br /&gt;[00:00:00.322,479] &amp;lt;info&amp;gt; app: Peers deleted complete result=1&lt;br /&gt;[00:00:00.322,998] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED&lt;br /&gt;[00:00:00.323,028] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1&lt;br /&gt;[00:00:00.323,547] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED&lt;br /&gt;[00:00:00.323,547] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This we know as a known issue in how we handle the last peer delete. T&lt;/span&gt;he last two events needs&amp;nbsp; swapping so that the _PEERS_DELETE_ event marks the end of the procedure.&lt;/p&gt;
&lt;p&gt;To do this we need to patch peermanager.c::pm_pdb_evt_handler by adding&lt;/p&gt;
&lt;p&gt;+ evt_send(&amp;amp;pm_evt);&lt;/p&gt;
&lt;p&gt;+ send_evt = false;&lt;/p&gt;
&lt;p&gt;before the evt_send(&amp;amp;pm_delete_all_evt) call in the&amp;nbsp;PDB_EVT_PEER_FREED and&amp;nbsp;PDB_EVT_PEER_FREE_FAILED cases.&lt;/p&gt;
&lt;p&gt;But we cannot do this in our official release as nRF5SDK are frozen/deprecated and no patches or features will be done for nRf5SDK based solutions. So if you want to use this sdk, you need to maintain this patch internally in your repos.&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: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/470487?ContentTypeID=1</link><pubDate>Fri, 23 Feb 2024 14:09:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7ad315a2-297a-48c1-9244-e3901ec56cd6</guid><dc:creator>Federico</dc:creator><description>&lt;p&gt;Some more info: from inside&amp;nbsp;pm_peers_delete, it seems that the loop actually calls&amp;nbsp;pm_peer_delete on every id, but then I don&amp;#39;t get events for all of them, some IDs are ignored and some produce multiple events&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;[00:00:00.311,218] &amp;lt;info&amp;gt; app: Total of 8 devices bonded
    conn_handle=65535, connected=0, rank=00001, peer_id=00000, mac=F9:16:2F:06:FE:19
    conn_handle=65535, connected=0, rank=00002, peer_id=00001, mac=35:5E:65:84:99:1D
    conn_handle=65535, connected=0, rank=00003, peer_id=00002, mac=93:E3:E3:71:9C:A3
    conn_handle=65535, connected=0, rank=00004, peer_id=00003, mac=9B:5C:83:08:E4:21
    conn_handle=65535, connected=0, rank=00005, peer_id=00004, mac=74:EA:EC:DE:CF:11
    conn_handle=65535, connected=0, rank=00006, peer_id=00005, mac=1A:13:B9:69:C1:B2
    conn_handle=65535, connected=0, rank=00007, peer_id=00006, mac=3C:FB:4A:AD:DF:40
    conn_handle=65535, connected=0, rank=00008, peer_id=00007, mac=48:51:C5:35:87:4C
[00:00:00.315,155] &amp;lt;info&amp;gt; app: Erase bonds!
[00:00:00.315,155] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 0
[00:00:00.315,460] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 1
[00:00:00.315,582] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 2
[00:00:00.315,917] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 3
[00:00:00.316,040] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 4
[00:00:00.316,375] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 5
[00:00:00.316,711] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 6
[00:00:00.316,864] &amp;lt;info&amp;gt; peer_manager: current_peer_id = 7
[00:00:00.317,504] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.317,504] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.318,145] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.318,176] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.318,817] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.318,847] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.319,488] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.319,488] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.322,021] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.322,021] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.322,052] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEERS_DELETE_SUCCEEDED
[00:00:00.322,052] &amp;lt;info&amp;gt; peer_manager_handler: All peers deleted.
[00:00:00.322,265] &amp;lt;info&amp;gt; app: Total of 0 devices bonded
[00:00:00.322,479] &amp;lt;info&amp;gt; app: Peers deleted complete result=1
[00:00:00.322,998] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.323,028] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.323,547] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.323,547] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.000,000] &amp;lt;info&amp;gt; app_timer: RTC: initialized.
[00:00:00.273,284] &amp;lt;debug&amp;gt; nrf_ble_lesc: Initialized nrf_crypto.
[00:00:00.273,315] &amp;lt;debug&amp;gt; nrf_ble_lesc: Initialized nrf_ble_lesc.
[00:00:00.273,315] &amp;lt;debug&amp;gt; nrf_ble_lesc: Generating ECC key pair
[00:00:00.311,401] &amp;lt;info&amp;gt; app: BLEP nRF v1.7 started.
[00:00:00.311,401] &amp;lt;info&amp;gt; app: Starting auto DFU timeout.
[00:00:00.311,645] &amp;lt;info&amp;gt; app: Total of 6 devices bonded
    conn_handle=65535, connected=0, rank=00003, peer_id=00002, mac=93:E3:E3:71:9C:A3
    conn_handle=65535, connected=0, rank=00004, peer_id=00003, mac=9B:5C:83:08:E4:21
    conn_handle=65535, connected=0, rank=00005, peer_id=00004, mac=74:EA:EC:DE:CF:11
    conn_handle=65535, connected=0, rank=00006, peer_id=00005, mac=1A:13:B9:69:C1:B2
    conn_handle=65535, connected=0, rank=00007, peer_id=00006, mac=3C:FB:4A:AD:DF:40
    conn_handle=65535, connected=0, rank=00008, peer_id=00007, mac=48:51:C5:35:87:4C&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/470460?ContentTypeID=1</link><pubDate>Fri, 23 Feb 2024 12:57:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5a1e024a-7bcd-4cac-b661-134320bda253</guid><dc:creator>Federico</dc:creator><description>&lt;p&gt;Hi, thanks for the quick answer.&lt;/p&gt;
&lt;p&gt;I can&amp;#39;t share the full project, but maybe I can share some small relevant pieces. For example, I know that we call this function once, which registers the callback:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void peer_manager_init( void )
{
	ble_gap_sec_params_t sec_params;
	ret_code_t err_code;

	err_code = pm_init();
	APP_ERROR_CHECK( err_code );

	/** Security configuration shall be set in each role implementation.*/

	err_code = pm_register( pm_evt_handler );
	APP_ERROR_CHECK( err_code );
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;This is the callback implementation:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void pm_evt_handler( pm_evt_t const * p_evt )
{
	pm_handler_on_pm_evt( p_evt );
	pm_handler_disconnect_on_sec_failure( p_evt );
	pm_handler_flash_clean( p_evt );


	switch ( p_evt-&amp;gt;evt_id ) {
	case PM_EVT_CONN_SEC_START:
		break;
		
	case PM_EVT_CONN_SEC_PARAMS_REQ:
	    // under some conditions might call
	    // pm_peer_id_get( conn_handle, &amp;amp;m_peer_to_be_deleted );
	    // sd_ble_gap_disconnect( conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION );
	    break;
	    
	case PM_EVT_CONN_SEC_CONFIG_REQ:
	    pm_conn_sec_config_t config = { .allow_repairing = true };
		pm_conn_sec_config_reply( p_evt-&amp;gt;conn_handle, &amp;amp;config );
		break;
		
	case PM_EVT_CONN_SEC_FAILED: 
	    // Under some conditions might call
		// pm_conn_secure( p_evt-&amp;gt;conn_handle, true );
		break;

	case PM_EVT_CONN_SEC_SUCCEEDED:
        //....
		break;

	case PM_EVT_PEER_DATA_UPDATE_SUCCEEDED:
		if ( new_bonding_data_storage_pending &amp;amp;&amp;amp; p_evt-&amp;gt;params.peer_data_update_succeeded.data_id == PM_PEER_DATA_ID_BONDING ) {
			print_bonded_devices( p_evt-&amp;gt;peer_id );
		}
		break;

	case PM_EVT_PEERS_DELETE_SUCCEEDED:
	case PM_EVT_PEERS_DELETE_FAILED:
		print_bonded_devices( PM_PEER_ID_INVALID );
		NRF_LOG_INFO( &amp;quot;Peers deleted complete result=%u&amp;quot;, p_evt-&amp;gt;evt_id == PM_EVT_PEERS_DELETE_SUCCEEDED );
		// send spi msg
		break;

	case PM_EVT_STORAGE_FULL:
	case PM_EVT_ERROR_UNEXPECTED:
	case PM_EVT_PEER_DATA_UPDATE_FAILED:
	case PM_EVT_BONDED_PEER_CONNECTED:
	case PM_EVT_PEER_DELETE_SUCCEEDED:
	case PM_EVT_PEER_DELETE_FAILED:
	case PM_EVT_LOCAL_DB_CACHE_APPLIED:
	case PM_EVT_LOCAL_DB_CACHE_APPLY_FAILED:
	case PM_EVT_SERVICE_CHANGED_IND_SENT:
	case PM_EVT_SERVICE_CHANGED_IND_CONFIRMED:
	case PM_EVT_SLAVE_SECURITY_REQ:
	case PM_EVT_FLASH_GARBAGE_COLLECTED:
	case PM_EVT_FLASH_GARBAGE_COLLECTION_FAILED:
	default:
		break;
	}

}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t see any other repeated log messages from the Peer Manager. The repeated events also seem to be a few milliseconds apart, so perhaps it&amp;#39;s not that the callback is being called twice on the same event and rather it&amp;#39;s that the event is being generated twice?&lt;/p&gt;
&lt;p&gt;If you have an idea of anything you want to try let me know and I can do it&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;EDIT: I added a print in&amp;nbsp;fds_evt_handler, in the&amp;nbsp;FDS_EVT_DEL_FILE event. I was able to confirm that the event is being generated many times, as you can see here:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;[00:00:00.321,472] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.321,502] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.322,296] &amp;lt;info&amp;gt; peer_manager_pds: FDS DELETED PEER: 0
[00:00:00.322,357] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.322,387] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.323,181] &amp;lt;info&amp;gt; peer_manager_pds: FDS DELETED PEER: 0
[00:00:00.323,242] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.323,242] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 0
[00:00:00.325,744] &amp;lt;info&amp;gt; peer_manager_pds: FDS DELETED PEER: 1
[00:00:00.325,775] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.325,805] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.326,538] &amp;lt;info&amp;gt; peer_manager_pds: FDS DELETED PEER: 1
[00:00:00.326,568] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.326,599] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.327,331] &amp;lt;info&amp;gt; peer_manager_pds: FDS DELETED PEER: 1
[00:00:00.327,392] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.327,392] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 1
[00:00:00.329,833] &amp;lt;info&amp;gt; peer_manager_pds: FDS DELETED PEER: 4
[00:00:00.330,078] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.330,108] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 4
[00:00:00.330,902] &amp;lt;info&amp;gt; peer_manager_pds: FDS DELETED PEER: 4
[00:00:00.331,146] &amp;lt;debug&amp;gt; peer_manager_handler: Event PM_EVT_PEER_DELETE_SUCCEEDED
[00:00:00.331,146] &amp;lt;error&amp;gt; peer_manager_handler: Peer deleted successfully: peer_id: 4
[00:00:00.331,939] &amp;lt;info&amp;gt; peer_manager_pds: FDS DELETED PEER: 4&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can't erase peers: PM_EVT_PEERS_DELETE_SUCCEEDED event is raised but bondings remain.</title><link>https://devzone.nordicsemi.com/thread/470450?ContentTypeID=1</link><pubDate>Fri, 23 Feb 2024 12:23:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:14737848-cee0-4036-ae6b-84511c551d82</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;I have not seen this before, seems like there are multiple calls to&amp;nbsp;&lt;span&gt;pm_evt_handler for a single erase of bond information.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Can you share your application code that I can test on the nRF52840 DK?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>