[Need more help] Bluetooth turns itself on after reboot, but it never actually works

I use Manjaro XFCE on my laptop. When I install it, the bluetooth icon in system tray is grayed out and bluetooth is turned off, as it should be. This didn’t change when I would reboot the system. However, a few weeks ago I wanted to use bluetooth and turned it on via sys tray. It said that bluetooth was turned on and that the device was discoverable, but I couldn’t find it with my mobile phones.

Since it didn’t work, I decided to turn it off, just in case. I did that, but after the system reboot bluetooth always turns itself on again. It is as if it doesn’t remember the setting that it was turned off before the reboot.

So, I have two issues with bluetooth: 1) It doesn’t work (isn’t discoverable) when I turn it on, and 2) when I turn it on, and then off, it will turn itself on again after every reboot.

Could somebody please help me with this? It would be great to make it actually work, but if it’s impossible at least to turn it off permanently.

Here’s my inxi information:

inxi --admin --verbosity=7 --filter --no-host 
System:
  Kernel: 5.8.18-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
  parameters: BOOT_IMAGE=/boot/vmlinuz-5.8-x86_64 
  root=UUID=cb49953e-eae1-4982-9570-d02268d3470e rw 
  Desktop: Xfce 4.14.3 tk: Gtk 3.24.23 info: xfce4-panel wm: xfwm4 
  dm: LightDM 1.30.0 Distro: Manjaro Linux 
Machine:
  Type: Portable System: Dell product: Inspiron 3521 v: A05 serial: <filter> 
  Chassis: type: 8 v: A05 serial: <filter> 
  Mobo: Dell model: 06X37M v: A00 serial: <filter> UEFI [Legacy]: Dell 
  v: A05 date: 01/03/2013 
Battery:
  ID-1: BAT1 charge: N/A condition: N/A volts: 1.7/11.1 
  model: Simplo DELL 4DMNG31N type: Unknown serial: <filter> status: Unknown 
Memory:
  RAM: total: 3.72 GiB used: 2.39 GiB (64.3%) 
  RAM Report: 
  permissions: Unable to run dmidecode. Root privileges required. 
CPU:
  Info: Dual Core model: Intel Core i5-3337U bits: 64 type: MT MCP 
  arch: Ivy Bridge family: 6 model-id: 3A (58) stepping: 9 microcode: 21 
  L2 cache: 3072 KiB bogomips: 14373 
  Speed: 1373 MHz min/max: 800/2700 MHz Core speeds (MHz): 1: 959 2: 1369 
  3: 837 4: 815 
  Flags: acpi aes aperfmperf apic arat arch_perfmon avx bts clflush cmov 
  constant_tsc cpuid cpuid_fault cx16 cx8 de ds_cpl dtes64 dtherm dts epb 
  ept erms est f16c flexpriority flush_l1d fpu fsgsbase fxsr ht ibpb ibrs 
  ida lahf_lm lm mca mce md_clear mmx monitor msr mtrr nonstop_tsc nopl nx 
  pae pat pbe pcid pclmulqdq pdcm pebs pge pln pni popcnt pse pse36 pti pts 
  rdrand rdtscp rep_good sep smep ss ssbd sse sse2 sse4_1 sse4_2 ssse3 stibp 
  syscall tm tm2 tpr_shadow tsc tsc_deadline_timer vme vmx vnmi vpid x2apic 
  xsave xsaveopt xtopology xtpr 
  Vulnerabilities: Type: itlb_multihit status: KVM: VMX disabled 
  Type: l1tf 
  mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable 
  Type: mds mitigation: Clear CPU buffers; SMT vulnerable 
  Type: meltdown mitigation: PTI 
  Type: spec_store_bypass 
  mitigation: Speculative Store Bypass disabled via prctl and seccomp 
  Type: spectre_v1 
  mitigation: usercopy/swapgs barriers and __user pointer sanitization 
  Type: spectre_v2 mitigation: Full generic retpoline, IBPB: conditional, 
  IBRS_FW, STIBP: conditional, RSB filling 
  Type: srbds status: Vulnerable: No microcode 
  Type: tsx_async_abort status: Not affected 
Graphics:
  Device-1: Intel 3rd Gen Core processor Graphics vendor: Dell driver: i915 
  v: kernel bus ID: 00:02.0 chip ID: 8086:0166 
  Device-2: AMD Mars [Radeon HD 8730M] vendor: Dell driver: radeon v: kernel 
  alternate: amdgpu bus ID: 01:00.0 chip ID: 1002:6601 
  Device-3: Suyin Laptop_Integrated_Webcam_HD type: USB driver: uvcvideo 
  bus ID: 1-1.4:5 chip ID: 064e:812e 
  Display: x11 server: X.Org 1.20.10 driver: ati,intel,radeon 
  unloaded: modesetting alternate: fbdev,vesa display ID: :0.0 screens: 1 
  Screen-1: 0 s-res: 1366x768 s-dpi: 96 s-size: 361x203mm (14.2x8.0") 
  s-diag: 414mm (16.3") 
  Monitor-1: LVDS1 res: 1366x768 hz: 60 dpi: 102 size: 340x190mm (13.4x7.5") 
  diag: 389mm (15.3") 
  OpenGL: renderer: Mesa DRI Intel HD Graphics 4000 (IVB GT2) 
  v: 4.2 Mesa 20.2.3 compat-v: 3.0 direct render: Yes 
Audio:
  Device-1: Intel 7 Series/C216 Family High Definition Audio vendor: Dell 
  driver: snd_hda_intel v: kernel bus ID: 00:1b.0 chip ID: 8086:1e20 
  Sound Server: ALSA v: k5.8.18-1-MANJARO 
Network:
  Device-1: Realtek RTL810xE PCI Express Fast Ethernet vendor: Dell 
  driver: r8169 v: kernel port: 2000 bus ID: 07:00.0 chip ID: 10ec:8136 
  IF: enp7s0 state: down mac: <filter> 
  Device-2: Broadcom and subsidiaries BCM43142 802.11b/g/n 
  vendor: Dell Wireless 1704 802.11n + BT 4.0 driver: wl v: kernel 
  modules: bcma port: 2000 bus ID: 08:00.0 chip ID: 14e4:4365 
  IF: wlp8s0 state: up mac: <filter> 
  IP v4: <filter> type: dynamic noprefixroute scope: global 
  broadcast: <filter> 
  IP v6: <filter> type: noprefixroute scope: link 
  IF-ID-1: tun0 state: unknown speed: 10 Mbps duplex: full mac: N/A 
  IP v4: <filter> scope: global 
  IP v6: <filter> scope: global 
  IP v6: <filter> virtual: stable-privacy scope: link 
  WAN IP: <filter> 
Drives:
  Local Storage: total: 931.51 GiB used: 143.78 GiB (15.4%) 
  SMART Message: Required tool smartctl not installed. Check --recommends 
  ID-1: /dev/sda vendor: Seagate model: ST1000LM024 HN-M101MBB 
  size: 931.51 GiB block size: physical: 512 B logical: 512 B 
  speed: 3.0 Gb/s rotation: 5400 rpm serial: <filter> rev: 0004 scheme: MBR 
  Optical-1: /dev/sr0 vendor: HL-DT-ST model: DVD+-RW GU70N rev: A103 
  dev-links: cdrom 
  Features: speed: 24 multisession: yes audio: yes dvd: yes 
  rw: cd-r,cd-rw,dvd-r,dvd-ram state: running 
RAID:
  Message: No RAID data was found. 
Partition:
  ID-1: / raw size: 287.11 GiB size: 281.60 GiB (98.08%) 
  used: 143.73 GiB (51.0%) fs: ext4 dev: /dev/sda2 label: N/A 
  uuid: cb49953e-eae1-4982-9570-d02268d3470e 
Swap:
  Kernel: swappiness: 60 (default) cache pressure: 100 (default) 
  ID-1: swap-1 type: partition size: 19.53 GiB used: 53.8 MiB (0.3%) 
  priority: -2 dev: /dev/sda3 label: N/A 
  uuid: 6a765991-9350-4e72-86d4-cbbc3dd95a50 
Unmounted:
  ID-1: /dev/sda1 size: 361.43 GiB fs: ntfs label: N/A 
  uuid: 0AD8440D3038FA7B 
  ID-2: /dev/sda4 size: 263.44 GiB fs: ext4 label: N/A 
  uuid: ea8832ac-fae7-4539-9556-41ead3ad4f2b 
USB:
  Hub: 1-0:1 info: Full speed (or root) Hub ports: 2 rev: 2.0 
  speed: 480 Mb/s chip ID: 1d6b:0002 
  Hub: 1-1:2 info: Intel Integrated Rate Matching Hub ports: 6 rev: 2.0 
  speed: 480 Mb/s chip ID: 8087:0024 
  Device-1: 1-1.1:3 info: Broadcom BCM43142 Bluetooth 4.0 
  type: <vendor specific> driver: btusb interfaces: 4 rev: 2.0 
  speed: 12 Mb/s chip ID: 0a5c:21d7 serial: <filter> 
  Device-2: 1-1.3:4 info: Realtek RTS5129 Card Reader Controller 
  type: <vendor specific> driver: rtsx_usb,rtsx_usb_ms,rtsx_usb_sdmmc 
  interfaces: 1 rev: 2.0 speed: 480 Mb/s chip ID: 0bda:0129 serial: <filter> 
  Device-3: 1-1.4:5 info: Suyin Laptop_Integrated_Webcam_HD type: Video 
  driver: uvcvideo interfaces: 2 rev: 2.0 speed: 480 Mb/s chip ID: 064e:812e 
  Hub: 2-0:1 info: Full speed (or root) Hub ports: 4 rev: 2.0 
  speed: 480 Mb/s chip ID: 1d6b:0002 
  Hub: 3-0:1 info: Full speed (or root) Hub ports: 2 rev: 2.0 
  speed: 480 Mb/s chip ID: 1d6b:0002 
  Hub: 3-1:2 info: Intel Integrated Rate Matching Hub ports: 6 rev: 2.0 
  speed: 480 Mb/s chip ID: 8087:0024 
  Hub: 4-0:1 info: Full speed (or root) Hub ports: 4 rev: 3.0 speed: 5 Gb/s 
  chip ID: 1d6b:0003 
Sensors:
  System Temperatures: cpu: 47.0 C mobo: N/A gpu: radeon temp: 43.0 C 
  Fan Speeds (RPM): cpu: 2600 
Info:
  Processes: 217 Uptime: 25m Init: systemd v: 246 Compilers: gcc: 10.2.0 
  Packages: pacman: 1382 lib: 393 flatpak: 0 Shell: Bash v: 5.0.18 
  running in: xfce4-terminal inxi: 3.1.08 

Did you checkout this page?
https://wiki.archlinux.org/index.php/Bluetooth#Configuration

I’ve just edited this file: /etc/bluetooth/main.conf

Towards the very end there is AutoEnable. I uncommented this line

[Policy]
AutoEnable=false

(it had the # sign at the beginning, which means it was treated as a comment).

Unfortunately, this didn’t help, because after the reboot bluetooth appears to be turned on again (even if it doesn’t work). :frowning:

By the way, I find it a little strange that all the commands in that main.conf file are commented out (except the last one which I uncommented today). Is this normal? Here is my main.conf file as it is now:

[General]

# Default adapter name
# Defaults to 'BlueZ X.YZ'
#Name = BlueZ

# Default device class. Only the major and minor device class bits are
# considered. Defaults to '0x000000'.
#Class = 0x000100

# How long to stay in discoverable mode before going back to non-discoverable
# The value is in seconds. Default is 180, i.e. 3 minutes.
# 0 = disable timer, i.e. stay discoverable forever
#DiscoverableTimeout = 0

# Always allow pairing even if there are no agent registered
# Possible values: true, false
# Default: false
#AlwaysPairable = false

# How long to stay in pairable mode before going back to non-discoverable
# The value is in seconds. Default is 0.
# 0 = disable timer, i.e. stay pairable forever
#PairableTimeout = 0

# Use vendor id source (assigner), vendor, product and version information for
# DID profile support. The values are separated by ":" and assigner, VID, PID
# and version.
# Possible vendor id source values: bluetooth, usb (defaults to usb)
#DeviceID = bluetooth:1234:5678:abcd

# Do reverse service discovery for previously unknown devices that connect to
# us. For BR/EDR this option is really only needed for qualification since the
# BITE tester doesn't like us doing reverse SDP for some test cases, for LE
# this disables the GATT client functionally so it can be used in system which
# can only operate as peripheral.
# Defaults to 'true'.
#ReverseServiceDiscovery = true

# Enable name resolving after inquiry. Set it to 'false' if you don't need
# remote devices name and want shorter discovery cycle. Defaults to 'true'.
#NameResolving = true

# Enable runtime persistency of debug link keys. Default is false which
# makes debug link keys valid only for the duration of the connection
# that they were created for.
#DebugKeys = false

# Restricts all controllers to the specified transport. Default value
# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
# Possible values: "dual", "bredr", "le"
#ControllerMode = dual

# 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 = off

# Permanently enables the Fast Connectable setting for adapters that
# support it. When enabled other devices can connect faster to us,
# however the tradeoff is increased power consumptions. This feature
# will fully work only on kernel version 4.1 and newer. Defaults to
# 'false'.
#FastConnectable = false

# Default privacy setting.
# Enables use of private address.
# Possible values: "off", "device", "network"
# "network" option not supported currently
# Defaults to "off"
# Privacy = off

# Specify the policy to the JUST-WORKS repairing initiated by peer
# Possible values: "never", "confirm", "always"
# Defaults to "never"
#JustWorksRepairing = never

# How long to keep temporary devices around
# The value is in seconds. Default is 30.
# 0 = disable timer, i.e. never keep temporary devices
#TemporaryTimeout = 30

# Enables the device to issue an SDP request to update known services when
# profile is connected. Defaults to true.
#RefreshDiscovery = true

[Controller]
# The following values are used to load default adapter parameters.  BlueZ loads
# the values into the kernel before the adapter is powered if the kernel
# supports the MGMT_LOAD_DEFAULT_PARAMETERS command. If a value isn't provided,
# the kernel will be initialized to it's default value.  The actual value will
# vary based on the kernel version and thus aren't provided here.
# The Bluetooth Core Specification should be consulted for the meaning and valid
# domain of each of these values.

# BR/EDR Page scan activity configuration
#BRPageScanType=
#BRPageScanInterval=
#BRPageScanWindow=

# BR/EDR Inquiry scan activity configuration
#BRInquiryScanType=
#BRInquiryScanInterval=
#BRInquiryScanWindow=

# BR/EDR Link supervision timeout
#BRLinkSupervisionTimeout=

# BR/EDR Page Timeout
#BRPageTimeout=

# BR/EDR Sniff Intervals
#BRMinSniffInterval=
#BRMaxSniffInterval=

# LE advertisement interval (used for legacy advertisement interface only)
#LEMinAdvertisementInterval=
#LEMaxAdvertisementInterval=
#LEMultiAdvertisementRotationInterval=

# LE scanning parameters used for passive scanning supporting auto connect
# scenarios
#LEScanIntervalAutoConnect=
#LEScanWindowAutoConnect=

# LE scanning parameters used for passive scanning supporting wake from suspend
# scenarios
#LEScanIntervalSuspend=
#LEScanWindowSuspend=

# LE scanning parameters used for active scanning supporting discovery
# proceedure
#LEScanIntervalDiscovery=
#LEScanWindowDiscovery=

# LE scanning parameters used for passive scanning supporting the advertisement
# monitor Apis
#LEScanIntervalAdvMonitor=
#LEScanWindowAdvMonitor=

# LE scanning parameters used for connection establishment.
#LEScanIntervalConnect=
#LEScanWindowConnect=

# LE default connection parameters.  These values are superceeded by any
# specific values provided via the Load Connection Parameters interface
#LEMinConnectionInterval=
#LEMaxConnectionInterval=
#LEConnectionLatency=
#LEConnectionSupervisionTimeout=
#LEAutoconnecttimeout=

[GATT]
# GATT attribute cache.
# Possible values:
# always: Always cache attributes even for devices not paired, this is
# recommended as it is best for interoperability, with more consistent
# reconnection times and enables proper tracking of notifications for all
# devices.
# yes: Only cache attributes of paired devices.
# no: Never cache attributes
# Default: always
#Cache = always

# Minimum required Encryption Key Size for accessing secured characteristics.
# Possible values: 0 and 7-16. 0 means don't care.
# Defaults to 0
#KeySize = 0

# Exchange MTU size.
# Possible values: 23-517
# Defaults to 517
#ExchangeMTU = 517

# Number of ATT channels
# Possible values: 1-5 (1 disables EATT)
# Default to 3
#Channels = 3

[Policy]
#
# The ReconnectUUIDs defines the set of remote services that should try
# to be reconnected to in case of a link loss (link supervision
# timeout). The policy plugin should contain a sane set of values by
# default, but this list can be overridden here. By setting the list to
# empty the reconnection feature gets disabled.
#ReconnectUUIDs=00001112-0000-1000-8000-00805f9b34fb,0000111f-0000-1000-8000-00805f9b34fb,0000110a-0000-1000-8000-00805f9b34fb

# ReconnectAttempts define the number of attempts to reconnect after a link
# lost. Setting the value to 0 disables reconnecting feature.
#ReconnectAttempts=7

# ReconnectIntervals define the set of intervals in seconds to use in between
# attempts.
# If the number of attempts defined in ReconnectAttempts is bigger than the
# set of intervals the last interval is repeated until the last attempt.
#ReconnectIntervals=1,2,4,8,16,32,64

# 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 'false'.

AutoEnable=false

Configuration files with commented out options is normal, because it just shows what is possible without changing the default values of them…

I have no idea why it turns on again after a reboot for you, mine stays off perhaps because i have manually selected to turn it off via the system-tray icon also.

If you can’t find your BT from another device it does not automatically mean “it does not work”, it could be “invisible” so try to select it as visible via the tray icon and refresh your list a few times on your other device.

Some integrated WiFi+Bluetooth adapters need a special firmware file to enable it’s BT functionality, maybe you are missing that?

I don’t know any other way to turn it off, either. I’ve turned it off by selecting “Turn Bluetooth Off” and now the bluetooth systray icon is grayed out. When I click the icon I get a menu where I am offered to turn bluetooth on (“Turn Bluetooth On”).

However, when I restart the computer, it will appear as if it is turned on and I will have to repeat the process (to turn it off).

That could be the case. How can I find the firmware for that for my laptop?

Do a search for “Linux Bluetooth” plus the vendor:device ID’s of your adapter:

I followed the instructions here provided by “Taron Saribekyan”:

When I placed that .hcd file into the /lib/firmware/brcm directory, and restarted the laptop it appears that my bluetooth started to work. I managed to transfer some files from it to my mobile phone.

However, the issue with bluetooth turning itself on after every restart still remains, despite the command AutoEnable=false which is still in my main.conf file.

Today I even saw two bluetooth icons appearing in the system tray. When I turned off bluetooth on one of them, the other one also turned off.

Perhaps it’s useful to mention that this didn’t happen until about a few weeks ago when I first turned bluetooth on in an attempt to try it and make it work. Since then, I am unable to make Manjaro remember that I want it turned off. :confused:

That’s why i said:

:wink:

Maybe you added another applet for the BT…

Well i’m afraid this is all the help i can provide, as i used that link on the wiki also.

Honestly, I don’t remember messing with it at all. I didn’t need bluetooth, and I was convinced it wouldn’t work on this laptop.

Well, you already helped me with making BT work on this laptop. :slight_smile:
So thanks for that!

If anyone else has some idea why my BT gets turned on every time I restart the system, please feel free to chime in.

Would it be possible to determine why bluetooth gets switched on on every system boot by telling Manjaro to write a journal (log) about bluetooth? I was advised something similar when I had issues with my Wi-Fi, so I presume the same would be possible with bluetooth…

It’s really strange that it ALWAYS turns itself on, even though it has now that command in main.conf which tells it explicitly not to.

You could start by testing if it is turned on before you login.
If it only enables after you login to your GUI session, you would have a starting point to check that.
If it turns on before it though, we would have at least eliminated that side.

How exactly can I tell Manjaro to do that? What do I need to type in the terminal?
I am pretty new to the Linux world.

  1. Boot your Manjaro, but do not login yet.
  2. Check on your moblie if it can see the BT of the Manjaro.
    If it can see the BT it means BT is activated before login :wink:
    Else continue with step 3.
  3. Login in Manjaro.
  4. Check on your moblie if it can see the BT of the Manjaro.
    If it can see the BT it means BT is activated after login :wink:

My mobile can’t see Manjaro’s BT before I log in, but I don’t think that helps us much. Apparently my mobile phone can see Manjaro’s BT only when it is made discoverable (“Make Discoverable”, the second option from above in BT menu when its icon is clicked in system tray).

I suppose it’s possible that BT is turned on before logging in, but my mobile can’t see it because I still haven’t made it discoverable. When I log in, the BT icon in system tray looks turned on (it looks white, not grayed out) and when I click it, the first option from above is “Turn bluetooth off”. As I said, even at this point, my mobile doesn’t see Manjaro’s BT, but when I make it discoverable (for which I would have to be logged in), it will see it.

Well that’s as far as my latin goes with respect to Bluetooth :woman_shrugging:
Hope someone else will chime in with more knowledge about this functionality…