nRF5340 LE Audio "sw_codec_lc3: LC3 enc_bitrate is 0" error

Hey!

I'm working on a LE Audio project utilizing the nRF5340, where I need to stream audio both from and to the nRF and I have encountered the error "sw_codec_lc3: LC3 enc_bitrate is 0". It only occurs when I enable bidirectional communication ("CONFIG_STREAM_BIDIRECTIONAL=y") and when my phone tries to output sound via BLE. If configured to use unidirectional communication, everything works fine, there is audio playback through the nRF. (Which is great! Thanks to everyone who worked on zephyr and the sdk, it is really pleasant to use!)


Given this is is an application specific project, I couldn't simply re-use the DK pinout and set of ICs. All notable hardware changes are:

- Exchanged Codec to: DA7212 (uses I2C instead of SPI), wrote a hardware driver lib that replaces the cirrus one
- Removed most LEDs, except for one RGB one, removed all instances of other LEDs being used
- Removed all power monitoring (INAxx), the SD card and USB
- Removed all buttons and all instances of them being used in software
- Different UART pinout.

To implement these I've adapted the nRF5340 Audio DK devicetree, this has worked well. I don't think my error lies in here. Same goes with the DA7212 codec lib, it just configures the HW codec, not the LC3. Anyhow, here is the UART log:

HL [00:07:20.494,445] <inf> main: Connected
HL [00:07:22.662,994] <inf> main: Security changed
HL [00:07:25.482,543] <inf> bt_content_ctrl_media: Discovery of MCS finished
HL [00:07:29.442,047] <inf> bt_rend_vol: Volume = 153, mute state = 0
HL [00:07:31.632,415] <inf> unicast_server: LC3 codec config for sink:
HL [00:07:31.632,415] <inf> unicast_server:     Frequency: 48000 Hz
HL [00:07:31.632,415] <inf> unicast_server:     Duration: 10000 us
HL [00:07:31.632,415] <inf> unicast_server:     Channel allocation: 0x1
HL [00:07:31.632,415] <inf> unicast_server:     Octets per frame: 120 (96000 bps)
HL [00:07:31.632,446] <inf> unicast_server:     Frames per SDU: 1
HL [00:07:31.632,904] <dbg> main: le_audio_msg_sub_thread: Received event = 1, current state = 1
HL [00:07:31.632,904] <dbg> main: le_audio_msg_sub_thread: LE audio config received
HL [00:07:31.632,934] <dbg> main: le_audio_msg_sub_thread:      Sampling rate: 48000 Hz
HL [00:07:31.632,934] <dbg> main: le_audio_msg_sub_thread:      Bitrate (compressed): 96000 bps
HL [00:07:31.632,934] <dbg> main: le_audio_msg_sub_thread:      Direction: 1
HL [00:07:31.632,965] <dbg> audio_system: audio_system_config_set: Encoder: 0, Decoder: 48000, Bits: 0
HL [00:07:31.692,413] <dbg> main: le_audio_msg_sub_thread: Received event = 2, current state = 1
HL [00:07:31.692,413] <dbg> main: le_audio_msg_sub_thread: Set presentation delay
HL [00:07:31.692,413] <inf> main: Presentation delay 10000 us is set by initiator
HL [00:07:31.751,953] <wrn> bt_ascs: CCID 2 is unknown
HL [00:07:31.954,681] <inf> unicast_server: Stream 0x20009dc4 started
HL [00:07:31.954,864] <dbg> main: le_audio_msg_sub_thread: Received event = 3, current state = 1
HL [00:07:31.954,864] <dbg> main: le_audio_msg_sub_thread: LE audio evt streaming
HL [00:07:31.959,136] <dbg> sw_codec_select: sw_codec_init: Encode: 0Hz 16bits 10000us 0bps 1 channel(s)
HL [00:07:31.959,136] <err> sw_codec_lc3: LC3 enc_bitrate is 0
HL [00:07:31.959,136] <err> audio_system: Failed to set up codec
HL [00:07:31.959,136] <err> audio_system: ERR_CHK Err_code: [-22] @ line: 396
HL [00:07:31.959,167] <err> os: r0/a1:  0x00000003  r1/a2:  0x00000008  r2/a3:  0x00000007
HL [00:07:31.959,167] <err> os: r3/a4:  0x0005557b r12/ip:  0x20002510 r14/lr:  0x00055605
HL [00:07:31.959,167] <err> os:  xpsr:  0x41100000
HL [00:07:31.959,197] <err> os: s[ 0]:  0x200012f0  s[ 1]:  0x0005579f  s[ 2]:  0xffffffea  s[ 3]:  0x00000004
HL [00:07:31.959,197] <err> os: s[ 4]:  0x2000c730  s[ 5]:  0x2000c710  s[ 6]:  0xffffffea  s[ 7]:  0x2000c710
HL [00:07:31.959,197] <err> os: s[ 8]:  0x2000c730  s[ 9]:  0x00000000  s[10]:  0x00001900  s[11]:  0x000557eb
HL [00:07:31.959,228] <err> os: s[12]:  0x2000c730  s[13]:  0x00064554  s[14]:  0xffffffea  s[15]:  0x0000018c
HL [00:07:31.959,228] <err> os: fpscr:  0x00000000
HL [00:07:31.959,228] <err> os: Faulting instruction address (r15/pc): 0x000048b6
HL [00:07:31.959,228] <err> os: >>> ZEPHYR FATAL ERROR 3: Kernel oops on CPU 0
HL [00:07:31.959,259] <err> os: Current thread: 0x20001a88 (LE_AUDIO_MSG_SUB)
HL [00:07:31.959,259] <err> error_handler: Caught system error -- reason 3. Entering infinite loop



Here are the changes to my proj.conf

# Enable I2S
CONFIG_AUDIO_SOURCE_I2S=y
CONFIG_AUDIO_SOURCE_USB=n

CONFIG_TRANSPORT_BIS=n
CONFIG_TRANSPORT_CIS=y

# enable bidirectional communication
CONFIG_STREAM_BIDIRECTIONAL=y


LC3_BITRATE is set to 32000 in src/audio/Kconfig.defaults

config LC3_BITRATE
	default 32000



Oh, and I use my nRF in Unicast Server mode. West version 1.2.0, nRF SDK 2.6.0

Any ideas on why I could get this bitrate error?

Related