Skip to content

Fix Acer Aspire Go 15 internal keyboard dropout - #10519

Open
baseman70 wants to merge 1 commit into
omacom:quattrofrom
baseman70:fix/acer-aspire-keyboard
Open

Fix Acer Aspire Go 15 internal keyboard dropout#10519
baseman70 wants to merge 1 commit into
omacom:quattrofrom
baseman70:fix/acer-aspire-keyboard

Conversation

@baseman70

@baseman70 baseman70 commented Sep 6, 2026

Copy link
Copy Markdown

Summary

On the Acer Aspire Go 15 (AG15-42P, Ryzen 7 7730U), the internal keyboard drops out ~5 seconds post-boot under both Linux and Linux-LTS kernels. The trackpad and external USB keyboards continue functioning, but keystrokes on the built-in keyboard stop registering due to an i8042 / atkbd ACPI conflict with acer-wmi.

Adding i8042.reset atkbd.reset acpi_osi=Linux to the kernel command line resolves the conflict and keeps the internal keyboard responsive.

Implementation Details

  1. Hardware Detector: Added bin/omarchy-hw-acer-aspire-go-15 checking sys_vendor for Acer and matching Aspire AG15-42P / Aspire Go 15 via omarchy-hw-match. Uses OMARCHY_DMI_SYS_VENDOR for testability.
  2. Hardware Leaf: Added install/hardware/acer/fix-aspire-keyboard.sh to install /etc/limine-entry-tool.d/acer-aspire-keyboard.conf with KERNEL_CMDLINE[default]+=" i8042.reset atkbd.reset acpi_osi=Linux".
  3. Hardware Orchestration: Registered the leaf in install/hardware/all.sh.
  4. Migration: Added migrations/1788707260.sh to apply the drop-in, rebuild Limine boot configuration via limine-update / limine-mkinitcpio, and mark reboot-required if the parameters are not already active in /proc/cmdline.
  5. Automated Tests: Added test/shell.d/acer-aspire-keyboard-test.sh covering detection, case-insensitivity, fail-closed behavior on missing attributes, leaf drop-in creation and idempotency, migration limine-mkinitcpio fallback, failure propagation, and reboot-request gating.

Verification

  • Tested locally on physical Acer Aspire Go 15 AG15-42P hardware (running Omarchy 4.0.2 with kernel 7.1.9): internal keyboard is fully operational.
  • Verified ./test/cli passes all 70 checks (including commands --check).
  • Verified ./test/shell.d/acer-aspire-keyboard-test.sh passes all 17 test assertions.

The internal keyboard on the Acer Aspire Go 15 (AG15-42P) stops
responding ~5 seconds post-boot due to an i8042/atkbd ACPI conflict with
acer-wmi. Appending i8042.reset, atkbd.reset, and acpi_osi=Linux to the
kernel command line resolves the conflict and keeps the controller
responsive.

Add a hardware detector for Acer Aspire Go 15 models, install a Limine
drop-in configuration to persist the kernel parameters across bootloader
updates, register the step in install/hardware/all.sh, provide a
migration for existing installations, and add test coverage.
@baseman70
baseman70 force-pushed the fix/acer-aspire-keyboard branch from 2c6687d to 37b572f Compare September 6, 2026 17:45
@baseman70

Copy link
Copy Markdown
Author

Added 5 additional automated test cases to test/shell.d/acer-aspire-keyboard-test.sh (expanding the suite to 17 assertions, all passing):

  • Missing attribute fail-closed: Verified omarchy-hw-acer-aspire-go-15 returns non-zero when /sys/class/dmi/id/sys_vendor is absent.
  • Case-insensitivity: Verified vendor matching succeeds across casing variants (Acer / ACER).
  • Leaf idempotency: Verified running fix-aspire-keyboard.sh repeatedly does not duplicate configuration lines or corrupt the drop-in.
  • Bootloader fallback: Verified migration falls back to limine-mkinitcpio when limine-update is absent.
  • Failure propagation & retry semantics: Verified that if the bootloader rebuild command fails, the migration halts and leaves reboot-required unset so the migration remains pending to retry on the next update.

All 17 checks in test/shell.d/acer-aspire-keyboard-test.sh and all 70 checks in test/cli pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant