Bluetooth microphone not detected

Probably a bluetooth issue. Screenshot translation (my system is in German): The upper part is the output devices, and I am able to select my bluetooth headsets. The bottom part is the input devices, and my headset is missing. This is not a headset issue, since neither my Sony nor my Sennheiser headset is working. This is probably a bluetooth issue since my cable-connected Jabra Evolve 2s are able to use the microphone. Fastfetch and rpm-ostree status as comments
No description
Solution:
Did you disable it before to prevent audio profile switching? See if it's set to enabled with ujust toggle-bt-mic
Jump to solution
13 Replies
Dean Walnut
Dean WalnutOP4w ago
fastfetch: bazzite-dx-nvidia:stable Bazzite (FROM Fedora Atomic) Linux 6.15.9-106.bazzite.fc42.x86_64 ... MS-7B79 (3.0) AMD Ryzen 5 PRO 4650G (12) @ 3.7 GHz AMD Radeon Vega Series / Radeon Vega Mobile Series [Integrated] NVIDIA GeForce RTX 3070 Lite Hash Rate [Discrete] ... KDE Plasma 6.4.3 KWin (Wayland) bash 5.2.37 Ptyxis 48.5 ... ● bluetooth.service - Bluetooth service Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled) Drop-In: /usr/lib/systemd/system/service.d └─10-timeout-abort.conf Active: active (running) since Thu 2025-08-14 12:12:36 CEST; 18min ago Invocation: 75fe192701c441b38e53c78bf3bccb13 Docs: man:bluetoothd(8) Main PID: 1602 (bluetoothd) Status: "Running" Tasks: 1 (limit: 33108) Memory: 3.2M (peak: 3.9M) CPU: 134ms CGroup: /system.slice/bluetooth.service └─1602 /usr/libexec/bluetooth/bluetoothd Aug 14 12:13:10 bazzite.fritz.box bluetoothd[1602]: Player registered: sender=:1.102 path=/_1_96 Aug 14 12:13:10 bazzite.fritz.box bluetoothd[1602]: Player registered: sender=:1.102 path=/_1_97 Aug 14 12:13:10 bazzite.fritz.box bluetoothd[1602]: Player unregistered: sender=:1.102 path=/_1_95 Aug 14 12:13:10 bazzite.fritz.box bluetoothd[1602]: Player unregistered: sender=:1.102 path=/_1_96 Aug 14 12:13:10 bazzite.fritz.box bluetoothd[1602]: Player registered: sender=:1.102 path=/_1_98 Aug 14 12:13:10 bazzite.fritz.box bluetoothd[1602]: Player unregistered: sender=:1.102 path=/_1_97 Aug 14 12:13:10 bazzite.fritz.box bluetoothd[1602]: Player unregistered: sender=:1.102 path=/_1_98 Aug 14 12:16:01 bazzite.fritz.box bluetoothd[1602]: No matching connection for device Aug 14 12:16:30 bazzite.fritz.box bluetoothd[1602]: /org/bluez/hci0/dev_80_C3_BA_74_A8_DE/sep7/fd0: fd(31) ready Aug 14 12:17:56 bazzite.fritz.box bluetoothd[1602]: Player registered: sender=:1.102 path=/_1_121 rpm-ostree status: State: idle Deployments: ● ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-dx-nvidia:stable Digest: sha256:f370810d237081ab3419dba492176476f115747d70fedc1f68e11f1850f90ad6 Version: 42.20250809 (2025-08-10T04:10:15Z) LayeredPackages: coolercontrol liquidctl Initramfs: regenerate I just confirmed that on my Windows laptop, the headset's microphone is working without issues
Solution
biebel
biebel4w ago
Did you disable it before to prevent audio profile switching? See if it's set to enabled with ujust toggle-bt-mic
Dean Walnut
Dean WalnutOP4w ago
ujust toggle-bt-mic
Bluetooth headset profile mitigation is currently: Disabled
ujust toggle-bt-mic
Bluetooth headset profile mitigation is currently: Disabled
Should it be enabled or disabled? Thank you for the quick response btw!
biebel
biebel4w ago
It's disabled so it's not inhibiting your mic.
Dean Walnut
Dean WalnutOP4w ago
I just enabled it and disabled it again and now it's working magically!
biebel
biebel4w ago
Ah nice. It configures pipewire, so it got set to the default probably after disabeling it.
Dean Walnut
Dean WalnutOP4w ago
Before marking this as resolved: Could you quickly explain how you knew what to look for? I mean, it was disabled but clearly not really I do remember having had issues in the past with discord, and I modified the /etc/bluetooth/main.conf like this: (top of the file)
# Discord is fucking stupid:
Disable=Headset
...
# Enables Multi Profile Specification support. This allows to specify if
# system supports only Multiple Profiles Single Device (MPSD) configuration
# or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple
# Devices (MPMD) configurations.
# Possible values: "off", "single", "multiple"
MultiProfile = multiple
...
[Policy]
...
# AutoEnable defines option to enable all controllers when they are found.
# This includes adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'true'.
AutoEnable=true
...
# Discord is fucking stupid:
Disable=Headset
...
# Enables Multi Profile Specification support. This allows to specify if
# system supports only Multiple Profiles Single Device (MPSD) configuration
# or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple
# Devices (MPMD) configurations.
# Possible values: "off", "single", "multiple"
MultiProfile = multiple
...
[Policy]
...
# AutoEnable defines option to enable all controllers when they are found.
# This includes adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'true'.
AutoEnable=true
...
I did this because Discord keeps forcing the lowest-quality profile (HSP/HFP, Codec mSBC or Codec CVSD)... I was playing around with configs to try to fix this Anyway, do you happen to coincidentally have an idea why Discord forces the low-quality bluetooth profile?
biebel
biebel4w ago
It's a common issue on linux that bluetooth headsets switch to shitty mode when launching programs with mic support. On bazzite the ujust script is the easy mode disable the mic option. Here's the script:
#!/usr/bin/bash
CONFIG_FILE="/etc/wireplumber/wireplumber.conf.d/51-mitigate-annoying-profile-switch.conf"
# Check current status
CURRENT_STATE="Disabled"
if [ -f "$CONFIG_FILE" ]; then
CURRENT_STATE="Enabled"
fi
# Prompt user for action
echo "Bluetooth headset profile mitigation is currently: ${bold}${CURRENT_STATE}${normal}"
echo "Enable or Disable Bluetooth headset profile mitigation?"
OPTION=$(ugum choose Enable Disable)
if [[ "${OPTION,,}" == "enable" ]]; then
echo "You chose to enable mitigation. This will disable headset mic functionality."
echo "Requesting root privileges..."
sudo mkdir -p "$(dirname "$CONFIG_FILE")"
echo 'wireplumber.settings = {' | sudo tee "$CONFIG_FILE" > /dev/null
echo ' bluetooth.autoswitch-to-headset-profile = false' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo '}' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo '' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo 'monitor.bluez.properties = {' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo ' bluez5.roles = [ a2dp_sink a2dp_source ]' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo '}' | sudo tee -a "$CONFIG_FILE" > /dev/null
systemctl --user restart wireplumber
echo "Mitigation has been ${green}${b}enabled${n}. Headset profile switching is now disabled."
elif [[ "${OPTION,,}" == "disable" ]]; then
echo "You chose to disable mitigation. This will restore headset mic functionality."
echo "Requesting root privileges..."
if sudo rm -f "$CONFIG_FILE"; then
systemctl --user restart wireplumber
echo "Mitigation has been ${red}${b}disabled${n}. Headset profile switching is now allowed."
else
echo "Failed to disable mitigation. Ensure you have sufficient permissions."
fi
else
echo "No changes were made."
fi
#!/usr/bin/bash
CONFIG_FILE="/etc/wireplumber/wireplumber.conf.d/51-mitigate-annoying-profile-switch.conf"
# Check current status
CURRENT_STATE="Disabled"
if [ -f "$CONFIG_FILE" ]; then
CURRENT_STATE="Enabled"
fi
# Prompt user for action
echo "Bluetooth headset profile mitigation is currently: ${bold}${CURRENT_STATE}${normal}"
echo "Enable or Disable Bluetooth headset profile mitigation?"
OPTION=$(ugum choose Enable Disable)
if [[ "${OPTION,,}" == "enable" ]]; then
echo "You chose to enable mitigation. This will disable headset mic functionality."
echo "Requesting root privileges..."
sudo mkdir -p "$(dirname "$CONFIG_FILE")"
echo 'wireplumber.settings = {' | sudo tee "$CONFIG_FILE" > /dev/null
echo ' bluetooth.autoswitch-to-headset-profile = false' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo '}' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo '' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo 'monitor.bluez.properties = {' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo ' bluez5.roles = [ a2dp_sink a2dp_source ]' | sudo tee -a "$CONFIG_FILE" > /dev/null
echo '}' | sudo tee -a "$CONFIG_FILE" > /dev/null
systemctl --user restart wireplumber
echo "Mitigation has been ${green}${b}enabled${n}. Headset profile switching is now disabled."
elif [[ "${OPTION,,}" == "disable" ]]; then
echo "You chose to disable mitigation. This will restore headset mic functionality."
echo "Requesting root privileges..."
if sudo rm -f "$CONFIG_FILE"; then
systemctl --user restart wireplumber
echo "Mitigation has been ${red}${b}disabled${n}. Headset profile switching is now allowed."
else
echo "Failed to disable mitigation. Ensure you have sufficient permissions."
fi
else
echo "No changes were made."
fi
Dean Walnut
Dean WalnutOP4w ago
Cool! Works like a charm Do you happen to know of any possibility to use the mic in non-shitty mode (high-quality audio at the same time as having a usable mic)?
biebel
biebel4w ago
Not possible over bluetooth because of used codecs. Only wireless dongles will do that.
Dean Walnut
Dean WalnutOP4w ago
Good to know! Thank you for helping me!
Dean Walnut
Dean WalnutOP4w ago
Out of interest, and tangentally related to the topic: How are wireplumber, pulseaudio and pipewire different and how do they interact with each other? E.g. I have to have a .alsoftrc file in my home with
drivers=pulse
drivers=pulse
otherwise Minecraft won't start. But like, pulseaudio and pipewire are both audio servers (whatever that means, I'm not that kind of dev), yet why isn't "pipe[wire]" available as an option there? Not expecting an answer if this is too off-topic for bazzite-help
biebel
biebel4w ago
Afaik, bazzite only comes with pipewire. Pipewire is however backward compatible with pulse etc. Wireplumber is a configuration tool for pipewire. The linux audio stack is a hot mess. It does work way better than when we were on pulse. If you want to learn the ins and outs, archwiki is a goldmine: https://wiki.archlinux.org/title/Sound_system

Did you find this page helpful?