Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-4148GitHub issuePublicReceived

Suspend And Hibernation Not Working

Reported by Divyanshu-kumar14 · filed Feb 26, 2026Closed upstream on 2026-02-26 by dhh, as a duplicate of #4740 (R-4145). GitHub close reason: duplicate.

Received and recorded verbatim. Nothing has been checked yet.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
Not yet mapped to any requirement or component.
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

Suspend And Hibernation Not Workingrevision 1 · captured 2026-10-04 11:49 UTC via poll

System details

Dell-G15 5530

What's wrong?

System details

Dell-G15 5530

What's wrong?

Hi,

I'm running Omarchy (linux-zen 6.18.7-zen1-1-zen) on a laptop with an NVIDIA GPU and I've been unable to get suspend or hibernate working.


System:
- Omarchy with Hyprland
- Bootloader: Limine
- Kernel: linux-zen 6.18.7-zen1-1-zen
- NVIDIA GPU (proprietary drivers)
- LUKS encrypted BTRFS root with swapfile at /swap/swapfile
- External USB hub connected


Issue 1: Suspend (systemctl suspend) fails

The system attempts to suspend but immediately wakes back up with the following errors in journalctl:

usb usb1: PM: dpm_run_callback(): usb_dev_suspend returns -16
usb usb1: PM: failed to suspend async: error -16
usb usb2: PM: dpm_run_callback(): usb_dev_suspend returns -16
usb usb2: PM: failed to suspend async: error -16
PM: Some devices failed to suspend, or early wake event detected
systemd-sleep: Failed to put system to sleep. System resumed again: Device or resource busy

The system only supports s2idle (Low-power S0 idle used by default for system suspend), not S3 deep sleep. The xhci_hcd USB controller fails to suspend, immediately aborting the sleep attempt. Bluetooth also triggers an immediate wake event.

The kernel parameter usbcore.autosuspend=1 and a udev rule disabling USB wakeup did not resolve the issue. The freeze sleep state also fails with 'Device or resource busy'.


Issue 2: Hibernate (systemctl hibernate) fails with invalid resume config

Hibernate is potentially a viable workaround since the system has a 20GB swapfile and resume_offset=67118336 (verified with btrfs inspect-internal map-swapfile). However, hibernate fails with:

Call to Hibernate failed: Invalid resume config: resume= is not populated yet resume_offset= is

The reason is that the auto-generated cmdline in /boot/limine.conf contains a malformed resume= parameter:

resume=UUID=/dev/mapper/root ← broken, mixes UUID= prefix with a device path

The correct value should be:

resume=/dev/mapper/root

This appears to be generated by limine-entry-tool. Manually editing /boot/limine.conf to fix the resume= parameter does allow hibernate to work, but the fix gets overwritten on kernel updates since /boot/limine.conf is auto-generated.


What I'd love to see fixed:

  1. The resume= parameter generated by limine-entry-tool should be resume=/dev/mapper/root not resume=UUID=/dev/mapper/root for LUKS setups.
  1. Ideally, a way to persist custom kernel cmdline parameters in /home/user/.local/share/omarchy/default/limine/limine.conf that survive kernel updates and limine-entry-tool regeneration.
  1. Longer term, it would be great if Omarchy defaulted to hibernate instead of suspend on systems where s2idle is the only available sleep state, since hibernate bypasses all the USB/NVIDIA suspend issues entirely.

Thanks for all the work on Omarchy — happy to provide any additional logs or testing if helpful.

View raw text
### System details

Dell-G15 5530

### What's wrong?

### System details

Dell-G15 5530

### What's wrong?

Hi,

I'm running Omarchy (linux-zen 6.18.7-zen1-1-zen) on a laptop with an NVIDIA GPU and I've been unable to get suspend or hibernate working.

---

**System:**
- Omarchy with Hyprland
- Bootloader: Limine
- Kernel: linux-zen 6.18.7-zen1-1-zen
- NVIDIA GPU (proprietary drivers)
- LUKS encrypted BTRFS root with swapfile at /swap/swapfile
- External USB hub connected

---

**Issue 1: Suspend (systemctl suspend) fails**

The system attempts to suspend but immediately wakes back up with the following errors in journalctl:

  usb usb1: PM: dpm_run_callback(): usb_dev_suspend returns -16
  usb usb1: PM: failed to suspend async: error -16
  usb usb2: PM: dpm_run_callback(): usb_dev_suspend returns -16
  usb usb2: PM: failed to suspend async: error -16
  PM: Some devices failed to suspend, or early wake event detected
  systemd-sleep: Failed to put system to sleep. System resumed again: Device or resource busy

The system only supports s2idle (Low-power S0 idle used by default for system suspend), not S3 deep sleep. The xhci_hcd USB controller fails to suspend, immediately aborting the sleep attempt. Bluetooth also triggers an immediate wake event.

The kernel parameter usbcore.autosuspend=1 and a udev rule disabling USB wakeup did not resolve the issue. The freeze sleep state also fails with 'Device or resource busy'.

---

**Issue 2: Hibernate (systemctl hibernate) fails with invalid resume config**

Hibernate is potentially a viable workaround since the system has a 20GB swapfile and resume_offset=67118336 (verified with btrfs inspect-internal map-swapfile). However, hibernate fails with:

  Call to Hibernate failed: Invalid resume config: resume= is not populated yet resume_offset= is

The reason is that the auto-generated cmdline in /boot/limine.conf contains a malformed resume= parameter:

  resume=UUID=/dev/mapper/root   ← broken, mixes UUID= prefix with a device path

The correct value should be:

  resume=/dev/mapper/root

This appears to be generated by limine-entry-tool. Manually editing /boot/limine.conf to fix the resume= parameter does allow hibernate to work, but the fix gets overwritten on kernel updates since /boot/limine.conf is auto-generated.

---

**What I'd love to see fixed:**

1. The resume= parameter generated by limine-entry-tool should be resume=/dev/mapper/root not resume=UUID=/dev/mapper/root for LUKS setups.

2. Ideally, a way to persist custom kernel cmdline parameters in /home/user/.local/share/omarchy/default/limine/limine.conf that survive kernel updates and limine-entry-tool regeneration.

3. Longer term, it would be great if Omarchy defaulted to hibernate instead of suspend on systems where s2idle is the only available sleep state, since hibernate bypasses all the USB/NVIDIA suspend issues entirely.

Thanks for all the work on Omarchy — happy to provide any additional logs or testing if helpful.

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

No decision has been recorded yet.