With the bluez stack, is it possible to connect multiple audio sources ? How ? If not is it possible by any other means ? If possible, is it possible to mix different bluetooth version like low-energy with old ones ?

If not possible, I think a (costy) solution is to plug multiple (physical) bluetooth receivers behind my (physical) audio mixer ^-^

Background: I'm trying to build a "media server", and I want phones to be able to stream audio to it, but I don't want to hear "please, can you disconnect your [not actually playing music] phone so I can connect mine".

  • Replying as a comment as I don't have the full answer to your question. Wikipedia states Bluetooth is able to support communications to 7 devices at most in a piconet, ad-hoc configuration. – user86969 May 24 '15 at 18:28
  • Yep, found the same info, 7 is cool for me, but I don't know how to reach it. Only able to connect one device for now :( – Julien Palard May 24 '15 at 21:56

There are reports that this should possible, in particular there's a mailing list response from the main developer stating that it can be done through audio.conf. But this file doesn't ship with BlueZ 5 anymore, and the current source code doesn't make any reference to the sections it used to contain (like "[A2DP]" or "[Headset]").

This might be useful if you are running Bluez 4. This post on the maemo forums (maemo was the main sponsor of the bluetooth audio work in linux I believe) shows a sample audio.conf file with a SourceCount option set to 2. And this AskUbuntu answer says you must set SBCSources, MPEG12Sources and MaxConnected to a number higher than one.

With BlueZ 5 and Pulseaudio, when I try to connect a second source, it immediately disconnects. Using hcidump, I can see that it all goes wrong with this packet, sent by the device receiving audio:

< ACL data: handle 62 flags 0x00 dlen 10
    L2CAP(d): cid 0x0042 len 6 [psm 25]
      AVDTP(s): Discover rsp: transaction 0 nsp 0x00
        ACP SEID 1 - Audio Source
        ACP SEID 2 - Audio Sink (InUse)

Notice how the sink is marked as InUse. After seeing this, the source disconnects.

It's hard to tell where this configuration option has gone, BlueZ is notorious for its sparse documentation. With BlueZ 5, most of the audio responsibilities have been moved into other programs, such as Pulseaudio. They communicate over DBus, and Pulseaudio registers endpoints with BlueZ. Perhaps Pulseaudio is supposed to register multiple endpoints, but there doesn't seem to be any option about multiple sources in pulseaudio-module-bluetooth-discover.


A bit late maybe, but a few years ago I experimented with this and HAD it working for a while, so I'll dump my experiences with this here.

Pulseaudio 2.x is the last release that allowed multiple bluetooth audio streams to appear in PA as audio sources. From PA 3.0 onward, they changed the audio handling to either (I don't know exactly)

1) handling just one BT audio source/sink pair, or

2) allow one BT audio source/sink pair per (local) audio device available

PA 2.x was working at the time with Bluez4. I don't know if it is still possible to register multiple audio sinks with Bluez5, but at least PA doesn't make it easy or even possible. Like @philippe says in the other answer, if PA sees the Sink as InUse, it will disconnect the audio stream (even though technically the audio stream doesn't need to be connected to a PA sink)

PS: While it actually worked, the audio streams of both bluetooth devices do interfere on the radio level, so don't expect to mix 2 flawless audio streams, one or both will experience packet loss.


I too want to connect multiple bluetooth devices to one audio stream, in my case sinks.

Spurred on by the answers above I have started looking at the pulseaudio code, to get more insight, and maybe upgrade it to do what I want.

I spotted this in https://cgit.freedesktop.org/pulseaudio/pulseaudio/tree/src/modules/bluetooth/bluez5-util.c:

/* Currently only one A2DP codec is supported, so register only SBC * Support for multiple codecs needs to use a new Bluez API which * pulseaudio does not implement yet, patches are waiting in queue */ a2dp_codec_sbc = pa_bluetooth_get_a2dp_codec("sbc");

This is in top-of-tree code so it seems that someone is thinking about upgrading puseaudio to match Bluez5 API's better at some point.

There is also a hint as to what code needs restoring in this diff: https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=d504744396316c4b05f477327feb36095f5e68cb

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.