<?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>How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/65555/how-to-disable-storage-in-flash-memory-all-information-of-bonding-pairing-wititelist-passkey-needs-for-test-fixture-that-connect-just-one-time</link><description>Hello, 
 I have products based on NRF51822, that are central and peripheral. 
 These products use Softdevice S310, bootloader and application code. It use peer manager, fs storage. I do developpment based on different nordic examples. 
 Products are connected</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 10 Sep 2020 12:35:44 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/65555/how-to-disable-storage-in-flash-memory-all-information-of-bonding-pairing-wititelist-passkey-needs-for-test-fixture-that-connect-just-one-time" /><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268979?ContentTypeID=1</link><pubDate>Thu, 10 Sep 2020 12:35:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ce91887f-d760-4451-99cd-6f0bfbea2aa6</guid><dc:creator>Cedric M</dc:creator><description>&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;Hello,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;br /&gt;Yes thanks. There is always an element of luck, but there is also knowledge!&lt;br /&gt;For the peer manager, I have indeed searched everywhere and I think I have flushed out all the flash accesses, my tests show that there is no longer access to the data (in writing) on ​​the flash, therefore the data always remains initialized when read, so each test starts from the same initial conditions (without degrading the test bench).&lt;br /&gt;&lt;br /&gt;(1) I would indeed like to be able to implement pairing (without bonding). This is a point that I have failed to resolve. What I noticed is that the management of the whitelist is not trivial and is not as well managed natively by the libraries as the other steps like bonding. I have already had several problems with solutions I found on nordic dev zone (this is a problem others have had).&lt;br /&gt;&lt;br /&gt;(2) For the removal of the whitelist, I will look in the example project you advise me (ble_app_gls), hoping to find a management of the whitelist. It is already less serious because what I implemented has the merit of having unlocked me but if it is not the cleanest (less maintainable for futur).&lt;br /&gt;&lt;br /&gt;-&amp;gt; If I ever get stuck on these two technical points (which are linked), I will open a new ticket.&lt;br /&gt;&lt;br /&gt;(3) Yes, I have already implemented the appropriate mechanisms. I had identified the flash sections dedicated to data (with or without a bootloader which shifts the positioning), and I use the function:&lt;br /&gt;ble_flash_page_erase () starting from the address relative to BLE_FLASH_PAGE_END&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;Best Regards,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;Cedric&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268903?ContentTypeID=1</link><pubDate>Thu, 10 Sep 2020 09:33:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d75cc07f-fb0c-4ef7-90f4-245192f138a3</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello Cedric,&lt;/p&gt;
&lt;p&gt;Glad to hear that you found the source. It was a coincidence that I found the ID = 0x07, and I had to check what it was used for. As stated earlier in the conversation, the FDS is quite heavily weaved into the peer manager, so it would take some effort to completely disable it in a smooth way.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Just in case you decide to dig further into the pairing mode:&lt;/p&gt;
&lt;p&gt;(1): That is correct. Whitelisting is usually applied to bonded devices, however, it is possible to add it manually. Look at how the peer manager does it by default (I don&amp;#39;t know this by heart).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;(2): similar to (1), the whitelist needs to be &amp;quot;reloaded&amp;quot; after you delete bonding data. I think it is usually done in the advertising_init() or advertising_start() functions in the examples that uses whitelisting. The ble_app_gls example is usually the peripheral example I use to look up things with pairing/bonding. The ble_app_hrs_c is the central example I use for the same.&lt;/p&gt;
&lt;p&gt;NB: The ble_app_hrs (peripheral) example doesn&amp;#39;t initiate pairing nor bonding, but it supports it. I don&amp;#39;t think it uses a whitelist.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;(3): Yes. If the devices are running the final FW, which supports bonding, then it obviously will contain bonding data after the test. So you need to consider that (I just wanted to make sure you were aware, but it seems like you know this stuff quite well &lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f642.svg" title="Slight smile"&gt;&amp;#x1f642;&lt;/span&gt;). You can probably do something like only erasing the FDS pages. The next time the application boots up, it will see that it needs to re-initialize the FDS pages, since they are blank. Just like in the first ever boot up.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268800?ContentTypeID=1</link><pubDate>Wed, 09 Sep 2020 15:25:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ee1b2769-deac-4131-9a75-7c85a274c4ff</guid><dc:creator>Cedric M</dc:creator><description>&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;Thank you very much, your analysis was perfect and allowed me to find the problem. You got it right:&lt;br /&gt;&lt;br /&gt;The &amp;quot;record key&amp;quot; was indeed 0xC007 (you have to swap the bytes). From this key, I went up, as you had noticed, to the function which called somewhere to a record. It is indeed PM_PEER_DATA_ID_BONDING, I would never have found it without you since it is the concatenation of 2 constants in the code, and it is deeply hidden in a long list of function calls.&lt;br /&gt;This is indeed a function of the peer manager when there is a BLE event, and according to the path it is the result of a connection with successful authentication.&lt;br /&gt;&lt;br /&gt;this is the &amp;quot;pds_peer_data_store ()&amp;quot; function in &amp;lt;peer_data_storage.c&amp;gt; whose call path is:&lt;br /&gt;&lt;br /&gt;ble_evt_dispatch() --&amp;gt; pm_on_ble_evt() --&amp;gt; sm_ble_evt_handler() --&amp;gt; smd_ble_evt_handler() --&amp;gt; auth_status_process() --&amp;gt; auth_status_success_process() --&amp;gt; pdb_write_buf_store() --&amp;gt; pdb_write_buf_store() &lt;br /&gt;&lt;br /&gt;I therefore copied the source code of this library into my code (exclude the link in the library so as not to corrupt the other projects in the tree structure of common libraries), and I inhibited the call to this function.&lt;br /&gt;&lt;br /&gt;To check the operation, I started with a totally erased chip, then I programmed the softdevice and the application.&lt;br /&gt;I made a series of connections with 2 blank peripherals (with the central and peripherals in full bonding / passkey ....) and I can do my tests with the connection fully operational, and without any writing in the flash.&lt;br /&gt;&lt;br /&gt;To answer your remark (1) about pairing vs bonding, I failed to get the code implemented in bonding (with passkey, whitelist, private key) to work by degrading it to pairing, I have a systematic error settings that I cannot resolve.&lt;br /&gt;I too would have liked not to do bonding for the test. I hope to be able to do it later but for the moment the solution and &amp;quot;skipping&amp;quot; the flash step is operational and allowed me to understand its operation for related uses that I implement in the test-fixture.&lt;br /&gt;&lt;br /&gt;For your remark (2) about pm_peers_delete (), I recently had the problem to delete devices in &amp;quot;factory&amp;quot; mode for customer use, but unfortunately this does not delete the whitelist data (so in the end I am also stuck). I found some posts on the forum (with replies from Nordic developpers) who knew about this problem and offered solutions to get around it by independently managing the erasure of data from the white list, but it seemed quite complicated.&lt;br /&gt;&lt;br /&gt;For your remark (3), this is absolutely correct, it was part of my first notes at the beginning of the initial post (post 07/09/20 12:41 # 1), and it joins the remark (1). After the test, I have to erase each device, but only the data (identified!) by the code by making a direct access (not protected) in erasure. It is less annoying because it only requires one cycle on the flash of a DUT (unlike the test-fixture).&lt;br /&gt;&lt;br /&gt;Once again a big thank you&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;Cedric&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268746?ContentTypeID=1</link><pubDate>Wed, 09 Sep 2020 12:25:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3bbba0c1-72ba-4017-83d4-274c37d1dad6</guid><dc:creator>Edvin</dc:creator><description>[quote user="Cedric M"]&lt;span title=""&gt;I have examined the HEX file in link.&lt;/span&gt; &lt;span title=""&gt;A priori it is not an NRF51, but whatever the principle remains the same&lt;/span&gt;[/quote]
&lt;p&gt;&amp;nbsp;Indeed. It is an nRF52840. It is what I had connected to the computer. I don&amp;#39;t have any nRF51 DKs at the moment, but I used SDK 12.3.0, and the ble_app_hrs example for the nRF52840, which should behave equivalent. At least FDS wise.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="Cedric M"]My remarks come after the execution has taken place at least once, that is to say that it is the software which modifies the memory.[/quote]
&lt;p&gt;&amp;nbsp;My flash dump was taken after I started the application. The softdevice never writes anything to the FDS pages directly. The only link between the FDS and the softdevice is that FDS uses fstorage, which uses a softdevice backend to read and write to flash, but the softdevice never initiates a flash write without it coming from the application. Typically, the softdevice triggers events, e.g. in the peer manager, which then writes to the FDS -&amp;gt; fstorage -&amp;gt; softdevice backend.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="Cedric M"]If I understood correctly, to read (and understand) these values, there is no need to swap the bytes, we read the addresses in order in a basic way (not like DECOADDE which becomes DEADCODE).[/quote]
&lt;p&gt;&amp;nbsp;This always confuses me. I suspect that we do. I think that the record key is 0xC007. I guess this comes from&amp;nbsp;PDS_FIRST_RESERVED_FILE_ID or&amp;nbsp;PDS_FIRST_RESERVED_RECORD_KEY, which is used in&amp;nbsp;PEER_ID_TO_FILE_ID,&amp;nbsp;FILE_ID_TO_PEER_ID,&amp;nbsp;DATA_ID_TO_RECORD_KEY and&amp;nbsp;RECORD_KEY_TO_DATA_ID. So the list of places to check quickly becomes very large.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;What happened to not bonding, but just pairing in your production test?&lt;/p&gt;
&lt;p&gt;If you want to see where the peer manager uses fds, I guess I would start by commenting out &lt;span&gt;fds_register()&amp;nbsp;&lt;/span&gt;in peer_manager_init() -&amp;gt; pm_init() -&amp;gt;&amp;nbsp;pds_init() -&amp;gt; fds_register(fds_evt_handler); Perhaps also fds_init() in the same function.&lt;/p&gt;
&lt;p&gt;And then see where it fails.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I just noticed when checking how pm_init() is set up that there is something relevant in pds_init():&lt;/p&gt;
&lt;p&gt;pds_init() -&amp;gt;&amp;nbsp;peer_ids_load():&lt;/p&gt;
&lt;p&gt;uint16_t const record_key = peer_data_id_to_record_key(PM_PEER_DATA_ID_BONDING);&lt;/p&gt;
&lt;p&gt;PM_PEER_DATA_ID_BONDING =&amp;nbsp;PM_PEER_DATA_ID_BONDING_V2 = 7, and peer_data_id_to_record_key() will add&amp;nbsp;DATA_ID_TO_RECORD_KEY (0xC000) to this.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So peer_ids_load() will try to find a record with record key 0xC007. It doesn&amp;#39;t write it, but this is at least somewhat related.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;pm_peer_data_bonding_store() will store a record using PM_PEER_DATA_ID_BONDING together with&amp;nbsp;pm_peer_data_bonding_store (which makes up 0xC007), so you can check where this is called, and possibly comment out that place.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;However, after a &amp;quot;deep dive&amp;quot; into this, I realized that I don&amp;#39;t think any of this is necessary. Why do you need to disable the flash writes?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. I don&amp;#39;t really think bonding is necessary to test during production.&lt;/p&gt;
&lt;p&gt;2. If you want to test bonding, then test it, and call pm_peers_delete() on every disconnect. It will delete all your stored peer data. This will eventually burn out your flash, but that will take a long time. Deleting a peer doesn&amp;#39;t delete the flash. It just marks the record as a dirty record. First when all of your flash pages (except the swap page) is full it will do a garbage collection, and actually delete the flash pages. At this point, you have used 1 flash write cycle.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. If you bond during testing, you will end up with all of the DUTs having a stored bond in your flash, right? (Or do you intend to erase the flash on these and reprogram them afterwards?) If they contain bonding data, then they would typically advertise with a whitelist (not accepting connections from new devices). Have you concidered this?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;My suggestions:&lt;/p&gt;
&lt;p&gt;1: Don&amp;#39;t test bonding. If it works on one device, it probably works on all.&lt;/p&gt;
&lt;p&gt;2: If you decide to test bonding, just delete the bond information in the tester whenever you want to test a new device. This can all be done in the application, so you don&amp;#39;t need to do anything inside the peer manager libraries.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268706?ContentTypeID=1</link><pubDate>Wed, 09 Sep 2020 10:21:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d2005f00-4643-4125-8d94-92a16888b76b</guid><dc:creator>Cedric M</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;#1&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;I have examined the HEX file in link.&lt;/span&gt; &lt;span title=""&gt;A priori it is not an NRF51, but whatever the principle remains the same.&lt;/span&gt; &lt;span class="" title=""&gt;I have the same thing when I program, the memories are well initialized without any data.&lt;/span&gt; &lt;span class="" title=""&gt;I am using nrf connect by doing an &amp;quot;erase all&amp;quot;.&lt;/span&gt;&lt;br /&gt;&lt;span class="" title=""&gt;My remarks come after the execution has taken place at least once, that is to say that it is the software which modifies the memory.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;#2&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;Thanks for documentation link. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;I understand better how the bytes are used.&lt;/span&gt;&lt;br /&gt;&lt;span title=""&gt;I confirm to you that initially the memory is quite empty (erased 0xFF).&lt;/span&gt; &lt;span title=""&gt;There is no such data.&lt;/span&gt; &lt;span class="" title=""&gt;It is the execution of the software that adds it.&lt;/span&gt;&lt;br /&gt;&lt;span class="" title=""&gt;If I understood correctly, to read (and understand) these values, there is no need to swap the bytes, we read the addresses in order in a basic way (not like DECOADDE which becomes DEADCODE).&lt;/span&gt;&lt;br /&gt;&lt;span class="" title=""&gt;For now, I haven&amp;#39;t figured out what 07 C0 14 00 is yet. According to the documentation 07 C0 would be the record key, and the address range is in 0x0001-0xBFFF, so it&amp;#39;s a&lt;/span&gt; &lt;span title=""&gt;data range because the peer manager uses 0xC000-0xFFFE.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span title=""&gt;For the SDK, I checked again if I was up to date, it is.&lt;/span&gt; &lt;span class="" title=""&gt;As I indicated at the beginning, the chip is an NRF51, and according to the official Nordic correspondence table, I have to use the S130 softdevice (BLE in central and peripheral role).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span title=""&gt;here is the link :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;&lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcomp_matrix_nrf51%2FCOMP%2Fnrf51%2Fnrf51_comp_matrix.html"&gt;https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcomp_matrix_nrf51%2FCOMP%2Fnrf51%2Fnrf51_comp_matrix.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/SDK_5F00_compatibility.PNG" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;Then, I am using SDK 12.3.0 with softdevice v2.0.1 as requested. &lt;span class="" title=""&gt;Other SDKs do not support NRF51&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;nRF5 SDK v12.3.0&lt;br /&gt;----------------&lt;br /&gt;Release Date: Week 19, 2017&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;For the link of flash storage, I use it (instead of v17). I compared each one, it seems to be identical.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;&lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v17.0.0%2Flib_fds_format.html"&gt;https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v17.0.0%2Flib_fds_format.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;Yes, I use the peer manager.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;&lt;span class="" title=""&gt;since yesterday, I still have not managed to identify which function could write data, and what the key record 07 C0 corresponds to&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;A new records (07 C0....) is saved (in central) each time I connect a new perripheral while the function fs_sys_event_handler(sys_evt); is disabled.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;Regards,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268654?ContentTypeID=1</link><pubDate>Wed, 09 Sep 2020 07:47:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:33cb27b0-2732-46de-b5db-8b83154fede3</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I tested the ble_app_hrs example which has support for bonding with the peer manager, and in my case, it doesn&amp;#39;t write anything to the FDS pages, other than the page tag (DEC0ADDE) and the page type tag (FF011EF1/FE011EF1).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please see the attached flash dump:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/support-attachments/beef5d1b77644c448dabff31668f3a47-296ce545feef4faba29829daaf23e996/ble_5F00_app_5F00_hrs_5F00_flashdump.hex"&gt;devzone.nordicsemi.com/.../ble_5F00_app_5F00_hrs_5F00_flashdump.hex&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Can you please make sure that you erase the entire flash (using nrfjprog -e) before you program the softdevice and application.&lt;/p&gt;
&lt;p&gt;Does it write anything to the flash before you connect to anything?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="Cedric M"]I do not understand what this data is and what is the function that update this data. Have you an idea ?[/quote]
&lt;p&gt;The flash records from FDS are stored on the following format:&lt;br /&gt;&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.0/lib_fds_format.html"&gt;https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.0/lib_fds_format.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the reason i want you to erase the flash before you program it. It doesn&amp;#39;t match the record layout. In your case, the record key is 07C0, and the data length is 0x14(20), and CRC 00. But the record ID is 0x00000000, and there are more than 20 bytes between the &amp;quot;records&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;What SDK version do you use? And do you use the peer manager?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268444?ContentTypeID=1</link><pubDate>Tue, 08 Sep 2020 08:43:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e9c581d-a7ca-46b5-8539-04114e2d5b8d</guid><dc:creator>Cedric M</dc:creator><description>&lt;p&gt;If I repeat operation (several test with different DUT), it&amp;#39;s work, bonding is not saved, I can do my tests of DUT, but I see memory flash is again updated with 0x0014 0xC007.&lt;/p&gt;
&lt;p&gt;Then it solve problem of bonding saving (that is not saving !), but not flash endurance of test-fixture (there is an update of data flash at each test of DUT).&lt;/p&gt;
&lt;p&gt;I do not understand what this data is and what is the function that update this data. Have you an idea ?&lt;/p&gt;
&lt;p&gt;Please see picture that is the result of 3 tests : (you can see 0xFF data between each test, then correspond to NULL bonding)&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/hex_5F00_after_5F00_first_5F00_boot_5F00_and_5F00_after_5F00_inhibit2.png" /&gt;&lt;/p&gt;
&lt;p&gt;regards,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268439?ContentTypeID=1</link><pubDate>Tue, 08 Sep 2020 08:29:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e613784-4da1-4df4-a250-7822e8100e80</guid><dc:creator>Cedric M</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I add complement of #2. I made another test today :&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span title=""&gt;Compared to the last remarks, I investiguated the way in which Flash memory is accessed during bonding.&lt;/span&gt;&lt;br /&gt;&lt;span title=""&gt;In the sys_evt_dispatch () function (of BLE source code), we find the function fs_sys_event_handler (), where fs_ = FlashStorage. This function seems to be call after an event bonding.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;br /&gt;&lt;span title=""&gt;If I inhibit this function permanently, the application does not start.&lt;/span&gt; &lt;span class="" title=""&gt;Compared to if I let it run the first time and then deactivate it afterwards, I have the impression that the bonding is working and is no longer flash savings. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;br /&gt;&lt;span class="" title=""&gt;I noticed that the 1st time the memory is written with the data 0xC007 0x0014.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;- What does this data correspond to (test condition is : boot without any connexion of peripheral) ?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;- is my method consistent with you (to execute function only first boot, and after never) ?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;Please see picture of data memory that is written first time :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/hex_5F00_after_5F00_first_5F00_boot_5F00_and_5F00_after_5F00_inhibit.png" /&gt;&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;CM&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268374?ContentTypeID=1</link><pubDate>Mon, 07 Sep 2020 17:17:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0736915b-542a-4af8-a321-ea5b04f79cc3</guid><dc:creator>Cedric M</dc:creator><description>&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;#1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;For this example, I am using the test fixture (with the initial code coming from a device developped in the central role).&lt;/span&gt; &lt;span class="" title=""&gt;I am using a device (DUT) in peripheral mode. Each one are configured initially for bonding with passkey and whitelist.&lt;/span&gt;&lt;br /&gt;&lt;span class="" title=""&gt;The central code is changed to bonding = 0 instead of 1. The rest of paremeters are unchanged&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;-------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;#define SEC_PARAM_BOND&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0//tbd1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; Perform bonding. */&lt;br /&gt;#define SEC_PARAM_MITM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; Man In The Middle protection required. */&lt;br /&gt;#define SEC_PARAM_LESC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&amp;lt; LE Secure Connections not enabled. */&lt;br /&gt;#define SEC_PARAM_KEYPRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&amp;lt; Keypress notifications not enabled. */&lt;br /&gt;#define SEC_PARAM_IO_CAPABILITIES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BLE_GAP_IO_CAPS_KEYBOARD_ONLY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; No I/O capabilities: defined to keyboard only in order to launch MITM protection. */&lt;br /&gt;#define SEC_PARAM_OOB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; Out Of Band data not available. */&lt;br /&gt;#define SEC_PARAM_MIN_KEY_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; Minimum encryption key size. */&lt;br /&gt;#define SEC_PARAM_MAX_KEY_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;16&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;-------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;on startup of central, I have an error come from peer manger (function peer_manager_init() ), 0x7 that correspond to invalid param.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;#2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;&lt;span title=""&gt;yes indeed I had seen that flash pages were reserved and used from the end, either just before the bootloader if it exists, or at the very end of the memory without a bootloader.&lt;/span&gt;&lt;br /&gt;&lt;span title=""&gt;I have 3 reserved pages with a few bytes established.&lt;/span&gt; I had clearly identified the bonding page that evolves after a pairing. The other 2 I don&amp;#39;t know what they are for.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;0x3F400 - 0x3F7FF : ?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;0x3F800 - 0x3FBFF : bonding&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;0x3FC00 - 0x3FFFF : ? &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;I do test without bootloader to more lisibility.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;&lt;span title=""&gt;I analyzed the memory with an intel HEX editor from a read with nrf connect.&lt;/span&gt; I can see the DEADCODE data.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;it is therefore the page with the bonding information that I want to bypass (see attached)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;memory after 1st boot. I can see data page&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/memory_5F00_and_5F00_hex_5F00_first_5F00_boot.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;location of data after bonding&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/hex_5F00_after_5F00_bonding.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;So I correctly locate the page, now the question is how to redirect the accesses (R / W) on RAM&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;On the DUT side, your remark is quite correct, but I had not mentioned it because it is not blocking. As the DUT is tested (only once), I can use the built-in &amp;quot;factory&amp;quot; erase procedure because I don&amp;#39;t have the memory endurance problem, it&amp;#39;s just a bit of a pain because it lengthens the steps and the test time. If I manage to solve the test bench side, I could then I think to solve that too (because it is less complicated or equivalent)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;Regards&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;(I will post independant another question relative to test fixture for better post follow-up)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268253?ContentTypeID=1</link><pubDate>Mon, 07 Sep 2020 10:41:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a12f7c0f-c690-40d8-8b0b-8ffa3f79acab</guid><dc:creator>Edvin</dc:creator><description>[quote user="Cedric M"]Then I try to do pairing on test-fixture, I try it last day,&amp;nbsp; but it not works (error code returns). [/quote]
&lt;p&gt;&amp;nbsp;Where does it return an error code? What function returned it, and what was the value of the error code?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="Cedric M"]Is it sure that pairing will not save anything in flash ? (I use nrf connect-&amp;gt;prog to see sections of flash used, I see it at end of flash before bootloader section, and data were write at boot without any connexion (after load/write/read to compare hex file), then I see that things happen without my knowing why...the use of the flash is rather obscure)[/quote]
&lt;p&gt;&amp;nbsp;If your application uses the peer_manager, it will initialize the FDS pages on first power up, but it doesn&amp;#39;t necessarily store something there. This is why you see the lines near the top of the flash after you connected to it. You should see the same lines even if you do not connect to it at all. If you want to investigate further, you can read back the flash using either nRF Connect -&amp;gt; Programmer or nrfjprog (nrfjprog --readcode my_flashdump.hex). If you open that hex file in a text editor, you can check the content of the FDS pages like this:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Search for &amp;quot;DEC0ADDE&amp;quot; (DEADC0DE in reverse byte order). It will have a few occurances in your application region, and then N occurances near the end of the file, where N matches the number of FDS pages in your application (N = 3 by default in the later SDKs, but since you are using the nRF51, this may vary). The word after dec0adde is either&amp;nbsp;FF011EF1 or FE011EF1, where&amp;nbsp;FF011EF1 refers to the swap page, and&amp;nbsp;FE011EF1 refers to data pages.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What you should see, if the application didn&amp;#39;t write anything to the FDS pages, the area after&amp;nbsp;&lt;span&gt;DEC&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;ADDE&lt;/span&gt;&lt;span&gt;FE011EF1&lt;/span&gt;/&lt;span&gt;DEC&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;ADDE&lt;/span&gt;&lt;span&gt;FF011EF1, and to the end of the page contains records. If they are all 0xFFFFFFFF, then it means that the FDS is only initialized, but there is no data written to the flash.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Another thing that you may already have thought about, if you manage to disable the FDS part of the peer manager, what happens to the DUT? Will it store bonding information, or do you intend to disable it in the DUTs as well?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;BR,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Edvin&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268093?ContentTypeID=1</link><pubDate>Fri, 04 Sep 2020 13:31:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b8a1c4cc-1000-49aa-ae74-eed92556b4f9</guid><dc:creator>Cedric M</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Yes you are right. I do not need bonding because I do not need to re-connect (faster / better) later between test-fixture and DUT. I just want to establish a full connexion (one time for test) that can transfert data between each one (one in central role, one in peripheral role).&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;That&amp;#39;s what I feared for the&lt;/span&gt;&lt;/span&gt; peer_manager and softdevice, flash function will be complicated.&lt;/p&gt;
&lt;p&gt;The final product (that is DUT) is configured by defaut to &amp;quot;bonding&amp;quot; (constant in source code at &amp;quot;sec_param.bond&amp;quot;), there is no user input to make a configuration. Then I can&amp;#39;t configure it in an alternately pairing mode (&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;I specify it because I thought it was a limitation&lt;/span&gt;&lt;/span&gt;).&lt;/p&gt;
&lt;p&gt;Then I try to do pairing on test-fixture, I try it last day,&amp;nbsp; but it not works (error code returns). &lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;I deduced that we could not have one device configured in &amp;quot;bonding&amp;quot; and the other in &amp;quot;pairing&amp;quot;, but I may be wrong.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;So is it possible to combine a device in bonding and other one in pairing mode, and have full access of data transfert ? If it can be works, I must search why I can not do it (before launching into code to substitute the flash to RAM access)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;Is it sure that pairing will not save anything in flash ? (I use nrf connect-&amp;gt;prog to see sections of flash used, I see it at end of flash before bootloader section, and data were write at boot without any connexion (after load/write/read to compare hex file), then I see that things happen without my knowing why...the use of the flash is rather obscure)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;Regards,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;Cedric&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268061?ContentTypeID=1</link><pubDate>Fri, 04 Sep 2020 12:25:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c29f8bfb-5cfd-4ba7-b8c5-ce42ffb6738c</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;The peer manager is quite tangled into the flash operations, since that is it&amp;#39;s only job. Do you really need to test bonding on every device during production? Perhaps you should at least consider testing only pairing.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t know what parts of the bonding you want to test. If it is just the bonding procedure (which is almost identical to the pairing procedure), you may be able to find out just where it writes to flash, and comment out that part (and return a fake NRF_SUCCESS). But if you intend to disconnect and connect again, you would also have to fake the&amp;nbsp;part where it looks up the bonding information, which may be a bit more tedious.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;One way I can think of is to write a custom backend for FDS that doesn&amp;#39;t use NVMC or the softdevice API, but a custom RAM file system of some sort. This way you wouldn&amp;#39;t have to touch the peer manager at all. The alternative way is to find out where the peer manager stores the bonding information, and just write this to a custom variable in RAM instead of a flash record. Then, you would need to find out where it reads out these records later, and fetch the data from the custom variable instead.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So can you elaborate a bit on what parts of the bonding you want to test?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to disable storage in flash memory all information of bonding/pairing/wititelist/passkey ? Needs for test-fixture that connect just one time</title><link>https://devzone.nordicsemi.com/thread/268047?ContentTypeID=1</link><pubDate>Fri, 04 Sep 2020 11:57:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ed70394c-2ac6-4783-9544-1f49957155d6</guid><dc:creator>Cedric M</dc:creator><description>&lt;p&gt;I just realize that I make a keyboard entry error, sorry, I use softdevice S130 (and not S310) for both central and peripheral role&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>