Skip to content

v4 — labgrid-plugins rename, exporter-side drivers, power-down by default

Latest

Choose a tag to compare

@tfcollins tfcollins released this 28 Oct 15:18
· 21 commits to main since this release

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' default install-cmd already installs labgrid-plugins @ git+https://github.com/tfcollins/labgrid-plugins@v4. If you override install-cmd, or depend on the package yourself, rename it. A requirement for adi-labgrid-plugins @ git+...@v4 fails 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-plugins installed.
  • power-down defaults to true in hw-request.yml and matlab-hw-request.yml (#111). Boards are powered off after each leg. Set power-down: false to 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 disabled place 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-hardware onboarding (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_path expands ~ 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 disabled place 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-sd for SD-mux full-image writes by @tfcollins in #135
  • feat(cli): add adi-lg setup-runner for 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-hardware interactive 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