RF noise connection issues between two NRF54L15

Hello,

We are observing intermittent connection failures when using two nRF54L15 DK boards. Occasionally the connection fails with the warning:

<warn> bt_conn: conn 0x20015708 failed to establish. RF noise?

We first observed this in our channel sounding application and initially suspected it was related to our implementation. However, after further investigation we were able to reproduce the same behavior using the standard Zephyr central and peripheral samples in NCS 3.2.3. It occurs less frequently in this setup, but still appears roughly 1 in 100 connection attempts.

Setup

Two nRF54L15 DKs on a desk
Distance < 0.5 m
SDK: nRF Connect SDK 3.2.3

Reproduction
samples/bluetooth/central and samples/bluetooth/peripheral, but modified so the central only connects to specific peripheral address and the peripheral so it restarts advertisement after disconnect.

Central sample modification

// prj.conf
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3

// main.c
static const bt_addr_le_t target_addr = {
    .type = BT_ADDR_LE_RANDOM,
    .a = {{0x41, 0x21, 0xC2, 0xFC, 0x8C, 0xD8}}
};

if (bt_addr_le_cmp(addr, &target_addr) != 0) {
    return;
}

Peripheral sample modification

// prj.conf
CONFIG_BT_PRIVACY=y

// main.c
static struct k_work adv_restart_work;

static void adv_restart_work_handler(struct k_work *work)
{
    int err;
    err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd));
    if (err) {
        printk("Advertising failed to restart (err %d)\n", err);
    } else {
        printk("Advertising restarted\n");
    }
}

static void disconnected(struct bt_conn *conn, uint8_t reason)
{
    printk("Disconnected, reason 0x%02x %s\n", reason, bt_hci_err_to_str(reason));
    k_work_submit(&adv_restart_work);
}


Is this a known issue or errata with the nRF54L15 DK or the current Bluetooth controller/stack in NCS 3.2.3?

We have not observed this behavior previously with other Nordic boards such as the nRF52840.

Parents
  • Hello,

    I am not exactly sure what might be going on here. I found an old devzone ticket  that discusses a very similar issue with the nRF54L15. I also recommend collecting sniffer traces and sharing them here so we can get more details about the issue. I am also checking internally to get more details on this.


    Kind Regards,

    Abhijith

  • I don't have access on that old DevZone ticket you linked.

    But I did capture traffic when this happens now:

    First a successful one where you can see the peripheral responds, followed by a failed attempt where RF noise? warning appears (BT_HCI_ERR_CONN_FAIL_TO_ESTAB).


    Extract from pcap in wireshark:

    1662	3.766076	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    1663	3.766701	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    1664	3.805002	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    1665	3.805629	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    1666	3.806138	c6:62:ff:50:5a:38	d8:8c:fc:c2:21:41	LE LL	60	CONNECT_IND
    1667	3.807741	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    1668	3.807971	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    1669	3.816491	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    1670	3.816721	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	35	Control Opcode: LL_PERIPHERAL_FEATURE_REQ
    1671	3.825241	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	35	Control Opcode: LL_FEATURE_RSP
    1672	3.825543	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    1673	3.833991	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	35	Control Opcode: LL_FEATURE_REQ
    1674	3.842741	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	28	Control Opcode: LL_UNKNOWN_RSP
    1675	3.851490	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    1676	3.851720	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	35	Control Opcode: LL_FEATURE_RSP
    1677	3.860240	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	29	Control Opcode: LL_PHY_REQ
    1678	3.860494	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    1679	3.868990	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    1680	3.869220	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	29	Control Opcode: LL_PHY_RSP
    1681	3.877740	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	31	Control Opcode: LL_PHY_UPDATE_IND
    1682	3.878010	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    1683	3.886490	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    1684	3.886719	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    1685	3.895240	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    1686	3.895469	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    // Lots of Empty PDUs removed for brevity...
    2332	6.747886	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    2333	6.756440	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    2334	6.756635	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    2335	6.765190	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    2336	6.765385	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    2337	6.773940	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    2338	6.774135	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    2339	6.782690	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    2340	6.782885	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    2341	6.791440	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    2342	6.791635	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    2343	6.800190	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    2344	6.808940	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    2345	6.817689	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	26	Empty PDU
    2346	6.817884	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    2347	6.826439	Central_0x2ccd10bd	Peripheral_0x2ccd10bd	LE LL	28	Control Opcode: LL_TERMINATE_IND
    2348	6.826642	Peripheral_0x2ccd10bd	Central_0x2ccd10bd	LE LL	26	Empty PDU
    2349	6.838940	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    2350	6.839567	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    2351	6.840077	78:2b:87:87:79:97	d8:8c:fc:c2:21:41	LE LL	38	SCAN_REQ
    2352	6.840402	d8:8c:fc:c2:21:41	Broadcast	LE LL	63	SCAN_RSP
    2353	6.874982	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    2354	6.947456	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    2355	6.948083	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    // Central sends CONNECT (but no response from peripheral...)
    2356	6.948592	c6:62:ff:50:5a:38	d8:8c:fc:c2:21:41	LE LL	60	CONNECT_IND
    2357	6.950196	Central_0x141c5211	Peripheral_0x141c5211	LE LL	26	Empty PDU
    2358	6.958946	Central_0x141c5211	Peripheral_0x141c5211	LE LL	26	Empty PDU
    2359	6.967696	Central_0x141c5211	Peripheral_0x141c5211	LE LL	26	Empty PDU
    2360	6.976445	Central_0x141c5211	Peripheral_0x141c5211	LE LL	26	Empty PDU
    2361	6.985195	Central_0x141c5211	Peripheral_0x141c5211	LE LL	26	Empty PDU
    2362	6.993945	Central_0x141c5211	Peripheral_0x141c5211	LE LL	26	Empty PDU
    2363	10.997653	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    2364	10.998279	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    2365	11.038178	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    2366	11.038688	78:2b:87:87:79:97	d8:8c:fc:c2:21:41	LE LL	38	SCAN_REQ
    2367	11.039013	d8:8c:fc:c2:21:41	Broadcast	LE LL	63	SCAN_RSP
    2368	11.076078	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    2369	11.076705	d8:8c:fc:c2:21:41	Broadcast	LE LL	61	ADV_IND
    


    Attached pcap file:

    20260310-T132435.498122409UTC-capture.pcap

  • Hello,

    Could you check whether any nearby device, such as a phone, PC, BLE sniffer, or any tool is performing active scanning?

    The issue might be related to the advertiser using scan response data, which means it is configured as scannable. If something nearby is actively scanning, it could interfere with connection establishment.

    To narrow down the issue, please try changing the advertising mode to non-scannable (extended advertising) or directed advertising, and check whether the same issue still occurs. This may help determine whether the problem is related to the BLE procedure or to hardware/RF conditions.

    nikeub said:
    I don't have access on that old DevZone ticket you linked.

     I am not sure why the DevZone ticket I shared earlier could not be accessed. I will update the link again and share it here. Devzone ticket.

    Kind Regards,

    Abhijith

  • I can confirm that the issue disappears when I configure the advertiser as non-scannable.

    Does this indicate a collision when the advertiser receives both a SCAN_REQ and a CONNECT_IND in the same receive window?

    Is this a known issue? Can you investigate further and fix this on your end?

    If this cannot be resolved, then since legacy advertising does not support undirected connectable non-scannable mode, the options seem to be either moving to extended advertising or handling this with retry logic at the application level?

Reply
  • I can confirm that the issue disappears when I configure the advertiser as non-scannable.

    Does this indicate a collision when the advertiser receives both a SCAN_REQ and a CONNECT_IND in the same receive window?

    Is this a known issue? Can you investigate further and fix this on your end?

    If this cannot be resolved, then since legacy advertising does not support undirected connectable non-scannable mode, the options seem to be either moving to extended advertising or handling this with retry logic at the application level?

Children
No Data
Related