Firedragon changes bluetooth headset audio profile (temporarily)

Hello,

I’m running Artix Linux and have been using firedragon for a few months and quite appreciate it.

Recently after a quick reformat and reinstall I’ve noticed a strange issue that I can’t find any reference to on forums.

In firedragon, when I go to the “about:support” page my bluetooth headset switches to the HSP/HFP profile (reducing sound quality to basically telephone level, and also activating the headset’s builtin microphone). After rougly 5 seconds the headset returns to it’s previous settings (A2DP Sink, aptX codec).

I’ve tried it both with an aur compilation, and also with the chaotic-aur precompiled package with the same results.

I’m using pipewire, pipewire-pulse, and wireplumber. Dinit is my init process.

inxi -v5

System:
Host: B650-Plus Kernel: 6.8.1-AMD arch: x86_64 bits: 64 compiler: gcc
v: 13.2.1
Desktop: Xfce v: 4.18.1 Distro: Artix base: Arch Linux
Machine:
Type: Desktop System: ASUS product: N/A v: N/A serial:
Mobo: ASUSTeK model: TUF GAMING B650-PLUS WIFI v: Rev 1.xx
serial: uuid:
UEFI: American Megatrends v: 2413 date: 02/04/2024
Memory:
System RAM: total: 32 GiB available: 31.08 GiB used: 2.43 GiB (7.8%)
Array-1: capacity: 128 GiB slots: 4 modules: 2 EC: None
max-module-size: 32 GiB note: est.
Device-1: Channel-A DIMM 0 type: no module installed
Device-2: Channel-A DIMM 1 type: DDR5 size: 16 GiB speed: spec: 4800 MT/s
actual: 7200 MT/s
Device-3: Channel-B DIMM 0 type: no module installed
Device-4: Channel-B DIMM 1 type: DDR5 size: 16 GiB speed: spec: 4800 MT/s
actual: 7200 MT/s
CPU:
Info: 8-core model: AMD Ryzen 7 7800X3D bits: 64 type: MT MCP arch: Zen 4
rev: 2 cache: L1: 512 KiB L2: 8 MiB L3: 96 MiB
Speed (MHz): avg: 600 high: 3600 min/max: 400/5050 cores: 1: 400 2: 400
3: 400 4: 400 5: 400 6: 400 7: 3600 8: 400 9: 400 10: 400 11: 400 12: 400
13: 400 14: 400 15: 400 16: 400 bogomips: 134437
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Graphics:
Device-1: AMD Navi 23 [Radeon RX 6650 XT / 6700S 6800S]
vendor: Micro-Star MSI driver: amdgpu v: kernel arch: RDNA-2 bus-ID: 03:00.0
Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.4 driver: X:
loaded: amdgpu unloaded: modesetting,vesa dri: radeonsi gpu: amdgpu
resolution: 1920x1080~60Hz
API: OpenGL Message: Unable to show GL data. glxinfo is missing.
Audio:
Device-1: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel
bus-ID: 03:00.1
Device-2: AMD Family 17h/19h HD Audio vendor: ASUSTeK
driver: snd_hda_intel v: kernel bus-ID: 0e:00.6
API: ALSA v: k6.8.1-AMD status: kernel-api
Server-1: PipeWire v: 1.0.4 status: active
Network:
Device-1: Realtek RTL8125 2.5GbE vendor: ASUSTeK driver: r8169 v: kernel
port: e000 bus-ID: 0a:00.0
IF: eth0 state: down mac: e8:9c:25:c3:e7:8c
Device-2: Realtek RTL8852BE PCIe 802.11ax Wireless Network
vendor: AzureWave driver: rtw89_8852be v: kernel port: d000 bus-ID: 0b:00.0
IF: wlan0 state: up mac: f8:54:f6:42:87:4a
Bluetooth:
Device-1: IMC Networks Bluetooth Radio driver: btusb v: 0.8 type: USB
bus-ID: 1-5:2
Report: btmgmt ID: hci0 rfk-id: 0 state: up address: F8:54:F6:42:87:4B
bt-v: 5.3 lmp-v: 12
Drives:
Local Storage: total: 5.51 TiB used: 1.99 TiB (36.0%)
ID-1: /dev/nvme0n1 vendor: Western Digital model: WD BLACK SN850X 1000GB
size: 931.51 GiB temp: 34.9 C
ID-2: /dev/sda vendor: Samsung model: SSD 870 EVO 1TB size: 931.51 GiB
ID-3: /dev/sdb vendor: Seagate model: ST4000DM004-2CV104 size: 3.64 TiB
ID-4: /dev/sdc vendor: Verbatim model: STORE N GO size: 57.99 GiB
type: USB
Optical-1: /dev/sr0 vendor: HL-DT-ST model: DVDRAM GH24NSC0 rev: LK00
dev-links: cdrom
Partition:
ID-1: / size: 915.82 GiB used: 16.69 GiB (1.8%) fs: ext4 dev: /dev/nvme0n1p1
label: ROOT uuid: 968feeac-9c7f-48e2-b79c-adb7edaa3116
ID-2: /boot size: 1022 MiB used: 433.7 MiB (42.4%) fs: vfat dev: /dev/sda1
label: ESP uuid: 59C8-E1BD
Swap:
ID-1: swap-1 type: partition size: 64 GiB used: 0 KiB (0.0%) dev: /dev/sda2
label: SWAP uuid: 7f1f62c1-b1a8-4b99-a780-b88b1bbb848b
Sensors:
System Temperatures: cpu: 32.5 C mobo: 31.0 C gpu: amdgpu temp: 37.0 C
Fan Speeds (rpm): fan-1: 637 fan-2: 927 fan-3: 582 fan-4: 0 fan-5: 928
fan-6: 612 fan-7: 0 gpu: amdgpu fan: 0
Info:
Processes: 293 Uptime: 12m Init: Dinit
Packages: 874 Compilers: gcc: 13.2.1 Shell: Zsh v: 5.9 inxi: 3.3.33

Sorry if this is the wrong place to post or if I haven’t followed the forum rules closely enough. I thought this would be a good place to ask about this rather than the Artix forums. Thanks in advance.

The Garuda Forums are for the support of Garuda Linuux, not Artix.

You need to ask for support there.

1 Like

Sorry, I understand that. I just thought that since firedragon seems to be a garuda project (correct me if I’m wrong) this might be the place to go for help.

Edit:
Also, I just realized this exact same thing happens with firefox I’m assuming this has something to do with the information found under “Media”. Some kind of hardware query going on. DIdn’t realize this. Thought it was a new development/bug. Clearly it’s not. Sorry for the forum clutter. My bad.

Since you are here, you could test Garuda Xfce or the window managers i3 and Qtile, which Artix has not maintained for years, in the live environment. :wink:

Haha maybe I’ll check out what garuda’s got going on. I’m not against distro hopping and my paranoia over systemd has somewhat subsided since my manic period of around 2019.

To give some conclusion to this thread, I found a way to get my headset to stop auto switching profiles. I had to poke around for a while in different forums and had to modify the proposed solution but here’s what I found that works:

Summary

Create the file ~/.config/wireplumber/wireplumber.conf.d/50-bluez.conf

Containing this:

monitor.bluez.rules = [
{
matches = [
{
## This matches all bluetooth devices.
device.name = “~bluez_card.*”
}
]
}
]

monitor.bluez.properties = {
bluez5.hfphsp-backend = “none”
}

Not sure if I’ve done this 100% correctly, but it works. There were a lot of suggestions, some cause bluez to crash on load, some caused my headset to fail to connect, but this one works.

I think technically it still tries to switch profiles, but now I just get a split second of stutter/static rather than 5 seconds of lofi nonsense.

Anyways, thanks for the offer, I’ll get back to you if I decide to do some distro hopping.

1 Like

That’s the main thing. :slight_smile:

Artix, as you said, does not use Systemd and is different enough that how-the-heck can we be of real help. I would suggest if you were using a systemd-type distribution, you would not have this problem. :wink:

1 Like

I’m willing to wager that systemd users would encounter identical behavior if their systemd distro used those same projects, and if they were using a similar headset. Without configuration options set, it would seem that what I encountered is the default behaviour.

Yeah confirmed. I just did a quick reformat and install of garuda hyprland. Same behaviour.

Then the question becomes, does anyone else have the same problems under Garuda? And only?

Only the about:support page? Is it then only needed in Hyprland? I couldn’t tell from your Artix inxi.

No it happens under x11 as well (xfce). It’s definitely some kind of hardware query for microphone stuff. I have my headphones set for high quality audio (A2DP Sink, codec aptX) but if the microphone gets triggered then the audio profile switches to the ‘handsfree’ profile (HSP/HFP). Some kind of feature for phone users, so you can listen to high quality music, but if you get a call you can receive it.

Interestingly enough, the same behaviour (switching profile for a few seconds, then switching back) happens when launching wine as well. There’s information on about:support about audio hardware under “Media”. Specifically under “Input Devices” it’s got my headphones listed, so there is definitely a query initiated when the page gets loaded to test hardware availability and capability.

I’m looking into a way to disable the microphone entirely so this is just a non-issue altogether since I don’t use the thing at all (should have researched what headphones to buy a little better). The solution I found works (it’s just a slightly modified version of this from the arch wiki: Bluetooth headset - ArchWiki). Modified because if I use what’s written my headset stops working altogether (like the user in this thread: https://www.reddit.com/r/debian/comments/xocqxj/disable_hsphfp_in_pipewire_or_wireplumber/).

Anyway, I’m officially a garuda user now I guess. I tend to reformat / distrohop a lot, and I’ve been on artix for roughly 4 years now. Getting used to systemd will be an adjustment but hey why not try it out and see what all the fuss is about, right?

1 Like

Ahhh! Now it makes sense. I use my earbuds solely to listen to music, movies, etc., but never use them to transmit, i.e. talk via smartphone. I used pavucontrol-qt to disable their input function (uncheck a box), and they automatically load whichever A2DP output codecs I have pre-selected any time I pluck them from their case.

1 Like

Hmm I’d be curious to know what setting pavucontrol-qt is setting. It must be editing something in ~/.config somewhere. The wireplumber solution works (my headphones are no longer listed in the Input Devices section of pavucontrol).

~/.config/pavucontrol-qt/pavucontrol-qt.conf

[window]
showVolumeMeters=true
sinkInputType=1
sinkType=0
size=@Size(766 691)
sourceOutputType=1
sourceType=1
1 Like

That looks like just gui config, is there a ~/.config/pulse or anything like that? Maybe ~/.pulse or something?

For example:

╰─λ cat pavucontrol.ini
File: pavucontrol.ini
[window]
width=831
height=501
sinkInputType=1
sourceOutputType=1
sinkType=0
sourceType=1
showVolumeMeters=1

[bro@notyourbro ~]$ cat pavucontrol.ini
cat: pavucontrol.ini: No such file or directory


From: ~/local/state/wireplumber/default-profile

[default-profile]
alsa_card.pci-0000_00_1f.3=off
alsa_card.pci-0000_00_1f.3.3=off
alsa_card.pci-0000_00_1f.3.5=off
bluez_card.44_B4_B2_11_5A_F1=a2dp-sink-aac*

See: *

Please remember that I’m not running Garuda or using Firedragon. The whole issue would probably disappear if you ran SystemD init. :slight_smile:

Good section on profile selection & switching.

https://wiki.archlinux.org/title/PipeWire#Automatic_profile_selection

2 Likes

No, it has literally nothing to do with systemd. Bluetoothd will get launched the exact same way under systemd as it does under openrc, runit, dinit, etc.

Thankyou for the link, though, that looks interesting. Not sure how I didn’t find that before :slight_smile:

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.