Skip to content

Add dashboard upload for local OTA firmware files - #939

Open
lboue wants to merge 3 commits into
matter-js:mainfrom
lboue:feature/dashboard-ota-upload
Open

Add dashboard upload for local OTA firmware files#939
lboue wants to merge 3 commits into
matter-js:mainfrom
lboue:feature/dashboard-ota-upload

Conversation

@lboue

@lboue lboue commented Jul 26, 2026

Copy link
Copy Markdown
Collaborator

Type of change

  • 🐛 Fix — corrects a defect or wrong behavior
  • Feature — adds new functionality or capability

Description

Adds a way to upload a local .ota Matter firmware image from the dashboard, without needing CLI/filesystem access to the server.

  • New upload_ota_file WebSocket command (schema 13): decodes a base64-encoded .ota file and stores it into the server's local OTA image store — the same store populated by --otaProviderDir directory scanning. Returns the parsed vendor ID / product ID / software version.
  • New "Upload Firmware" button on a node's detail page in the dashboard. After a successful upload, if the parsed vendor/product ID matches the current node, it chains into the existing check/update-node flow; otherwise it shows an informational dialog, since an .ota image isn't node-scoped — it's identified by vendor/product ID in its header and becomes discoverable by any matching node via the existing check_node_update.
  • New OHF-extension error code OtaUploadError (101) for corrupt images, disabled OTA support, or store failures.

Backing evidence

N/A — this is a feature addition, not a fix for an observed defect.

  • Related issue: #
  • This fix/change is backed by a complete log file — attached here or in the linked issue (not just a few quoted lines).

Checklist

  • Tests added or updated to cover the change
  • npm test passes (only pre-existing documented mDNS/commissioning integration flakes remain — see CLAUDE.md)
  • npm run format-verify and npm run lint pass
  • CHANGELOG updated

🤖 Generated with Claude Code

lboue and others added 3 commits July 26, 2026 22:37
Lets a user drop a .ota file on a node's detail page to store it in the
server's OTA image store, the same store populated by --otaProviderDir
directory scanning. New upload_ota_file WS command (schema 13) parses
and validates the image, then the existing check/update-node flow picks
it up for any node whose vendor/product ID matches.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The Python client's integration tests asserted schema_version == 12
directly, missed when SCHEMA_VERSION was bumped to 13 for upload_ota_file.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@lboue
lboue marked this pull request as ready for review July 26, 2026 21:11
@Apollon77

Copy link
Copy Markdown
Collaborator

Hm ... I am really unsure if i want to push some Megabyte of data through Websocket ... need to think about this

@lboue

lboue commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator Author

No problem. Come to think of it, the idea is to make it easier for users to upload update files.

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.

2 participants