nRF5340 audio CONNECT_IND Question

Hi I am using nRF5340 audio DK (pca10121) and I was able to evaluate LC3 LE audio example code between nRF5340 audio DK gateway and nRF5340 audio DK headset.

Since Samsung Galaxy Buds2 Pro with LC3 support firmware released on 1/16/2023. I was able to use nRF Connect Desktop to pair with Samsung Galaxy Buds2 Pro. From Nordic BLE sniffer, I saw:

  1. Buds2 Pro broadcastED ADV_IND
  2. nRF Connect Desktop sent SCAN_REQ
  3. Buds2 Pro sent SCAN_RSP
  4. nRF Connect Desktop sent CONNECT_IND

This is a good case. I then compared to nRF5340 audio DK gateway firmware pairing to Buds2 Pro. The first 2 steps ADV_IND, SCAN_REQ and SCAN_RSP were identical which mean Buds2 Pro response with the correct SCAN_RSP. However, nRF5340 audio DK gateway firmware did NOT send CONNECT_IND. i browsed through the nRF5340 audio DK gateway firmware example code but I could not find where CONNECT_IND initiates. Please point me to the code area for this CONNECT_IND handling.

Second, what could be the reason. Thanks in advance,

Dennis 

  • Here are the actual packets from Nordic sniffer:

    • Good case with nRF Connect desktop: Galaxy-3ConnectIndTonRFConnect.txt
    • Missing CONNECT_IND: Galaxy-3ScanRspTonRF5340.txt
      Frame 5471: 55 bytes on wire (440 bits), 55 bytes captured (440 bits) on interface COM17-4.0, id 0
      nRF Sniffer for Bluetooth LE
      Bluetooth Low Energy Link Layer
          Access Address: 0x8e89bed6
          Packet Header: 0x1d60 (PDU Type: ADV_IND, ChSel: #2, TxAdd: Random)
              .... 0000 = PDU Type: 0x0 ADV_IND
              ...0 .... = Reserved: 0
              ..1. .... = Channel Selection Algorithm: #2
              .1.. .... = Tx Address: Random
              0... .... = Reserved: 0
              Length: 29
          Advertising Address: c0:79:db:69:2f:94 (c0:79:db:69:2f:94)
          Advertising Data
              Manufacturer Specific
                  Length: 18
                  Type: Manufacturer Specific (0xff)
                  Company ID: Microsoft (0x0006)
                  Data: 03028004442442756473322050726f
              Appearance: Unknown
                  Length: 3
                  Type: Appearance (0x19)
                  Appearance: Unknown (0x0941)
          CRC: 0x699e5e
      
      Frame 5472: 38 bytes on wire (304 bits), 38 bytes captured (304 bits) on interface COM17-4.0, id 0
      nRF Sniffer for Bluetooth LE
      Bluetooth Low Energy Link Layer
          Access Address: 0x8e89bed6
          Packet Header: 0x0cc3 (PDU Type: SCAN_REQ, TxAdd: Random, RxAdd: Random)
              .... 0011 = PDU Type: 0x3 SCAN_REQ
              ...0 .... = Reserved: 0
              ..0. .... = Reserved: 0
              .1.. .... = Tx Address: Random
              1... .... = Rx Address: Random
              Length: 12
          Scanning Address: c7:cb:77:0f:73:be (c7:cb:77:0f:73:be)
          Advertising Address: c0:79:db:69:2f:94 (c0:79:db:69:2f:94)
          CRC: 0xefa68c
      
      Frame 5473: 32 bytes on wire (256 bits), 32 bytes captured (256 bits) on interface COM17-4.0, id 0
      nRF Sniffer for Bluetooth LE
      Bluetooth Low Energy Link Layer
          Access Address: 0x8e89bed6
          Packet Header: 0x0644 (PDU Type: SCAN_RSP, TxAdd: Random)
              .... 0100 = PDU Type: 0x4 SCAN_RSP
              ...0 .... = Reserved: 0
              ..0. .... = Reserved: 0
              .1.. .... = Tx Address: Random
              0... .... = Reserved: 0
              Length: 6
          Advertising Address: c0:79:db:69:2f:94 (c0:79:db:69:2f:94)
          Scan Response Data: <MISSING>
          CRC: 0x1521d7
      
      Frame 5644: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface COM17-4.0, id 0
      nRF Sniffer for Bluetooth LE
      Bluetooth Low Energy Link Layer
          Access Address: 0x8e89bed6
          Packet Header: 0x22e5 (PDU Type: CONNECT_IND, ChSel: #2, TxAdd: Random, RxAdd: Random)
              .... 0101 = PDU Type: 0x5 CONNECT_IND
              ...0 .... = Reserved: 0
              ..1. .... = Channel Selection Algorithm: #2
              .1.. .... = Tx Address: Random
              1... .... = Rx Address: Random
              Length: 34
          Initiator Address: c7:cb:77:0f:73:be (c7:cb:77:0f:73:be)
          Advertising Address: c0:79:db:69:2f:94 (c0:79:db:69:2f:94)
          Link Layer Data
          CRC: 0xd9b871
      
      
      
      Frame 18083: 55 bytes on wire (440 bits), 55 bytes captured (440 bits) on interface COM17-4.0, id 0
      nRF Sniffer for Bluetooth LE
      Bluetooth Low Energy Link Layer
          Access Address: 0x8e89bed6
          Packet Header: 0x1d60 (PDU Type: ADV_IND, ChSel: #2, TxAdd: Random)
              .... 0000 = PDU Type: 0x0 ADV_IND
              ...0 .... = Reserved: 0
              ..1. .... = Channel Selection Algorithm: #2
              .1.. .... = Tx Address: Random
              0... .... = Reserved: 0
              Length: 29
          Advertising Address: c0:79:db:69:2f:94 (c0:79:db:69:2f:94)
          Advertising Data
              Manufacturer Specific
                  Length: 18
                  Type: Manufacturer Specific (0xff)
                  Company ID: Microsoft (0x0006)
                  Data: 03028004442442756473322050726f
              Appearance: Unknown
                  Length: 3
                  Type: Appearance (0x19)
                  Appearance: Unknown (0x0941)
          CRC: 0x699e5e
      
      Frame 18084: 38 bytes on wire (304 bits), 38 bytes captured (304 bits) on interface COM17-4.0, id 0
      nRF Sniffer for Bluetooth LE
      Bluetooth Low Energy Link Layer
          Access Address: 0x8e89bed6
          Packet Header: 0x0cc3 (PDU Type: SCAN_REQ, TxAdd: Random, RxAdd: Random)
              .... 0011 = PDU Type: 0x3 SCAN_REQ
              ...0 .... = Reserved: 0
              ..0. .... = Reserved: 0
              .1.. .... = Tx Address: Random
              1... .... = Rx Address: Random
              Length: 12
          Scanning Address: 58:73:90:b9:b1:05 (58:73:90:b9:b1:05)
          Advertising Address: c0:79:db:69:2f:94 (c0:79:db:69:2f:94)
          CRC: 0x6913c2
      
      Frame 18085: 32 bytes on wire (256 bits), 32 bytes captured (256 bits) on interface COM17-4.0, id 0
      nRF Sniffer for Bluetooth LE
      Bluetooth Low Energy Link Layer
          Access Address: 0x8e89bed6
          Packet Header: 0x0644 (PDU Type: SCAN_RSP, TxAdd: Random)
              .... 0100 = PDU Type: 0x4 SCAN_RSP
              ...0 .... = Reserved: 0
              ..0. .... = Reserved: 0
              .1.. .... = Tx Address: Random
              0... .... = Reserved: 0
              Length: 6
          Advertising Address: c0:79:db:69:2f:94 (c0:79:db:69:2f:94)
          Scan Response Data: <MISSING>
          CRC: 0x1521d7
      
  • Hello,

    Searching through the project I can find it's handled in:
    C:\ncs\v2.2.0\nrf\applications\nrf5340_audio\src\bluetooth\le_audio_cis_gateway.c

    Look in on_device_found() and in specific:

            /* Note: May lead to connection creation */
            ad_parse(p_ad, addr);

    I guess the actual connection establish is done in device_found().

    Kenneth

  • I saw on_device_found() function but I don't see where CONNECT_IND handling?

  • I think device_found() calls bt_conn_le_create() and this is where CONNECT_IND sends out

  • The connect_ind packet itself is abstracted away (very tight timing that does not make any sense the application look at), instead as a gateway you can choose which devices you want to connect to by calling bt_conn_le_create(). So in your case you can try to modify 
    https://github.com/nrfconnect/sdk-nrf/blob/main/applications/nrf5340_audio/src/bluetooth/le_audio_cis_gateway.c#L675 
    such that bt_conn_le_create() is called for the device you want to connect to (this will trigger the connect_ind you are looking for).

    Kenneth

Related