Streamline panel programming: g6-flash CLI + WebUSB browser flasher#60
Draft
mbreiser wants to merge 2 commits into
Draft
Streamline panel programming: g6-flash CLI + WebUSB browser flasher#60mbreiser wants to merge 2 commits into
mbreiser wants to merge 2 commits into
Conversation
Make flashing G6 panels (RP2350) easy for both new/blank boards and re-flashing existing ones, single panels or bench batches, without a PlatformIO build environment. - docs/development/g6_07-panel-programming.md: design + spec for the approach (CI-published per-rev UF2 releases, the CLI, the web flasher, and rev-mismatch safety). Added to the dev-docs index. - tools/panel-programming/g6_flash.py: picotool-based CLI. Reboots running panels into BOOTSEL and flashes blank/BOOTSEL boards (the gap deploy*.sh can't cover), mandatory --rev guard, parallel batch, sha256-checked UF2 download, post-flash USB product-string verification. - tools/panel-programming/release.yml: CI matrix over pico_v021/pico_v031 publishing g6-panel-<rev>.uf2 + manifest.json as GitHub Release assets. - tools/panel-programming/flasher/: zero-install WebUSB PICOBOOT flasher (Chromium/Edge) for nontechnical users. Staged in the parent repo because the firmware and webDisplayTools submodules are separate repos out of this session's push scope; the staging README documents each file's final home. Not yet validated against hardware. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UcDc2Scj2wZMBBXfaBc1HX
Step-by-step continuation guide (release cut, relocation into the submodule repos, web + CLI testing against the two known panels) plus the macOS/sysfs caveat for g6_flash.py. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UcDc2Scj2wZMBBXfaBc1HX
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.
What & why
Makes flashing G6 panels (RP2350/RP2354) easy for new/blank boards and re-flashing old ones, single panels or bench batches (~10–20 per powered hub), without a PlatformIO build environment — and adds a path a nontechnical person can use.
Today's bench scripts (
deploy.sh/deploy_all.sh) drivepio … -t upload, only find panels already running firmware (so they can't flash a blank board), need a full build env, anddeploy_all.shis sequential. This work fixes all three by building onpicotool(which can reboot a running panel into BOOTSEL and flash a board already in BOOTSEL) plus CI-published prebuilt UF2s.Key enabler: panels are stateless (no per-panel ID — addressing is the controller's job), so every panel of a rev gets the identical binary. The only footgun is the two hardware revs needing different firmware; both tools require a deliberate
--rev/rev choice and auto-verify via the USB product string after flashing.Contents
docs/development/g6_07-panel-programming.md— design + spec (CI releases, CLI, web flasher, rev safety); added to the dev-docs index.tools/panel-programming/g6_flash.py— picotool-based CLI: handles new + old panels, mandatory--revguard, parallel batch (--jobs), sha256-checked UF2 download/cache,--no-execfor large trays, post-flash verification. Linux/sysfs.tools/panel-programming/release.yml— CI matrix overpico_v021/pico_v031→ publishesg6-panel-<rev>.uf2+manifest.jsonas GitHub Release assets.tools/panel-programming/flasher/— zero-install WebUSB PICOBOOT flasher (Chromium/Edge) for nontechnical users.⚠ Staging note
These artifacts belong in separate submodule repos (
LED-Display_G6_Firmware_Panel,webDisplayTools) that were out of this session's push scope, so they're staged in the parent repo undertools/panel-programming/with a README mapping each file to its final home. A maintainer relocates them and adds thepicotooldep +flash*tasks to the firmwarepixi.toml.Validation status
--helpworks;flasher.jspassesnode --check;release.ymlis valid YAML.panel-fw-v*firmware release to exist. Open items (PCB silkscreen rev marking, picoflash integration, bench validation against the two known panels319A5199EE357F77/A5D4B82BA2B9FB51) are tracked in the spec doc's "Open Questions / TBDs".🤖 Generated with Claude Code
https://claude.ai/code/session_01UcDc2Scj2wZMBBXfaBc1HX
Generated by Claude Code