<?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>advertising range extender</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/108742/advertising-range-extender</link><description>We have sensors that advertise their status to a main device using the NRF-Connect, which works fine. 
 In this arrangement, the central unit does not initiate connections; rather, the sensors solely advertise their status. 
 The challenge arises with</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 13 Mar 2024 14:45:33 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/108742/advertising-range-extender" /><item><title>RE: advertising range extender</title><link>https://devzone.nordicsemi.com/thread/473700?ContentTypeID=1</link><pubDate>Wed, 13 Mar 2024 14:45:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e8c1255f-8a88-4c0f-ac3a-ecb315716d7a</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;A custom solution (for instance along the lines suggested by &lt;a href="https://devzone.nordicsemi.com/members/evdavies"&gt;evdavies&lt;/a&gt;) could also work, yes. Just make sure to have mechanisms such that if you have multiple relays/repeaters, then the message will not jump back and forth indefinitely.&lt;/p&gt;
&lt;p&gt;Bluetooth mesh handles this through &amp;quot;managed flooding&amp;quot;, where each relay node has a message cache in order to check if a message has been relayed before (to ensure each message is only repeated once) and there is a TTL value (which is decreased for each relay, and messages are not relayed further when TTL reaches 1.)&lt;/p&gt;
&lt;p&gt;Other protocols, such as Thread, handles this through setting up a dedicated router network and routing messages through direct links between the router nodes.&lt;/p&gt;
&lt;p&gt;Generally this could be an easy or hard problem to solve, depending on the number of nodes involved and the topology of the network.&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: advertising range extender</title><link>https://devzone.nordicsemi.com/thread/473523?ContentTypeID=1</link><pubDate>Tue, 12 Mar 2024 21:05:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e0508418-7619-4196-a18c-bec529d89359</guid><dc:creator>evdavies</dc:creator><description>&lt;p&gt;Yes, it is certainly possible. You just need to set it up to scan for the advertising packets coming off your devices and update the advertising data on the repeater / relay. Wether or not this is feasible is a question of how much data you need to pass through the relay. If your sensors are sending tons of advertising packets really quickly, having several of them go through one relay will be difficult. I&amp;#39;m not going to post my full project, but hopefully this can guide you in the right direction. Disclaimer that some of this can probably be done more efficiently and you&amp;#39;ll have to figure out the indexes for your application. This is based on a combination of several examples included in the SDK (notably ble_central_and_peripheral/experimental/ble_app_hrs_rscs_relay)&lt;/p&gt;
&lt;p&gt;Initialize the scan to filter for your devices, start the scan, and start advertising&lt;/p&gt;
&lt;p&gt;In your scan event handler (for case&amp;nbsp;NRF_BLE_SCAN_EVT_NOT_FOUND in my application), pull the data from the advertising packet:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;for (i=0; i&amp;lt;mfg_data_len; i++)
{
    mfg_data[i] = * (p_adv_report-&amp;gt;data.p_data + i);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I have a static advertising buffer so I can write data in from multiple locations easily. Write the relevant data into the buffer and call the update handler:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;for (i=0; i&amp;lt;17; i++)
{
    adv_buffer[i] = mfg_data[i+7];
}

adv_data_update_handler();&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Your update handler should look something like:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;static void adv_data_update_handler(void)
{
    //Change advertising data
    ret_code_t                  err_code;
    ble_advdata_manuf_data_t    manuf_data;

/* change these values for your application
    new_advdata.p_manuf_specific_data = &amp;amp;manuf_data;
    new_advdata.name_type = BLE_ADVDATA_SHORT_NAME;
    new_advdata.short_name_len = 5;
    new_advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
    
    manuf_data.company_identifier = 0xFFFF;
    
*/

    manuf_data.data.p_data = adv_buffer;
    manuf_data.data.size = sizeof(adv_buffer);
    
    err_code = ble_advertising_advdata_update(&amp;amp;m_advertising, &amp;amp;new_advdata, NULL);
    APP_ERROR_CHECK(err_code);  

}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;You might need to play with the scan interval, scan window, and advertising interval values. I also had to set the link count values in sdk_config to 0 and&amp;nbsp;APP_BLE_CONN_CFG_TAG to 0.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hope this helps&lt;/p&gt;
&lt;p&gt;*Edited to correct a little inefficiency&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: advertising range extender</title><link>https://devzone.nordicsemi.com/thread/472871?ContentTypeID=1</link><pubDate>Fri, 08 Mar 2024 09:16:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a6072ab0-1773-4fe0-94a1-6fbe5fb73886</guid><dc:creator>Johan.h</dc:creator><description>&lt;p&gt;&lt;span&gt;Thank you for the information. I took a quick look at the Mesh protocol, but it seems too complex for my needs and would require redesigning the current sensors, central unit, and mobile app used for system monitoring and configuration. That&amp;#39;s quite a bit of work. What I need, however, is just a simple &amp;quot;node&amp;quot; that continuously scans and re-broadcasts any received packet just once. Is there any issue with implementing such a straightforward solution?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: advertising range extender</title><link>https://devzone.nordicsemi.com/thread/472751?ContentTypeID=1</link><pubDate>Thu, 07 Mar 2024 14:26:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ce475278-6e5e-47c6-8423-15913f0cafd4</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Depending on your needs, there may already exist a solution in the form of &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/protocols/bt/bt_mesh/index.html"&gt;Bluetooth Mesh&lt;/a&gt;, which basically works by repeating BLE advertisements.&lt;/p&gt;
&lt;p&gt;Please note however that in Bluetooth Mesh, information is put in what in Bluetooth Mesh terminology is called &amp;quot;messages&amp;quot;, and that such messages can be spread over multiple actual advertisements, with up to 12 bytes of message payload in each advertisement packet.&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>