XIAO_nRF54L15 Unable to connect using CodedPhy

I am attempting to extend the communication distance between Peripheral and Central using codedPhy with XIAO_nRF54L15. In previous experiments, it appears the Central can receive data advertised by Peripheral using codedPhy without establishing a connection. However, when attempting to connect, the error bt_hci_core: opcode 0x2041 status 0x11 occurs, preventing connection.
If anyone has successfully connected using codedPhy, please share your information.

Hi there,

So I went and built both the Central HR coded and Peripheral HR coded Examples for both DK’s I have nRf54l15DK as Central & the Peripheral on the nRF52840DK
Indeed it does connect automatically just as a sanity check. I will build and try it for the Xiao nRF54L15 as Both and report back.

*** Booting nRF Connect SDK v3.1.1-e2a97fe2578a ***
*** Using Zephyr OS v4.1.99-ff8f0c579eeb ***
Starting Bluetooth Central HR coded sample
I: SoftDevice Controller build revision: 
I: fc de 41 eb a2 d1 42 24 |..A...B$
I: 00 b5 f8 57 9f ac 9d 9e |...W....
I: aa c9 b4 34             |...4    
I: HW Platform: Nordic Semiconductor (0x0002)
I: HW Variant: nRF54Lx (0x0005)
I: Firmware: Standard Bluetooth controller (0x00) Version 252.16862 Build 1121034987
I: HCI transport: SDC
I: Identity: F0:3A:D1:2E:FE:8F (random)
I: HCI: version 6.1 (0x0f) revision 0x3069, manufacturer 0x0059
I: LMP: version 6.1 (0x0f) subver 0x3069
Bluetooth initialized
Scanning successfully started

When I switch ON the Peripheral power switch it connects straight away.

---- Opened the serial port COM12 ----
Filters matched. Address: C9:40:B4:64:BA:4D (random) connectable: yes Primary PHY: S=8 Coded Secondary PHY S=8 Coded
Connection pending
Connected: C9:40:B4:64:BA:4D (random), tx_phy LE Coded, rx_phy LE Coded
The discovery procedure succeeded
[SUBSCRIBED]
Heart Rate Measurement notification received:

        Heart Rate Measurement Value Format: 8 - bit
        Sensor Contact detected: 1
        Sensor Contact supported: 1
        Energy ExpendedHeart Rate Measurement notification received:

        Heart Rate Measurement Value Format: 8 - bit
        Sensor Contact detected: 1
        Sensor Contact supported: 1
        Energy Expended present: 0
        RR-Intervals present: 0

        Heart Rate Measurement notification received:

        Heart Rate Measurement Value Format: 8 - bit
        Sensor Contact detected: 1
        Sensor Contact supported: 1
        Energy Expended present: 0

HTH
GL :santa_claus: PJ :v:

I ran some Ai on it I get this:
on the XIAO board, there are a few ways things can go wrong:

  1. Controller not actually built with coded PHY support
  • If CONFIG_BT_CTLR_PHY_CODED=y is missing for the controller, but the host app still tries to use coded PHY (via prj.conf), you get exactly this: “Unsupported Feature or Parameter Value” from the HCI command.
  1. Host requesting a PHY combo that controller doesn’t like
  • For example, initiating a connection with only coded PHY set, wrong PHY bitmask, or odd interval/window values can cause the controller to reject the LE Extended Create Connection or scanning setup and log 0x2041 / 0x11.
  1. XIAO board definition slightly out of sync with the Nordic DK config
  • Seeed’s XIAO board files are layered on top of NCS; it’s easy for a single missing Kconfig (like PHY_CODED) or SoftDevice option to slip through.

Given they can already receive coded PHY advertising, I’d bet:

The central is built with CONFIG_BT_PHY_UPDATE / coded support on the host side, but the controller (SoftDevice) for the XIAO build is missing CONFIG_BT_CTLR_PHY_CODED or a matching option.

So scanning “sort of works”, but when Zephyr tries to enable a specific extended scan/initiator combo for connection, SDC refuses it.

I will study it further tomorrow and report back. :v:

Hi PJ,

Thank you for always providing information.

I’ve been working on evaluating CodedPhy for quite some time now, but it’s become too much for me to handle.
If you find out anything, please let me know.

1 Like