[SOLVED] Bluetooth adapter disappeared after running out of battery

My laptop ran out of battery whilst in my bag today. Upon booting it back up, Gnome Bluetooth settings now reports “No Bluetooth Found. Plug in a dongle to use Bluetooth.”

Systemd reports: Bluetooth service was skipped because of a failed condition check (ConditionPathIsDirectory=/sys/class/bluetooth).

Bluetooth had been functional for months before until now.

Possibly related behaviour: On a cold boot, WiFi is disabled regardless of its previous state (new behaviour since my laptop ran out of battery - usually maintains the previous state). Re-enabling WiFi in the Gnome “quick settings” works successfully.

Bluetooth on the other hand is no longer listed in the “quick settings” section.

What I’ve tried

  • Rebooting
  • Shutting down. Booting back up (cold boot)
  • Disabling WiFi/Bluetooth in UEFI, saving and booting, re-entering UEFI and enabling WiFi/Bluetooth, saving and booting
  • sudo modprobe btusb
  • sudo modprobe bluetooth
  • systemctl --user restart pipewire

Logs

All commands below have also been tried with sudo. Outputs were the same:

System info: inxi -bz
System:
  Kernel: 6.1.6-200.fc37.x86_64 arch: x86_64 bits: 64 Desktop: GNOME v: 43.2
    Distro: Fedora release 37 (Thirty Seven)
Machine:
  Type: Laptop System: Framework product: Laptop (12th Gen Intel Core) v: A6
    serial: <superuser required>
  Mobo: Framework model: FRANMACP06 v: A6 serial: <superuser required>
    UEFI: INSYDE v: 03.05 date: 08/23/2022
Battery:
  ID-1: BAT1 charge: 28.7 Wh (54.0%) condition: 53.1/55.0 Wh (96.5%)
    volts: 15.4 min: 15.4
CPU:
  Info: 12-core (4-mt/8-st) 12th Gen Intel Core i7-1260P [MST AMCP]
    speed (MHz): avg: 2350 min/max: 400/4700:3400
Graphics:
  Device-1: Intel Alder Lake-P Integrated Graphics driver: i915 v: kernel
  Display: wayland server: X.Org v: 22.1.7 with: Xwayland v: 22.1.7
    compositor: gnome-shell driver: X: loaded: modesetting unloaded: fbdev,vesa
    dri: iris gpu: i915 resolution: 2256x1504~60Hz
  API: OpenGL v: 4.6 Mesa 22.3.3 renderer: Mesa Intel Graphics (ADL GT2)
Network:
  Device-1: Intel Wi-Fi 6 AX210/AX211/AX411 160MHz driver: iwlwifi
Drives:
  Local Storage: total: 1.82 TiB used: 911.71 GiB (48.9%)
Info:
  Processes: 410 Uptime: 9m Memory: 31.06 GiB used: 4.28 GiB (13.8%)
  Shell: Zsh inxi: 3.3.24
Kernel args: sudo grubby --info=0 | grep args

Note: My kernel arguments haven’t been changed recently. Bluetooth had been working for weeks with these args:
"ro rootflags=subvol=root rd.luks.uuid=luks-x-x-x-x-x rhgb quiet module_blacklist=hid_sensor_hub nvme.noacpi=1"

  • module_blacklist=hid_sensor_hub: Disable ambient light sensor so that keyboard brightness buttons function
  • nvme.noacpi=1: Improve suspend power usage
$ systemctl status bluetooth
○ bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:bluetoothd(8)

Jan 19 21:56:21 hostname systemd[1]: bluetooth.service - Bluetooth service was skipped because of a failed condition check (ConditionPathIsDirectory=/sys/class/bluetooth).
$ lspci | grep blue
[ No output ]
$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC
Bus 003 Device 002: ID 32ac:0002 Framework HDMI Expansion Card
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsmod | grep bluetooth
bluetooth             876544  9 bnep
rfkill                 36864  9 iwlmvm,bluetooth,cfg80211
$ dmesg | grep blue
[ 1027.100039] Bluetooth: Core ver 2.22
[ 1027.100068] Bluetooth: HCI device and connection manager initialized
[ 1027.100071] Bluetooth: HCI socket layer initialized
[ 1027.100072] Bluetooth: L2CAP socket layer initialized
[ 1027.100076] Bluetooth: SCO socket layer initialized
[ 1035.699494] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 1035.699497] Bluetooth: BNEP filters: protocol multicast
[ 1035.699500] Bluetooth: BNEP socket layer initialized
$ rfkill list
0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
$ bluetoothctl scan on
No default controller available
$ bluetoothctl list
[ No output ]
$ journalctl -b -kg "blue|hid"
Jan 19 21:54:36 hostname kernel: Command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-6.1.6-200.fc37.x86_64 root=UUID=x-x-x-x-x ro rootflags=subvol=root rd.luks.uuid=luks-x-x-x-x-x rhgb quiet module_blacklist=hid_sensor_hub nvme.noacpi=1
Jan 19 21:54:36 hostname kernel: Kernel command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-6.1.6-200.fc37.x86_64 root=UUID=x-x-x-x-x ro rootflags=subvol=root rd.luks.uuid=luks-x-x-x-x-x rhgb quiet module_blacklist=hid_sensor_hub nvme.noacpi=1
Jan 19 21:54:36 hostname kernel: hid: raw HID events driver (C) Jiri Kosina
Jan 19 21:54:36 hostname kernel: usbcore: registered new interface driver usbhid
Jan 19 21:54:36 hostname kernel: usbhid: USB HID core driver
Jan 19 21:54:36 hostname kernel: hid-generic 0003:32AC:0002.0001: hiddev96,hidraw0: USB HID v1.11 Device [Framework HDMI Expansion Card] on usb-0000:00:14.0-3/input1
Jan 19 21:54:36 hostname kernel: hid-generic 0018:32AC:0006.0002: input,hidraw1: I2C HID v1.00 Device [FRMW0001:00 32AC:0006] on i2c-FRMW0001:00
Jan 19 21:54:36 hostname kernel: Module hid_sensor_hub is blacklisted
Jan 19 21:54:36 hostname kernel: hid-generic 0018:093A:0274.0003: input,hidraw2: I2C HID v1.00 Mouse [PIXA3854:00 093A:0274] on i2c-PIXA3854:00
Jan 19 21:54:36 hostname kernel: hid-multitouch 0018:093A:0274.0003: input,hidraw2: I2C HID v1.00 Mouse [PIXA3854:00 093A:0274] on i2c-PIXA3854:00
Jan 19 21:56:05 hostname kernel: Module hid_sensor_hub is blacklisted
Jan 19 22:11:40 hostname kernel: Bluetooth: Core ver 2.22
Jan 19 22:11:40 hostname kernel: NET: Registered PF_BLUETOOTH protocol family
Jan 19 22:11:40 hostname kernel: Bluetooth: HCI device and connection manager initialized
Jan 19 22:11:40 hostname kernel: Bluetooth: HCI socket layer initialized
Jan 19 22:11:40 hostname kernel: Bluetooth: L2CAP socket layer initialized
Jan 19 22:11:40 hostname kernel: Bluetooth: SCO socket layer initialized
Jan 19 22:11:48 hostname kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Jan 19 22:11:48 hostname kernel: Bluetooth: BNEP filters: protocol multicast
Jan 19 22:11:48 hostname kernel: Bluetooth: BNEP socket layer initialized

Developments:

  • The “Bluetooth” option now appears in Gnome “quick settings”.
  • The Gnome Bluetooth settings now says: “Bluetooth Turned Off. Turn on to connect devices and receive file transfers”
    I’m able to flick the toggle switch for Bluetooth to the “on” position, but the rest of the UI does not update. When restarting Gnome settings, the Bluetooth toggle switch is back at the “off” position, so my attempt to toggle it made no effect.

The observations above are no longer the case (~15 minutes later, no reboots). Gnome “quick settings” and Bluetooth Settings behaviour has reverted back to my previous post.

Systemctl logs for the bluetooth service have changed:

$ systemctl status bluetooth
● bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
     Active: active (running) since Thu 2023-01-19 22:11:48 GMT; 30min ago
       Docs: man:bluetoothd(8)
   Main PID: 8651 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 38111)
     Memory: 2.0M
        CPU: 25ms
     CGroup: /system.slice/bluetooth.service
             └─8651 /usr/libexec/bluetooth/bluetoothd

Jan 19 22:11:48 hostname bluetoothd[8651]: Bluetooth daemon 5.66
Jan 19 22:11:48 hostname systemd[1]: Started bluetooth.service - Bluetooth service.
Jan 19 22:11:48 hostname bluetoothd[8651]: Starting SDP server
Jan 19 22:11:48 hostname bluetoothd[8651]: profiles/audio/vcp.c:vcp_init() D-Bus experimental not enabled
Jan 19 22:11:48 hostname bluetoothd[8651]: src/plugin.c:plugin_init() Failed to init vcp plugin
Jan 19 22:11:48 hostname bluetoothd[8651]: profiles/audio/mcp.c:mcp_init() D-Bus experimental not enabled
Jan 19 22:11:48 hostname bluetoothd[8651]: src/plugin.c:plugin_init() Failed to init mcp plugin
Jan 19 22:11:48 hostname bluetoothd[8651]: profiles/audio/bap.c:bap_init() D-Bus experimental not enabled
Jan 19 22:11:48 hostname bluetoothd[8651]: src/plugin.c:plugin_init() Failed to init bap plugin
Jan 19 22:11:48 hostname bluetoothd[8651]: Bluetooth management interface 1.22 initialized

My bluetoothctl test commands return the same output as my previous post.

What happens if you boot from a live USB, what distro are you using, and is this on an 11th or 12th gen system?

@groundwork This above will be the next step. You did a lot of great work, really well done. But now we need a new Live install to see if the issue repeats there or not.

If it does not repeat there in a Live install, then we can look to something that may have changed from clean installation to current.

I’m using Fedora 37 on a 12th gen system. Similar information can be found in the “System Info” dropdown in my original post.

After a cold boot this morning the issue had gone and my bluetooth adapter is now behaving the same as it has for the past few months.

My problem is technically solved, however I don’t have a reproducible solution for it.

Glad that it resolved, but agree that it would be nice to know how to avoid or take steps to fix it if it recurs. I missed that you had the distro and system information in a collapsed section of your initial post, my mistake there. Enjoy the weekend!

This is a tough one. Behold the updates, both solvers and causers of stuff like this.

Something I use myself personally, TimeShift. Something breaks after I do something or something is updated. I revert back to a previous state and attempt to retrace the steps that created the environment where an issue surfaces.

TimeShift isn’t going to fix any issues, but it allows us to revert backwards and retrace changes we may have made.

I speak about TimeShift in section 2.2 of Getting started with Linux - Framework Guides

TimeShift (or similar) are life savers.

1 Like

Complete agreement regarding TimeShift.

It’s great, right?

Absolutely. A month or so ago I was fiddling around with different browsers, trying to find one that I liked but that was less resource intensive than Firefox (what I typically use) and Chrome. I had added a ton of dependencies as I tried things out. Eventually I decided that I would stand pat, with Falkon available if I really wanted to try to cut down on power draw. After all of the mucking around, I decided that manually unwinding everything was going to be a pain in the neck. So, I rolled back to a TimeShift snapshot from before I had begun to fiddle. then added Falkon back. It was gloriously simple.