Hi all, sorry I was on long holidays so couldn't test above solutions
until now.

So as my original message says, I am on the board 8D9F (OmniBook X Flip
14). Analysis confirms same issue as the 16Inch variant : same faulty
PTPL._ON, ACPI table fix passes.

Waqar asked in perryFile issue #2 and in the README whether the Flip 14
shares the firmware bug. It does. Full confirmation below, including the
decompiled _ON, so 8D9F can go into the DMI list.

Hardware / software
  model     : HP OmniBook X Flip Laptop 14-fm0xxx
  board     : 8D9F
  bios      : F.08  08/18/2025
  digitizer : ELAN2514:00 04F3:442A
  acpi path : \_SB.PC00.I2C4.TPL1          (same scope as the 16")
  distro    : CachyOS, kernel 7.2.9-1-cachyos, mkinitcpio
  secureboot: disabled, lockdown [none]

Before the fix
  pad       : pin 44 (GPP_E_18) 44:INTC105D:01 GPIO 0x80000102 0x0000006c
  routing   : GPIROUTIOXAPIC = 0
  idle IRQ  : 628/s on IRQ 108 (hands off the screen)
  dmesg     : i2c_hid_get_input: incomplete report (67/5631), repeated

Same pad, same PADCFG0 value as the 16". The faulty method is byte-identical,
in \_SB.PC00.I2C4 (iasl output):

    PowerResource (PTPL, 0x00, 0x0000)
    {
        Method (_ON, 0, NotSerialized)
        {
            ADBG (Concatenate ("Touch PWR ON I2C controller= ", ToHexString 
(I2CI)))
            \_SB.SGOV (TPPE, TPEP)
            Sleep (0x02)
            \_SB.SGOV (TPPR, TPRP)
            ONTM = Timer
            \_SB.SGRA (TPI2, TPIP)          // TPIP = T0IP = 0 -> routing off
        }
        Method (_OFF, 0, NotSerialized)
        {
            ...
            Local0 = (TPIP ^ One)
            \_SB.SGRA (TPI2, Local0)        // -> routing on
            ...
        }
    }

with, in the same scope: TPIP = T0IP, TPI2 = GPLI. Exactly the inversion you
described for 8DA0/8DA1.

After the ACPI table fix (26 override tables, fix in firmware SSDT entry 25)
  pad       : pin 44 (GPP_E_18) 44:INTC105D:01 GPIO 0x80100102 0x0000006c
  idle IRQ  : 0/s
  incomplete report since boot : 0

  $ sudo hp-touch-irq-fix verify
  overrides applied : 26 (expected 26)
  routing bit       : 1 (want 1)
  idle IRQ rate     : 0/s (want ~0; hands off the screen)
  duplicate objects : none
  RESULT: PASS

Suspend/resume (s2idle, rtcwake -m mem -s 20): routing bit still 1, 0 IRQ/s
after resume, no new ACPI or i2c-hid errors. verify still PASS afterwards.
Stylus is smooth, and touch no longer dies after sustained pen use.

I also diffed every ACPI error line against the previous (unfixed) boot from
the persistent journal: the override introduces no new ACPI error.

Request for the kernel patch
Could 8D9F be added to i2c_hid_acpi_irq_route_dmi in the next revision? As
posted it only matches 8DA0/8DA1, so the 14" would stay broken even once the
patch is merged:

     {
            .matches = {
                    DMI_MATCH(DMI_SYS_VENDOR, "HP"),
    +                DMI_EXACT_MATCH(DMI_BOARD_NAME, "8D9F"),
    +        },
    +    },
    +    {
    +        .matches = {
    +                DMI_MATCH(DMI_SYS_VENDOR, "HP"),
                    DMI_EXACT_MATCH(DMI_BOARD_NAME, "8DA0"),
            },
     },

Happy to supply a Tested-by: line for the ACPI table fix on 8D9F, and to test
the kernel patch itself on this board if that helps.

Two notes that may be useful
1) This firmware has a second PTPL with the same inverted _ON, in
   \_SB.PC00.I2C5. On this board it is dead code: it is guarded by
   If (TPLT != Zero) / If (TPLS == One) and refers to \_SB.PC00.I2C5.TPL1,
   which does not exist here - that is the source of the pre-existing
   "Could not resolve symbol [\_SB.PC00.I2C5.TPL1]" boot message, unrelated
   to the fix. The tool correctly scopes to I2C4 only; I verified it does not
   touch the I2C5 copy.
2) The tool crashes on CachyOS before copying the .aml files. The
   cachyos-hooks package ships /usr/bin/update-initramfs while
   /etc/initramfs-tools/ does not exist, so cmd_install takes the
   initramfs-tools branch and dies on FileNotFoundError, leaving mkinitcpio
   with an empty /etc/initcpio/acpi_override and "No ACPI table override
   files found!". Details and a one-line fix in a GitHub issue on the repo.

For marcingadziala17 (comment #36): your 04F3:4430 on a 14-fm is very likely
this same firmware bug, and the perryFile/BitSlice32 frame-salvage patch does
not address it. Run:
  cat /sys/class/dmi/id/board_name /sys/class/dmi/id/bios_version
  grep ELAN /proc/interrupts; sleep 1; grep ELAN /proc/interrupts
If the ELAN count rises by several hundred in that one second, use Waqar's
ACPI table fix instead. On CachyOS, see note 2 above.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2142384

Title:
  ELAN2514:00 (04F3:4428) stylus report rate extremely low (~10–25 Hz)
  on Ubuntu 24.04 kernel 6.17

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2142384/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to