Skip to content

Commit a34b171

Browse files
committed
Add ASUS ExpertBook B9406 display and touchpad fixes for Panther Lake
1 parent 0041950 commit a34b171

5 files changed

Lines changed: 73 additions & 0 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
# Detect ASUS ExpertBook B9406 series laptops on Intel Panther Lake.
4+
5+
omarchy-hw-match "B9406" && omarchy-hw-intel-ptl

install/config/all.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ run_logged $OMARCHY_INSTALL/config/hardware/intel/fix-wifi7-eht.sh
4747

4848
run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-haptic-touchpad.sh
4949

50+
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-b9406-display.sh
51+
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-b9406-touchpad.sh
5052
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-audio-mixer.sh
5153
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-mic.sh
5254

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Display fixes for ASUS ExpertBook B9406 (Panther Lake / Xe3 iGPU).
2+
#
3+
# Panel Replay is Xe3-new, default-on in the xe driver, and has a broken
4+
# exit/wake path on this eDP panel: the panel latches the last-presented
5+
# frame in self-refresh and never wakes for subsequent atomic commits, so
6+
# the screen only updates on a full modeset (e.g. a VT switch). The older
7+
# xe.enable_psr=0 knob does not cover Panel Replay.
8+
#
9+
# The panel's EDID on eDP-1 reads as empty, so xe takes backlight type from
10+
# VBT (which says PWM) but the panel actually wants DPCD AUX backlight.
11+
# Without xe.enable_dpcd_backlight=1, intel_backlight sysfs writes succeed
12+
# but produce no visible change; brightness is effectively binary.
13+
14+
if omarchy-hw-asus-expertbook-b9406; then
15+
sudo mkdir -p /etc/limine-entry-tool.d
16+
cat <<EOF | sudo tee /etc/limine-entry-tool.d/asus-expertbook-b9406-display.conf >/dev/null
17+
# ASUS ExpertBook B9406 (Panther Lake / Xe3) display workarounds
18+
KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"
19+
KERNEL_CMDLINE[default]+=" xe.enable_dpcd_backlight=1"
20+
EOF
21+
fi
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Touchpad quirks for ASUS ExpertBook B9406 (Pixart 093A:4F05 on i2c-hid).
2+
#
3+
# The kernel produces perfect Precision Touchpad reports but libinput's
4+
# jump-detection heuristic discards every motion event as "kernel bug:
5+
# Touch jump detected and discarded" because the pad reports pressure
6+
# values of 0-1, confusing the contact stability check. Button events
7+
# still pass, so clicks register but motion does not.
8+
#
9+
# Mask the pressure axes with a quirks override, same pattern as the
10+
# Asus UX302LA entry in libinput's shipped 50-system-asus.quirks.
11+
12+
if omarchy-hw-asus-expertbook-b9406; then
13+
sudo mkdir -p /etc/libinput
14+
sudo tee /etc/libinput/asus-expertbook-b9406.quirks >/dev/null <<EOF
15+
[ASUS ExpertBook B9406 Touchpad]
16+
MatchBus=i2c
17+
MatchUdevType=touchpad
18+
MatchVendor=0x093A
19+
MatchProduct=0x4F05
20+
MatchDMIModalias=dmi:*svnASUS*:pn*B9406*
21+
AttrEventCode=-ABS_MT_PRESSURE;-ABS_PRESSURE;
22+
EOF
23+
fi

migrations/1777040047.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
echo "Apply display and touchpad fixes for ASUS ExpertBook B9406 (Panther Lake)"
2+
3+
source "$OMARCHY_PATH/install/config/hardware/asus/fix-asus-ptl-b9406-display.sh"
4+
source "$OMARCHY_PATH/install/config/hardware/asus/fix-asus-ptl-b9406-touchpad.sh"
5+
6+
if omarchy-hw-asus-expertbook-b9406; then
7+
DROP_IN="/etc/limine-entry-tool.d/asus-expertbook-b9406-display.conf"
8+
DEFAULT_LIMINE="/etc/default/limine"
9+
10+
# Keep /etc/default/limine in sync with the drop-in. Install-time this is
11+
# handled by install/login/limine-snapper.sh; migrations have to do it
12+
# themselves. Idempotent: skip if the drop-in's header comment is already
13+
# present (a unique-to-this-drop-in marker, so it doesn't collide with
14+
# manual cmdline tweaks a user may have made).
15+
HEADER='# ASUS ExpertBook B9406 (Panther Lake / Xe3) display workarounds'
16+
if [[ -f $DROP_IN && -f $DEFAULT_LIMINE ]] && \
17+
! grep -Fxq "$HEADER" "$DEFAULT_LIMINE"; then
18+
sudo tee -a "$DEFAULT_LIMINE" >/dev/null < "$DROP_IN"
19+
fi
20+
21+
sudo limine-update
22+
fi

0 commit comments

Comments
 (0)