Connecting nRF5340 LE Audio to other LE Audio equipment

Hi,

I'm trying to connect the nRF5340 LE Audio example to another LE Audio equipment: VOCE by Nexum (https://www.nexum-design.com/

I asked Nexum if this was possible and got this reply:

Hi, This is totally ok if you set VOCE as Auracast TX mode. but please note, the standard sample rate of Auracast is 24K sample rate. And VOCE now is set by 48Kh. We will upgrade our VOCE to support 16 / 24Khz by next upgrade. now, you need to make sure nRF5340 as Auracast RX device can also support 16bit/48K sample rate. BR, NEXUM

I also opened a ticket on DevZone earlier but thought this got a little off topic, 

 Building nRF5340_audio example for nRF5340-DK (not NRF5340-AUDIO-DK) 

I was able to build the example and connect two nRF5340-Audio-DK kits. 

Do you have any advice for how to attack this?

I'm currently trying out different config parameters in addition to adding LOG_INF(...) to see if nRF5340 sees the VOCE device. But i have't got any closer..

Thanks in advance for any reply on this,

Best,

Håkon 

Parents
  • Hi Dejan,
    thanks for your reply,

    I would like VOCE to be connected to a microphone and transmit on a broadcast stream, and then setting up multiple nRF5340 as receivers and connect them to speakers.

    Initially I want to connect the two devices in any way so I can see that they are compatible, then I can use that as a baseline for further development. So if you think switching roles would be easier I can try that first.  

    BR,
    Håkon

Reply
  • Hi Dejan,
    thanks for your reply,

    I would like VOCE to be connected to a microphone and transmit on a broadcast stream, and then setting up multiple nRF5340 as receivers and connect them to speakers.

    Initially I want to connect the two devices in any way so I can see that they are compatible, then I can use that as a baseline for further development. So if you think switching roles would be easier I can try that first.  

    BR,
    Håkon

Children
  • Hi Håkon,

    Our nRF5340 audio in BIS mode supports 16 KHz/24 KHz/48 KHz and it is currently set in compile time. You could consider even replacing VOCE with nRF5340 audio device. This can be done since nRF5340 audio can be set as BIS gateway using microphone as audio source.

    Best regards,
    Dejan

  • Hi Dejan,

    Thanks, yes, it would be easier to have nRF5340 on both side, however I want to test the compatibility of Auracast, and the VOCE is already a small portable device easily attached to the person using the microphone.  

    Could you provide me with the configurations that might affect the connection of the two devices?
    Is it somewhere in the code that i can print out BLE devices that the nRF5340 sees?

    I think this case would be off interest to a lot of people, since Auracast products mostly will be connected to other vendors equipment.  

    Have you at Nordic connected a nRF5340 in BIS mode to any other equipment before?

    Best regards,
    Håkon

  • Hi Håkon,


    hakved_vea said:
    Could you provide me with the configurations that might affect the connection of the two devices?

    You could start by looking at nrf5340_audio/src/bluetooth/Kconfig and Kconfig.defaults.

    hakved_vea said:
    Is it somewhere in the code that i can print out BLE devices that the nRF5340 sees?

    When using nRF5340 as a receiver of audio broadcast, it is le_audio_bis_headset.c that is going to be used. Printing of devices is possible from scan_recv_cb().

    hakved_vea said:
    Have you at Nordic connected a nRF5340 in BIS mode to any other equipment before?

    Your local regional sales manager might be able to provide you this information.

    Best regards,
    Dejan

  • Hi Dejan,

    Thanks for your reply, I have been testing and reading about LE Audio, so sorry for late replay.

    I managed to connect to VOCE with the ISO Receive example from zephyr, as I see it, it does not implement any audio output.

    The two examples are quite different ISO Receive and nRF5340_Audio example, can you help me in any way to merge the two examples?

    Best regards,

    Håkon

  • Hi again,

    I have investigated the nRF5340_Audio example code and found:

    "C:\ncs\v2.2.0\zephyr\subsys\bluetooth\audio\broadcast_sink.c" contains most of the code present in the ISO Receive example. It seems that the example is adding a broadcast id in the extended advertisement data 

    I comment out the validation check for this ID and the advertisement data was passed forward to le_audio_bis_headset.c scan_recv_cb callback. This checks for device name peer, that needs to be equal to CONFIG_BT_DEVICE_NAME. So the example seems to be proprietary to nRF5340_Audio_DK boards.

    I comment out the device name check and was able to establish a connection with the VOCE device. However, the application got an ASSERTION FAIL

    Below is the dump from the debug terminal:

    *** Booting Zephyr OS build v3.2.99-ncs1 ***
    HL [00:00:00.258,300] [1B][0m<inf> fw_info: [1B][0;32m
    	 nRF5340 Audio nRF5340 Audio DK cpuapp 			    
    	 NCS base version: 2.2.0 			    
    	 Cmake run : Thu Jan 26 14:18:52 2023[1B][0m[1B][0m
    HL [00:00:00.258,300] [1B][0m<inf> fw_info: ------- DEBUG BUILD -------[1B][0m
    HL [00:00:00.258,331] [1B][0m<inf> fw_info: [1B][0;36mHEADSET left device[1B][0m[1B][0m
    HL [00:00:00.268,920] [1B][0m<inf> board_version: [1B][0;32mCompatible board/HW version found: 1.0.0[1B][0m[1B][0m
    HL [00:00:02.313,781] [1B][1;33m<wrn> bt_hci_core: Controller to host flow control not supported[1B][0m
    HL [00:00:02.442,535] [1B][0m<inf> ble: MAC: EB:37:46:99:6E:86 (random)[1B][0m
    HL [00:00:02.442,749] [1B][0m<inf> ble: Controller version: 3310[1B][0m
    HL [00:00:02.537,475] [1B][0m<inf> bis_headset: Scanning for broadcast sources[1B][0m
    HL [00:00:02.554,809] [1B][0m<inf> bis_headset: Broadcast source ªªªªªªªªªªªª[1D] found[1B][0m
    HL [00:00:02.702,362] [1B][0m<inf> bis_headset: Codec config for LC3:[1B][0m
    HL [00:00:02.702,362] [1B][0m<inf> bis_headset: 	Frequency: 48000 Hz[1B][0m
    HL [00:00:02.702,392] [1B][0m<inf> bis_headset: 	Frame Duration: 10000 us[1B][0m
    HL [00:00:02.702,392] [1B][0m<inf> bis_headset: 	Octets per frame: 100 (80000 kbps)[1B][0m
    HL [00:00:02.702,392] [1B][0m<inf> bis_headset: 	Frames per SDU: 1[1B][0m
    HL [00:00:02.702,392] [1B][0m<inf> bis_headset: 	Channel allocation: 0x0[1B][0m
    HL [00:00:02.702,423] [1B][0m<inf> bis_headset: Codec config for LC3:[1B][0m
    HL [00:00:02.702,423] [1B][0m<inf> bis_headset: 	Frequency: 48000 Hz[1B][0m
    HL [00:00:02.702,453] [1B][0m<inf> bis_headset: 	Frame Duration: 10000 us[1B][0m
    HL [00:00:02.702,453] [1B][0m<inf> bis_headset: 	Octets per frame: 100 (80000 kbps)[1B][0m
    HL [00:00:02.702,453] [1B][0m<inf> bis_headset: 	Frames per SDU: 1[1B][0m
    HL [00:00:02.702,453] [1B][0m<inf> bis_headset: 	Channel allocation: 0x0[1B][0m
    HL [00:00:02.702,545] [1B][0m<inf> bis_headset: Syncing to broadcast stream index 0[1B][0m
    HL [00:00:02.762,725] [1B][0m<inf> bis_headset: Stream index 0 started[1B][0m
    HL [00:00:02.780,181] [1B][1;33m<wrn> audio_datapath: I2S RX overrun. Single msg[1B][0m
    HL [00:00:07.772,247] [1B][1;33m<wrn> audio_datapath: In I2S TX underrun condition, total: 5000[1B][0m
    ASSERTION FAIL [err == 0] @ WEST_TOPDIR/zephyr/subsys/bluetooth/host/hci_core.c:329
    	k_sem_take failed with err -11
    HL [00:00:12.772,338] [1B][1;33m<wrn> audio_datapath: In I2S TX underrun condition, total: 10000[1B][0m
    HL [00:00:13.318,664] [1B][1;31m<err> os: r0/a1:  0x00000003  r1/a2:  0x00000000  r2/a3:  0x00000000[1B][0m
    HL [00:00:13.318,664] [1B][1;31m<err> os: r3/a4:  0x200143f5 r12/ip:  0x00000000 r14/lr:  0x0001ca87[1B][0m
    HL [00:00:13.318,664] [1B][1;31m<err> os:  xpsr:  0x61100000[1B][0m
    HL [00:00:13.318,695] [1B][1;31m<err> os: s[ 0]:  0x00000000  s[ 1]:  0x00000000  s[ 2]:  0x00000000  s[ 3]:  0x00000000[1B][0m
    HL [00:00:13.318,695] [1B][1;31m<err> os: s[ 4]:  0x00000000  s[ 5]:  0x00000000  s[ 6]:  0x00000000  s[ 7]:  0x00000000[1B][0m
    HL [00:00:13.318,695] [1B][1;31m<err> os: s[ 8]:  0x00000000  s[ 9]:  0x00000000  s[10]:  0x00000000  s[11]:  0x00000000[1B][0m
    HL [00:00:13.318,725] [1B][1;31m<err> os: s[12]:  0x00000000  s[13]:  0x00000000  s[14]:  0x00000000  s[15]:  0x00000000[1B][0m
    HL [00:00:13.318,725] [1B][1;31m<err> os: fpscr:  0x00000000[1B][0m
    HL [00:00:13.318,725] [1B][1;31m<err> os: Faulting instruction address (r15/pc): 0x0001ca92[1B][0m
    HL [00:00:13.318,756] [1B][1;31m<err> os: >>> ZEPHYR FATAL ERROR 3: Kernel oops on CPU 0[1B][0m
    HL [00:00:13.318,756] [1B][1;31m<err> os: Current thread: 0x200032f0 (sysworkq)[1B][0m
    HL [00:00:13.318,786] [1B][1;31m<err> error_handler: Caught system error -- reason 3. Entering infinite loop[1B][0m

     Can you from the terminal dump see if I'm on the right trail?

    Best regards,
    Håkon

Related