Public bug reported:
Considering that the deb2snap work is ongoing, a full update of fwupd is
unlikely. So I'd like to SRU some quirks to enable fwupd to work with
Pixart touchpads such as `093A:4F01`.
I'll fill this bug with more info.
The target is resolute, which currently ships 1.2.1. Now the SRU
template happens:
[Impact]
* fwupd 2.1.1 in Resolute, 2.1.6 in sotnking do not recognise four PixArt
touchpad product IDs: `HIDRAW\VEN_093A&DEV_4F01`, `4F02`, `4F0D`, `4F0E`. On
laptops with these the `pixart_tp` plugin never binds, so the device is
absent
from `fwupdmgr get-devices` and cannot be updated using fwupd.
* The enablement is a quirk-file addition: four new `[HIDRAW\...]` stanzas
mapping the PIDs to the existing `pixart_tp` plugin. No new code paths
or GTypes. Backported from `ec8e62c0a`.
* Three further upstream commits are included for resolute, because enabling
the PIDs makes the `pixart_tp` write path reachable and that path has three
integer in 2.1.1:
- `dab8aa782` — erase-loop counter in `fu_pixart_tp_device_write_section()`
is a `guint8` compared against a `guint` chunk count; wraps past 256.
- `061b3481b` — flash sector index cast to `guint8` with no range check, so a
target flash start beyond 1 MB silently wrapped and erased the wrong
sector. Widened to `guint` with an explicit `sector > G_MAXUINT8` check.
- `35679d37b` — matching chunk-count guard in
`fu_pixart_tp_device_write_sector()`.
[Test Plan]
Requires hardware with a 093A:{4F01,4F02,4F0D,4F0E} touchpad.
Before the proposed version the touchpad is absent from
`sudo fwupdmgr get-devices --show-all`, and
`sudo fwupdtool get-devices --plugins=pixart_tp --verbose` shows no device
claimed by the plugin.
After updating to the proposed version the touchpad is listed, handled by
`pixart_tp`,
with a firmware version and the GUID for its PID:
| PID | GUID |
| ---- | ------------------------------------ |
| 4F01 | 1c8ab7e8-eb64-5729-9084-d2f3039fbc88 |
| 4F02 | 1c9157be-a59b-5fac-82b7-2b51701888a5 |
| 4F0D | 4827c4ca-8a12-591f-8869-8357571170df |
| 4F0E | f2cf3818-3c12-54b0-964c-d9b94e632479 |
Testing the write path is currently not possible, because there is yet no
update available on LVFS.
[Where problems could occur]
* An error in the quirk file could lead to failing to parse and not detect any
pixart touchpads anymore.
* A new error for all PixArt touchpads.
`fu_pixart_tp_device_flash_erase_sector()` now returns
`FWUPD_ERROR_INVALID_DATA` where it previously truncated silently. If a
device
legitimately addresses at or above 1 MB, `fwupdmgr install` now can fail with
"sector 0x... exceeds maximum". This can show up on the old devices.
[Other Info]
* Upstream commits:
- `ec8e62c0a4c50758adb43c4faac8b0baab28cde1` - Add PID 4F01, 4F02, 4F0D,
4F0E - 2.1.8
- `dab8aa7820aa09fa53922630832a6c986ee1887c` - Use guint for chunk iteration
- 2.1.2
- `061b3481bafe846bc86737702b00f733b09712bc` - Fix sector index truncation -
2.1.2
- `35679d37b0dbe7d69ba3b163a090d9c38adf7f32` - Fix narrow/wide comparison -
2.1.3
* hardening is bundled with a quirks-only SRU, because the defects are only
reachable once a write is attempted, and this SRU is what makes writes
possible on this hardware.
* note on `061b3481b`. Upstream also modifies
`fu-pixart-tp-plp239-device.c`, which does not exist in 2.1.1 (added later by
`2535bbfcd`). Those chunks are dropped. This is documented in the patch
header.
** Affects: fwupd (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2169954
Title:
[SRU] enable Pixart touchpads
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/fwupd/+bug/2169954/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs