Repository navigation
fix(firmware): stop comparing receiver bootloader ids against the manifest - #1225
Merged
Merged
Conversation
…ifest The 0xF1 receiver readout is a per-MCU bootloader identifier (proven static across a real 14.3.19 -> 14.4.20 app flash), not a firmware version. FirmwareCard fed it to getDfuInfo() as the current version, which matched the receiver's DFU package (e.g. c547_dfu@4.2.9) and reported "v2.0.9 -> v4.2.9, update available" on receivers that are already current — Logitech's own page lists 4.2.9 as the installed receiver firmware on the PRO X SUPERLIGHT 2 SE. The receiver row is now an informational readout (bootloader identity, labeled as such) and produces no dfuInfo, so the update pill, badge, dismissal and download actions are driven by the mouse itself only. Fixes #1111
Contributor
|
Caution Review failedThe pull request is closed. Finishing Touches
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Logitech devices paired with a Lightspeed receiver reported a false firmware update: the card showed "v2.0.9 → v4.2.9, update available" for the receiver while Logitech's own PRO X SUPERLIGHT 2 SE page listed the receiver as 4.2.9 and up to date (issue #1111, two screenshots included there).
Root cause
sweepReceiverRegister()reads HID++ register0xF1per-MCU over the receiver's own interface and formats the raw payload asx.y.z. Those bytes are per-MCU bootloader identifiers, not app firmware versions — already proven in this repo: a full G HUB flash (14.3.19 → 14.4.20) left them byte-identical, and the first payload byte is literally the MCU index (mcu=1 -> 01 07 02,mcu=2 -> 02 00 09). Despite that documented invariant,FirmwareCard.tsxbuilt aFirmwareDeviceRefaround it and ran it throughgetDfuInfo(). The readout matched the receiver's DFU package entry by interfaceId (c547_dfu@4.2.9), andcompareVersions("2.0.9", "4.2.9") < 0produced the false "update available" verdict, badge, medication-free "Later" dismissal and download button.Fix
dfuInfoor any version verdict. The MCU readouts are shown as an informational row, labeled for what they are (fw.receiverMcu: "MCU {mcu} bootloader {value}"), with a note that OpenMouse cannot read the receiver's app firmware version yet so no update check runs for it.fw.receiverIdentityandfw.receiverMcuwere added tosrc/i18n/index.tsand all 12 locale files (translated, not English placeholders).Scope note
WebHID cannot reach the receiver's app firmware version yet (G HUB reads it through its agent service). When an honest source lands, the receiver row can regain a real verdict against the same manifest entries — until then, unknown stays unknown per
DESIGN.md.Checks
npm run build✓npm test— 403 pass ✓npm run size✓ (CSS 92%, JS 99% of budget)Fixes #1111
Note
Remove receiver bootloader ID comparison against firmware manifest
FirmwareCard: no more update badges, DFU downloads, or dismissal state for receiver MCUs. Update status now depends only on the mouse.Macroscope summarized 8391905.