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 

  • 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

  • Hi Håkon,

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

    On which device do you run ISO Receive sample? What is running on the other device?

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

    What do you expect to get from this merge? Could you elaborate on what you try to achieve?

    Best regards,
    Dejan

  • Hi Dejan,

    I programmed nRF5340-Audio-DK with ISO Receive example, the VOCE is set up as tx broadcast (BIS), this is programmed by NEXUM. 


    from the image above, I want to keep all I2S and audio functionality, then stream audio from the VOCE device to the headphone output jack port.  

    Best regards,
    Håkon

  • Hi Håkon,

    To which specific files and inside which specific sample did you make changes? Could you show the exact changes that you made?

    Best regards,
    Dejan

Related