[BUG][LE] Disconnect after LL_PERIPHERAL_FEATURE_REQ → LL_UNKNOWN_RSP (Pi Zero 2 W peripheral vs nRF52840 central)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hello BlueZ maintainers,

I am seeing a systematic link-loss the moment a Nordic nRF52840 (central)
connects to a Raspberry Pi Zero 2 W running BlueZ in *peripheral* role.
BlueZ disconnects immediately after the peer replies “Unsupported Remote
Feature / Unsupported LMP Feature (0x1a)” to an
LL_PERIPHERAL_FEATURE_REQ.  Per Core Spec v5.4, that feature exchange is
optional, so a simple UNKNOWN_RSP should not abort the connection.

Environment
-----------
• HW  Raspberry Pi Zero 2 W (CYW43438 controller, BT 4.2)  
• Kernel ⟨6.12.20+rpt-rpi-v8⟩  
• BlueZ 5.66
• bluetoothd started as: `bluetoothd -d -n`  
• Peer Nordic nRF52840-DK, Zephyr 3.6.0, SoftDevice Controller v1.6.0  
• Pi role Peripheral; simple GATT server advertising via
  `bluez-peripheral 0.1.7` Python script  
• BR/EDR disabled (`controller-mode = le` in main.conf)

Steps to reproduce
------------------
1. On the Pi 
   bluetoothd -d -n &
   python3 advert.py       # advertises, no security required
  • 2. On the nRF52840 central firmware: scan for “Example-Peripheral” and connect.

  • 3. Capture on the Pi with btmon (excerpt below).

    > HCI Event: LE Connection Complete (0x3e) plen 19          # handle 0x0040
    < HCI Command: LE Read Remote Used Features (0x08|0x0016)
    > LE Meta Event: Read Remote Used Features (0x04)
        Status: Unsupported Remote Feature (0x1a)
    < HCI Command: Disconnect (0x01|0x0006)
        Reason: Remote User Terminated Connection (0x13)

    An over-the-air sniffer trace shows the same thing at Link Layer level: Pi (peripheral) sends LL_PERIPHERAL_FEATURE_REQ, the nRF52840 responds LL_UNKNOWN_RSP, and the Pi immediately terminates the link (PDU log attached).

  • Expected result

    The connection should stay up; BlueZ should tolerate LL_UNKNOWN_RSP for PERIPHERAL_FEATURE_REQ and continue without feature-exchange.

    Actual result

    BlueZ disconnects with reason 0x13 as soon as the UNKNOWN_RSP appears.

    Things I’ve tried

    Questions

    1. Is the immediate disconnect on 0x1a intentional?

    2. If it is unintended, would a patch that ignores UNKNOWN_RSP for LL_PERIPHERAL_FEATURE_REQ be welcome? (Happy to test/submit.)

    3. If it is intended, can I disable the LL_PERIPHERAL_FEATURE_REQ from being sent in the first place?

    Attachments

    Many thanks for any guidance!

    Best regards, Faranak Karimi, IDmelon Technologies, Faranakkarimi.iot@xxxxxxxxx

    ––– ¹ https://devzone.nordicsemi.com/f/nordic-q-a/120846/bluetooth-le-unsupported-remote-feature-0x1a-error-when-connecting-nrf52840-central-to-raspberry-pi-zero-2w-peripheral Emil Lenngren suggested asking here because “the connection can of course be kept alive despite this problem” and the PFR procedure is optional .


    Attachment: Ras_dongle_Unsuccessful_connection.pcapng
    Description: Binary data

    Attachment: btmon_nrf52840_fail.log
    Description: Binary data


    [Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

      Powered by Linux