Softdevice Extended Advertising: iOS connection

I am running into a recurring issue with attempting to connect to a nRF52840DK advertising using extended advertising from iOS devices.
Connections repeatedly fail to establish (HCI error 0x3E) regardless of how close the devices are.
All testing is being done with a nRF52840DK, NCS v2.7.0 and an in-tree sample:
```
west build -b nrf52840dk/nrf52840 zephyr/samples/bluetooth/extended_adv/advertiser/ -p
```

Essentially, no matter how many times I reboot this device and attempt to connect using nRF Connect for Mobile, it is only on very rare occasions that I get a result other than:

*** Booting nRF Connect SDK v2.7.0-5cb85570ca43 ***
*** Using Zephyr OS v3.6.99-100befc70c74 ***
Starting Extended Advertising Demo
Starting Extended Advertising


Connected (err 0x00)
Connected state!
Initiating disconnect within 5 seconds...
Disconnected (reason 0x3E)
Connection object available from previous conn. Disconnect is complete!
ASSERTION FAIL [0] @ WEST_TOPDIR/zephyr/subsys/bluetooth/host/conn.c:1630
        Invalid conn type 0

Running the same sample with the Zephyr controller (CONFIG_BT_LL_SW_SPLIT=y) does not exhibit the issue:
```
west build -b nrf52840dk/nrf52840 zephyr/samples/bluetooth/extended_adv/advertiser/ -p -- -DCONFIG_BT_LL_SW_SPLIT=y
```
Console:

*** Booting nRF Connect SDK v2.7.0-5cb85570ca43 ***
*** Using Zephyr OS v3.6.99-100befc70c74 ***
Starting Extended Advertising Demo
Starting Extended Advertising
Connected (err 0x00)
Connected state!
Initiating disconnect within 5 seconds...
Disconnected (reason 0x16)
Connection object available from previous conn. Disconnect is complete!
Disconnected state! Restarting advertising
Starting Extended Advertising
Connected (err 0x00)
Connected state!
Initiating disconnect within 5 seconds...
Disconnected (reason 0x16)
Connection object available from previous conn. Disconnect is complete!
Disconnected state! Restarting advertising

System Information:
iPhone 15,4 (iPhone 15)
iOS 17.5.1
nRF Connect for Mobile 2.7.7

Parents Reply
  • Yes the sample operates as expected when run between a nRF52840DK and a nRF5340DK. That is not particularly relevant to my problem however, apart from proving that the sample works, and that the Softdevice can connect to another Softdevice.

    My problem is that a Softdevice using extended advertising cannot be connected to by an iOS device, while the Zephyr Bluetooth controller works reliably. I have attached 2 Wireshark captures of this setup, one with the Zephyr controller, one with the Softdevice controller. The Zephyr controller connects successfully on the first go (and on the majority of attempts), while the Softdevice controller has 20 attempts across 14 seconds with not a single successful connection.

    zephyr_controller.pcap
    softdevice_controller.pcap

Children
  • JordanYates said:
    Yes the sample operates as expected when run between a nRF52840DK and a nRF5340DK. That is not particularly relevant to my problem however, apart from proving that the sample works, and that the Softdevice can connect to another Softdevice.

    Thank you for double-checking!

    I will share your report internally for some insights. I will let you know if my colleagues need more information from you. I'll get back to you by Thursday.

    Best regards,

    Maria

  • I can see that you got support in the Zephyr discord from this pull request.

    If you are happy with that solution I will close this ticket.

    BR,

    Maria

  • While that PR is a workaround for the Zephyr controller, it does not resolve the issue in the Softdevice.

    I would not consider this issue closed until an iPhone can reliably connect to a device using extended advertising with the Softdevice. Unless extended advertising is not a supported mode of operation for the Softdevice.

  • Understandable. I will keep track of the progress of this internally and I will let you know when there is a fix or if we need something more from your end.

  • Hi Maria,

    It is almost 18 months later, and the same issue still exist on the `v3.2.0-preview2` tag, with the same reproduction steps.
    The following logs just repeat several times a second.

    Starting Extended Advertising
    Connected (err 0x00)
    Connected state!
    Initiating disconnect within 5 seconds...
    Disconnected, reason 0x3E 
    Connection object available from previous conn. Disconnect is complete!
    Remote disconnected early...
    Disconnected state! Restarting advertising
    Starting Extended Advertising
    Connected (err 0x00)
    Connected state!
    Initiating disconnect within 5 seconds...
    Disconnected, reason 0x3E 
    Connection object available from previous conn. Disconnect is complete!
    Remote disconnected early...
    Disconnected state! Restarting advertising
    Starting Extended Advertising
    Connected (err 0x00)
    Connected state!
    Initiating disconnect within 5 seconds...
    Disconnected, reason 0x3E 
    Connection object available from previous conn. Disconnect is complete!
    Remote disconnected early...
    Disconnected state! Restarting advertising

    To me this is basic functionality that doesn't work, is there any plan to fix this?

Related