<?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>Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/116848/extend-number-of-devices-for-pawr-coded-phy</link><description>Hi all ! 
 I&amp;#39;m writing this message because I&amp;#39;m having problems trying to increase the number of devices in PAwR (I use Coded PHY). 
 I based my development on the SDK 2.8.0 example ( Periodic_adv_conn / Periodic_sync_conn ). I also tried Periodic_adv_rsp</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 28 Jan 2025 14:01:19 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/116848/extend-number-of-devices-for-pawr-coded-phy" /><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/520379?ContentTypeID=1</link><pubDate>Tue, 28 Jan 2025 14:01:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5d827f6d-3de4-4d39-93ab-5d81e2014c01</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&lt;/p&gt;
&lt;p&gt;Thank you for your reply. Let me try from my side and will tell you if&amp;nbsp;it is working well.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/519655?ContentTypeID=1</link><pubDate>Wed, 22 Jan 2025 22:11:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fde20862-483a-4f35-be07-ac57c16e04b2</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hi Yann,&lt;/p&gt;
&lt;p&gt;My colleagues pointed out that while the advertising interval we are using is 3000ms (0x960 * 1.25ms), the timeout to sync is only 1700ms (0xAA * 10ms). The timeout needs to be increased.&lt;/p&gt;
&lt;p&gt;Please increase the timeout value in the period_sync_conn side. The line of code is here:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The range of the timeout is documented here:&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/zephyr-apis-2.9.0/page/structbt_le_per_adv_sync_param.html"&gt;Zephyr API: bt_le_per_adv_sync_param Struct Reference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I think it would make sense to increase it proportionally to how much advertising interval is increased.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/518644?ContentTypeID=1</link><pubDate>Thu, 16 Jan 2025 13:30:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0a6f6f19-7242-42a7-99fe-eebc483f048c</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;No problem.&lt;/p&gt;
&lt;p&gt;Thank you for your reply and for checking.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let me know when you have any information and if you manage to find a solution.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/518615?ContentTypeID=1</link><pubDate>Thu, 16 Jan 2025 11:57:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1cfbe3c1-a2de-42f0-912c-3f78f642dd6c</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hi Yann,&lt;/p&gt;
&lt;p&gt;While I test my setup again to be sure before sending it to you, I cannot reproduce my success anymore...&lt;/p&gt;
&lt;p&gt;I would like to believe that I tested thoroughly last I reported my success, but I clearly don&amp;#39;t have any evidence of that now... It is very likely that I made a mistake in the test.&lt;/p&gt;
&lt;p&gt;Regardless, I now can reproduce a failure, and I found that just lengthening the advertising interval is already causing issue. I am going to investigate what is wrong and follow up with you within next week.&lt;/p&gt;
&lt;p&gt;My apologies,&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/518246?ContentTypeID=1</link><pubDate>Tue, 14 Jan 2025 13:59:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0bec32ac-d1c1-4817-9421-a62e0d721f9d</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&lt;/p&gt;
&lt;p&gt;I tried on nRF54L15 dev board (on ADV side) the project but I have the same problem.&lt;/p&gt;
&lt;p&gt;Is it possible for you to share with me your &lt;strong&gt;.hex&lt;/strong&gt; files with the 20 slots and 8 subevents config ? For the ADV and SYNC side, like this I can test the same projects as you and I can flash my devices with the nRF programmer.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/517020?ContentTypeID=1</link><pubDate>Mon, 06 Jan 2025 14:18:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5293f3f0-357c-4e94-a4c4-feedd13b7471</guid><dc:creator>Hieu</dc:creator><description>[quote user="Yannch"]- You&amp;nbsp;tried projects on NRF52840DK board or an other development board ?[/quote]
&lt;p&gt;periodic_adv_conn on NCS 2.8.0 on nRF54L15 DK, and&lt;/p&gt;
&lt;p&gt;periodic_sync_conn on NCS 2.8.0 on nRF52840 DK.&lt;/p&gt;
&lt;p&gt;I also had to enable CODED PHY on both projects.&lt;/p&gt;
&lt;p&gt;Unfortunately, due to complications I still haven&amp;#39;t returned to office to get access to more nRF52840 DK yet.&lt;/p&gt;
[quote user="Yannch"]- Can you please share&amp;nbsp;both&amp;nbsp;projects (adv_conn and sync_conn), like this we can test the same things ? (Maybe&amp;nbsp;my prj.conf files are different or something else)[/quote]
&lt;p&gt;Sure. Here you go.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/c336919_5F00_periodic_5F00_sync_5F00_conn_5F00_250106_5F00_01.zip"&gt;devzone.nordicsemi.com/.../c336919_5F00_periodic_5F00_sync_5F00_conn_5F00_250106_5F00_01.zip&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/c336919_5F00_periodic_5F00_adv_5F00_conn_5F00_250106_5F00_01.zip"&gt;devzone.nordicsemi.com/.../c336919_5F00_periodic_5F00_adv_5F00_conn_5F00_250106_5F00_01.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/516988?ContentTypeID=1</link><pubDate>Mon, 06 Jan 2025 13:04:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3adf3189-cce5-40d1-b52c-d47c3a76223c</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Ok, thanks.&lt;/p&gt;
&lt;p&gt;Few questions:&lt;/p&gt;
&lt;p&gt;- You&amp;nbsp;tried projects on NRF52840DK board or an other development board ?&lt;/p&gt;
&lt;p&gt;- Can you please share&amp;nbsp;both&amp;nbsp;projects (adv_conn and sync_conn), like this we can test the same things ? (Maybe&amp;nbsp;my prj.conf files are different or something else)&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/516975?ContentTypeID=1</link><pubDate>Mon, 06 Jan 2025 12:19:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9890deb6-1120-4d04-a512-688cb872331a</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hi Yann,&lt;/p&gt;
&lt;p&gt;Yes, I have two set of parameters, yours, and the sample default. I tried both.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/516931?ContentTypeID=1</link><pubDate>Mon, 06 Jan 2025 09:21:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5852996e-0d31-4ff5-bbfc-15682d0c35e7</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&lt;/p&gt;
&lt;p&gt;Thank you for your answer.&lt;/p&gt;
&lt;p&gt;In the file &lt;strong&gt;periodic_adv_conn - main.c&lt;/strong&gt; I see that you have used the following parameters:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define NUM_RSP_SLOTS	  5
#define NUM_SUBEVENTS  5&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Is it possible for you to try with the parameters that I sent you ?&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define NUM_RSP_SLOTS 20
#define NUM_SUBEVENTS 8&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Because with 5 slots and 5 subevents (Default example values) it also works on my side.&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/516382?ContentTypeID=1</link><pubDate>Fri, 27 Dec 2024 16:49:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:648ebe4f-1347-4b00-8fdc-ec11d4f58431</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hi Yann,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I cannot reproduce the issue. Your changes work just fine for me. I didn&amp;#39;t apply the patch with git but hand-picked each change and test incrementally. However, the result shouldn&amp;#39;t be different.&lt;/p&gt;
&lt;p&gt;Here are my main files, just to be sure.&lt;/p&gt;
&lt;p&gt;periodic_adv_conn - main.c&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/*
 * Copyright (c) 2023 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include &amp;lt;zephyr/bluetooth/bluetooth.h&amp;gt;
#include &amp;lt;zephyr/bluetooth/conn.h&amp;gt;
#include &amp;lt;zephyr/bluetooth/gap.h&amp;gt;
#include &amp;lt;zephyr/bluetooth/hci.h&amp;gt;

#define NUM_RSP_SLOTS	  5
#define NUM_SUBEVENTS	  5
#define PACKET_SIZE	  5
#define SUBEVENT_INTERVAL 0x30

#define SAMPLE_INTERVAL_MIN 0xFF
#define SAMPLE_INTERVAL_MAX 0xFF
#define RESPONSE_SLOT_DELAY 0x5


// #define NUM_RSP_SLOTS	  20
// #define NUM_SUBEVENTS	  8
// #define PACKET_SIZE	  5
// #define SUBEVENT_INTERVAL 0xF0

// #define SAMPLE_INTERVAL_MIN 0x960
// #define SAMPLE_INTERVAL_MAX 0x960

// #define RESPONSE_SLOT_DELAY 0x10


#define BT_LE_EXT_ADV_NCONN_CODED BT_LE_ADV_PARAM(BT_LE_ADV_OPT_EXT_ADV | \
                        BT_LE_ADV_OPT_CODED, \
					    BT_GAP_ADV_FAST_INT_MIN_2, \
					    BT_GAP_ADV_FAST_INT_MAX_2, NULL)

static const struct bt_le_per_adv_param per_adv_params = {
	// .interval_min = 0xFF,
	// .interval_max = 0xFF,
	.interval_min = SAMPLE_INTERVAL_MIN,
	.interval_max = SAMPLE_INTERVAL_MAX,
	.options = 0,
	.num_subevents = NUM_SUBEVENTS,
	.subevent_interval = SUBEVENT_INTERVAL,
	// .response_slot_delay = 0x5,
	.response_slot_delay = RESPONSE_SLOT_DELAY,
	.response_slot_spacing = 0x50,
	.num_response_slots = NUM_RSP_SLOTS,
};

static struct bt_le_per_adv_subevent_data_params subevent_data_params[NUM_SUBEVENTS];
static struct net_buf_simple bufs[NUM_SUBEVENTS];
static uint8_t backing_store[NUM_SUBEVENTS][PACKET_SIZE];

BUILD_ASSERT(ARRAY_SIZE(bufs) == ARRAY_SIZE(subevent_data_params));
BUILD_ASSERT(ARRAY_SIZE(backing_store) == ARRAY_SIZE(subevent_data_params));

static void request_cb(struct bt_le_ext_adv *adv, const struct bt_le_per_adv_data_request *request)
{
	int err;
	uint8_t to_send;

	/* Continuously send the same dummy data and listen to all response slots */

	to_send = MIN(request-&amp;gt;count, ARRAY_SIZE(subevent_data_params));
	for (size_t i = 0; i &amp;lt; to_send; i++) {
		subevent_data_params[i].subevent =
			(request-&amp;gt;start + i) % per_adv_params.num_subevents;
		subevent_data_params[i].response_slot_start = 0;
		subevent_data_params[i].response_slot_count = NUM_RSP_SLOTS;
		subevent_data_params[i].data = &amp;amp;bufs[i];
	}

	err = bt_le_per_adv_set_subevent_data(adv, to_send, subevent_data_params);
	if (err) {
		printk(&amp;quot;Failed to set subevent data (err %d)\n&amp;quot;, err);
	}
}

static bool get_address(struct bt_data *data, void *user_data)
{
	bt_addr_le_t *addr = user_data;

	if (data-&amp;gt;type == BT_DATA_LE_BT_DEVICE_ADDRESS) {
		memcpy(addr-&amp;gt;a.val, data-&amp;gt;data, sizeof(addr-&amp;gt;a.val));
		addr-&amp;gt;type = data-&amp;gt;data[sizeof(addr-&amp;gt;a)];

		return false;
	}

	return true;
}

static struct bt_conn *default_conn;

static void response_cb(struct bt_le_ext_adv *adv, struct bt_le_per_adv_response_info *info,
			struct net_buf_simple *buf)
{
	// int err;
	// bt_addr_le_t peer;
	// char addr_str[BT_ADDR_LE_STR_LEN];
	// struct bt_conn_le_create_synced_param synced_param;
	// struct bt_le_conn_param conn_param;

	// if (!buf) {
	// 	return;
	// }

	// if (default_conn) {
	// 	/* Do not initiate new connections while already connected */
	// 	return;
	// }

	// bt_addr_le_copy(&amp;amp;peer, &amp;amp;bt_addr_le_none);
	// bt_data_parse(buf, get_address, &amp;amp;peer);
	// if (bt_addr_le_eq(&amp;amp;peer, &amp;amp;bt_addr_le_none)) {
	// 	/* No address found */
	// 	return;
	// }

	// bt_addr_le_to_str(&amp;amp;peer, addr_str, sizeof(addr_str));
	// printk(&amp;quot;Connecting to %s in subevent %d\n&amp;quot;, addr_str, info-&amp;gt;subevent);

	// synced_param.peer = &amp;amp;peer;
	// synced_param.subevent = info-&amp;gt;subevent;

	// /* Choose same interval as PAwR advertiser to avoid scheduling conflicts */
	// conn_param.interval_min = SUBEVENT_INTERVAL;
	// conn_param.interval_max = SUBEVENT_INTERVAL;

	// /* Default values */
	// conn_param.latency = 0;
	// conn_param.timeout = 400;

	// err = bt_conn_le_create_synced(adv, &amp;amp;synced_param, &amp;amp;conn_param, &amp;amp;default_conn);
	// if (err) {
	// 	printk(&amp;quot;Failed to initiate connection (err %d)&amp;quot;, err);
	// }

	printk(&amp;quot;RX DATA : SUB %u SLOT %u DATA %02X%02X%02X%02X%02X\n&amp;quot;, info-&amp;gt;subevent, info-&amp;gt;response_slot,
        buf-&amp;gt;data[0], buf-&amp;gt;data[1], buf-&amp;gt;data[2], buf-&amp;gt;data[3], buf-&amp;gt;data[4]);
}

static const struct bt_le_ext_adv_cb adv_cb = {
	.pawr_data_request = request_cb,
	.pawr_response = response_cb,
};

static void connected_cb(struct bt_conn *conn, uint8_t err)
{
	printk(&amp;quot;Connected (err 0x%02X)\n&amp;quot;, err);

	__ASSERT(conn == default_conn, &amp;quot;Unexpected connected callback&amp;quot;);

	if (err) {
		bt_conn_unref(default_conn);
		default_conn = NULL;
	}
}

static void disconnected_cb(struct bt_conn *conn, uint8_t reason)
{
	printk(&amp;quot;Disconnected, reason 0x%02X %s\n&amp;quot;, reason, bt_hci_err_to_str(reason));

	__ASSERT(conn == default_conn, &amp;quot;Unexpected disconnected callback&amp;quot;);

	bt_conn_unref(default_conn);
	default_conn = NULL;
}

BT_CONN_CB_DEFINE(conn_cb) = {
	.connected = connected_cb,
	.disconnected = disconnected_cb,
};

static void init_bufs(void)
{
	/* Set up some dummy data to send */
	for (size_t i = 0; i &amp;lt; ARRAY_SIZE(backing_store); i++) {
		backing_store[i][0] = ARRAY_SIZE(backing_store[i]) - 1;
		backing_store[i][1] = BT_DATA_MANUFACTURER_DATA;
		backing_store[i][2] = 0x59; /* Nordic */
		backing_store[i][3] = 0x00;

		net_buf_simple_init_with_data(&amp;amp;bufs[i], &amp;amp;backing_store[i],
					      ARRAY_SIZE(backing_store[i]));
	}
}

static const struct bt_data ad[] = {
	BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1),
};


int main(void)
{
	int err;
	struct bt_le_ext_adv *pawr_adv;

	init_bufs();

	printk(&amp;quot;Starting Periodic Advertising Demo\n&amp;quot;);

	/* Initialize the Bluetooth Subsystem */
	err = bt_enable(NULL);
	if (err) {
		printk(&amp;quot;Bluetooth init failed (err %d)\n&amp;quot;, err);
		return 0;
	}

	/* Create a non-connectable advertising set */
	// err = bt_le_ext_adv_create(BT_LE_EXT_ADV_NCONN, &amp;amp;adv_cb, &amp;amp;pawr_adv);
	err = bt_le_ext_adv_create(BT_LE_EXT_ADV_NCONN_CODED, &amp;amp;adv_cb, &amp;amp;pawr_adv);
	if (err) {
		printk(&amp;quot;Failed to create advertising set (err %d)\n&amp;quot;, err);
		return 0;
	}

	/* Set advertising data to have complete local name set */
	err = bt_le_ext_adv_set_data(pawr_adv, ad, ARRAY_SIZE(ad), NULL, 0);
	if (err) {
		printk(&amp;quot;Failed to set advertising data (err %d)\n&amp;quot;, err);
		return 0;
	}

	/* Set periodic advertising parameters */
	err = bt_le_per_adv_set_param(pawr_adv, &amp;amp;per_adv_params);
	if (err) {
		printk(&amp;quot;Failed to set periodic advertising parameters (err %d)\n&amp;quot;, err);
		return 0;
	}

	/* Enable Periodic Advertising */
	err = bt_le_per_adv_start(pawr_adv);
	if (err) {
		printk(&amp;quot;Failed to enable periodic advertising (err %d)\n&amp;quot;, err);
		return 0;
	}

	printk(&amp;quot;Start Periodic Advertising\n&amp;quot;);
	err = bt_le_ext_adv_start(pawr_adv, BT_LE_EXT_ADV_START_DEFAULT);
	if (err) {
		printk(&amp;quot;Failed to start extended advertising (err %d)\n&amp;quot;, err);
		return 0;
	}

	while (true) {
		k_sleep(K_SECONDS(1));
	}

	return 0;
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;periodic_sync_conn - main.c&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/*
 * Copyright (c) 2023 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include &amp;lt;zephyr/bluetooth/bluetooth.h&amp;gt;
#include &amp;lt;zephyr/bluetooth/conn.h&amp;gt;
#include &amp;lt;zephyr/bluetooth/gap.h&amp;gt;
#include &amp;lt;zephyr/bluetooth/hci.h&amp;gt;
#include &amp;lt;zephyr/sys/util.h&amp;gt;

#define NAME_LEN 30

static K_SEM_DEFINE(sem_per_adv, 0, 1);
static K_SEM_DEFINE(sem_per_sync, 0, 1);
static K_SEM_DEFINE(sem_connected, 0, 1);
static K_SEM_DEFINE(sem_disconnected, 0, 1);

static struct bt_conn *default_conn;
static bool per_adv_found;
static bt_addr_le_t per_addr;
static uint8_t per_sid;

static void sync_cb(struct bt_le_per_adv_sync *sync, struct bt_le_per_adv_sync_synced_info *info)
{
	struct bt_le_per_adv_sync_subevent_params params;
	uint8_t subevents[1];
	char le_addr[BT_ADDR_LE_STR_LEN];
	int err;

	bt_addr_le_to_str(info-&amp;gt;addr, le_addr, sizeof(le_addr));
	printk(&amp;quot;Synced to %s with %d subevents\n&amp;quot;, le_addr, info-&amp;gt;num_subevents);

	params.properties = 0;
	params.num_subevents = 1;
	params.subevents = subevents;
	subevents[0] = 0;
	err = bt_le_per_adv_sync_subevent(sync, &amp;amp;params);
	if (err) {
		printk(&amp;quot;Failed to set subevents to sync to (err %d)\n&amp;quot;, err);
	}

	k_sem_give(&amp;amp;sem_per_sync);
}

static void term_cb(struct bt_le_per_adv_sync *sync,
		    const struct bt_le_per_adv_sync_term_info *info)
{
	char le_addr[BT_ADDR_LE_STR_LEN];

	bt_addr_le_to_str(info-&amp;gt;addr, le_addr, sizeof(le_addr));

	printk(&amp;quot;Sync terminated (reason %d)\n&amp;quot;, info-&amp;gt;reason);
}

static struct bt_le_per_adv_response_params rsp_params;

NET_BUF_SIMPLE_DEFINE_STATIC(rsp_buf, sizeof(bt_addr_le_t) + 2 * sizeof(uint8_t));
uint8_t myDummyBuf[] = {0x11, 0x22, 0x33, 0x44, 0x55};

static void recv_cb(struct bt_le_per_adv_sync *sync,
		    const struct bt_le_per_adv_sync_recv_info *info, struct net_buf_simple *buf)
{
	int err;
	struct bt_le_oob oob;
	char addr_str[BT_ADDR_LE_STR_LEN];

	if (default_conn) {
		/* Only respond with address if not already connected */
		return;
	}

	if (buf &amp;amp;&amp;amp; buf-&amp;gt;len) {
		/* Respond with own address for the advertiser to connect to */
		net_buf_simple_reset(&amp;amp;rsp_buf);

		rsp_params.request_event = info-&amp;gt;periodic_event_counter;
		rsp_params.request_subevent = info-&amp;gt;subevent;
		rsp_params.response_subevent = info-&amp;gt;subevent;
		rsp_params.response_slot = 0;

		// err = bt_le_oob_get_local(BT_ID_DEFAULT, &amp;amp;oob);
		// if (err) {
		// 	printk(&amp;quot;Failed to get OOB data (err %d)\n&amp;quot;, err);

		// 	return;
		// }

		// bt_addr_le_to_str(&amp;amp;oob.addr, addr_str, sizeof(addr_str));
		// printk(&amp;quot;Responding with own addr: %s\n&amp;quot;, addr_str);

		// net_buf_simple_add_u8(&amp;amp;rsp_buf, sizeof(bt_addr_le_t));
		// net_buf_simple_add_u8(&amp;amp;rsp_buf, BT_DATA_LE_BT_DEVICE_ADDRESS);
		// net_buf_simple_add_mem(&amp;amp;rsp_buf, &amp;amp;oob.addr.a, sizeof(oob.addr.a));
		// net_buf_simple_add_u8(&amp;amp;rsp_buf, oob.addr.type);
		net_buf_simple_add_mem(&amp;amp;rsp_buf, myDummyBuf, sizeof(myDummyBuf));

		err = bt_le_per_adv_set_response_data(sync, &amp;amp;rsp_params, &amp;amp;rsp_buf);
		if (err) {
			printk(&amp;quot;Failed to send response (err %d)\n&amp;quot;, err);
		}
		else
        {
            printk(&amp;quot;Response data sent : 0x%2X:0x%2X:0x%2X:0x%2X:0x%2X\n&amp;quot;,
                myDummyBuf[0], myDummyBuf[1], myDummyBuf[2], myDummyBuf[3], myDummyBuf[4]);
        }
	} else if (buf) {
		printk(&amp;quot;Received empty indication: subevent %d\n&amp;quot;, info-&amp;gt;subevent);
	} else {
		printk(&amp;quot;Failed to receive indication: subevent %d\n&amp;quot;, info-&amp;gt;subevent);
	}
}

static struct bt_le_per_adv_sync_cb sync_callbacks = {
	.synced = sync_cb,
	.term = term_cb,
	.recv = recv_cb,
};

static void connected_cb(struct bt_conn *conn, uint8_t err)
{
	printk(&amp;quot;Connected (err 0x%02X)\n&amp;quot;, err);

	if (err) {
		return;
	}

	default_conn = bt_conn_ref(conn);
	k_sem_give(&amp;amp;sem_connected);
}

static void disconnected_cb(struct bt_conn *conn, uint8_t reason)
{
	bt_conn_unref(default_conn);
	default_conn = NULL;

	printk(&amp;quot;Disconnected, reason 0x%02X %s\n&amp;quot;, reason, bt_hci_err_to_str(reason));

	k_sem_give(&amp;amp;sem_disconnected);
}

BT_CONN_CB_DEFINE(conn_cb) = {
	.connected = connected_cb,
	.disconnected = disconnected_cb,
};

static bool data_cb(struct bt_data *data, void *user_data)
{
	char *name = user_data;
	uint8_t len;

	switch (data-&amp;gt;type) {
	case BT_DATA_NAME_SHORTENED:
	case BT_DATA_NAME_COMPLETE:
		len = MIN(data-&amp;gt;data_len, NAME_LEN - 1);
		memcpy(name, data-&amp;gt;data, len);
		name[len] = &amp;#39;\0&amp;#39;;
		return false;
	default:
		return true;
	}
}

static void scan_recv(const struct bt_le_scan_recv_info *info, struct net_buf_simple *buf)
{
	char name[NAME_LEN];

	(void)memset(name, 0, sizeof(name));
	bt_data_parse(buf, data_cb, name);

	if (strcmp(name, &amp;quot;PAwR conn sample&amp;quot;)) {
		return;
	}

	if (!per_adv_found &amp;amp;&amp;amp; info-&amp;gt;interval) {
		per_adv_found = true;

		per_sid = info-&amp;gt;sid;
		bt_addr_le_copy(&amp;amp;per_addr, info-&amp;gt;addr);

		k_sem_give(&amp;amp;sem_per_adv);
	}
}

static struct bt_le_scan_cb scan_callbacks = {
	.recv = scan_recv,
};

int main(void)
{
	struct bt_le_per_adv_sync_param sync_create_param;
	struct bt_le_per_adv_sync *sync;
	int err;

	printk(&amp;quot;Starting Periodic Advertising with Responses Synchronization Demo\n&amp;quot;);

	err = bt_enable(NULL);
	if (err) {
		printk(&amp;quot;Bluetooth init failed (err %d)\n&amp;quot;, err);

		return 0;
	}

	bt_le_scan_cb_register(&amp;amp;scan_callbacks);
	bt_le_per_adv_sync_cb_register(&amp;amp;sync_callbacks);

	// err = bt_le_scan_start(BT_LE_SCAN_ACTIVE, NULL);
	err = bt_le_scan_start(BT_LE_SCAN_CODED_ACTIVE, NULL);
	if (err) {
		printk(&amp;quot;failed (err %d)\n&amp;quot;, err);

		return 0;
	}

	err = k_sem_take(&amp;amp;sem_per_adv, K_FOREVER);
	if (err) {
		printk(&amp;quot;failed (err %d)\n&amp;quot;, err);

		return 0;
	}
	printk(&amp;quot;Found periodic advertising.\n&amp;quot;);

	printk(&amp;quot;Creating Periodic Advertising Sync&amp;quot;);
	bt_addr_le_copy(&amp;amp;sync_create_param.addr, &amp;amp;per_addr);
	sync_create_param.options = 0;
	sync_create_param.sid = per_sid;
	sync_create_param.skip = 0;
	sync_create_param.timeout = 0xaa;
	err = bt_le_per_adv_sync_create(&amp;amp;sync_create_param, &amp;amp;sync);
	if (err) {
		printk(&amp;quot;Failed to create sync (err %d)\n&amp;quot;, err);

		return 0;
	}

	printk(&amp;quot;Waiting for periodic sync\n&amp;quot;);
	err = k_sem_take(&amp;amp;sem_per_sync, K_FOREVER);
	if (err) {
		printk(&amp;quot;Failed (err %d)\n&amp;quot;, err);

		return 0;
	}

	printk(&amp;quot;Periodic sync established.\n&amp;quot;);

	err = bt_le_scan_stop();
	if (err) {
		printk(&amp;quot;Failed to stop scanning (err %d)\n&amp;quot;, err);
	}

	printk(&amp;quot;Stopped scanning\n&amp;quot;);

	do {
		err = k_sem_take(&amp;amp;sem_connected, K_FOREVER);
		if (err) {
			printk(&amp;quot;failed (err %d)\n&amp;quot;, err);

			return 0;
		}

		printk(&amp;quot;Disconnecting\n&amp;quot;);

		err = bt_conn_disconnect(default_conn, BT_HCI_ERR_REMOTE_USER_TERM_CONN);
		if (err) {
			return 0;
		}

		err = k_sem_take(&amp;amp;sem_disconnected, K_FOREVER);
		if (err) {
			printk(&amp;quot;failed (err %d)\n&amp;quot;, err);

			return 0;
		}
	} while (true);
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/515382?ContentTypeID=1</link><pubDate>Wed, 18 Dec 2024 07:09:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8a60de69-6ce3-41ca-a578-fe5ae8259095</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&lt;/p&gt;
&lt;p&gt;No problem, I can wait.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/515319?ContentTypeID=1</link><pubDate>Tue, 17 Dec 2024 15:52:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d8ce3ff5-ded8-4b40-9656-2c992c45b8ff</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hi Yann,&lt;/p&gt;
&lt;p&gt;I am unfortunately&amp;nbsp;not available right now and only return next week. Do you mind waiting until then?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/514696?ContentTypeID=1</link><pubDate>Thu, 12 Dec 2024 10:30:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:24a92adf-8a11-40ab-8d37-01a7f81e0de5</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&lt;/p&gt;
&lt;p&gt;I prepared a modified version of the &lt;strong&gt;periodic_adv/sync_conn&lt;/strong&gt; example with my PAwR timings.&lt;/p&gt;
&lt;p&gt;Can you please have a look on it ?&lt;/p&gt;
&lt;p&gt;You can try from your side if you want, I used a nrf52840dk for the ADV side and only one&amp;nbsp;&lt;span&gt;nrf52840dk for the SYNC side and it&amp;#39;s not possible to exchange data.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You will find diff to easily see my changes.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;ADV Side&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;diff --git a/src/main.c b/src/main.c
index 49c1c52..b04a8b4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -9,22 +9,40 @@
 #include &amp;lt;zephyr/bluetooth/gap.h&amp;gt;
 #include &amp;lt;zephyr/bluetooth/hci.h&amp;gt;
 
-#define NUM_RSP_SLOTS	  5
-#define NUM_SUBEVENTS	  5
-#define PACKET_SIZE	  5
+#define NUM_RSP_SLOTS	  20
+#define NUM_SUBEVENTS	  8
+// #define NUM_RSP_SLOTS	  5
+// #define NUM_SUBEVENTS	  5
+#define PACKET_SIZE	      5
 #define SUBEVENT_INTERVAL 0x30
 
+#define BT_LE_EXT_ADV_NCONN_CODED BT_LE_ADV_PARAM(BT_LE_ADV_OPT_EXT_ADV | \
+                        BT_LE_ADV_OPT_CODED, \
+					    BT_GAP_ADV_FAST_INT_MIN_2, \
+					    BT_GAP_ADV_FAST_INT_MAX_2, NULL)
+
 static const struct bt_le_per_adv_param per_adv_params = {
-	.interval_min = 0xFF,
-	.interval_max = 0xFF,
+	.interval_min = 0x960,
+	.interval_max = 0x960,
 	.options = 0,
 	.num_subevents = NUM_SUBEVENTS,
-	.subevent_interval = SUBEVENT_INTERVAL,
-	.response_slot_delay = 0x5,
+	.subevent_interval = 0xF0,
+	.response_slot_delay = 0x10,
 	.response_slot_spacing = 0x50,
 	.num_response_slots = NUM_RSP_SLOTS,
 };
 
+// static const struct bt_le_per_adv_param per_adv_params = {
+// 	.interval_min = 0xFF,
+// 	.interval_max = 0xFF,
+// 	.options = 0,
+// 	.num_subevents = NUM_SUBEVENTS,
+// 	.subevent_interval = SUBEVENT_INTERVAL,
+// 	.response_slot_delay = 0x5,
+// 	.response_slot_spacing = 0x50,
+// 	.num_response_slots = NUM_RSP_SLOTS,
+// };
+
 static struct bt_le_per_adv_subevent_data_params subevent_data_params[NUM_SUBEVENTS];
 static struct net_buf_simple bufs[NUM_SUBEVENTS];
 static uint8_t backing_store[NUM_SUBEVENTS][PACKET_SIZE];
@@ -73,46 +91,12 @@ static struct bt_conn *default_conn;
 static void response_cb(struct bt_le_ext_adv *adv, struct bt_le_per_adv_response_info *info,
 			struct net_buf_simple *buf)
 {
-	int err;
-	bt_addr_le_t peer;
-	char addr_str[BT_ADDR_LE_STR_LEN];
-	struct bt_conn_le_create_synced_param synced_param;
-	struct bt_le_conn_param conn_param;
-
 	if (!buf) {
 		return;
 	}
 
-	if (default_conn) {
-		/* Do not initiate new connections while already connected */
-		return;
-	}
-
-	bt_addr_le_copy(&amp;amp;peer, &amp;amp;bt_addr_le_none);
-	bt_data_parse(buf, get_address, &amp;amp;peer);
-	if (bt_addr_le_eq(&amp;amp;peer, &amp;amp;bt_addr_le_none)) {
-		/* No address found */
-		return;
-	}
-
-	bt_addr_le_to_str(&amp;amp;peer, addr_str, sizeof(addr_str));
-	printk(&amp;quot;Connecting to %s in subevent %d\n&amp;quot;, addr_str, info-&amp;gt;subevent);
-
-	synced_param.peer = &amp;amp;peer;
-	synced_param.subevent = info-&amp;gt;subevent;
-
-	/* Choose same interval as PAwR advertiser to avoid scheduling conflicts */
-	conn_param.interval_min = SUBEVENT_INTERVAL;
-	conn_param.interval_max = SUBEVENT_INTERVAL;
-
-	/* Default values */
-	conn_param.latency = 0;
-	conn_param.timeout = 400;
-
-	err = bt_conn_le_create_synced(adv, &amp;amp;synced_param, &amp;amp;conn_param, &amp;amp;default_conn);
-	if (err) {
-		printk(&amp;quot;Failed to initiate connection (err %d)&amp;quot;, err);
-	}
+    printk(&amp;quot;RX DATA : SUB %u SLOT %u DATA %X%X%X%X%X\n&amp;quot;, info-&amp;gt;subevent, info-&amp;gt;response_slot,
+        buf-&amp;gt;data[0], buf-&amp;gt;data[1], buf-&amp;gt;data[2], buf-&amp;gt;data[3], buf-&amp;gt;data[4]);
 }
 
 static const struct bt_le_ext_adv_cb adv_cb = {
@@ -183,7 +167,7 @@ int main(void)
 	}
 
 	/* Create a non-connectable advertising set */
-	err = bt_le_ext_adv_create(BT_LE_EXT_ADV_NCONN, &amp;amp;adv_cb, &amp;amp;pawr_adv);
+	err = bt_le_ext_adv_create(BT_LE_EXT_ADV_NCONN_CODED, &amp;amp;adv_cb, &amp;amp;pawr_adv);
 	if (err) {
 		printk(&amp;quot;Failed to create advertising set (err %d)\n&amp;quot;, err);
 		return 0;
&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;SYNC side&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;diff --git a/src/main.c b/src/main.c
index db858ef..172acf8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -57,6 +57,7 @@ static void term_cb(struct bt_le_per_adv_sync *sync,
 static struct bt_le_per_adv_response_params rsp_params;
 
 NET_BUF_SIMPLE_DEFINE_STATIC(rsp_buf, sizeof(bt_addr_le_t) + 2 * sizeof(uint8_t));
+uint8_t myDummyBuf[] = {0x11, 0x22, 0x33, 0x44, 0x55};
 
 static void recv_cb(struct bt_le_per_adv_sync *sync,
 		    const struct bt_le_per_adv_sync_recv_info *info, struct net_buf_simple *buf)
@@ -79,25 +80,17 @@ static void recv_cb(struct bt_le_per_adv_sync *sync,
 		rsp_params.response_subevent = info-&amp;gt;subevent;
 		rsp_params.response_slot = 0;
 
-		err = bt_le_oob_get_local(BT_ID_DEFAULT, &amp;amp;oob);
-		if (err) {
-			printk(&amp;quot;Failed to get OOB data (err %d)\n&amp;quot;, err);
-
-			return;
-		}
-
-		bt_addr_le_to_str(&amp;amp;oob.addr, addr_str, sizeof(addr_str));
-		printk(&amp;quot;Responding with own addr: %s\n&amp;quot;, addr_str);
-
-		net_buf_simple_add_u8(&amp;amp;rsp_buf, sizeof(bt_addr_le_t));
-		net_buf_simple_add_u8(&amp;amp;rsp_buf, BT_DATA_LE_BT_DEVICE_ADDRESS);
-		net_buf_simple_add_mem(&amp;amp;rsp_buf, &amp;amp;oob.addr.a, sizeof(oob.addr.a));
-		net_buf_simple_add_u8(&amp;amp;rsp_buf, oob.addr.type);
+        net_buf_simple_add_mem(&amp;amp;rsp_buf, myDummyBuf, sizeof(myDummyBuf));
 
 		err = bt_le_per_adv_set_response_data(sync, &amp;amp;rsp_params, &amp;amp;rsp_buf);
 		if (err) {
 			printk(&amp;quot;Failed to send response (err %d)\n&amp;quot;, err);
 		}
+        else
+        {
+            printk(&amp;quot;Response data sent : 0x%2X:0x%2X:0x%2X:0x%2X:0x%2X\n&amp;quot;,
+                myDummyBuf[0], myDummyBuf[1], myDummyBuf[2], myDummyBuf[3], myDummyBuf[4]);
+        }
 	} else if (buf) {
 		printk(&amp;quot;Received empty indication: subevent %d\n&amp;quot;, info-&amp;gt;subevent);
 	} else {
@@ -198,7 +191,7 @@ int main(void)
 	bt_le_scan_cb_register(&amp;amp;scan_callbacks);
 	bt_le_per_adv_sync_cb_register(&amp;amp;sync_callbacks);
 
-	err = bt_le_scan_start(BT_LE_SCAN_ACTIVE, NULL);
+	err = bt_le_scan_start(BT_LE_SCAN_CODED_ACTIVE, NULL);
 	if (err) {
 		printk(&amp;quot;failed (err %d)\n&amp;quot;, err);
 
&lt;/pre&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Yann&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: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513760?ContentTypeID=1</link><pubDate>Fri, 06 Dec 2024 07:27:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c07cee8b-0036-41b7-ae7f-3bb1aedb9dd8</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&lt;/p&gt;
&lt;p&gt;Thank you for your reply. I will have a look on the tutorial.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513759?ContentTypeID=1</link><pubDate>Fri, 06 Dec 2024 07:23:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:afea3948-bfa8-4f50-baef-b1e1c633f9dd</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;No problem, it&amp;#39;s easy to get mixed up with the PAwR parameters.&lt;/p&gt;
&lt;p&gt;Thank you, don&amp;#39;t hesitate to let me know if you have any information.&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513712?ContentTypeID=1</link><pubDate>Thu, 05 Dec 2024 21:17:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2f66ef4f-4545-4e1a-9b44-0b8f1b3e2512</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hi Yann,&lt;/p&gt;
&lt;p&gt;We have tested more than 25 devices. We wrote about it a little here:&amp;nbsp;&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/guides/nrf-connect-sdk-guides/b/getting-started/posts/getting-started-with-bluetooth-electronic-shelf-labels-esl-and-periodic-advertising-with-responses-pawr"&gt;Getting started with Bluetooth Electronic Shelf Labels (ESL) and Periodic Advertising with Responses (PAwR)&lt;/a&gt;&amp;nbsp;.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513707?ContentTypeID=1</link><pubDate>Thu, 05 Dec 2024 18:48:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8042e8fb-7e66-47b6-8df1-8df337b2ffb5</guid><dc:creator>rbmarcus</dc:creator><description>&lt;p&gt;Sorry! My math was off on this, didn&amp;#39;t mean to provide poor advice. My team is currently working on a similar PAwR interface with 25+ units. If we have extra time during field testing, I&amp;#39;ll give your parameters a shot to see if there&amp;#39;s an underlying problem with the Zephyr code or if it&amp;#39;s related to your configuration.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513554?ContentTypeID=1</link><pubDate>Thu, 05 Dec 2024 07:33:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e349a8a2-0adf-4af5-9faa-da70eaa2d181</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&lt;/p&gt;
&lt;p&gt;No problem, I can check again from my side if I change parameters step by step and I will tell you.&lt;/p&gt;
&lt;p&gt;Just a question, from your side in Nordic did you already tried to use PAwR with more than 25 devices (5 subevents / 5 slots) ?&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Yann&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513457?ContentTypeID=1</link><pubDate>Wed, 04 Dec 2024 14:13:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:556fa736-549b-4496-855a-7674d927a629</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hi Yann,&lt;/p&gt;
&lt;p&gt;Unfortunately, I&amp;nbsp;am working remotely and do not have enough device to reproduce the issue.&lt;/p&gt;
&lt;p&gt;What do you think about starting from the working baseline, and slowly change the configurations, and do incremental tests to see at which point the issue occurs?&lt;/p&gt;
&lt;p&gt;I recommend this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Periodic Advertising Interval&lt;/li&gt;
&lt;li&gt;Subevent Interval&lt;/li&gt;
&lt;li&gt;Number of Subevents&lt;/li&gt;
&lt;li&gt;Response Slot Delay&lt;/li&gt;
&lt;li&gt;Response Slot Spacing&lt;/li&gt;
&lt;li&gt;Number of Response Slots&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you are able to detect which one fail, try switching up the order, but of course keep it feasible (e.g., don&amp;#39;t increase Number of Subevents before you have widened the&amp;nbsp;Advertising Interval)&lt;/p&gt;
&lt;p&gt;It would give us some clues on what is wrong.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513384?ContentTypeID=1</link><pubDate>Wed, 04 Dec 2024 10:16:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dd0e3c8e-26b4-4391-923a-8b5bd47536f3</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Thanks for your reply, I tried your suggestion without success.&lt;/p&gt;
&lt;p&gt;If I explain a little bit my timings:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;response_slot_spacing = 0x50 --&amp;gt; 80(decimal) * 0.125 = 10ms
response_slot_delay   = 0x10 --&amp;gt; 20(decimal) * 1.25  = 20ms
subevent_interval     = 0xF0 --&amp;gt; 240(decimal)* 1.25  = 300ms

NB subevents = 8
NB slots per subevent = 20

subevent_interval = NB_SLOTS * response_slot_spacing + response_slot_delay
20 * 10ms + 20ms = 220ms

We have some space with the value of 300ms for subevent_interval

interval_min = 0x960 --&amp;gt; 2400(decimal) * 1.25  = 3000ms

With a subevent_interval=300ms and 8 subevents --&amp;gt; 8 * 300ms = 2400ms

We have some space with the value of 3000ms for interval_min / max&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I should have some margin in the timings at different levels.&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513381?ContentTypeID=1</link><pubDate>Wed, 04 Dec 2024 10:01:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0ba5413f-4e0f-4333-a19c-de0fb051c8b6</guid><dc:creator>Yannch</dc:creator><description>&lt;p&gt;Hi Hieu,&lt;/p&gt;
&lt;p&gt;Thanks for you answer.&lt;/p&gt;
&lt;p&gt;Yes sure,&amp;nbsp;what I can see is that with the initial parameters (5 subevents / 5 slots per subevent) I can synchronize and exchange data between transmitter and receiver.&lt;/p&gt;
&lt;p&gt;Transmitter:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;[00:00:00.011,535] &amp;lt;inf&amp;gt; bt_hci_core: HW Platform: Nordic Semiconductor (0x0002)
[00:00:00.011,566] &amp;lt;inf&amp;gt; bt_hci_core: HW Variant: nRF52x (0x0002)
[00:00:00.011,596] &amp;lt;inf&amp;gt; bt_hci_core: Firmware: Standard Bluetooth controller (0x00) Version 254.63788 Build 573996906
[00:00:00.012,786] &amp;lt;inf&amp;gt; bt_hci_core: Identity: C8:22:35:1D:70:9F (random)
[00:00:00.012,817] &amp;lt;inf&amp;gt; bt_hci_core: HCI: version 6.0 (0x0e) revision 0x104e, manufacturer 0x0059
[00:00:00.012,847] &amp;lt;inf&amp;gt; bt_hci_core: LMP: version 6.0 (0x0e) subver 0x104e
Start Periodic Advertising
PAwR RSP : Subevent : 0 Slot : 2
PAwR RSP : Subevent : 0 Slot : 2
PAwR RSP : Subevent : 0 Slot : 2
PAwR RSP : Subevent : 0 Slot : 2
PAwR RSP : Subevent : 0 Slot : 2
PAwR RSP : Subevent : 0 Slot : 2&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Receiver:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;Synced to 69:D7:06:00:1C:75 (random) with 5 subevents
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Now if I update parameters (Subevents 8 / Slots per subevent 20)&lt;/p&gt;
&lt;p&gt;With these settings, the device receiving the PAwR signals&amp;nbsp;can&amp;#39;t&amp;nbsp;synchronize.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Transmitter:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;[00:00:00.011,352] &amp;lt;inf&amp;gt; bt_hci_core: HW Platform: Nordic Semiconductor (0x0002)
[00:00:00.011,383] &amp;lt;inf&amp;gt; bt_hci_core: HW Variant: nRF52x (0x0002)
[00:00:00.011,413] &amp;lt;inf&amp;gt; bt_hci_core: Firmware: Standard Bluetooth controller (0x00) Version 254.63788 Build 573996906
[00:00:00.012,573] &amp;lt;inf&amp;gt; bt_hci_core: Identity: C8:22:35:1D:70:9F (random)
[00:00:00.012,634] &amp;lt;inf&amp;gt; bt_hci_core: HCI: version 6.0 (0x0e) revision 0x104e, manufacturer 0x0059
[00:00:00.012,664] &amp;lt;inf&amp;gt; bt_hci_core: LMP: version 6.0 (0x0e) subver 0x104e
Start Periodic Advertising
&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Receiver:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;Synced to 71:31:A2:CE:53:E5 (random) with 8 subevents
Failed to set subevents to sync to (err -5)
DEBUG - CMD RESP 0x0 0x1 0x0 0x0 0x0
Failed to send response (err -5)
Receive Terminated Callback&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/513078?ContentTypeID=1</link><pubDate>Mon, 02 Dec 2024 22:18:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a77e37c5-2311-4660-9772-a1b5fad7d2a8</guid><dc:creator>rbmarcus</dc:creator><description>&lt;p&gt;Not sure if this will work for your case, but I found that setting the response slot delay and spacing to fit exactly within a subevent interval results in advertising errors on the access point. It may be the same for subevent intervals fitting into the min/max periodic advertising intervals. You could try reducing the subevent interval to 298.75ms (0xEF) to see if that solves the issue.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Extend number of devices for PAwR (Coded PHY)</title><link>https://devzone.nordicsemi.com/thread/512998?ContentTypeID=1</link><pubDate>Mon, 02 Dec 2024 14:10:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1eaae831-ba14-4f7e-8670-744f0673ca4b</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hi Yann,&lt;/p&gt;
&lt;p&gt;Your configurations seem feasible. Could you please provide more details on what kind of failure you are facing?&lt;/p&gt;
&lt;p&gt;Are there any logs? What are the symptoms?&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>