Steam Deck

Steam Deck

papa_oogway 21. nov. 2023 kl. 1:14
Bluetooth enhancement: LE audio and LC3 codec
Considering the new bluetooth chip supports 5.3, is it reasonable to suspect that support for LE audio and the LC3 codec is on the horizon? The LC3 codec's latency is supposedly in the neighborhood of 20-30ms, a full order of magnitude better than the status quo.

Yes, AptX LL has acceptable latency and is supported by the deck, but Qualcomm has pushed in favor of AptX Adaptive, which is apparently difficult to reverse engineer [1] so we may not see Linux support any time soon. I don't anticipate many more AptX LL headphones will be made, unless perhaps they have this Steam Deck market gap in mind.

Looking at [2], it seems like things are relatively early on the software side, requiring a 6.4 kernel, pipewire built with a special flag, and the lc3 codec installed. I don't see "cis-central cis-peripheral" in the output of "bgmgmt info", but that could be due to the older 6.1 kernel.

Do we know if the new FC66E-B chip has hardware support for LE audio?

[1] https://github.com/Arkq/openaptx/issues/8
[2] https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/LE-Audio-+-LC3-support
Sidst redigeret af papa_oogway; 21. nov. 2023 kl. 1:18
< >
Viser 1-15 af 17 kommentarer
Rodomar705 21. nov. 2023 kl. 2:37 
Don't hold your breath on it. Bluetooth audio stack on linux is extremely messy, even worse than windows. Base support in the bluetooth audio stack should be already in, but I never had it working in the past.
Fio 2. dec. 2023 kl. 19:56 
I would like to bump this. I own a bunch of noise cancelling earbuds that support LE LC3 audio, but can't do aptx.

Would be nice to have LE support. Especially since LE LC3 seems to be what's going to be standard moving forward, not aptx ll.
Fio 11. dec. 2023 kl. 10:11 
Apparently, Pipewire has had updates to support and bring improvements to LC3.

It's mostly a matter of Valve rebasing SteamOS with a more recent version of Pipewire.

For now I've settled on a pair of Sony Inzone Buds which come with a dongle. It's nice but takes up the only usb c port. They also support LC3.

I've tried shopping around for aptx low latency earbuds with ANC. It seems to be on its way out and if any support, it seems to be for adaptive aptx which the Deck doesn't deal well with.

I tried looking online for a splitter so I can charge and connect the dongle at the same time. But for the most part I've found Reddit threads where Deck owners flame OP for daring to not use the 3.5mm jack.
papa_oogway 12. dec. 2023 kl. 15:52 
Oprindeligt skrevet af Fiorin:
Apparently, Pipewire has had updates to support and bring improvements to LC3.

It's mostly a matter of Valve rebasing SteamOS with a more recent version of Pipewire.

For now I've settled on a pair of Sony Inzone Buds which come with a dongle. It's nice but takes up the only usb c port. They also support LC3.

I've tried shopping around for aptx low latency earbuds with ANC. It seems to be on its way out and if any support, it seems to be for adaptive aptx which the Deck doesn't deal well with.

I tried looking online for a splitter so I can charge and connect the dongle at the same time. But for the most part I've found Reddit threads where Deck owners flame OP for daring to not use the 3.5mm jack.

Nice! That's good news. Thanks for the update. I personally got a pair of Sony xm5 earbuds. Do you have any insight on whether the Bluetooth chipset in the deck can support LE audio?
Fio 12. dec. 2023 kl. 18:21 
Oprindeligt skrevet af papa_oogway:
Oprindeligt skrevet af Fiorin:
Apparently, Pipewire has had updates to support and bring improvements to LC3.

It's mostly a matter of Valve rebasing SteamOS with a more recent version of Pipewire.

For now I've settled on a pair of Sony Inzone Buds which come with a dongle. It's nice but takes up the only usb c port. They also support LC3.

I've tried shopping around for aptx low latency earbuds with ANC. It seems to be on its way out and if any support, it seems to be for adaptive aptx which the Deck doesn't deal well with.

I tried looking online for a splitter so I can charge and connect the dongle at the same time. But for the most part I've found Reddit threads where Deck owners flame OP for daring to not use the 3.5mm jack.

Nice! That's good news. Thanks for the update. I personally got a pair of Sony xm5 earbuds. Do you have any insight on whether the Bluetooth chipset in the deck can support LE audio?

The Deck OLED has a bluetooth 5.3 chip. By default that means it can support LE Audio and LC3 which require Bluetooth 5.2.

The problem is that Pipewire needs to be updated to use LC3. The Deck is using a version of Pipewire from more than a year ago (0.3.62). Pipewire 1.0 was released late last month. LC3 seems to work fine on one of my Linux machines with Pipewire 1.0 and a 5.3 BT.

I could attempt to get it working on my own, but SteamOS is based on an older version of ArchLinux and I might break things.

By default, SteamOS is locked to readonly, I could disable that to try updating Pipewire through pacman. Then whenever SteamOS has an update, it would just overwrite whatever I did.
Sidst redigeret af Fio; 12. dec. 2023 kl. 18:32
bao 19. apr. 2024 kl. 5:06 
Oprindeligt skrevet af Fiorin:
Oprindeligt skrevet af papa_oogway:
I could attempt to get it working on my own, but SteamOS is based on an older version of ArchLinux and I might break things.

By default, SteamOS is locked to readonly, I could disable that to try updating Pipewire through pacman. Then whenever SteamOS has an update, it would just overwrite whatever I did.
Were you successful in doing this?
papa_oogway 2. maj 2024 kl. 13:11 
Oprindeligt skrevet af bao:
Oprindeligt skrevet af Fiorin:
Were you successful in doing this?
I was not successful, unfortunately. My memory is a little fuzzy now but IIRC the newer pipewire mostly worked but LC3 didn't appear as a supported option for the chip. I'm personally hoping that steamos 3.6 will update the kernel and pipewire.
bao 11. maj 2024 kl. 3:57 
With the newest 3.6.0 preview update, Valve has re-based SteamOS on a newer version of Arch Linux, and updated KDE Plasma to 5.27.10. Along with it, Pipewire was updated to version 1.0.3 - you can check this by running this command in the terminal:
pactl info

Additionally, the changelogs for the update include
"Enabled support for Bluetooth A2DP and BAP profiles"
and LC3 is part of the BAP profile, yet I own LC3 capable earbuds, and I do not see it as an available codec in the audio output device settings in desktop mode, only the same old ones prior to the update. Would adding LC3 support manually be possible somehow now?

Oprindeligt skrevet af Fiorin:
LC3 seems to work fine on one of my Linux machines with Pipewire 1.0 and a 5.3 BT.
Did you need to do anything extra for LC3 to work on your other Linux machine?
Sidst redigeret af bao; 11. maj 2024 kl. 8:10
pie 29. juli 2024 kl. 19:34 
BAP/LC3 on the steamdeck might be working now. I dont have compatible headphones to test though.

Adding a config file to ~/.config/wireplumber/bluetooth.lua.d/61-bluez-jupiter.lua should enable it on pipewire, overwriting the default wireplumber config for your user.

bluez_monitor.properties = { -- use array values from below and then uncomment. -- ["bluez5.roles"] = "[ a2dp_sink a2dp_source bap_sink bap_source hfp_hf hfp_ag]", ["bluez5.hfphsp-backend"] = "native", }

Note the bap sink addition. You can see the file this will overwrite the config of /usr/share/wireplumber/bluetooth.lua.d/60-bluez-jupiter.lua

Restarting should enable it. If it causes issues, delete the file and restart again. Check the wireplumber config docs, and arch wiki for bluetooth for more info.

edit: steam is messing with the formatting.
a2dp_sink a2dp_source bap_sink bap_source hfp_hf hfp_ag
should be in the roles array above
Sidst redigeret af pie; 29. juli 2024 kl. 19:44
bao 13. aug. 2024 kl. 11:35 
Oprindeligt skrevet af pie:
Note the bap sink addition. You can see the file this will overwrite the config of /usr/share/wireplumber/bluetooth.lua.d/60-bluez-jupiter.lua

I don't see a folder named bluetooth.lua.d in that directory. Are you sure that gets overwritten?
bao 13. aug. 2024 kl. 11:58 
Oprindeligt skrevet af pie:
BAP/LC3 on the steamdeck might be working now. I dont have compatible headphones to test though.

Adding a config file to ~/.config/wireplumber/bluetooth.lua.d/61-bluez-jupiter.lua should enable it on pipewire, overwriting the default wireplumber config for your user.

I've tried creating the file in the directory as you've instructed, with the provided roles in the array, however it doesn't seem to do anything. The same 3 codecs are visible as before: SBC, SBC-XQ and AAC, no option for LC3. I'm using the OnePlus Buds Pro 2, which support LC3, so I'm not sure if the .lua file just isn't doing what it's supposed to, or if LC3 support simply isn't possible on SteamOS yet.
pie 15. aug. 2024 kl. 5:40 
Sorry, I might be doing more harm than help. And it might require more tinkering/experimentation than you want. Like I said, I do not have lc3 headphones to test... In case of issues, just delete ~/.config/wireplumber/ entirely.

Firstly, no, the file will not exist by default. You will need to create it. On start, Wireplumber automatically looks in this directory, reads any file in here (if it exists), and then will merge this into its own configuration. Since the file has the number 61, it has higher priority over valve's /usr/share/wireplumber/bluetooth.lua.d/60-bluez-jupiter.lua file. ( https://wiki.archlinux.org/title/WirePlumber#Configuration_file_layout ). Rebooting is the easiest way to have wireplumber reread the config files.

Secondly, if the file is actually being read, you should have the ability to also use your headphones as a headset unit with the low quality hfp profile (steam deck by default disables it in the above config, but
["bluez5.hfphsp-backend"] = "native"
enables it).

Also if actually works you would probably have seen the error from
journalctl -x |grep bap
Aug 15 05:23:34 steamdeck bluetoothd[20674]: profiles/audio/bap.c:bap_init() D-Bus experimental not enabled Aug 15 05:23:34 steamdeck bluetoothd[20674]: src/plugin.c:plugin_init() Failed to init bap plugin

To fix that error, it looks like you need to add dbus experimental support to bluez. https://www.reddit.com/r/kde/comments/vmrj80/ive_been_trying_to_enable_the_experimental/
That fixed the error for me. I guess it added a battery percentage to the headphones selector which is nice.
Sidst redigeret af pie; 15. aug. 2024 kl. 5:48
pie 15. aug. 2024 kl. 5:57 
Oprindeligt skrevet af bao:
Oprindeligt skrevet af pie:
BAP/LC3 on the steamdeck might be working now. I dont have compatible headphones to test though.

Adding a config file to ~/.config/wireplumber/bluetooth.lua.d/61-bluez-jupiter.lua should enable it on pipewire, overwriting the default wireplumber config for your user.

I've tried creating the file in the directory as you've instructed, with the provided roles in the array, however it doesn't seem to do anything. The same 3 codecs are visible as before: SBC, SBC-XQ and AAC, no option for LC3. I'm using the OnePlus Buds Pro 2, which support LC3, so I'm not sure if the .lua file just isn't doing what it's supposed to, or if LC3 support simply isn't possible on SteamOS yet.


I realize you are on the preview, which i am not using. Im not sure if it has a version of wireplumber that doesnt support lua config. https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/conf_file.html#the-configuration-file

I'd suggest checking what valve is doing in their /usr/share/wireplumber/ directory and then creating a similar .conf file somewhere here(https://pipewire.pages.freedesktop.org/wireplumber/daemon/locations.html#config-locations)

Then make sure dbus-exerimental is enabled.
RazorBlade446 2. okt. 2024 kl. 15:17 
Please note lua is no more supported for Wireplumber config, use .conf instead.
kler1k.tr 30. okt. 2024 kl. 7:03 
Someone has any luck with LC3 on 3.6.19?
Found Readme file in /etc/wireplumber/ which says
This configuration was: - installed in /run/wireplumber - by /usr/share/wireplumber/hardware-profiles/wireplumber-hwconfig - from /usr/share/wireplumber/hardware-profiles/valve-galileo It will be regenerated every time the system restarts. To alter it permanently either: - edit /usr/share/wireplumber/hardware-profiles/valve-galileo - override in $XDG_CONFIG_DIR/wireplumber/

/usr/share/wireplumber/hardware-profiles/valve-galileo is read-only, and echo $XDG_CONFIG_DIR says nothing, so this var is not maintained i guess. But echo $XDG_CONFIG_DIRS shows some result:
/home/deck/.config/kdedefaults:/etc/xdg

So I tried to place bluez.conf file to /home/deck/.config/kdedefaults/wireplumber/wireplumber.conf.d/ (/etc/xdg in read only) with content (without single quota mark in bluez5.roles - just added it to make list visible here)
monitor.bluez.properties = { bluez5.roles = "[' a2dp_sink a2dp_source bap_sink bap_source hfp_hf hfp_ag ]" bluez5.hfphsp-backend = "native" }
and nothing changes on audio settings for my earbuds after reboot (no bap options in th list - just A2DP/HSP/HFP options).

$XDG_CONFIG_DIRS/wireplumber also specified in WirePlumber’s docs[pipewire.pages.freedesktop.org] so can't understand why it is not working.

Also added to /etc/bluetooth/main.conf some lines in general sections
Experimental = true Testing = true KernelExperimental = 6fbaf188-05e0-496a-9885-d6ddfdb4e03e

Also bluetoothctl info for my earbuds says that it has LE support
(deck@steamdeck ~)$ bluetoothctl info Device 48:73:CB:62:2F:FF (public) Name: Redmi Buds 5 Pro Gaming Alias: Redmi Buds 5 Pro Gaming Class: 0x00244404 Icon: audio-headset Paired: yes Bonded: yes Trusted: yes Blocked: no Connected: yes LegacyPairing: no UUID: Vendor specific (00000000-0000-0000-0099-aabbccddeeff) UUID: Vendor specific (00000000-deca-fade-deca-deafdecacaff) UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb) UUID: Handsfree (0000111e-0000-1000-8000-00805f9b34fb) UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb) UUID: Audio Input Control (00001843-0000-1000-8000-00805f9b34fb) UUID: Volume Control (00001844-0000-1000-8000-00805f9b34fb) UUID: Volume Offset Control (00001845-0000-1000-8000-00805f9b34fb) UUID: Coordinated Set Identif.. (00001846-0000-1000-8000-00805f9b34fb) UUID: Microphone Control (0000184d-0000-1000-8000-00805f9b34fb) UUID: Audio Stream Control (0000184e-0000-1000-8000-00805f9b34fb) UUID: Broadcast Audio Scan (0000184f-0000-1000-8000-00805f9b34fb) UUID: Published Audio Capabil.. (00001850-0000-1000-8000-00805f9b34fb) UUID: Unknown (00001853-0000-1000-8000-00805f9b34fb) UUID: Unknown (00001855-0000-1000-8000-00805f9b34fb) UUID: Unknown (0000fd2d-0000-1000-8000-00805f9b34fb) UUID: Vendor specific (0000ff01-0000-1000-8000-00805f9b34ff) Modalias: bluetooth:v0094p0004d0100 Battery Percentage: 0x64 (100)
Sidst redigeret af kler1k.tr; 30. okt. 2024 kl. 7:07
< >
Viser 1-15 af 17 kommentarer
Per side: 1530 50