Creating multiple BIGs with one gateway (nRF5340 Audio DK)

My project goal is to broadcast four different languages simultaneously using Auracast. Each language will be transmitted on its own BIG so that Auracast-compatible devices, such as Galaxy Buds, can select and listen to the desired language.

As a first step, I am currently trying to receive two language streams and create two BIGs.

Before starting this work, I successfully built and ran the broadcast_source sample from the nrf_audio application in nRF Connect SDK.

I have two questions:

  1. I would like to receive audio for multiple languages over a single USB connection by using multiple USB audio channels (or another recommended USB audio architecture). Is this the recommended approach? If so, are there any examples or documentation that I should refer to?
  2. Before creating multiple BIGs, my understanding is that each audio stream needs to be encoded separately in encoder_thread() before being sent to the corresponding BIG. Is my understanding correct? If so, could you point me to the relevant source files, documentation, or examples that explain how this part of the audio pipeline is implemented?

I have tried to find documentation and examples related to these two topics, but I have not been able to find any useful references.

I would greatly appreciate it if you could provide some guidance on where I should start looking or which parts of the source code and documentation I should study.

Thank you very much.

  • Hello,

    Øyvind said:
    Look at the Auraconfig sample, specifically use case 3

    Did you test this sample on your end first? It is not the different BIS' that should be switching; rather, the behavior is related to the different subgroups.

    Could you please set up and run the nRF AuraConfig sample? The documentation is available here

    Once the sample is running, please execute usecase 3 and check how the broadcasters are presented on the phone.

    We expect that some newer phone models may display three separate broadcasters. Although these appear as different broadcasters in the user interface, they are actually part of the same BIG (Broadcast Isochronous Group) and represent three different subgroups.

    Please let us know what you observe on your device.

    Kind regards,
    Øyvind




  • I built and flashed the nrf_auraconfig sample. After that, I executed the following commands:

    nac usecase 3
    nac start

    I tried to listen to the Auracast broadcast using a Galaxy S23 and a Sony headset that supports Auracast, but no broadcast was displayed.

    ( In the same environment, the broadcast_source application successfully broadcasted and I was able to receive the Auracast broadcast. )


  • uart:~$ nac start
    -- [00:00:11.979,675] <inf> broadcast_source: Created: 0x2001f2ec Multi-language
    -- [00:00:11.982,788] <inf> bt_mgmt_adv: Local addr: DE:DA:E7:0B:7A:69 (random)
    -- [00:00:11.984,832] <inf> bt_mgmt_adv: Advertising successfully started
    -- [00:00:11.992,858] <inf> broadcast_source: Broadcast stream 0x20006e74 started
    -- [00:00:11.992,889] <inf> le_audio: LC3 codec config for source:
    -- [00:00:11.992,889] <inf> le_audio: Frequency: 24000 Hz
    -- [00:00:11.992,889] <inf> le_audio: Duration: 10000 us
    -- [00:00:11.992,919] <inf> le_audio: Chan alloc: 0x0
    -- [00:00:11.992,919] <inf> le_audio: Oct pr frame: 60 (48000 bps)
    -- [00:00:11.992,919] <inf> le_audio: Frames pr SDU: 1
    -- [00:00:11.993,682] <inf> broadcast_source: Broadcast stream 0x20006fd4 started
    -- [00:00:11.993,713] <inf> le_audio: LC3 codec config for source:
    -- [00:00:11.993,713] <inf> le_audio: Frequency: 24000 Hz
    -- [00:00:11.993,713] <inf> le_audio: Duration: 10000 us
    -- [00:00:11.993,713] <inf> le_audio: Chan alloc: 0x0
    -- [00:00:11.993,713] <inf> le_audio: Oct pr frame: 60 (48000 bps)
    -- [00:00:11.993,743] <inf> le_audio: Frames pr SDU: 1
    -- [00:00:11.994,812] <wrn> main: TX sync timestamp is invalid
    -- [00:00:11.995,361] <inf> broadcast_source: Broadcast stream 0x20007134 started
    -- [00:00:11.995,391] <inf> le_audio: LC3 codec config for source:
    -- [00:00:11.995,391] <inf> le_audio: Frequency: 24000 Hz
    -- [00:00:11.995,391] <inf> le_audio: Duration: 10000 us
    -- [00:00:11.995,391] <inf> le_audio: Chan alloc: 0x0
    -- [00:00:11.995,422] <inf> le_audio: Oct pr frame: 60 (48000 bps)
    -- [00:00:11.995,422] <inf> le_audio: Frames pr SDU: 1
    -- [00:00:11.995,422] <inf> broadcast_source: Source 0x2001f2ec started
    -- [00:00:11.995,422] <inf> broadcast_source: Index: 0
    -- [00:00:11.995,422] <inf> broadcast_source: ID: 15562472
    -- [00:00:11.995,452] <inf> broadcast_source: Num subgroups: 3
    -- [00:00:11.995,452] <inf> broadcast_source: Not encrypted
    -- [00:00:11.996,307] <wrn> main: TX sync timestamp is invalid
    --- 2 messages dropped ---
    -- [00:00:11.997,344] <wrn> main: TX sync timestamp is invalid
    --- 8 messages dropped ---
    -- [00:00:12.004,913] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 12 messages dropped ---
    -- [00:00:12.006,042] <wrn> main: TX sync timestamp is invalid
    --- 7 messages dropped ---
    -- [00:00:12.006,408] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 12 messages dropped ---
    -- [00:00:12.007,415] <wrn> main: TX sync timestamp is invalid
    --- 6 messages dropped ---
    -- [00:00:12.007,598] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 12 messages dropped ---
    -- [00:00:12.008,575] <wrn> main: TX sync timestamp is invalid
    --- 6 messages dropped ---
    -- [00:00:12.016,143] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 12 messages dropped ---
    -- [00:00:12.017,120] <wrn> main: TX sync timestamp is invalid
    --- 6 messages dropped ---
    -- [00:00:12.017,517] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 12 messages dropped ---
    -- [00:00:12.018,493] <wrn> main: TX sync timestamp is invalid
    --- 8 messages dropped ---
    -- [00:00:12.018,707] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 10 messages dropped ---
    -- [00:00:12.019,744] <wrn> main: TX sync timestamp is invalid
    --- 6 messages dropped ---
    -- [00:00:12.027,221] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 11 messages dropped ---
    -- [00:00:12.028,381] <wrn> main: TX sync timestamp is invalid
    --- 8 messages dropped ---
    -- [00:00:12.029,968] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 9 messages dropped ---
    -- [00:00:12.050,628] <wrn> main: TX sync timestamp is invalid
    --- 8 messages dropped ---
    -- [00:00:12.073,455] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 10 messages dropped ---
    -- [00:00:12.086,303] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 9 messages dropped ---
    -- [00:00:12.109,466] <wrn> main: TX sync timestamp is invalid
    --- 8 messages dropped ---
    -- [00:00:12.127,624] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 9 messages dropped ---
    -- [00:00:12.150,939] <wrn> main: TX sync timestamp is invalid
    --- 7 messages dropped ---
    -- [00:00:12.162,811] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 11 messages dropped ---
    -- [00:00:12.186,492] <wrn> main: TX sync timestamp is invalid
    --- 5 messages dropped ---
    -- [00:00:12.197,998] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    --- 10 messages dropped ---
    00:00:12.221,130] <-- [00:00:12.240,325] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.261,505] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.274,017] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.296,356] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.309,692] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.330,718] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.344,512] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.365,814] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.386,779] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.400,115] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.421,112] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.433,837] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.456,298] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.463,073] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.474,426] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.533,386] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.533,721] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.534,973] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.541,381] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.542,572] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.543,518] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.544,708] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.545,104] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.546,203] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.552,703] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.553,863] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.554,840] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.555,969] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.556,365] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.557,312] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.563,995] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.565,093] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.566,101] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.567,077] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.567,443] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.568,603] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.575,195] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.576,263] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.577,178] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.578,186] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.578,704] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.579,711] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.586,364] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.587,463] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.588,317] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.589,263] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.589,843] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.590,820] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.597,595] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.598,724] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.599,426] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.600,433] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.601,013] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.602,111] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.608,856] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.609,802] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.610,595] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.611,541] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.612,213] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.613,311] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.619,964] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.620,941] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.621,734] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.622,772] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.623,474] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.624,725] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.631,042] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.632,171] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.632,873] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.634,094] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.634,826] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.636,077] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.642,272] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.643,402] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.644,195] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.645,416] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.646,179] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.647,155] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.653,564] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.654,693] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.655,548] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.656,555] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.657,318] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.658,264] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.664,825] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.665,954] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.666,687] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.667,663] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.668,395] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.669,372] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.676,055] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.677,154] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.677,764] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.678,771] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.679,504] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.680,511] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.687,255] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.688,232] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.688,873] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.689,849] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.690,612] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.691,619] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.698,333] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.699,310] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.699,981] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.700,988] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.701,721] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.702,789] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.489,929] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.709,442] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.710,418] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.711,090] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller
    -- [00:00:12.712,219] <wrn> main: TX sync timestamp is invalid
    -- [00:00:12.712,921] <wrn> bt_le_audio_tx: Audio tx called with interval of 0 us, (min 7500 us, max 12500 us) expected around 10000 us. Resync with controller

  • Hello,

    The "failed to initialize SD Card: -19"  means that you don't have an SD card in the audio kit. SD card usage and setup is documented in the predefined usecases in nRF Auraconfig sample.

     As stated in the output, it is still transmitting fixed buffers, so you should in theory see all broadcasters, but won't be able to listen to anything.

    For the last issue you pasted, this should have been fixed in https://github.com/nrfconnect/sdk-nrf/pull/29472. You might need to test with main version of nRF Connect SDK.

    Kind regards,

    Øyvind

  • I confirmed that  use case 0, 1 , 2 are working normally.

    However, in use case 3, the following error still occurs:

    ...
    bt_le_audio_tx: Audio tx called with interval of 6900 us
    bt_le_audio_tx: Audio tx called with interval of 12607 us
    ...

    I am using nRF Connect SDK v3.4.0 (LTS).

    Additionally, I added the USB-related files from the nRF Audio application to the nRF Auraconfig sample and modified the code to broadcast the frame_out encoded through encoder_thread() in the nRF Audio application.

    However, in the following environment:

    Windows PC <- USB A-to-C -> nRF5340 Audio DK

    Windows does not recognize the nRF5340 Audio DK as an audio output device, and broadcasting does not work.
    (The nRF5340 Audio DK continuously reboots.)


    1. Passing frame_out from encoder_thread() to subgroup_send() in nRF Auraconfig

    nRF Auraconfig is passing files stored on the SD card or fixed buffers.

    I want to receive audio input from USB in nRF Auraconfig, encode it through encoder_thread(), and pass the generated frame_out to subgroup_send() so that it can be broadcast and heard.

    I would like to know the required environment settings and configuration for this.


    2. Adding nrf_auraconfig.c to the nRF Audio application

    If I add nrf_auraconfig.c to the nRF Audio application, I want the command-based nRF Auraconfig to continue working with the existing functionality using use case 1:

    1 BIG
    1 Subgroup
    2 BIS (Stereo)

    without changing the existing application behavior.

    Later, during the encoding process, I want to split the left and right channels, encode them separately, and use nRF Auraconfig as:

    1 BIG
    2 Subgroups
    2 BIS (Mono)

    The CMakeLists.txt file of nRF Auraconfig is as follows.

    #
    # Copyright (c) 2024 Nordic Semiconductor
    #
    # SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
    #
    cmake_minimum_required(VERSION 3.20.0)
    
    # Include overlay file
    set(EXTRA_DTC_OVERLAY_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../../applications/nrf_audio/boards/nrf5340_audio_dk_nrf5340_cpuapp.overlay)
    
    # Flag which defines whether application is compiled as gateway/dongle or headset
    add_compile_definitions(HEADSET=1)
    add_compile_definitions(GATEWAY=2)
    
    
    find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
    project(nrf_auraconfig)
    
    # Include application events and configuration headers
    zephyr_library_include_directories(app PRIVATE
        ${ZEPHYR_NRF_MODULE_DIR}/samples/bluetooth/nrf_auraconfig/include
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/include
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/bluetooth
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/modules
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/utils/macros
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/audio
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/utils
    )
    
    add_subdirectory(${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/bluetooth bluetooth_build)
    add_subdirectory(C:/ncs/v3.4.0/nrf/lib/pcm_stream_channel_modifier pcm_stream_channel_modifier_build)
    
    target_sources(app PRIVATE ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/modules/audio_sync_timer.c)
    target_sources(app PRIVATE ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/modules/led.c)
    
    target_sources_ifdef(CONFIG_NRF_AUDIO_SD_CARD_MODULE app PRIVATE ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/modules/sd_card.c)
    target_sources_ifdef(CONFIG_NRF_AUDIO_SD_CARD_LC3_FILE app PRIVATE ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/modules/lc3_file.c)
    target_sources_ifdef(CONFIG_NRF_AUDIO_SD_CARD_LC3_STREAMER app PRIVATE ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/modules/lc3_streamer.c)
    
    FILE(GLOB app_sources src/*.c)
    
    target_sources(app PRIVATE ${app_sources})
    
    target_sources(app PRIVATE
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/audio/audio_system.c
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/audio/audio_datapath.c
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/audio/sw_codec_select.c
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/audio/le_audio_rx.c
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/modules/audio_usb.c
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/utils/device_location.c
        ${ZEPHYR_NRF_MODULE_DIR}/applications/nrf_audio/src/utils/uicr.c
        C:/ncs/v3.4.0/nrf/lib/pcm_stream_channel_modifier/pcm_stream_channel_modifier.c
    )
Related