watchthelight labs

Touchpad gives no input after Windows + warm restart (ELAN06FA not switched to PTP mode); cold start fixes it #3

openarea:inputkind:bugseverity:highfound-by:featuretest
watchthelight 2026-10-19

Twice now the touchpad has given no input for a whole boot although the stack loads and registers (VoodooI2CHIDDevice, VoodooI2CPrecisionTouchpadHIDEventDriver, VoodooI2CMultitouchInterface; VoodooI2C 2.9.1, polling mode -vi2c-force-polling):

  • N-85 (2026-10-16), after a forced power-off;
  • N-169 (2026-10-19 08:43), the first macOS boot after a Windows session.

An IOHIDManager listener counts 0 reports over 10 s while a finger moves. A USB mouse works. Tracker I-050. Suspect: the I2C HID device (or its controller) is left in a state that VoodooI2C does not reset on start (no HID reset / power-on command, or the LPSS I2C controller keeps a stale state after Windows or a hard power-off). Next: compare the I2C controller and HID power state in ioreg between a good and a bad boot, and check whether VoodooI2CHID sends SET_POWER ON + RESET before reading descriptors.

watchthelight 2026-10-19

Also no input after a normal restart from macOS (N-170, 2026-10-19 08:58), so it is not only state left behind by Windows. The ELAN06FA (I2C address 0x15) still answers enumeration (its HID descriptor is read every boot), but no input reports arrive. Note: the laptop fell off a bed the night before (Bash). Open questions: does the touchpad work in Windows or the firmware setup, and is the Lenovo touchpad on/off hotkey toggled?

watchthelight 2026-10-19

The touchpad works in the firmware setup (Bash, 09:05), so the hardware survived the fall. Boot logs (bootdump, /Users/Shared/legion-diag): the working boot N-168 logs VoodooI2CPrecisionTouchpadHIDEventDriver::ELAN06FA Putting device into Precision Touchpad Mode and AppleMultitouchTrackpadHIDEventDriver start at about 10.7 s. The dead boots of 2026-10-19 (after a Windows session, then two warm restarts) never log the PTP mode switch, although the stack attaches. Leading theory: the ELAN controller stays in a mode Windows left it in (or its Input Mode feature report is never accepted), and a warm restart does not power-cycle it. Next test: a cold power-off. Fix candidate: send SET_POWER ON + RESET and retry the Input Mode (0x03) feature report until it sticks.

watchthelight 2026-10-19

Confirmed (N-171, 2026-10-19 09:22): a cold power-off (shut down, wait about 10 s, power on) brings the touchpad back. This boot logs ELAN06FA Putting device into Precision Touchpad Mode at 25 s, which none of the dead boots logged.

So: after a Windows session (and through any number of warm restarts) the ELAN06FA keeps a state in which VoodooI2C's PTP mode switch does not happen; a power cycle resets it. Workaround until fixed: shut down instead of restarting after using Windows.

Fix to build: on start, send the I2C HID SET_POWER ON and RESET commands and wait for the reset response before reading descriptors, then retry the Input Mode (0x03) feature report until it is acknowledged; log each step so a dead boot shows where it stopped.

Reply on GitHub