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-4308GitHub issuePublicReceived

ASUS ExpertBook B9406CAA (Panther Lake): display refresh stall. Fixed by xe.enable_panel_replay=0, touchpad also fixed

Reported by mijuny · filed Apr 24, 2026Closed upstream on 2026-04-29 by its own reporter mijuny. GitHub close reason: completed. Closed by its own reporter — not by itself evidence of a fix.

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

ASUS ExpertBook B9406CAA (Panther Lake): display refresh stall. Fixed by xe.enable_panel_replay=0, touchpad also fixedrevision 1 · captured 2026-10-04 11:56 UTC via poll

System details

ASUS ExpertBook B9406CAA (BIOS 304), Intel Panther Lake / Arc B390 [8086:b080], Omarchy 3.6, kernel linux-ptl 6.19.10, Hyprland 0.54.3

What's wrong?

Hi!

Just managed to install Omarchy 3.6 on this just-released laptop (ASUS ExpertBook B9406CAA, Panther Lake). Noticed bugs with display / GPU and found a fix with Claude Code. During the install, the only way to "refresh" the screen was to switch between tty3 and tty1. So, installation was possible but a bit messy. The fix below was produced with Claude Code (Opus 4.7), disclosed up front.


Symptom

On a default Omarchy 3.6 install on this laptop, the display never refreshes after the first scanout. Every display layer appears frozen until a VT switch forces a full modeset:

  • Plymouth / LUKS prompt: logo briefly shows, input box never renders, password typed blind is accepted.
  • Kernel TTY (fbcon on xedrmfb): type a command, see nothing; Ctrl+Alt+F3 then Ctrl+Alt+F1 makes the previous state snap on-screen.
  • Hyprland: session starts normally and runs for minutes spawning child processes, but the screen stays on the last-committed frame.

Install was only possible by flipping TTYs repeatedly to force redraws. Until the fix below, nomodeset at the Limine editor was the only workaround — usable but falls back to simpledrm and kills GPU acceleration, video decode, and battery features.

Root cause

Panel Replay — a Xe3-new self-refresh mechanism, default-on in the xe driver — has a broken exit/wake path on this eDP panel. The panel latches the last-presented frame in self-refresh and never wakes for subsequent atomic commits. A full modeset (VT switch) resets the link and one new frame appears, then the same stall again. The older xe.enable_psr=0 knob does NOT cover Panel Replay; they are distinct parameters (see modinfo xe).

Fix

One kernel argument:

xe.enable_panel_replay=0

Bisection

Cmdline deltaResult
defaultstall at every layer
nomodesetworks via simpledrm (workaround only)
xe.enable_dc=0no effect
xe.enable_dc=0 xe.enable_fbc=0 xe.enable_psr=0 xe.enable_panel_replay=0 xe.enable_psr2_sel_fetch=0 xe.enable_dmc_wl=0works
`xe.enable_panel_replay=0` aloneworks — confirmed minimal fix

Working-boot state with xe.enable_panel_replay=0 alone: xe bound to /sys/bus/pci/drivers/xe, card0-eDP-1 connected enabled 2880x1800, intel_backlight exposed, Hyprland healthy (watchdog attached), zero DRM errors or warnings in dmesg.

xe init log excerpt (clean):

xe 0000:00:02.0: [drm] Found pantherlake (device ID b080) integrated display version 30.00 stepping B0
xe 0000:00:02.0: [drm] Finished loading DMC firmware i915/xe3lpd_dmc.bin (v2.33)
xe 0000:00:02.0: [drm] Tile0: GT0: Using GuC firmware from xe/ptl_guc_70.bin version 70.60.0
xe 0000:00:02.0: [drm] Tile0: GT1: Using HuC firmware from xe/ptl_huc.bin version 10.3.3
[drm] Initialized xe 1.1.0 for 0000:00:02.0 on minor 0
fbcon: xedrmfb (fb0) is primary device

Proposed Omarchy integration

Mirrors the existing omarchy-hw-dell-xps-oled / migrations/1776781956.sh pattern (which already mentions Panel Replay in the Dell XPS context). Two scoping options:

  1. Narrow: match ASUS vendor + product_name=ASUS EXPERTBOOK B9406CAA. Only affects this exact model.
  2. Broader: match ASUS vendor + Panther Lake (via omarchy-hw-intel-ptl). Applies on any ASUS PTL laptop — safer for forward compat with related ExpertBook SKUs, at the cost of applying on ASUS PTL machines that may not need it.

Either adds:

  • bin/omarchy-hw-asus-expertbook-ptl (or broader) — DMI match script
  • install/config/hardware/intel/ptl-panel-replay.sh — drops /etc/limine-entry-tool.d/asus-panel-replay.conf appending KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0" and runs limine-update, same shape as ptl-kernel.sh

I'd be happy to open a PR.

Secondary: touchpad (separate upstream bug — NOT Omarchy's fault)

The internal Pixart 093A:4F05 touchpad (ASUS ACPI ASCP1D80) works perfectly at kernel level. evtest /dev/input/event9 captures 3938 events in 20 seconds of active use with proper ABS_MT_POSITION_X/Y, pressure, tracking IDs, multi-touch slots up to 5 contacts, 126x84mm @ ~31.5 units/mm.

libinput 1.31.1 silently drops every motion event with:

event9 - ASCP1D80:00 093A:4F05 Touchpad: kernel bug: Touch jump detected and discarded.

BTN_LEFT presses pass through — clicks on the pad register — but pointer motion does not. Kernel deltas are 0.06–0.86mm per poll, well below libinput's 20mm jump threshold, so this is a libinput false positive. The device is missing from /usr/share/libinput/30-vendor-pixart.quirks (has 0255, 0274, 1336 but not 4F05).

Filing upstream at freedesktop separately. Mentioned here because other B9406 owners will hit it; a Bluetooth/USB mouse is an acceptable short-term workaround.


Here is Claude Code report about how we got Touchpad working.


Update: also got the touchpad working.

libinput 1.31.1 was discarding every motion event from this pad with kernel bug: Touch jump detected and discarded. The kernel path was fine — evtest showed proper Precision Touchpad reports with full ABS_MT_* and multi-touch slots. The trigger is that this pad reports ABS_PRESSURE/ABS_MT_PRESSURE values of 0–1 (very low), which appears to confuse libinput's contact stability check and drive a false-positive on jump detection. Masking the pressure axes fixes it — same pattern as the existing Asus UX302LA entry in libinput's shipped 50-system-asus.quirks.

Fix: create /etc/libinput/local-overrides.quirks with:

[ASUS ExpertBook B9406CAA Touchpad]
MatchBus=i2c
MatchUdevType=touchpad
MatchVendor=0x093A
MatchProduct=0x4F05
MatchDMIModalias=dmi:*svnASUS*:pn*B9406*
AttrEventCode=-ABS_MT_PRESSURE;-ABS_PRESSURE;

Then log out + log back in (or reboot) so Hyprland's libinput context reloads the quirks. Aquamarine does not re-read quirks on device hot-remove/add in a live session — a full compositor restart is required.

Result after reboot: motion, clicks, two-finger scroll, tap-to-click all work normally. Confirmed on my box.

Trade-off: libinput loses pressure-based palm rejection for this pad. Fine in practice on this laptop; clickpad mechanics carry the weight.

Proper upstream fix: this entry belongs in libinput's 30-vendor-pixart.quirks (where 093A:0255, 093A:0274, 093A:1336 already live — 093A:4F05 just isn't listed yet). I'll PR it at gitlab.freedesktop.org/libinput/libinput so it ships with the library instead of needing a local override.

Omarchy integration: the same omarchy-hw-asus-expertbook-ptl hook I proposed for the display fix could drop this quirks file too. Both fixes in one PR if that's easier.

View raw text
### System details

ASUS ExpertBook B9406CAA (BIOS 304), Intel Panther Lake / Arc B390 [8086:b080], Omarchy 3.6, kernel linux-ptl 6.19.10, Hyprland 0.54.3

### What's wrong?

Hi!

Just managed to install Omarchy 3.6 on this just-released laptop (ASUS ExpertBook B9406CAA, Panther Lake). Noticed bugs with display / GPU and found a fix with Claude Code. During the install, the only way to "refresh" the screen was to switch between tty3 and tty1. So, installation was possible but a bit messy. The fix below was produced with Claude Code (Opus 4.7), disclosed up front.

---

### Symptom

On a default Omarchy 3.6 install on this laptop, the display never refreshes after the first scanout. Every display layer appears frozen until a VT switch forces a full modeset:

- **Plymouth / LUKS prompt**: logo briefly shows, input box never renders, password typed blind is accepted.
- **Kernel TTY (fbcon on xedrmfb)**: type a command, see nothing; Ctrl+Alt+F3 then Ctrl+Alt+F1 makes the previous state snap on-screen.
- **Hyprland**: session starts normally and runs for minutes spawning child processes, but the screen stays on the last-committed frame.

Install was only possible by flipping TTYs repeatedly to force redraws. Until the fix below, `nomodeset` at the Limine editor was the only workaround — usable but falls back to `simpledrm` and kills GPU acceleration, video decode, and battery features.

### Root cause

**Panel Replay** — a Xe3-new self-refresh mechanism, default-on in the `xe` driver — has a broken exit/wake path on this eDP panel. The panel latches the last-presented frame in self-refresh and never wakes for subsequent atomic commits. A full modeset (VT switch) resets the link and one new frame appears, then the same stall again. The older `xe.enable_psr=0` knob does NOT cover Panel Replay; they are distinct parameters (see `modinfo xe`).

### Fix

One kernel argument:

```
xe.enable_panel_replay=0
```

### Bisection

| Cmdline delta | Result |
| --- | --- |
| default | stall at every layer |
| `nomodeset` | works via simpledrm (workaround only) |
| `xe.enable_dc=0` | no effect |
| `xe.enable_dc=0 xe.enable_fbc=0 xe.enable_psr=0 xe.enable_panel_replay=0 xe.enable_psr2_sel_fetch=0 xe.enable_dmc_wl=0` | works |
| **`xe.enable_panel_replay=0` alone** | **works — confirmed minimal fix** |

Working-boot state with `xe.enable_panel_replay=0` alone: `xe` bound to `/sys/bus/pci/drivers/xe`, `card0-eDP-1 connected enabled 2880x1800`, `intel_backlight` exposed, Hyprland healthy (watchdog attached), zero DRM errors or warnings in dmesg.

xe init log excerpt (clean):

```
xe 0000:00:02.0: [drm] Found pantherlake (device ID b080) integrated display version 30.00 stepping B0
xe 0000:00:02.0: [drm] Finished loading DMC firmware i915/xe3lpd_dmc.bin (v2.33)
xe 0000:00:02.0: [drm] Tile0: GT0: Using GuC firmware from xe/ptl_guc_70.bin version 70.60.0
xe 0000:00:02.0: [drm] Tile0: GT1: Using HuC firmware from xe/ptl_huc.bin version 10.3.3
[drm] Initialized xe 1.1.0 for 0000:00:02.0 on minor 0
fbcon: xedrmfb (fb0) is primary device
```

### Proposed Omarchy integration

Mirrors the existing `omarchy-hw-dell-xps-oled` / `migrations/1776781956.sh` pattern (which already mentions Panel Replay in the Dell XPS context). Two scoping options:

1. **Narrow**: match ASUS vendor + `product_name=ASUS EXPERTBOOK B9406CAA`. Only affects this exact model.
2. **Broader**: match ASUS vendor + Panther Lake (via `omarchy-hw-intel-ptl`). Applies on any ASUS PTL laptop — safer for forward compat with related ExpertBook SKUs, at the cost of applying on ASUS PTL machines that may not need it.

Either adds:

- `bin/omarchy-hw-asus-expertbook-ptl` (or broader) — DMI match script
- `install/config/hardware/intel/ptl-panel-replay.sh` — drops `/etc/limine-entry-tool.d/asus-panel-replay.conf` appending `KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"` and runs `limine-update`, same shape as `ptl-kernel.sh`

I'd be happy to open a PR.

### Secondary: touchpad (separate upstream bug — NOT Omarchy's fault)

The internal Pixart `093A:4F05` touchpad (ASUS ACPI `ASCP1D80`) works perfectly at kernel level. `evtest /dev/input/event9` captures 3938 events in 20 seconds of active use with proper `ABS_MT_POSITION_X/Y`, pressure, tracking IDs, multi-touch slots up to 5 contacts, 126x84mm @ ~31.5 units/mm.

libinput 1.31.1 silently drops every motion event with:

```
event9 - ASCP1D80:00 093A:4F05 Touchpad: kernel bug: Touch jump detected and discarded.
```

`BTN_LEFT` presses pass through — clicks on the pad register — but pointer motion does not. Kernel deltas are 0.06–0.86mm per poll, well below libinput's 20mm jump threshold, so this is a libinput false positive. The device is missing from `/usr/share/libinput/30-vendor-pixart.quirks` (has `0255`, `0274`, `1336` but not `4F05`).

Filing upstream at freedesktop separately. Mentioned here because other B9406 owners will hit it; a Bluetooth/USB mouse is an acceptable short-term workaround.

---

Here is Claude Code report about how we got Touchpad working.

---

Update: also got the touchpad working.

libinput 1.31.1 was discarding every motion event from this pad with `kernel bug: Touch jump detected and discarded`. The kernel path was fine — evtest showed proper Precision Touchpad reports with full `ABS_MT_*` and multi-touch slots. The trigger is that this pad reports `ABS_PRESSURE`/`ABS_MT_PRESSURE` values of 0–1 (very low), which appears to confuse libinput's contact stability check and drive a false-positive on jump detection. Masking the pressure axes fixes it — same pattern as the existing `Asus UX302LA` entry in libinput's shipped `50-system-asus.quirks`.

**Fix**: create `/etc/libinput/local-overrides.quirks` with:

```
[ASUS ExpertBook B9406CAA Touchpad]
MatchBus=i2c
MatchUdevType=touchpad
MatchVendor=0x093A
MatchProduct=0x4F05
MatchDMIModalias=dmi:*svnASUS*:pn*B9406*
AttrEventCode=-ABS_MT_PRESSURE;-ABS_PRESSURE;
```

Then log out + log back in (or reboot) so Hyprland's libinput context reloads the quirks. Aquamarine does not re-read quirks on device hot-remove/add in a live session — a full compositor restart is required.

**Result after reboot**: motion, clicks, two-finger scroll, tap-to-click all work normally. Confirmed on my box.

**Trade-off**: libinput loses pressure-based palm rejection for this pad. Fine in practice on this laptop; clickpad mechanics carry the weight.

**Proper upstream fix**: this entry belongs in libinput's `30-vendor-pixart.quirks` (where `093A:0255`, `093A:0274`, `093A:1336` already live — `093A:4F05` just isn't listed yet). I'll PR it at gitlab.freedesktop.org/libinput/libinput so it ships with the library instead of needing a local override.

**Omarchy integration**: the same `omarchy-hw-asus-expertbook-ptl` hook I proposed for the display fix could drop this quirks file too. Both fixes in one PR if that's easier.


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.