Can't turn off bluetooth permanently

My laptop bios does not allow turning off bluetooth, also bluetooth is in the Wi-Fi chip. I can’t turn it off and even rfkill when starting in the service does not help. Keeps turning back on
Help

Create a systemd service to turn it off at boot?

You can mask the systemd service by running, as root:


systemctl stop bluetooth  # this stops the service if it was on
systemctl disable bluetooth # this will prevent it from starting at boot
systemctl mask bluetooth # this will symlink it to /dev/null

You will have to use unmask if you want bluetooth again at some point.

I’m not sure this would stop the antennae from taking (very little) power however, as it may still be powered on but not running.

(fedora project documentation: https://fedoramagazine.org/systemd-masking-units/)

Bluetooth is disabled on this machine:

**erlangen:~ #** systemctl list-unit-files 'blue*'        
UNIT FILE              STATE    VENDOR PRESET
bluetooth-mesh.service **disabled disabled     **
bluetooth.service      disabled disabled     
bluetooth.target       static   -            

3 unit files listed. 
**erlangen:~ #**

However KDE tries hard:

**erlangen:~ #** journalctl -b -q -g blue                 
Feb 26 06:20:53 erlangen kded5[1320]: **kf.****blue****zqt: Cannot open /dev/rfkill for reading!**
Feb 26 06:20:54 erlangen org_kde_powerdevil[1371]: **kf.****blue****zqt: Cannot open /dev/rfkill for reading!**
Feb 26 06:20:54 erlangen dbus-daemon[732]: [system] Activating via systemd: service name='org.bluez' unit='dbus-org.bluez.service' requested by ':1.24' (uid=1000 pid=1320 comm="/usr/bin/kded5 ") 
Feb 26 06:20:54 erlangen dbus-daemon[732]: [system] Activation via systemd failed for unit 'dbus-org.bluez.service': Unit dbus-org.bluez.service not found. 
Feb 26 06:20:54 erlangen kded5[1320]: **kf.****blue****zqt: PendingCall Error: "Unit dbus-org.bluez.service not found."**
Feb 26 06:20:54 erlangen kded5[1320]: **kf.****blue****zqt: PendingCall Error: "The name org.bluez.obex was not provided by any .service files"**
Feb 26 06:20:54 erlangen dbus-daemon[732]: [system] Activating via systemd: service name='org.bluez' unit='dbus-org.bluez.service' requested by ':1.49' (uid=1000 pid=1420 comm="/usr/bin/pulseaudio --daemonize=no --log-target=jo") 
Feb 26 06:20:54 erlangen dbus-daemon[732]: [system] Activation via systemd failed for unit 'dbus-org.bluez.service': Unit dbus-org.bluez.service not found. 
Feb 26 06:20:54 erlangen pulseaudio[1420]: **GetManagedObjects() failed: org.freedesktop.systemd1.NoSuchUnit: Unit dbus-org.****blue****z.service not found.**
**erlangen:~ #**

Sorry, I didn’t know it is already subject to a systemd service. :shame:

it doesn’t work as it should.
I got it only by adding lines
GRUB_CMDLINE_LINUX=“systemd.restore_state=0 rfkill.default_state=0”
in /etc/default/grub
Now the problem is solved

Which is why, despite having no Bluetooth hardware on this machine and, no Bluetooth Kernel modules loaded in the Kernel, I have the systemd Bluetooth service enabled – because of KDE Plasma and, also, Pulse Audio –


 # systemctl status bluetooth.service 
● bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: disabled)
     Active: inactive (dead)
       Docs: man:bluetoothd(8)

Mär 03 09:36:17 xxx systemd[1]: Condition check resulted in Bluetooth service being skipped.
 # 
 # journalctl -b 0 --output=short-monotonic --no-hostname | grep -i 'blu'
 4401.045453] dbus-daemon[1184]: [system] Activating via systemd: service name='org.bluez' unit='dbus-org.bluez.service' requested by ':1.47' (uid=1000 pid=5092 comm="/usr/bin/pulseaudio --daemonize=no --log-target=jo")
 4401.047144] systemd[1]: Condition check resulted in Bluetooth service being skipped.
 4426.050119] dbus-daemon[1184]: [system] Failed to activate service 'org.bluez': timed out (service_start_timeout=25000ms)
 4440.688816] kontact[6048]: kf.kio.core: Invalid URL: QUrl("/home/xxx/.cache/favicons/www.linux.com_wp-includes_images_w-logo-blue-white-bg.png")
 # 

The Bluetooth Kernel modules are located in ‘/lib/modules/«Kernel Version»/kernel/drivers/bluetooth/’ –

  • Check if any of the Kernel modules listed there are in fact loaded with “lsmod”.