Repository navigation
Upgrading from v3.x
v4 is a major version because these changes can break or change a consumer:
- Package renamed:
adi-labgrid-plugins→labgrid-plugins. The reusable workflows' defaultinstall-cmdalready installslabgrid-plugins @ git+https://github.com/tfcollins/labgrid-plugins@v4. If you overrideinstall-cmd, or depend on the package yourself, rename it. A requirement foradi-labgrid-plugins @ git+...@v4fails pip's name check. - ADI drivers run their work on the exporter (#129). On a remote place, downloads (Kuiper, Cloudsmith), power-control APIs, the TFTP server and JTAG payload staging run on the exporter host through labgrid's agent. The runner needs direct SSH to the exporter; places whose exporter is reachable only through a proxy fail with a clear error. Exporters need
labgrid-pluginsinstalled. power-downdefaults totrueinhw-request.ymlandmatlab-hw-request.yml(#111). Boards are powered off after each leg. Setpower-down: falseto keep the old behaviour. Reserve mode is unaffected.- Stock exporter templates were renamed by boot path (#155:
soc-sdmux,soc-ssh,soc-tftp,fabric-jtag,zynqmp-jtag,rpi-ssh). Update copies that refer to the old file names.
No workflow inputs or secrets were removed and none became required. Bump your pins from @v3.x to @v4.
Highlights since v3.5
- Hardware CI:
- infra boot-smoke workflow;
- hosted validate-vars gate;
- fail on
NO_MATCH; - skip unreachable places;
- honour the
disabledplace tag; - vendored Prism uploader;
- live DUT IP for sd-autoboot boards;
- xsdb EOF hang fix and BootZynqMPJTAG timeouts.
- Boot:
- UltraScale+ (ZynqMP) JTAG boot and recovery;
- openFPGALoader fabric programming;
- BootFPGASoC network refresh;
- BootSelMap fixes;
- mass-storage mount fixes.
- Power:
- Kasa, APC and every labgrid power type in config generation.
- Tools:
adi-lg netbox add-hardwareonboarding (now resumable);adi-lg flash-sd;adi-lg setup-runner;adi-lg list-hardware;adi-lg generate-config: resumable, and its configs now load in labgrid.
- Coordinator:
- board catalog auto-sync;
- editable place tags and manual recovery in the web UI;
- node deployments;
- deployed board health checks.
- Kuiper:
cache_pathexpands~and downloads into the cache (#168).
What's Changed
- docs: v3.5 pinning guidance by @tfcollins in #90
- feat(power): add Kasa (TP-Link) power driver and resource by @tfcollins in #91
- feat(cloudsmith): repeatable --vnot/--vfilter for multi-term queries by @tfcollins in #92
- feat(web): restyle coordinator dashboard — Instrument Precision (light+dark, ADI accent) by @tfcollins in #93
- feat(onboarding): consumer onboarding Phase 1 — coordinator contract, deprecation banners, recipe polish by @tfcollins in #94
- feat(onboarding): consumer onboarding Phase 2 — doctor, lint-markers, infra annotations, pin hygiene by @tfcollins in #95
- feat(onboarding): consumer onboarding Phase 3 — packaged templates + adi-lg-hw-ci init scaffolder by @tfcollins in #96
- refactor(hw_ci): tighten scaffold pin regex + guard package-data coverage by @tfcollins in #97
- feat(coordinator): editable place tags + manual recovery in the web UI by @tfcollins in #98
- Tick runtime-deploy drivers + BootTickFPGASSH strategy by @tfcollins in #99
- docs: add lab-host and developer onboarding guides by @tfcollins in #100
- docs: nest the Tick guide under User Guide by @tfcollins in #101
- Add infra boot-smoke: all-live-places matrix + reusable workflow by @tfcollins in #102
- infra-smoke: hosted validate-vars gate ahead of self-hosted preflight by @tfcollins in #103
- fix(ci): correct package name in infra-smoke venv install by @tfcollins in #104
- fix(ci): install labgrid-plugins[kuiper] in infra-smoke by @tfcollins in #105
- feat(hw_ci): skip unreachable (offline-host) places in infra boot-smoke by @tfcollins in #106
- fix(ci): vendor Prism uploader + fix infra-smoke Prism upload by @tfcollins in #107
- fix(ci): point hw-request + matlab Prism upload at the vendored uploader by @tfcollins in #108
- fix(hw): read live DUT IP for sd-autoboot boards + surface URI-resolve errors by @tfcollins in #109
- feat(hw_ci): fail infra boot-smoke on NO_MATCH, keep UNAVAILABLE a skip by @tfcollins in #110
- feat(ci): power boards off after hw-CI legs complete by @tfcollins in #111
- Add Vivado 2025.1 entry points and local XSDB support for labgrid hardware testing by @tfcollins in #112
- docs: add dedicated Web UI category covering auth and full feature set by @tfcollins in #113
- docs(strategies): update BootSelMap docs for new bitstream/overlay API by @tfcollins in #114
- fix: reconcile stale mass-storage mount state by @tfcollins in #115
- fix: retry busy mass-storage unmount with lazy fallback by @tfcollins in #117
- feat(jtag): add end-to-end ZynqMP recovery and production boot by @tfcollins in #116
- hw_ci: make BootZynqMPJTAG places daily-bootable (tron / ADRV9009-ZU11EG) by @tfcollins in #118
- fix(jtag): refresh A53 context after DDR scrub by @tfcollins in #119
- fix(hw): use working AD9081 ZCU102 profile by @tfcollins in #120
- fix(hw): select AD9081 122.88 MHz VCXO DT by @tfcollins in #121
- Persist mini2 coordinator metadata by @tfcollins in #122
- docs: complete and validate YAML reference by @tfcollins in #123
- docs: explain YAML arguments with examples by @tfcollins in #124
- docs: add missing documentation for BootFPGASoC network refresh and arguments by @tfcollins in #125
- fix(hw_ci): honour the
disabledplace tag in all-places-matrix by @tfcollins in #126 - docs: define driver and strategy access topology by @tfcollins in #127
- docs: color code access topology tables by @tfcollins in #128
- feat: run all custom drivers through exporters by @tfcollins in #129
- docs: add editorial system diagrams by @tfcollins in #130
- docs: redesign documentation landing page by @tfcollins in #131
- docs: optimize mobile layout for iPhone by @tfcollins in #132
- docs: tighten iPhone landing-page spacing by @tfcollins in #133
- docs: pad mobile landing-page graphics by @tfcollins in #134
- fix(hw-ci): discover commented places and isolate HA agent by @tfcollins in #137
- feat(cli): add
adi-lg flash-sdfor SD-mux full-image writes by @tfcollins in #135 - feat(cli): add
adi-lg setup-runnerfor interactive and automated runner setup by @tfcollins in #138 - feat(reporting): add Prism labgrid session context by @tfcollins in #139
- docs: add complete Prism reporting guide by @tfcollins in #140
- Add openFPGALoader fabric programming support by @tfcollins in #141
- feat(coordinator): track node deployments by @tfcollins in #143
- fix(coordinator): require login for deployments by @tfcollins in #144
- docs: add tabbed Exporter and Local (Non-Exporter) YAML examples by @tfcollins in #145
- feat: add
adi-lg netbox add-hardwareinteractive onboarding command by @tfcollins in #146 - feat: add deployed board health checks with web UI dashboard and scheduler by @tfcollins in #148
- docs: document NetBox onboarding, node deployments, and missing CLI/components by @tfcollins in #147
- feat(board-health): stream real-time logs and progress feedback to Web UI by @tfcollins in #149
- feat(board-health): discover and return DUT device drivers with --drivers flag by @tfcollins in #151
- fix(exporter_configs): make templates load in labgrid-exporter; fix netbox add-hardware matching by @tfcollins in #150
- docs: replace unsupported !env tag in resources.rst examples by @tfcollins in #152
- fix(kasa): import python-kasa lazily so KasaPowerDriver always registers by @tfcollins in #153
- docs: replace nonexistent
includes:in resources.rst examples by @tfcollins in #154 - refactor(exporter_configs): name stock templates by boot path by @tfcollins in #155
- fix(hw-ci): prevent xsdb hang on EOF, tune BootZynqMPJTAG timeouts and update tron IP by @tfcollins in #156
- feat(exporter_configs): one exporter template per live boot strategy, with power by @tfcollins in #157
- fix(bootzynqmp): remove PL isolation after fpga programming and disable unmapped mqnic during sdboot by @tfcollins in #158
- feat(power): offer every ADI and labgrid power control in config generation by @tfcollins in #159
- fix(netbox): ask required fields until answered instead of failing after the plan by @tfcollins in #160
- fix(netbox): check the netbox extra before prompting; no tracebacks from NetBox by @tfcollins in #161
- fix(netbox): skip TLS verification by default, confirm hidden token input, list options as tables by @tfcollins in #162
- feat(netbox): specific add-hardware questions, plan table, end-to-end prompt tests by @tfcollins in #163
- feat(netbox): resume add-hardware from saved answers; fix the coordinator step by @tfcollins in #164
- feat(generate-config): resume an interrupted run from saved answers by @tfcollins in #165
- fix(generate-config): write imports: [adi_lg_plugins] into the generated config by @tfcollins in #166
- fix(generate-config): write resources labgrid can build by @tfcollins in #167
- fix(kuiper): expand ~ in cache_path and download into it by @tfcollins in #168
Full Changelog: v3.5...v4