Files

20 lines
1.1 KiB
Nix
Raw Permalink Normal View History

{...}: {
flake.nixosModules.t480UsbWakeup = {...}: {
services.udev.extraRules = ''
# Wake the T480 from S3 suspend via a keyboard plugged into a built-in USB
# port. The dock connects over the Thunderbolt-3 controller (3c:00.0), which
# powers down in S3 and cannot detect a cold replug — so dock-connected input
# cannot wake the machine after an unplug-triggered suspend. The built-in xHCI
# (00:14.0) stays wake-capable in S3, so a keyboard on a built-in port works.
#
# Arm ONLY the keyboard itself (match by VID:PID — the USB bus path is
# unstable across re-enumeration). Deliberately do NOT arm the built-in root
# hubs: arming a whole root hub makes it wake on hub-level events (USB-C PD
# negotiation, the SD card reader, internal peripherals), causing spurious
# self-wakes. A leaf device's remote-wakeup propagates through the hub without
# the hub's own wakeup flag being set.
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="320f", ATTR{idProduct}=="5055", ATTR{power/wakeup}="enabled"
'';
};
}