Skip to content

Verify local firmware using uploaded image metadata - #302

Open
TobiasRoeddiger wants to merge 1 commit into
mainfrom
codex/fix-local-firmware-verification
Open

TobiasRoeddiger wants to merge 1 commit into
mainfrom
codex/fix-local-firmware-verification

Conversation

@TobiasRoeddiger

@TobiasRoeddiger TobiasRoeddiger commented Sep 27, 2026 •

Copy link
Copy Markdown
Member

A successful local update from OpenEarable-2.2.9-validation-e22638ad.zip was reported as failed after reconnect because the app treated 2.2.9-validation-e22638ad.zip as the expected firmware version. Read the application MCUboot header from the uploaded image instead of inferring a version from an arbitrary filename. Select image 0 in multi-image bundles; missing, ambiguous, malformed or truncated images remain unverified. Remote release labels retain their existing path.

Also prevent version matching from confusing 2.2.9 with 2.2.90, 12.2.9 or a different numeric tweak, while preserving tag prefixes, development/build suffixes and PR labels.

Validation: 12 focused tests pass, including the observed filename/development-label combination, network-first bundle ordering, little-endian revision/tweak, malformed and missing images, release tags and numeric boundaries. The full app suite passes (92 tests), targeted analysis is clean, and the Android release build passes. On hardware, the underlying firmware update was independently confirmed through the exact GATT build label and MCUboot's confirmed flag. This is version verification, not a cryptographic image-identity check.

Manual Pixel 9a retest with a separate validation APK: updating from the exact same local ZIP and reconnecting now displays Update verified, with the exact 2.2.9-dev.104+ge22638ad label. The original signed app could not be replaced by the local signing key, so its data was preserved and the validation package was used instead.

Android/Linux/web CI builds pass. Xcode Cloud macOS reports only exit 255 (also present on the base commit), without a code diagnostic; macOS CI is not claimed green.

@github-actions

Copy link
Copy Markdown
Contributor

Visit the preview URL for this PR (updated for commit 9c1e37a):

https://open-earable-web--pr302-codex-fix-local-firm-k0ltyc0c.web.app

(expires Sun, 25 Oct 2026 10:44:38 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: c7397c11177c71d8d81172cea9365829823fb41c

@github-actions

Copy link
Copy Markdown
Contributor

PR Build Artifacts

Full workflow run: https://github.com/OpenEarable/app/actions/runs/36313342846

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant