Bluetooth stops working after suspend on Omarchy
Bluetooth dead, stuck on Turned Off, or paired mice not reconnecting after resume on Omarchy 4. The shell restart, the bluez restart, and the firmware cases.
Most of the time the radio is fine and only the bar panel is wrong. Run `bluetoothctl show`; if it reports Powered yes while the panel says Turned Off, run `omarchy restart shell` and the panel resyncs. If the adapter is genuinely gone, run `omarchy restart bluetooth` then `sudo systemctl restart bluetooth.service`.
Bluetooth going quiet after a suspend is one problem name covering at least three different faults on Omarchy 4. Work through them in order. The first one is by far the most common, and it does not involve the radio at all.
The fix
Checked on 4.0.4. Steps 1 and 2 apply to 4.0.0 and later only, since the Quickshell Bluetooth panel arrived in 4.0.0 (Quattro).
1. Find out whether the radio is actually down.
bluetoothctl show | grep -E 'Powered|PowerState'
rfkill list bluetooth
omarchy bluetooth power is-on; echo "exit $?"
If you get Powered: yes, PowerState: on, no soft or hard block, and exit 0, the radio is alive and the bar is lying to you. Go to step 2. If bluetoothctl show prints No default controller available, skip to step 3.
2. Restart the Omarchy shell.
omarchy restart shell
The panel picks up the live BlueZ state again, the toggle works, and paired devices show up. This is the fix for the panel reading Turned Off while everything underneath is fine, reported in #7573 and #9561. You lose nothing but the shell process. Expect to repeat it after future resumes; no fix had shipped in Omarchy or Quickshell as of 4.0.4. One reporter on #9561 resyncs the panel without a shell restart by cycling rfkill, rfkill block bluetooth && sleep 0.5 && rfkill unblock bluetooth, but on ThinkPads and some Dells a type-wide block can drop the radio off the USB bus (see below), so prefer the shell restart there.
3. If the adapter is gone, unblock then restart bluez.
omarchy restart bluetooth
sudo systemctl restart bluetooth.service
Note what the first command actually does in 4.0.4: it runs rfkill unblock bluetooth and prints the rfkill table. Despite the name and the menu entry under Update > Hardware > Bluetooth, it does not restart the service. That is why the second line is there. If the controller still does not appear, the hardware-specific recoveries are in the last section. Reloading btusb is not one of them: on the threads where people tried it, the controller came back in the same broken state.
4. If paired mice or keyboards will not reconnect, check for a stuck scan.
busctl --system get-property org.bluez /org/bluez/hci0 org.bluez.Adapter1 Discovering
If that says true with the Bluetooth panel closed, the adapter is pinned in discovery and bonded LE devices cannot get back in. Power cycle the adapter:
bluetoothctl power off && sleep 1 && bluetoothctl power on
That is what most reporters on #10818 used, and the mouse or keyboard reconnected afterwards with no re-pairing. One reporter used sudo systemctl restart bluetooth.service instead with the same result. bluetoothctl scan off and omarchy restart shell do not clear it. Keep the panel closed while switching a multi-host mouse or keyboard back to this machine.
5. If pairing fails after bluetooth.service restarted.
systemctl --user restart bt-agent.service
#11936 shows why: the pairing agent registers with one bluetoothd process, and when that process is replaced, including by the restart in steps 3 and 4, the new daemon has no agent while systemd still reports bt-agent.service as healthy. The reporter’s fix relaunches the agent whenever the org.bluez owner changes; restarting the unit by hand does the same once.
Verify it worked
bluetoothctl show | grep -E 'Powered|Discovering'
bluetoothctl devices Connected
You want Powered: yes, Discovering: no with the panel closed, and your device listed as connected. Then open the panel with Super + Ctrl + B and confirm it agrees with those numbers. Suspend and resume once more and check again, because the panel fault only reappears on a resume.
Why it happens
Three separate mechanisms produce the same complaint.
The panel holds a stale power state. On many controllers a resume tears the adapter down and brings it back, reloading firmware as it goes. BlueZ reports the adapter as not powered during that window, then powers it up. In Quickshell 0.3.1 the Bluetooth adapter object takes a one-time property snapshot and subscribes to later changes, and the completion event can land in the gap between those two moments. Nothing re-reads the value afterwards. JareckiB12 instrumented a resume on #7573 and found the final recorded write set the powered flag to false while BlueZ itself reported the controller as on four minutes later. The panel then renders Turned Off, its device list stays empty, and its switch sends the on command forever.
The adapter is stuck in discovery. While the panel is open it re-asserts discovery every second. On close it tries to stop it, but gives up after three attempts, and an active scan aborts the LE connects that bonded mice and keyboards need to come back. Reporters on #10818 found the same stuck Discovering: true on Intel 8265, AX200, AX210, a PCIe Intel controller and a MediaTek MT7922, so it is not chipset specific, but the panel is not always the owner. One reporter traced the leaked session to a Chrome passkey prompt, and another showed that in BlueZ 5.87 a failed StopDiscovery leaves the flag set with no client owning it, so every later stop is refused with No discovery started and only powering the adapter down resets it. A related storm, #10142, has the panel’s one-second start retry wedging a Realtek RTL8761BU until the kernel resets it; the patch bounding that retry, #10176, was still open as of 4.0.4.
The controller is genuinely suspended or wedged. Omarchy ships /etc/modprobe.d/omarchy-usb-autosuspend.conf containing options usbcore autosuspend=-1, and #12095 shows it cannot take effect, because usbcore is built into the kernel. The per-device setting comes from a udev rule instead, so Intel controllers keep runtime suspending and BLE reconnects time out.
Worth knowing about the on and off path: 4.0.0 moved the remembered Bluetooth power state into the rfkill soft block, since BlueZ never persisted it. The 4.0.0 migration also reverts the old AutoEnable=false line in /etc/bluetooth/main.conf. On 3.x you got bluetui and a Waybar module instead of a Quickshell panel, so the stale panel fault does not exist there, though the wedged controller cases do.
If that did not work
Pin the Intel controller on with a udev rule, using your own vendor and product IDs from lsusb:
ACTION=="add|bind|change", SUBSYSTEM=="usb", ATTR{idVendor}=="8087", ATTR{idProduct}=="0026", ATTR{power/control}="on"
Save that as /etc/udev/rules.d/61-bluetooth-no-autosuspend.rules. This is the rule jordanglean verified on #12095.
On ThinkPads and some Dells, turning Bluetooth off through the panel can cut USB power to the module rather than just soft blocking it, so the adapter vanishes from the bus entirely. #7936 documents the mechanism. On some models rfkill unblock bluetooth re-enumerates the module; on two X1 Carbons it did not, and what brought the radio back was rebinding the xHCI controller that owns the port: echo -n 0000:00:14.0 > /sys/bus/pci/drivers/xhci_hcd/unbind, wait a few seconds, then the same into bind, with your own PCI address from lspci. Expect the webcam and fingerprint reader on that controller to drop for a moment. Elsewhere only a suspend and resume, or a reboot, brings it back.
On T2 MacBooks with the BCM4377 combo chip, Bluetooth and suspend fail together, and the reporter on #11264 needed the Wi-Fi and Bluetooth modules unloaded before sleep and Wi-Fi reloaded about 15 seconds after wake, since reloading it immediately crashed the machine. See /hardware/t2-mac/. A separate report, #12120, has a Broadcom controller failing its HCI reset after the 4.0.4 linux-omarchy kernel, with Bluetooth: hci0: command 0x0c03 tx timeout in the journal. There, reloading btusb reproduced the failure and only a full USB re-enumeration of the port, writing 0 then 1 to that device’s authorized file under /sys/bus/usb/devices/, cleared it for the boot. Both were open and unfixed at the time of writing.
If Bluetooth audio specifically dies on resume, #11280 traces a WirePlumber crash in the PipeWire bluez plugin right after S3 resume. Systemd restarted the service on its own within a second, and the headset still failed to connect, so restarting WirePlumber by hand is unlikely to help. The fault is upstream in PipeWire and the thread records no workaround.
Related
- /hardware/bluetooth/ for controller by controller status
- /hardware/suspend-sleep/ if the machine itself struggles to sleep or wake
- /fix/quickshell-crashes-or-bar-missing/ if the whole bar is wrong, not just the Bluetooth part
- /reference/commands/omarchy-bluetooth-power/ for what the toggle actually runs
- The Omarchy manual’s Troubleshooting chapter points at Update > Hardware > Bluetooth as the first thing to try, which is the rfkill unblock in step 3
Upstream threads about this error
231 issues on the Omarchy tracker match this error cluster. Newest fixes often appear as comments on the most-discussed threads.
| Issue | State | Comments | Opened |
|---|---|---|---|
| #1744 Enable Bluetooth keyboard and mice at login screen | closed | 24 | 2025-09-18 |
| #6952 Quickshell SIGSEGV in QQuickRepeater when PipeWire removes USB audio nodes · fixed by #7783 | closed | 41 | 2026-08-15 |
| #5339 Keyboard won't work after Live Update | closed | 33 | 2026-04-17 |
| #394 suspend on BeeLink SER9 (and new Framework 13 AMD Ryzen AI 9 HX 370) | closed | 29 | 2025-07-29 |
| #1806 Macbook Pro 2020 WIFI Issues | open | 34 | 2025-09-19 |
| #1818 Bluetooth Audio Devices Doesn't Work · fixed by #5336 #130 | closed | 24 | 2025-09-19 |
| #2546 Walker and Elephant missing after system upgrade | closed | 30 | 2025-10-19 |
| #4169 Last updates broke everything | closed | 20 | 2026-01-08 |
| #3924 Screensaver starts and aborts immediately with display scaling set to 1.2 or 1.33 | closed | 19 | 2025-12-17 |
| #3413 RDSEED32 is broken. Disabling the corresponding CPUID bit - after today's last update | closed | 18 | 2025-11-15 |
Accepted answers upstream
- Why not bluetui? · answered by ZorudaRinku
- Omarchy on Macbook Intel (T2 chips) · answered by yuters
- Integrating more TUI tools · answered by psyhomb
- Enhance Waybar config with mpris module and adjustments · answered by istekhar8966
Questions people ask
- Do I have to reboot to get Bluetooth back after suspend?
- Almost never. On Omarchy 4 the usual cause is the bar panel holding a stale power state, and `omarchy restart shell` fixes that without touching the radio. If the adapter itself is wedged, restarting bluetooth.service is the next step and a reboot is the last one.
- Why does clicking the Bluetooth toggle do nothing after I wake the laptop?
- Because the panel thinks Bluetooth is off, so every click sends the on command instead of the off command. That command runs `rfkill unblock bluetooth` on an already unblocked radio, which changes nothing. The journal fills with repeated unblock lines.
- My mouse stays paired but will not reconnect after idle or resume. Is the bond broken?
- No. Check whether the adapter is stuck in discovery. Leaving the Bluetooth panel open holds an LE scan that blocks bonded LE devices from connecting, the panel can fail to stop that scan when it closes, and another program such as a browser passkey prompt can leave one behind too.
Sources and credit
Fixes on this page were worked out by JareckiB12 (Instrumented the resume and caught the last Powered write going to false while BlueZ was still powering the controller up), spaceXrace (First showed the Turned Off latch is reached from resume, not just from a boot race), zelti (Reproduced the latch on a controller the kernel resets in place, proving it does not need a USB re-enumeration), mhbnielsen (Confirmed a bluetooth.service restart clears the stuck discovery flag with no re-pairing), iuliansafta (Traced the stuck Discovering flag to BlueZ 5.87 and explained why only an adapter power cycle resets it), hermes-os (Confirmed the shell restart clears it on Broadcom btusb hardware), DrakeMorrison (Traced the type-wide rfkill block cutting USB power to the module on ThinkPads), jordanglean (Showed the shipped usbcore autosuspend file cannot apply and wrote the udev rule that does). Text here is our own paraphrase; follow the links for the original threads.
- issueIssue #7573: Bluetooth panel latches "Turned Off" when the adapter powers up after quickshell, disabling GUI pairing and the toggle · martin-irwin · 2026-08-20
- issueIssue #9561: Bluetooth bar toggle can remain visually off after resume while adapter is powered · Matt1656 · 2026-09-01
- issueIssue #10818: Bluetooth panel LE scan blocks reconnect of dual-channel BLE mice · stevepresley · 2026-09-08
- issueIssue #12095: omarchy-usb-autosuspend.conf is a no-op; Intel Bluetooth controllers still autosuspend (BLE HID reconnect timeouts) · jordanglean · 2026-09-16
- issueIssue #11936: Bluetooth agent stays stale after bluetoothd restarts · n0mahd · 2026-09-15
- issueIssue #7936: omarchy-bluetooth-power off: type-wide rfkill block trips platform switches and removes the radio from the USB bus (ThinkPad/Dell) · DrakeMorrison · 2026-08-23
- issueIssue #11280: WirePlumber SIGSEGV in PipeWire Bluetooth plugin immediately after S3 resume · AnoopLamba · 2026-09-11
- issueIssue #11264: MacBook Air 2020 (MacBookAir9,1, T2): Bluetooth never powers on at boot, and suspend always fails on brcmfmac D3 timeout · austinsomer · 2026-09-11
- issueIssue #12120: Internal Broadcom Bluetooth controller fails HCI reset after linux-omarchy 7.2.5-3 update (MacBookPro11,4) · akopitsa · 2026-09-16
- issueIssue #10142: Bluetooth panel: unbounded StartDiscovery retry wedges the controller and kills LE background scanning · bukson · 2026-09-04
- prPR #10176: Bound the Bluetooth panel's discovery retry · omarchybot · 2026-09-04
- manualOmarchy manual: Troubleshooting