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

Reply via email to