[Bug 300049] [acpi_asus_wmi] Multiple ACPI errors on boot - Asus ProArt and Vivobook / Keyboard in OOBE mode

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 25 Oct 2026 19:04:25 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=300049

            Bug ID: 300049
           Summary: [acpi_asus_wmi] Multiple ACPI errors on boot - Asus
                    ProArt and Vivobook / Keyboard in OOBE mode
           Product: Base System
           Version: 15.1-STABLE
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: as400@smail.net.pl

1. When booting newer Asus laptops 2023+ there are multiple ACPI errors:


Firmware Error (ACPI): AE_AML_BUFFER_LIMIT, Field [IIA3] at bit offset/length
96/32 exceeds size of target Buffer (96 bits)


The problem is that acpi_asus_wmi driver fails to load correctly. WMI method
invocation buffer size is 3 dwords, whereas
5 are expected by the models I mentioned (Linux asus_wmi does 6, I think for
TUF gaming models). DSDT fragment from ProArt PX13 below:


Method (WMNB, 3, Serialized)
            {
                CreateDWordField (Arg2, Zero, IIA0)
                CreateDWordField (Arg2, 0x04, IIA1)
                CreateDWordField (Arg2, 0x08, IIA2)
                CreateDWordField (Arg2, 0x0C, IIA3)
                CreateDWordField (Arg2, 0x10, IIA4)
                Local0 = (Arg1 & 0xFFFFFFFF)





2. New Asus laptop models have this OOBE mode when cold booted. Meaning that
until instructed to stop the keyboard will blink constantly and keyboard
backlight doesn't work. So one has to boot Windows first and then reboot to
FreeBSD. I've taken below code from Linux asus-wmi driver and put it before
keyboard initialization and it works :


> 	/*
> 	 * Check for OOBE state presence on this machine.
> 	 * If supported by the firmware, write an override state to turn it off.
> 	 */
> 	sc->oobe_state_available = false;
> 	if (acpi_wpi_asus_get_devstate(sc, ASUS_WMI_DEVID_OOBE, &val) == 0) {
> 		if ((val & ASUS_WMI_DSTS_PRESENCE_BIT) != 0) {
> 			sc->oobe_state_available = true;
> 			acpi_wpi_asus_set_devstate(sc, ASUS_WMI_DEVID_OOBE, 1, NULL);
> 			if (bootverbose) {
> 				device_printf(dev, "Disabled ASUS hardware OOBE state\n");
> 			}
> 		}
> 	}

-- 
You are receiving this mail because:
You are the assignee for the bug.