445

How can I deactivate Bluetooth on system startup?

17
  • 83
    The normal and natural thing is to let you choose, in the bluetooth settings, whether you want it on or off when it boots. It is not natural to have people turning it off or on every time they turn on their computer. We are talking about making Linux the best desktop system, not the worst, aren't we?
    – Robert
    May 4, 2012 at 20:30
  • 2
    I am reading the link that, roadmr, wrote. It sounds intereseting but by no means that people should turn on and off the bluetooth. The bluetooth configuration should ask whether you want t on or off at boot time, or at least it should boot with the last state. That is a rule of thumb. In my case, now, it is a built-in bluetooth. The problem is that I can choose on or off clicking on the systray icon but if I go to edit configuration it is always off. So this is clearly an error that is misleading.
    – Robert
    May 4, 2012 at 20:47
  • 2
    This is bug #1073669.
    – colan
    Jul 14, 2015 at 20:44
  • 25
    It's kind of unbelievable that, on the 14th edition, we are still "teaching" Ubuntu developers things like "the option to have bluetooth on or off on boot should be available to normal users, and not just to those fond of searching in interminable lines of public forums".
    – Rodrigo
    Aug 28, 2015 at 12:08
  • 3
    @Lexible this setting is a "one-time" setting, it will also not be relevant if you switch to another user. But there is an easy option (both via command line and gui) as shown in the answer from @bmaupin - it is a pitty that it isn't marked as solution. Apr 1, 2020 at 18:04

34 Answers 34

298

For Ubuntu 20.10

For this ubuntu edit /etc/bluetooth/main.conf and find the line

AutoEnable=true

and replace it with:

AutoEnable=false

18.04+

18.04* users who don't naturally have a /etc/rc.local, you'll need to create one and make it executable. To make things slightly easier, you can just paste the following command into a terminal:

sudo install -b -m 755 /dev/stdin /etc/rc.local << EOF
#!/bin/sh
rfkill block bluetooth
exit 0
EOF

Run sudoedit /etc/rc.local and add this before line with exit 0:

rfkill block bluetooth

You should still be able to enable Bluetooth through the top bar applet.

This should work for most systems but it looks like there are a few bugs lurking in the kernel's ACPI for Thinkpads. If you're on a Thinkpad, add the following to /etc/rc.local:

echo disable > /proc/acpi/ibm/bluetooth

Or check out ibm-acpi - IBM ThinkPad ACPI Extras Driver -- some reports suggest that ibm-acpi includes bluetooth control (amongst other nice things). But I don't have the hardware so I'm completely unable to verify these claims. Good luck.

31
  • 7
    For Thinkpads (and only Thinkpads) this works: echo disable > /proc/acpi/ibm/bluetooth in /etc/rc.local Nov 2, 2011 at 19:51
  • 4
    rfkill block bluetooth worked for Thinkpad T430u
    – bmaupin
    Nov 15, 2013 at 16:47
  • 5
    Neither worked for me (ThinkPad x201) when I placed them one at a time in /etc/rc.local. The rfkill block bluetooth command does work, but not on startup. The -x flag is set on /etc/rc.local. I'm running Xubuntu 13.10. Dec 20, 2013 at 7:34
  • 4
    On Ubuntu 15.10 with systemd you need some more to reenable the use of the etc/rc.local file: askubuntu.com/a/696226/34298
    – rubo77
    Nov 10, 2015 at 12:36
  • 5
    if our rc.local is just an empty file,where should we add 'rfkill block bluetooth'?
    – Sss
    Nov 25, 2017 at 10:57
178

I found a how-to with a clean "workaround" here (archive link for posterity)

Actually changing /etc/bluetooth/main.conf was enough for me.

Search for the entry:

AutoEnable=true

and change the value to:

AutoEnable=false

It was enough for me, although the article describes some other steps that may or may not be necessary.

On Ubuntu 17.04 and older the option was named InitiallyPowered.

21
  • 6
    doesn't work for samsung laptop 530u3b, bluetooth is always on after reboot and wake up
    – Maxim Kim
    Aug 27, 2012 at 18:51
  • 4
    This would only work if I also used Saeed Zarinfam's answer of putting /etc/init.d/bluetooth stop in rc.local. It seems that when the service starts up, it also brings the power on for bluetooth. I needed both to get this to work. (ThinkPad x201, Xubuntu 13.10) Dec 20, 2013 at 7:57
  • 3
    Didn't work for me on thinkpad t420
    – UpTheCreek
    May 10, 2015 at 9:40
  • 5
    "Search for the entry" is of precisely no use to those of us whose main.conf does not contain this parameter or any comment indicating its default location. So, under which [Heading] should we put it? Oct 30, 2015 at 23:00
  • 11
    On my case it was AutoEnable=false, but anyways +1 for right solution from right place.
    – Arman
    Apr 20, 2017 at 5:50
53

16.04+


From ubuntu 16.04 onwards systemd manages startup services like bluetooth ... to view current status issue following in a terminal

sudo systemctl status bluetooth.service 

to deactivate bluetooth on startup issue this

sudo systemctl disable bluetooth.service

then on next reboot bluetooth will not be active ... to enable bluetooth issue ( then reboot )

sudo systemctl enable bluetooth.service
6
  • 4
    This works for me, but as a side effect, blueman-applet stoppped to work too. It starts, but doesn't appear in the indicator area, so there is no fast way to enable bluetooth, only in terminal.
    – Yuri Gor
    Sep 2, 2017 at 21:02
  • 2
    Put sudo systemctl disable bluetooth.service && sudo systemctl stop bluetooth.service into a Disable script, and chmod 755 on it. Do the same for sudo systemctl enable bluetooth.service && sudo systemctl start bluetooth.service in an Enable script. Jan 30, 2018 at 14:33
  • 2
    FINALLY! Ubuntu 18.10, the only thing that worked for me. Nothing else worked.
    – Tyler
    Feb 18, 2019 at 13:02
  • 1
    ya, this is the correct solution..
    – Jazuly
    Feb 15, 2020 at 6:08
  • 1
    This should be the top answer. Worked perfectly for my ThinkPad T495! Thanks for sharing your solution!
    – user1031726
    Feb 22, 2020 at 13:21
30

To disable the bluetooth driver from loading on startup:

sudo $EDITOR /etc/modprobe.d/blacklist.conf

add:

blacklist btusb

Enabling it later should just be:

sudo modprobe btusb
6
  • 1
    Thanks for that, that does seem to work but I was trying to avoid command line stuff as per my original question. You would think this would be as simple as ticking a box so that it remembered that I don't want BT to start automatically but it looks like its way more complicated than that. With Ubuntu's drive for quicker boot times and the general focus on power consumption in laptops and netbooks I am suprised that this has never been addressed. I appreciate the help though.
    – Chris Giltnane
    Aug 19, 2010 at 9:52
  • 10
    "Run gedit as root and edit /etc/modprobe.d/blacklist.conf" <-- ok, is that less command line for ya?
    – maco
    Aug 19, 2010 at 13:35
  • 1
    Works fine on Samsung Q35 with Ubuntu 13.10, while the 'rfkill block bluetooth' approach does not. Thanks! Jan 6, 2014 at 8:29
  • DELL E6410 works for me. Good that can run again on the go without reset. Jun 13, 2014 at 10:24
  • Don't bother trying to "avoid command line stuff" when you are configuring the operating system. Is Ctrl+Alt+T and a couple of ctrl-shift-V (to paste) too much to ask?
    – doug65536
    Aug 8, 2016 at 0:15
18

Step 1: Go to the terminal and type in the following command to edit system's /etc/rc.local file:

gksudo gedit /etc/rc.local

Step 2: Add the following line before the exit 0 line:

rfkill block bluetooth
2
  • 1
    This is set soft block to bluetooth, I think it same as turn off its service and works well. Aug 17, 2012 at 13:45
  • @Robert: $ man rfkill: "Disable the device corresponding to the given index." Despite the name, it is only disabling BT; just try the command rfkill block bluetooth on the terminal, you should see the icon go gray.
    – Daniel
    Jun 13, 2015 at 17:54
16

Note: These instructions are for users who want to disable Bluetooth at boot by default in a way that it can easily be enabled afterward.

Gnome (Ubuntu 18.04+)

Disable Bluetooth by default

In Gnome, Bluetooth is managed by gnome-bluetooth, which should remember the last setting you used. But you can force it to always be disabled at boot like this:

echo "rfkill block bluetooth" >> ~/.profile

(Replace ~/.profile with ~/.zprofile if you're using zsh)

This avoids having to edit any system files such as /etc/rc.local

Manually enable Bluetooth

Whenever you're ready to turn it on click in the top-right > Settings > Bluetooth > click the switch near the top right

Or using the command line:

rfkill unblock bluetooth

Unity/Xfce (Ubuntu < 18.04, Xubuntu)

Disable Bluetooth by default

If you're using the Bluetooth applet in the top panel (blueman-applet), it has its own setting that will automatically turn Bluetooth on even if you've disabled it in other places (like /etc/bluetooth/main.conf or /etc/default/tlp).

To prevent Bluetooth from turning on at startup using the command line:

gsettings set org.blueman.plugins.powermanager auto-power-on false

Or through the GUI:

  1. Click the Bluetooth applet > Plugins > PowerManager > Configuration
  2. Uncheck Auto power-on

Next time you reboot, the Bluetooth applet will still be visible but Bluetooth will be off.

Manually enable Bluetooth

Click the Bluetooth applet > Turn Bluetooth On

4
  • 3
    In Ubuntu 18.04 this is the only solution I have found. Even if you change in /etc/bluetooth/main.conf, at the bottom, the option from AutoEnable=true to AutoEnable=false you cannot turn off the Bluetooth. In fact this option is for discovering new devices not for powering Bluetooth on or off. Aug 19, 2018 at 12:26
  • Disabling blueman/bluetooth applet Auto power-on will prevent it to enable bluetooth radio if it was previously disabled when the applet is starting (usually when logging in). Mine was already enabled just after booting, so I used tlp to manage bluetooth state (enabled or not) when computer is booting and voilà! See /etc/tlp.conf and/or the other answers.
    – Totor
    Nov 30, 2020 at 17:44
  • I start a zsh shell, I have to put the rfkill block in the .zshrc, see here
    – Timo
    May 3, 2021 at 19:30
  • 1
    @Timo I used ~/.profile in my answer because it's shell-agnostic. However, "Zsh runs ~/.zprofile, not ~/.profile, when it is invoked as a login shell. The reason is that zsh has enough incompatibilities with standard shells to break scripts." (superuser.com/a/187673/93066). I've updated my answer to reflect this. Thanks!
    – bmaupin
    May 4, 2021 at 13:16
10

1. block bluetooth in rc.local

Add this line at the end of the file /etc/rc.local right before the line exit 0:

rfkill block bluetooth

This will do the trick, but only in older Ubuntu versions using upstart.

2. reenable rc.local on systemd

On Ubuntu 15.10 with systemd as startup manager the /etc/rc.local file is not used by default any more, so call this on a terminal:

sudo systemctl edit --full rc-local

Which opens an editor. At the end of the file i added:

[Install]
WantedBy=multi-user.target

Those changes are activated by

sudo systemctl reenable rc-local

Now the file /etc/rc.local is used as you know it.

3. disable blueman-applet on start

sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/blueman.desktop
gnome-session-properties

Now blueman-applet is visible and you can disable it from startup programs

4. Reboot to see the effect

1
  • 4
    For me on Ubuntu 17.04 with blueman: gsettings set org.blueman.plugins.powermanager auto-power-on false worked, from wiki.archlinux.org/index.php/Blueman. Although I ended up doing sudo apt remove blueman then manage bluetooth through system settings and check "Show Bluetooth status in the menu bar". Blueman starting and turning on bluetooth was the issue. Sep 28, 2017 at 14:29
9

Type the following into a terminal:

sudo gedit /etc/modprobe.d/blacklist.conf

At the bottom of the file, add the line:

blacklist bluetooth

Save the file and restart - Bluetooth should now be disabled.

3
  • This won't work on my pc...
    – Floqqi
    Oct 16, 2011 at 21:47
  • @Floqqi: Can you please try it again? I've updated my answer. Oct 16, 2011 at 23:42
  • 2
    Tried about 20 things on my ubuntu 12 thinkpad, this is the only one that did the trick. Sep 12, 2013 at 16:57
9

I found another answer using tlp that works great for me with Ubuntu 18.04. Probably first tlp must be installed with

sudo apt install tlp

Then the file

/etc/default/tlp

contains some settings about devices like wifi and bluetooth. There is the key

RESTORE_DEVICE_STATE_ON_STARTUP

which is by default set to 0. After I switched it to 1 my last setting is remembered on the next boot. That means when I disable bluetooth in the top panel it stays disabled and when I enable bluetooth it stays enabled. Also there is the key

DEVICES_TO_DISABLE_ON_STARTUP

which can be set to

DEVICES_TO_DISABLE_ON_STARTUP="bluetooth"

Now bluetooth will be disabled on each boot. After changing this configuration bluetooth will can be enabled and disabled through menu and panel item. I think it's better than removing it from kernel modules.

6
  • TLP is not installed by default in Ubuntu. You should update your post accordingly.
    – linrunner
    Feb 11, 2019 at 17:07
  • @linrunner Ok, didn't know what that. I tested on a fresh Ubuntu Budgie from Tuxedo. There it worked. I fixed my answer. Feb 11, 2019 at 18:07
  • using tlp is a sensible answer since laptop users surely all install it. May 4, 2019 at 1:34
  • tlp is good to have anyway, especially for thinkpad users.
    – Suzana
    Feb 13, 2020 at 16:21
  • 2
    TLP config path is now /etc/tlp.conf since v1.3
    – Abdul Rauf
    Oct 28, 2020 at 15:48
7

You can change the services started at boot with the help of BUM.

Install it: sudo apt-get install bum

Run: sudo bum

enter image description here

Uncheck the box and click Apply.

7
  • Thank you, desgua, I was thinking about this kind of tools. I have used some in the past but they become obsolete and the new ubuntu, with their minimalistic obsession, comes with nothing of the kind. Is this the only yo know or the best yo know?
    – Robert
    May 5, 2012 at 0:15
  • 1
    Maybe works but at first it has disappointed me because it started showing the bluetooth as not activated at boot time, why? and as not running when rfkill, the applet and hciconfig show it running. I turn off and on but bum continues showing the service as off. I activated the service at boot-up but the status of the service continues to be wrong.
    – Robert
    May 5, 2012 at 1:26
  • sorry doesn't work on elementaryOS Freya
    – Hoang Tran
    Jul 9, 2016 at 13:31
  • I get lots of "use of uninitialized value" warnings when it runs. Sorry, can't trust that.
    – doug65536
    Aug 8, 2016 at 0:21
  • Now, the package is not available. It say, Bum is virtual. Jul 26, 2017 at 19:27
6

I add

"/etc/init.d/bluetooth stop"

into

"/etc/rc.local" 

before "exit 0" command for boot with bluetooth turned off.

2
  • This removed the bluetooth tray icon but left my bluetooth indicator light on (indicating power was still being sent to the radio). Edit: this in conjunction with Stepbaer's answer (InitiallyPowered = false) worked for me. (ThinkPad x201, Xubuntu 13.10) Dec 20, 2013 at 7:59
  • this did not work on my 64-bit Ubuntu 14.04 dell inspiron. Only rfkill worked for me.
    – faizal
    Jun 17, 2014 at 7:19
5

I think that the best way is to disable the service from being started in the first place. There is a general method for disabling services which works perfectly:

sudo sh -c "echo 'manual' > /etc/init/bluetooth.override"

That works for Ubuntu 13.10 and probably for earlier versions as well.

1
  • how to turn on bluetooth, while using provided settings later on? say I want to use it just for 5 min. every 10 boots..
    – b1r3k
    Oct 10, 2015 at 14:51
4

You can edit your update-rc.d settings. I used something similar to:

sudo update-rc.d bluetooth remove

In Debian Wheezy. Check out man update-rc.d for more info on how to use it.

3

On Ubuntu Studio 16.04 you can disable Bluetooth Applet in Startup in:

Session and Startup > Application Autostart > Bluetooth Applet

Here you can click in the field to disable it.

2
  • 1
    This is a perfectly good solution on my Xubuntu 17.10 machine, except for one thing: if the user wants to start using bluetooth again on the fly, he needs to execute sudo systemctl enable bluetooth.service && sudo systemctl start bluetooth.service. But your solution definitely solves the bootup problem. Jan 30, 2018 at 14:52
  • This is the "just works" solution.
    – lasec0203
    Sep 12, 2021 at 2:40
2

Maybe you can turn it off in the Startup Applications. But these applications are hidden by default. Unhide the hidden Startup Applications in 12.04: Open the terminal and run these two commands:

cd /etc/xdg/autostart/

sudo sed --in-place 's/NoDisplay=true/NoDisplay=false/g' *.desktop

Now you can uncheck bluetooth. (Don't remove!)

1
  • Bluetooth is not listed among these applications, sadly. Jul 10, 2015 at 12:11
2

No. It is not always in the startup applcations list. I think that the best solution is to add the rfkill command in rc.local script or to set the InitiallyPowered parameter in /etc/bluetooth/main.conf.

1
  • 1
    InitiallyPowered seems to be ignored for me.
    – UpTheCreek
    May 10, 2015 at 9:42
2

1) Install the package smbios-utils and add it to Startup Applications with:

sudo smbios-wireless-ctl --bt 0

2) In terminal type:

sudo visudo

and add to the end of opened file /etc/sudoers the line:

<your username> ALL = NOPASSWD: /usr/sbin/smbios-wireless-ctl

3) To switch bluetooth on during session, run in terminal:

sudo smbios-wireless-ctl --bt 1

This works for me on my Dell D630 with Ubuntu 13.10

3
  • Do you think that sudo smbios-wireless-ctl --boot --bt 0 would work? Also, I'm not sure, but this may be Dell-specific. May 2, 2015 at 18:48
  • Actually, the package smbios-utils performs bios commands, so it switches on and off physical devices related to bios, so you may also use it to switch on and off wifi etc. I'm not sure if it works with any bios or not. At least, it works well with Dell. By the way, the last installations of Ubuntu 14.04 do same things with bluetooth and wifi applets, so I don't need any more in that package.
    – victor
    May 3, 2015 at 19:22
  • I knew that. But if you do smbios-wireless-ctl --help, part of it has --boot Set BIOS boot-time setting. I didn't know they fixed the Bluetooth, though; thanks for telling me. May 4, 2015 at 21:29
2

On Ubuntu 16.04, I simply disabled the service from starting up using systemctl.

To do this, open up a terminal window and type the following:

sudo systemctl disable bluetooth

You can either reboot since now bluetooth will be disabled from starting up, or if you do not want to reboot and want to stop bluetooth right away, you can type:

sudo service bluetooth stop

2

We can disable bluetooth auto start this way:

sudo gedit /etc/bluetooth/main.conf

(gedit is my fav editor, you can replace this with xed or whatever that's installed on your system.)

At the very bottom of this file, there's this line:

#AutoEnable=false

Un-comment it, like this:

AutoEnable=false
1
  • doesn't work in ubuntu budgie 18.04
    – Amr Saber
    Sep 3, 2018 at 13:27
2

Since Ubuntu 18.04 (with GNOME) you need to

  1. Edit /etc/bluetooth/main.conf and find

    AutoEnable = true
    

    and change the value to:

    AutoEnable = false
    

    So this device is not powered on startup.

  2. Edit /etc/default/tlp and find:

    #DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan"
    

    Edit this line to read:

    DEVICES_TO_DISABLE_ON_STARTUP="bluetooth"
    

    So this device is disabled on startup.

  3. Then open Dash and search for "Startup Applications". Uncheck any items related to Bluetooth in the list. Click [Close] to save.

2
  • Point 4: Go to Settings -> Bluetooth -> Disable (at top right window).
    – Omar Tariq
    Jan 27, 2019 at 6:43
  • for point 2, you will maybe have to install tlp (sudo apt install tlp)
    – Suzana
    Feb 13, 2020 at 16:24
2

I've tried several above answers, but they didn't work on Linux Mint with kernel 5.8.5. So, now I'm using cron job to turn off bluetooth when system boots. And the applet can be used to turn it back on.

Open root crontab on terminal

sudo crontab -e

And add following line and save (with sleep to make sure the processes have started)

@reboot sleep 10; /usr/bin/bluetooth off
1

I using Sputnik Kernel, which fixed this on my Dell Inspiron 14R N4110.

1

I think you should edit

/etc/default/bluetooth

and set

BLUETOOTH_ENABLED=0

to disable the bluetooth service at boot

1
  • 1
    did not work on Ubuntu 14.04
    – b1r3k
    Sep 27, 2015 at 17:28
1

For those of you where inserting the line rfkill block bluetooth (or any other) in /etc/rc.local doesn't work, try to include the same line in the end of ~/.bashrc

In my set up (Ubuntu 14.04, Thinkpad W540), no option worked inserting it in /etc/rc.local but the former did work in bashrc. Note this will work just for the current user, not globally for all users.

1

Unfortunately, nothing above work for me. Instead, I add this to the bottom line of ~/.profile

( sleep 10; rfkill block bluetooth ) & 

In my case, I must wait for the blueman applet to start and enable bluetooth(unavoidably) before I could switch it off.

1

Pure systemd solution (16.04+)

Rather than use the legacy rc-local solution, here is a clean and portable systemd service that suspends bluetooth upon boot and also after waking up from sleep.

  1. Using sudo, create /etc/systemd/system/bluetooth-suspend.service with the following contents:
[Unit]
Description=Disable bluetooth after waking up.
After=suspend.target network.target

[Service]
User=root
Environment=DISPLAY=:0
ExecStart=/usr/sbin/rfkill block bluetooth

[Install]
WantedBy=suspend.target network.target
  1. Enable the service: sudo systemctl enable bluetooth-suspend.service

  2. Reload systemd: sudo systemctl daemon-reload

To re-enable bluetooth, run rfkill unblock bluetooth in the terminal.

1
  • Indeed, this the best modern solution. However, I think that there is no need to run the command after suspend. Sep 1, 2023 at 16:05
1

Here is what worked for me on MX Linux 19.2. Both parts of this solutions have been mentioned in other answers, but not both together.

  1. Edit /etc/bluetooth/main.conf to set AutoEnable to false:

    AutoEnable=false
    

    (or just comment it out).

  2. As suggested in this issue comment, execute

    gsettings set org.blueman.plugins.powermanager auto-power-on false
    

    to prevent Blueman's power-manager plugin from auto powering the adapter.

0

I add

"/etc/init.d/bluetooth stop"

into

"/etc/rc.local" 

before "exit 0" command for boot with bluetooth turned off.

0

Solution for my notebook

"BIOS - USB Configuration - EHCI2 : Disabled"

EHCI1 is for usb ports (actually My notebook has 2 usb 2.0 ports)

0

Edit /etc/default/grub:

sudo nano /etc/default/grub

and change the following line:

GRUB_CMDLINE_LINUX=""

to say this instead:

GRUB_CMDLINE_LINUX="bluetooth.blacklist=yes"

Then, update grub and reboot:

sudo update-grub

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .