
LE Audio Support
From release 5.66, the initial support for BAP (Basic Audio Profile) which is an essential part of LE Audio responsible for stream control is added.
14th November 2022

Since version 0.3.59, PipeWire supports LE Audio’s Basic Audio Profile (BAP) for Connected Isochronous Streams (CIS) with the Low Complexity Communication Codec (LC3), see https://www.linkedin.com/posts/collabora_add-bluetooth-le-audio-support-1360-activity-6978014601649037312-7W6d/.
Thanks to the modular architecture of PipeWire, it is ready for future codecs.
It supports bi-directional audio and can act as a Central or Peripheral device. In the former case, it allows the end-user to select a new audio profile, while in the latter, it automatically connects Bluetooth audio streams to the local audio input and output. This paves the way for Auracast support in BlueZ and PipeWire.
If you are interested in trying this, the LC3 codec from https://github.com/google/liblc3.git must be installed. The PipeWire meson build must be configured with the option `-Dbluez5-codec-lc3=enabled`.
[Client/Central]
[bluetooth]# power on
[bluetooth]# endpoint.register 00002bc9-0000-1000-8000-00805f9b34fb 0x06
[/local/endpoint/ep0] Auto Accept (yes/no): y
[/local/endpoint/ep0] CIG (auto/value): a
[/local/endpoint/ep0] CIS (auto/value): a
Capabilities:
03 01 ff 00 02 02 03 02 03 03 05 04 1e 00 f0 00 ................
Endpoint /local/endpoint/ep0 registered
[bluetooth]# endpoint.register 00002bcb-0000-1000-8000-00805f9b34fb 0x06
[/local/endpoint/ep1] Auto Accept (yes/no): y
[/local/endpoint/ep1] CIG (auto/value): a
[/local/endpoint/ep1] CIS (auto/value): a
Capabilities:
03 01 ff 00 02 02 03 02 03 03 05 04 1e 00 f0 00 ................
Endpoint /local/endpoint/ep1 registered
[bluetooth]# scan on
[bluetooth]# scan off
[bluetooth]# connect
[NEW] Transport /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_source0/fd0
Endpoint: SetConfiguration
Transport /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_source0/fd0
Device: /org/bluez/hci0/dev_00_AA_01_01_00_02
Auto Accepting...
[NEW] Transport /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_sink0/fd1
Endpoint: SetConfiguration
Transport /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_sink0/fd1
Device: /org/bluez/hci0/dev_00_AA_01_01_00_02
Auto Accepting...
[bluetooth]# transport.acquire /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_sink0/fd1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque porttitor lorem eget velit imperdiet, eget porta velit scelerisque. Nullam eget eros sit amet mi dictum malesuada. Aliquam quis tellus gravida, pellentesque nunc ac, consequat nisi. Praesent vehicula ligula lectus, quis semper risus vulputate sit amet. Fusce malesuada gravida nisi id pharetra. Quisque tempor quis felis eu vulputate. Nam nec ornare dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus nec interdum tortor, quis ornare augue. Sed varius molestie nulla, luctus congue metus auctor eget. Nulla tincidunt arcu ac tempor euismod. Etiam eu blandit lacus. Vivamus semper tincidunt gravida. Fusce semper, risus eget imperdiet viverra, ipsum nisi vehicula dolor, sit amet posuere diam elit at lorem. Sed diam ipsum, mattis et pharetra eget, facilisis sit amet lacus.
Aliquam sed molestie ligula. Nulla ultricies vel augue et vulputate. Aenean rutrum elit est, vitae lobortis diam tincidunt at. Nam malesuada, purus id posuere suscipit, purus dolor tempus purus, non ultricies elit nulla ut lectus. Pellentesque a condimentum sapien. Nunc eget nunc nulla. Vivamus vitae est non dolor condimentum vehicula. Nulla malesuada mauris et dui pulvinar ullamcorper.
Curabitur ultrices eu nunc sed fermentum. Nullam aliquam est sit amet sapien pharetra, eu lacinia odio rutrum. Cras sit amet turpis commodo, dignissim leo ut, pretium libero. Curabitur mollis nisl in fermentum imperdiet. Aenean lobortis egestas pharetra. Etiam nec lacinia ex. Nam bibendum malesuada elementum. Nulla venenatis euismod luctus. Nam ac ex sit amet magna suscipit vulputate. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ultrices in mauris id molestie. Suspendisse dictum, nisl quis dictum interdum, tellus mi tincidunt dolor, sit amet luctus est orci vel felis. Cras commodo aliquet sem, ullamcorper viverra ipsum convallis ac. Phasellus a sodales leo. Vestibulum vestibulum a felis et congue.
Nunc sed augue tortor. Praesent elit ipsum, feugiat a leo vel, lacinia fringilla sem. Morbi varius, leo id vehicula euismod, enim nunc vestibulum nisi, vitae congue orci justo quis metus.
Curabitur id venenatis leo. Nam venenatis nibh et nisl finibus mattis. Maecenas lobortis ipsum a euismod dictum. Duis et turpis non nisl sagittis cursus. Sed at tempor odio, ut mattis sapien. Nulla at risus ac dolor aliquam ultrices eu eu nulla. Aliquam quis accumsan nunc. Morbi massa tellus, accumsan at finibus ac, maximus in ante. Ut congue pharetra purus, ut auctor arcu sagittis sagittis. Aliquam efficitur eros ut tortor vestibulum lobortis. Curabitur finibus ut tortor quis efficitur. Nullam euismod diam tellus, quis sagittis magna convallis ac. Vivamus dictum est tortor, ut laoreet diam viverra quis.
Nulla tincidunt arcu ac tempor euismod. Etiam eu blandit lacus. Vivamus semper tincidunt gravida. Fusce semper, risus eget imperdiet viverra, ipsum nisi vehicula dolor, sit amet posuere diam elit at lorem. Sed diam ipsum, mattis et pharetra eget, facilisis sit amet lacus.Quote Author Details Here
Pellentesque iaculis a magna feugiat fringilla. Aliquam sed molestie ligula. Nulla ultricies vel augue et vulputate. Aenean rutrum elit est, vitae lobortis diam tincidunt at. Nam malesuada, purus id posuere suscipit, purus dolor tempus purus, non ultricies elit nulla ut lectus. Pellentesque a condimentum sapien. Nunc eget nunc nulla. Vivamus vitae est non dolor condimentum vehicula. Nulla malesuada mauris et dui pulvinar ullamcorper.

From release 5.66, the initial support for BAP (Basic Audio Profile) which is an essential part of LE Audio responsible for stream control is added.

Since version 0.3.59, PipeWire supports LE Audio's Basic Audio Profile (BAP) for Connected Isochronous Streams (CIS) with the Low Complexity Communication Codec (LC3), see https://www.linuxplumbersconf.org/...

This release mainly includes the initial support of BAP (Basic Audio Profile) which is an essential part of LE Audio responsible for stream control and VCP (Volume Control Profile). For MGMT, new MGMT opcodes are...