BL Audio multicast

Hello,

we are starting application and make sure we chose the right technical solution.

We have nRF5340 Audio DK boards to develop our FW.

Scenario:

Instructor talks to one/multiple/all students during outdoor sports. Typically about 10 students in one group.

We want singe audio source to send a voice to the multiple listening devices however the transmitter needs to be able to choose who will hear the audio.

Priority is range (hundreds of meters). Voice only audio quality is enough.

Possible solution according to our understanding:

We would need to pair the source device with all the listening devices so no one else can listen to the audio.

We would use BL audio broadcast to stream the audio.

There would be BLE connections with every listener, so the source device could notify every single listener to connect/disconnect the audio.

Is our solution correct or is there a better way?

Thank you

Jeronym

Parents
  • Hello Jeronym,

    Thank you for your extreme patience with this.

    We would need to pair the source device with all the listening devices so no one else can listen to the audio.

    We would use BL audio broadcast to stream the audio.

    There would be BLE connections with every listener, so the source device could notify every single listener to connect/disconnect the audio.

    Is our solution correct or is there a better way?

    Thank you for your scenario overview. I have got some good news for you - all this is possible already, without needing a connection to every device! :) 
    You are correct that you can use the broadcast audio feature of LE Audio for this, and in addition, you can encrypt the broadcast with a passkey so that only the students/listeners with this passkey can listen into the broadcast.
    If you would like for the range to be as large as possible you could also use a Front End Module with your device, to increase the TX output power to +10 or +20 dBm (depending on regulatory requirements in the region you will sell the device).

    You could give this a try by enabling the broadcast encryption and setting the passkey using these kconfigs.

    Please give this a try, and do not hesitate to let me know if you run into any issues or questions! :) 

    Best regards,
    Karl

  • Hello, thank you for the answer.

    I tried the passkey and it works, I want to use it to so multiple instructors can operate in one area with their own group of students.

    However I need the instructor to be able to choose who in h is group will he talk to individually. Sometimes he wants to speak to single student, sometimes a group and sometimes all his students. Is this also possible?

    Maybe many separate connections just to tell what students should receive the broadcast audio, or maybe use second broadcast channel and only transmit some mask to indicate what listener should enable the audio?

  • Hello Jeronym,

    JeraDrson said:

    The privacy is not an issue in this application. Therefore we would try the solution with broadcasting the mask.

    Could you please give me some advice regarding this solution? Could we encode the mask to some stream information? Or the second audio channel? Or create some non audio broadcast channel?

    Great, that sounds like a good idea! Please do not hesitate to ask or open a new ticket if you should encounter any other issues or questions when you give this a try!

    You can set up regular advertising alongside the broadcast to broadcast the mask - this way you do not have to create an implementation that continuously scans the received audio to extract the mask.
    For simplicity in the beginning you can basically set up an advertisement that contains a number, and have each device know their own identity number in order to know if they should listen in to the secondary broadcast or not.

    In the next step you can then have all the peripheral devices advertise their own ID's on a buttonpress (such as during setup for the practice) so that the central can know 'who is available'.

    And for the final version perhaps you would like to use NFC or something similar to 'scan' into the training session, so that the head coach easily can know who is in the session and what their peripheral ID they are using.

    There are many ways you can achieve this, and you might already have a plan for something other than my suggestion above, in which can you can disregard it - this was just the first I envisioned based on the understanding I have of your targeted use-case.

    Best regards,
    Karl

  • Hi,

    I implemented the solution on the TX side. The device is advertising the mask based on the buttons(manufacturer data, mask).

    However i am not sure how to scan for the advertised data correctly. I can see the packet is received because scan_check_broadcast_source is called with my data. However when the audio is streaming it probably disables the callback. Therefore i usually receive the data only once after the device boots.

    I than tried to add another very similar callback to bt_mgmt_scan_for_broadcast_start using bt_le_scan_cb_registe , however i only receive the data once more.

    Could you please point me to some example or advice me how can I receive the advertisement at all times?
    Thank you
    Jeronym
  • Hello, could you please provide some example how to receive? Thank you

  • I found out the is bt_le_scan_stop function call in pa_synced_cb, after commenting this out it seems my data is being received correctly.

  • Hi, 

    Karl is no longer available, and your case were not picked up before now. From your latest reply it looks that your query has been resolved? Is that correct?

    If not, could you create a new case that describes the remaining issues you have with implementing your firmware?

    Kind regards,
    Andreas

Reply Children
Related