Hello,
I’m seeking help diagnosing a reproducible discrepancy between the
EC’s reported PD firmware version and the versions read directly from
the PD controllers. I have also experienced an unresponsive touchpad,
although I have not established that the two problems share a cause.
My goal is to keep this laptop reliable and correctly configured. I
depend on it for job applications and interviews, so I would
appreciate a supported diagnostic and recovery sequence that minimizes
downtime.
System and current condition
Measurements below were collected today (10th September 2026).
| Component | Details |
|---|---|
| Laptop | Framework Laptop 16, AMD Ryzen 7040 Series, mass-production mainboard |
| OS | NixOS, GNOME/Wayland |
| Current kernel | 7.2.4; touchpad failures also occurred on 7.2.3 |
| BIOS | 04.05, release date reported by firmware: 06/30/2026 |
| EC RO and RW versions | Both lotus-4.0.5-2246d58 |
| EC build | 2026-06-26 03:39:05 |
| Executing EC image | RO |
| ISO keyboard firmware | 0.3.1 |
| Touchpad firmware | v0905 |
| Diagnostic tool | framework_tool 0.6.3 |
The machine currently boots into the desktop, and touchpad movement,
clicking and two-finger scrolling work. I have not established lasting
recovery.
Boot warning and reproducible discrepancy
After shutting down and starting the laptop, a full-screen preboot
warning displayed:
Please manually reinstall the BIOS to update PD1 firmware.
Currently: 2.0.0C. Expected: 0.0.21.
It included a QR code and allowed me to continue with a short press of
the power button. I continued.
Later in the running system, the EC’s two supported reporting
protocols returned:
$ sudo framework_tool --host-command 0x3e11 1
Response (17 bytes):
00000000: 0200 0000 0018 020c 2097 0100 3762 6e21 ........ ...7bn!
00000010: 00 .
$ sudo framework_tool --host-command 0x3e11 0
Response (16 bytes):
00000000: 0000 0000 1802 0c20 9701 0037 626e 2100 ....... ...7bn!.
Version 1 contains a controller count of two followed by the same 16
bytes returned by version 0. Using Framework’s
decoder,
the first controller’s application version decodes to 2.0.0C,
exactly matching the warning; the second decodes to 0.0.21.
However, sudo framework_tool --pd-info, run immediately after the
version-1 query, returned:
Right / Ports 01
Silicon ID: 0x3580
Mode: MainFw
Flash Row Size: 256 B
Ports Enabled: 0, 1
Bootloader Version: Base: 3.6.0.009, App: 0.0.01
FW1 (Backup) Version: Base: 3.7.0.197, App: 0.0.21
FW2 (Main) Version: Base: 3.7.0.197, App: 0.0.21
Left / Ports 23
Silicon ID: 0x3580
Mode: MainFw
Flash Row Size: 256 B
Ports Enabled: 0, 1
Bootloader Version: Base: 3.6.0.009, App: 0.0.01
FW1 (Backup) Version: Base: 3.7.0.197, App: 0.0.21
FW2 (Main) Version: Base: 3.7.0.197, App: 0.0.21
Back
Failed to read Silicon ID/Family
Earlier repeated --versions and --pd-info queries also reported
0.0.21 for both side controllers. That is the PD version listed in
the BIOS 4.05 release
notes.
Touchpad symptoms and other diagnostics
The touchpad previously became completely unresponsive. This completed
successfully but did not restore it:
sudo modprobe -r i2c_hid_acpi && sudo modprobe i2c_hid_acpi
During the failure period, the kernel recorded:
i2c_hid_acpi i2c-PIXA3854:00: failed to set a report to device: -121
i2c_hid_acpi i2c-PIXA3854:00: failed to change power setting
For transparency, my NixOS configuration includes a custom touchpad
watchdog that can reload i2c_hid_acpi. Consequently, some driver
reinitializations in the logs were initiated by that watchdog.
After recovery, with the lid physically open, --inputdeck reported:
Chassis Closed: true
Input Deck State: On
Touchpad present: true
SLEEP# GPIO high: true
Positions:
Pos 0: GenericC
Pos 1: KeyboardA
Pos 2: Disconnected
Pos 3: Disconnected
Pos 4: GenericC
The current boot also contained UCSI errors, including UCSI_GET_PDOS failed (-95). I have not established a connection between these
errors, the touchpad and the PD-version discrepancy.
ectool successfully communicated with the EC and reported:
EC uptime: 2757.560 seconds
AP resets since EC boot: 0
EC reset flags at last EC boot: power-on | hibernate
Command 0x3e11 supports version mask 0x00000003
Port-80 history repeatedly alternated F90D and F90E, interspersed
with F022/F028. I have no authoritative interpretation of those
codes.
One boot also entered initrd emergency mode. Journal inspection showed
unsuccessful encrypted-volume unlock attempts followed by a
root-device timeout; unlocking subsequently succeeded. I am treating
that separately rather than assuming firmware caused it.
Source-level lead, not a confirmed root cause
The published input-module warning
implementation
uses this EC version-reporting path to generate the warning.
An earlier public EC revision’s
cypd_get_version()
logs a failed version-register read but still copies from its
uninitialized local buffer into the stored version record. Could this
explain the discrepancy?
I have not verified that this implementation exists in my
installed 2246d58 build, nor captured a boot-time
READ_ALL_VERSION_REG failed message. Both protocol versions
returning the same bad record suggests the issue is not limited to
version-1 response formatting, but does not identify the underlying
defect.
What I’m asking Framework
- Is this a known EC version-reporting or PD-initialization issue?
What additional evidence would distinguish invalid stored version
data from a controller or hardware fault? - What exact recovery procedure do you recommend: a particular
power-reset sequence, BIOS 4.05 reinstallation using a specified
method, or another action? What should I capture first, and how
should I verify lasting recovery? - Could the touchpad failure be related, or should I investigate it
separately, including testing without my watchdog? If the symptoms
persist after the supported recovery procedure, what findings would
warrant hardware inspection or replacement?
I’m requesting diagnostic and repair guidance first. I’m willing to
provide further logs and perform controlled tests, and would like
advice on whether this should also become a firmware-tracker issue or
a private hardware-support case.
Thanks,
X