Hello,
I am using nrf5340 audio BIS headset with other LE Audio Tx test. The nRF Connect SDK version is v2.2.0.
During the sync process on both sides, the headset error occurs, as follows:
HL [00:02:08.907,531] <inf> bis_headset: Codec config for LC3: HL [00:02:08.907,531] <inf> bis_headset: Frequency: 48000 Hz HL [00:02:08.907,531] <inf> bis_headset: Frame Duration: 10000 us HL [00:02:08.907,531] <inf> bis_headset: Octets per frame: 100 (80000 kbps) HL [00:02:08.907,562] <inf> bis_headset: Frames per SDU: 1 HL [00:02:08.907,562] <inf> bis_headset: Channel allocation: 0x3 HL [00:02:08.907,562] <inf> bis_headset: Codec config for LC3: HL [00:02:08.907,592] <inf> bis_headset: Frequency: 48000 Hz HL [00:02:08.907,592] <inf> bis_headset: Frame Duration: 10000 us HL [00:02:08.907,592] <inf> bis_headset: Octets per frame: 100 (80000 kbps) HL [00:02:08.907,623] <inf> bis_headset: Frames per SDU: 1 HL [00:02:08.907,623] <inf> bis_headset: Channel allocation: 0x3 HL [00:02:08.907,714] <inf> bis_headset: Syncing to broadcast stream index 0 HL [00:02:09.357,910] <inf> bis_headset: Stream index 0 started HL [00:02:09.373,046] <wrn> audio_datapath: I2S RX overrun. Single msg HL [00:02:14.364,929] <wrn> audio_datapath: In I2S TX underrun condition, total: 5000 rtt:~$ ASSERTION FAIL [err == 0] @ WEST_TOPDIR/zephyr/subsys/bluetooth/host/hci_core.c:329 k_sem_take failed with err -11 HL [00:02:19.364,807] <wrn> audio_datapath: In I2S TX underrun condition, total: 10000 HL [00:02:20.016,479] <err> os: r0/a1: 0x00000003 r1/a2: 0x20013730 r2/a3: 0x00000001 HL [00:02:20.016,479] <err> os: r3/a4: 0x20013795 r12/ip: 0x00000000 r14/lr: 0x0001ce0b HL [00:02:20.016,479] <err> os: xpsr: 0x61100000 HL [00:02:20.016,479] <err> os: s[ 0]: 0x00000000 s[ 1]: 0x00000000 s[ 2]: 0x00000000 s[ 3]: 0x00000000 HL [00:02:20.016,510] <err> os: s[ 4]: 0x00000000 s[ 5]: 0x00000000 s[ 6]: 0x00000000 s[ 7]: 0x00000000 HL [00:02:20.016,510] <err> os: s[ 8]: 0x00000000 s[ 9]: 0x00000000 s[10]: 0x00000000 s[11]: 0x00000000 HL [00:02:20.016,510] <err> os: s[12]: 0x00000000 s[13]: 0x00000000 s[14]: 0x00000000 s[15]: 0x00000000 HL [00:02:20.016,540] <err> os: fpscr: 0x00000000 HL [00:02:20.016,540] <err> os: Faulting instruction address (r15/pc): 0x0001ce16 HL [00:02:20.016,540] <err> os: >>> ZEPHYR FATAL ERROR 3: Kernel oops on CPU 0 HL [00:02:20.016,571] <err> os: Current thread: 0x20002fc8 (sysworkq) HL [00:02:20.016,601] <err> error_handler: Caught system error -- reason 3. Entering infinite loop
But if I change the le_audio_bis_headset.c
bt_audio_broadcast_sink_sync(broadcast_sink, bis_index_bitfields[active_stream_index],audio_streams_p, NULL);
to
bt_audio_broadcast_sink_sync(broadcast_sink, 6 ,audio_streams_p, NULL);
the error will not occur, but the sound will be abnormal.
I found a ticket in DevZone similar to this problem, but it didn't help.
What confuses me is that changing bis_index_bitfields[active_stream_index] to 6 means syncing both stream[0] and stream[1], but if I change this value to stream[0] alone or stream[1] alone, an error occurs. Why is this the case?