Stop the system and apps from using Bluetooth
Some apps still check for Bluetooth devices through WirePlumber and PipeWire, even when you never use Bluetooth. The steps below turn off the Bluetooth service, the rfkill state, the PipeWire Bluetooth libraries and the WirePlumber Bluetooth monitor.
-
Disable the Bluetooth service.
Terminal window sudo systemctl disable bluetooth -
Create a udev rule that sets the Bluetooth rfkill state to blocked on boot.
Terminal window sudo micro /etc/udev/rules.d/50-bluetooth.rulesThe file content is:
# disable bluetoothSUBSYSTEM=="rfkill", ATTR{type}=="bluetooth", ATTR{state}="0" -
Create or edit the PipeWire config to remove the Bluetooth libraries.
Terminal window micro ~/.config/pipewire/pipewire.conf.d/10-disable-bluez.confThe file content is:
context.spa-libs = {api.bluez5.* = ""} -
Create or edit the WirePlumber config to disable the Bluetooth monitor.
Terminal window micro ~/.config/wireplumber/wireplumber.conf.d/10-disable-bluez.confThe file content is:
wireplumber.profiles = {main = {monitor.bluez = disabledmonitor.bluez-midi = disabledmonitor.bluez.seat-monitoring = disabled}} -
Create or edit the camera config to disable the camera monitors. This step is optional on a machine without a camera.
Terminal window micro ~/.config/wireplumber/wireplumber.conf.d/12-disable-camera.confThe file content is:
wireplumber.profiles = {main = {monitor.v4l2 = disabledmonitor.libcamera = disabled}} -
Clear the WirePlumber profile variable. This step is not required.
Terminal window systemctl --user unset-environment WIREPLUMBER_PROFILE -
Reboot. Then check the WirePlumber log and the PipeWire client list.
Terminal window journalctl --user -u wireplumber -b --no-pagerwpctl statusThe log should show the WirePlumber service starting without a Bluetooth message. The
wpctl statusoutput should list no Bluetooth client.
The pipewire-control-center package also offers more PipeWire and WirePlumber settings. It was tested on Chaotic-AUR first.
paru -S pipewire-control-center