nRF54L15 Scanner - Advertising Channel Index (37/38/39) Availability?

Hi All,

I am developing a BLE scanner/observer application on nRF54L15 using nRF Connect SDK, Zephyr, and SoftDevice Controller (SDC). In the scan callback (bt_le_scan_recv_info) I can obtain advertiser address, RSSI, PHY, advertising type, and other metadata, but I cannot find any way to determine the actual advertising channel (37, 38, or 39) on which a packet was received. My application is an RF tester/scanner, and per-packet channel information would be very useful. Is there any API, raw HCI event, SDC vendor-specific command/event, or other supported mechanism (like device any peripheral register level etc.) that exposes the advertising channel index for received advertising reports?

Thank you.

Parents Reply Children
  • Hi Kenneth,

    Thanks for your feedback.

    I also have one more question. Is it possible to configure the nRF54L15 DK as a BLE peripheral and advertise only on a single primary advertising channel (for example, only Channel 37)? If so, could you please let me know whether this is supported and how it can be configured?

    I couldn't find any standard Host API or Vendor-Specific (VS) HCI command to achieve this. However, if you are aware of any supported method or workaround, I would appreciate your guidance.

    Premji

  • Hi,

    Yes. For advertising, you can disable individual advertising channels as part of the advertising parameters. The relevant options are BT_LE_ADV_OPT_DISABLE_CHAN_37BT_LE_ADV_OPT_DISABLE_CHAN_38 and BT_LE_ADV_OPT_DISABLE_CHAN_39, which each disables the respective advertising channel. See the bt_le_adv_opt documentation for details.

    For reference usage, see Designing Low-Power Bluetooth LE Products, Exercise 1 - Optimizing power consumption during Bluetooth LE advertising, step 6. Advertise on a subset of primary advertising channels. E.g., for not advertising on channel 39, use the advertising parameter BT_LE_ADV_OPT_DISABLE_CHAN_39:

    const struct bt_le_adv_param *param = BT_LE_ADV_PARAM(BT_LE_ADV_OPT_NONE | BT_LE_ADV_OPT_DISABLE_CHAN_39, \
                                          BT_GAP_ADV_SLOW_INT_MIN, BT_GAP_ADV_SLOW_INT_MAX, NULL);

    Regards,
    Terje

Related