Lazyweb, a Linux audio question.

I have a Linux box, and I am making the sound come out of a bluetooth speaker. For the sake of argument let's say that I got that far successfully. Against all the odds, I made that work.

Now: say I have a second speaker, or third or more, also paired to this computer.

I would like to turn on those speakers, have them automatically connect, and hear the music now coming out of all the speakers.

Uninterrupted and synchronized.

Can I have this?

I believe the answer to this is either "no" or "deep pipewire esoterica" - pavucontrol hints that this is a known problem, and that having different brands of bluetooth speaker introduces its own complexities.
Consensus is no.
@mhoye the consensus is not aware of the fact that bluetooth audio hubs exist. Plug it into your machine, connect however many connections the hub allows.
@mhoye say you okay à surround 5 channel movie. Easier for VLC to send the encoded stream to one Bluetooth device which then decides and drives 5 speakers compared to VLC having to break the audio stream and send left audio to on device, middle, right , rear left, rear right each to different devices.
qpwgraph, maybe.

@mhoye other folks in the thread have already mentioned that the challenge here is Bluetooth itself, not the Linux audio subsystem.

Some folks were correct to mention BT-LE Audio Auracast as a point-to-multipoint audio distribution framework, but that protocol is intended to broadcast things like museum tour narrations, not music - crucially, point-to-multipoint _with no synchronization of the endpoints_. (Point-to-stereo is special-cased.)

1/2

@mhoye The actual stick in the spokes with this idea isn't the latency and clock desynchronization introduced by each device, it's the fact that each device will also skew its synchronization unpredictably during playback to deal with packet drops and signal strength changes.

Even if you manually measure and compensate for the delay of each device at stream start, they will still skew apart pretty quickly. There is no outer control loop to keep the mesh of devices aligned.

2/2

@mhoye (that outer control loop is what protocols like AES67, Ravenna Audio, snapcast, and Sonos's proprietary distribution/sync system all add. It's a difficult problem.)
@mhoye I struggled with something similar, but not a Bluetooth device, and the answer was "deep pipewire esoterica". As far as I can tell the hardest part is the "automatically route the audio part", which I was unable to figure out and I gave up.

@mhoye
In my experience Bluetooth speakers have variable buffering delays inside them. i think this is likely to be a shitshow for reasons that have nothing to do with linux.

but unfortunately I have no idea how to attempt this either. it seems like output is usually mutually exclusive.

@dlakelan @mhoye I agree, I bet bluetooth will be a pain. But sending output to multiple speakers at once should be easy using wireplumber to create a virtual audio channel that muxes out to the individual speakers.
@dlakelan @mhoye Yep, the robust and reliable solution continues to be wires. The newfangled Auracast standard allows sending audio to multiple Bluetooth devices, but whether it accounts for those devices' varying internal latencies is unclear to me.
@mhoye In my experience, no. This part of why I pay the Apple Tax
@mhoye it’s not the answer to the question but the way some bluetooth speaker brands have their own multi-output mode might do this
@mhoye at the moment, I think the best you can do is dual speakers to one controller. Some bluetooth speakers call this TWS, true wireless stereo. There's a bluetooth broadcast protocol called Auracast but I don't think any devices support it yet.

@hyc @mhoye Auracast is supported by the Harman Kardon Onyx Studio 9 speakers.

I know because I own one, however I don't know how make Linux emit Auracast or if the speakers handle the communication among them.

@mhoye no because everyone has their own clock
@mhoye Is this possible on any system? Bluetooth devices often have radically different lag times. I have many little bluetooth to 1/4" or rca output devices, and my setup would always be to run only one bluetooth receiver but route the wires to many speakers.
For instance, I do this a lot when playing live music via a mixer at events I run sound for, or to listen to songs through our PA at band practice.

@mhoye The 'modern' solution is Auracast, for which a product like the Sennheiser BTD700 is a good pick (works under Linux AFAIK, however the configuration utility is sadly Win/Mac only - might work under WINE?).

But: The bigger issue is, unless your BT speakers are all new models with Auracast support, they can't talk to each other. Prior to Auracast, every brand had its own multi-connect which was not interoperable.

You may be able to get a USB BT adaptor which can support 2x or 3x streams.