From 7a9164354535ab47908c63514ab1d8112b537248 Mon Sep 17 00:00:00 2001 From: Oktawian Bieszke Date: Thu, 20 Aug 2026 15:08:52 +0200 Subject: [PATCH 1/6] docs/unified/novacustom/firmware-update.md: remove a duplicate of FUM table Signed-off-by: Oktawian Bieszke --- docs/unified/novacustom/firmware-update.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/unified/novacustom/firmware-update.md b/docs/unified/novacustom/firmware-update.md index d053ddf5035..ba9a883f0c5 100644 --- a/docs/unified/novacustom/firmware-update.md +++ b/docs/unified/novacustom/firmware-update.md @@ -40,13 +40,11 @@ firmware version is currently installed on your device. ### Firmware Update Mode - Firmware Update Mode is available on the following versions: - - | Generation | Version | Note | - | ---------- | ------------- | ---------------------------------------------------- | - | 11th | > 1.5.0 | | - | 12th | > 1.7.0 | | - | 14th | 0.9.0 - 0.9.1 | On newer versions, please use fwupd directly instead | + To check which firmware versions support Firmware Update Mode, check + the [Firmware Update Method Support + Table](../../guides/firmware-update.md#firmware-update-method-support-table). + On 14th Gen, once your firmware supports fwupd, please use fwupd + directly instead of Firmware Update Mode. To update using Firmware Update Mode, follow the [Generic Firmware Update Documentation](../../guides/firmware-update.md#firmware-update-mode). From 104313fdaac56d5601e159ec01f62076419b65e1 Mon Sep 17 00:00:00 2001 From: Oktawian Bieszke Date: Thu, 20 Aug 2026 16:11:34 +0200 Subject: [PATCH 2/6] scripts/check_openness_score_freshness.py: add pre-commit check Add new pre-commit check for outdated openness score table Signed-off-by: Oktawian Bieszke --- .pre-commit-config.yaml | 7 +- scripts/check_openness_score_freshness.py | 142 ++++++++++++++++++++++ 2 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 scripts/check_openness_score_freshness.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 58f299621a8..f18b36d5c88 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -63,7 +63,12 @@ repos: entry: \]\(https?:\/\/(192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+)[^)]*\) language: pygrep types: [text] + - id: check-openness-score-freshness + name: Check openness score comparison table freshness + entry: python3 scripts/check_openness_score_freshness.py + language: system + files: ^docs/variants/.*_openness_chart\.png$|^docs/variants/overview\.md$ ci: - autoupdate_commit_msg: 'pre-commit: autoupdate hooks' + autoupdate_commit_msg: "pre-commit: autoupdate hooks" autofix_prs: false diff --git a/scripts/check_openness_score_freshness.py b/scripts/check_openness_score_freshness.py new file mode 100644 index 00000000000..3d25651c30f --- /dev/null +++ b/scripts/check_openness_score_freshness.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 +""" +Fail if a commit adds Dasharo Openness Score chart(s) for a platform/version that +already has a row in docs/variants/overview.md's "Openness comparison" table, +without that row being updated to reference the new version. + +Usage: + check_openness_score_freshness.py [...] + +Changed file paths should be relative to the repo root. +""" + +import re +import sys +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parent.parent +OVERVIEW = REPO_ROOT / "docs/variants/overview.md" +CHART_SUFFIX = "_openness_chart.png" +VERSION_RE = re.compile(r"_v(\d+(?:\.\d+){1,3})(?=[_.]|$)") + + +def parse_version_family(filename): + """Split a ROM/chart filename into (family_key, version_tuple). + + The family key is the filename with its version number replaced by a + placeholder, so e.g. "foo_v1.2.3_heads.rom" and "foo_v1.3.0_heads.rom" + share the family "foo_v{VER}_heads.rom" while "foo_igpu_v1.2.3.rom" is a + distinct family from "foo_v1.2.3.rom". + """ + match = VERSION_RE.search(filename) + if not match: + return None, None + version = tuple(int(x) for x in match.group(1).split(".")) + family = filename[: match.start()] + "_v{VER}" + filename[match.end() :] + return family, version + + +def normalize(a, b): + n = max(len(a), len(b)) + return a + (0,) * (n - len(a)), b + (0,) * (n - len(b)) + + +def latest_version_on_disk(directory, family_key): + best = None + for chart in directory.glob(f"*{CHART_SUFFIX}"): + rom_name = chart.name[: -len(CHART_SUFFIX)] + family, version = parse_version_family(rom_name) + if family != family_key or version is None: + continue + if best is None: + best = version + else: + na, nb = normalize(version, best) + if na > nb: + best = version + return best + + +def parse_overview_rows(): + """Yield (line_no, platform, rom_filename) for each data row of the + "Openness comparison" table in overview.md.""" + if not OVERVIEW.exists(): + return + lines = OVERVIEW.read_text().splitlines() + try: + start = next( + i for i, l in enumerate(lines) if l.strip() == "## Openness comparison" + ) + except StopIteration: + return + in_table = False + for i in range(start, len(lines)): + line = lines[i] + if line.startswith("| Platform "): + in_table = True + continue + if not in_table: + continue + if not line.startswith("|"): + break + if line.startswith("| ---") or line.startswith("|---"): + continue + cols = [c.strip() for c in line.strip("|").split("|")] + if len(cols) < 2: + continue + yield i + 1, cols[0], cols[1] + + +def main(changed_files): + changed_charts = [REPO_ROOT / f for f in changed_files if f.endswith(CHART_SUFFIX)] + if not changed_charts: + return 0 + + changed_dirs_families = set() + for chart in changed_charts: + rom_name = chart.name[: -len(CHART_SUFFIX)] + family, _ = parse_version_family(rom_name) + if family is None: + continue + changed_dirs_families.add((chart.parent, family)) + + failures = [] + for line_no, platform, rom_filename in parse_overview_rows(): + family, row_version = parse_version_family(rom_filename) + if family is None: + continue + + matches = sorted( + REPO_ROOT.glob(f"docs/variants/*/{rom_filename}{CHART_SUFFIX}") + ) + if not matches: + continue + directory = matches[0].parent + + if (directory, family) not in changed_dirs_families: + continue + + latest = latest_version_on_disk(directory, family) + if latest is None: + continue + + row_norm, latest_norm = normalize(row_version, latest) + if row_norm < latest_norm: + failures.append( + f"docs/variants/overview.md:{line_no}: row '{platform}' " + f"references {rom_filename} " + f"(v{'.'.join(map(str, row_version))}), but " + f"{directory.relative_to(REPO_ROOT)} now has an openness " + f"score for v{'.'.join(map(str, latest))}." + ) + + if failures: + print("Openness comparison table (docs/variants/overview.md) is out of date:\n") + for failure in failures: + print(f" - {failure}") + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) From a7c50e3fe91fad5eb091aa3edbb20bf0346dd36c Mon Sep 17 00:00:00 2001 From: Oktawian Bieszke Date: Fri, 21 Aug 2026 15:46:37 +0200 Subject: [PATCH 3/6] docs/variants/*/releases.md: standarize firmware update feature titles Signed-off-by: Oktawian Bieszke --- docs/variants/hardkernel_odroid_h4/releases.md | 2 +- docs/variants/msi_b850/releases.md | 4 ++-- docs/variants/msi_z690/releases.md | 4 ++-- docs/variants/msi_z790/releases.md | 4 ++-- docs/variants/novacustom_ns5x_adl/releases.md | 6 ++++-- docs/variants/novacustom_ns5x_tgl/releases.md | 6 ++++-- docs/variants/novacustom_nuc_box/releases.md | 4 ++-- docs/variants/novacustom_nv4x_adl/releases.md | 6 ++++-- docs/variants/novacustom_nv4x_tgl/releases.md | 6 ++++-- docs/variants/novacustom_v540tnx/releases.md | 4 ++-- docs/variants/novacustom_v540tu/releases.md | 4 ++-- docs/variants/novacustom_v560tnx/releases.md | 4 ++-- docs/variants/novacustom_v560tu/releases.md | 4 ++-- 13 files changed, 33 insertions(+), 25 deletions(-) diff --git a/docs/variants/hardkernel_odroid_h4/releases.md b/docs/variants/hardkernel_odroid_h4/releases.md index f3e762fafca..2f149097ffe 100644 --- a/docs/variants/hardkernel_odroid_h4/releases.md +++ b/docs/variants/hardkernel_odroid_h4/releases.md @@ -27,7 +27,7 @@ Test results for this release can be found - Support for the Hardkernel ODROID H4 Ultra device - [Support for Net Card 2 module](https://github.com/Dasharo/dasharo-issues/issues/1281) -- [Capsule Update integration](https://github.com/Dasharo/dasharo-issues/issues/1471) +- [Capsule Update V1](https://github.com/Dasharo/dasharo-issues/issues/1471) - [In-Band ECC option](https://github.com/Dasharo/dasharo-issues/issues/1276) - [Quiet and fast boot option](https://github.com/Dasharo/dasharo-issues/issues/1278) - [ME disable option](https://github.com/Dasharo/dasharo-issues/issues/1279) diff --git a/docs/variants/msi_b850/releases.md b/docs/variants/msi_b850/releases.md index 0c7bd388ace..3ccf3f739d1 100644 --- a/docs/variants/msi_b850/releases.md +++ b/docs/variants/msi_b850/releases.md @@ -44,13 +44,13 @@ Test results for this release can be found - [AMD fTPM support in coreboot and EDK2 UEFI Payload](https://docs.dasharo.com/unified-test-documentation/dasharo-security/200-tpm-support/) - [TPM Measured Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/203-measured-boot/) - [SMM BIOS write protection with AMD ROM Armor 3](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) -- [Firmware update mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) - [Setup menu password configuration](https://docs.dasharo.com/dasharo-menu-docs/overview/#dasharo-menu-guides) - [USB stack disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#usb-configuration) - [Network stack disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#networking-options) - TPM PPI support with UEFI variable backend - [SBOM generation for AMD PSP blobs, video and LAN drivers](https://doc.coreboot.org/sbom/sbom.html) -- [UEFI Capsule Update v1 support](https://docs.dasharo.com/unified-test-documentation/dasharo-stability/capsule-update/) +- [Capsule Update V1](https://docs.dasharo.com/unified-test-documentation/dasharo-stability/capsule-update/) - Rebased coreboot on 25.12 tag - Rebased iPXE on last commit of February 2026 - [Support for firmware flashing via MSI FlashBIOS](https://docs.dasharo.com/unified/msi/recovery/#using-msi-flashbios-button) diff --git a/docs/variants/msi_z690/releases.md b/docs/variants/msi_z690/releases.md index a5c9c9d75f6..5d28519ba70 100644 --- a/docs/variants/msi_z690/releases.md +++ b/docs/variants/msi_z690/releases.md @@ -413,7 +413,7 @@ Test results for this release can be found ### Added -- [Introduce updates via UEFI capsules (from this firmware onward)](https://github.com/Dasharo/dasharo-issues/issues/423) +- [Capsule Update V1](https://github.com/Dasharo/dasharo-issues/issues/423) - [Preserve user data during a capsule update](https://github.com/Dasharo/dasharo-issues/issues/809) - [CPU configuration menu](https://github.com/Dasharo/dasharo-issues/issues/134) - [Update to a much newer EDKII revision](https://github.com/Dasharo/dasharo-issues/issues/432) @@ -617,7 +617,7 @@ Test results for this release can be found - [MSI ACPI device that triggers automatic driver and utility installation manager](https://www.youtube.com/watch?v=K-v-veV_jvI) - [Support for logo customization](https://docs.dasharo.com../../guides/logo-customization/) - UEFI 2.8 errata C compliance in EDKII fork -- [Firmware Update Mode feature](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) +- [Firmware Update Mode](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) ### Changed diff --git a/docs/variants/msi_z790/releases.md b/docs/variants/msi_z790/releases.md index 372dad967aa..e62f534d90d 100644 --- a/docs/variants/msi_z790/releases.md +++ b/docs/variants/msi_z790/releases.md @@ -413,7 +413,7 @@ Test results for this release can be found ### Added -- [Introduce updates via UEFI capsules (from this firmware onward)](https://github.com/Dasharo/dasharo-issues/issues/423) +- [Capsule Update V1](https://github.com/Dasharo/dasharo-issues/issues/423) - [Preserve user data during a capsule update](https://github.com/Dasharo/dasharo-issues/issues/809) - [CPU configuration menu](https://github.com/Dasharo/dasharo-issues/issues/134) - [Update to a much newer EDKII revision](https://github.com/Dasharo/dasharo-issues/issues/432) @@ -613,7 +613,7 @@ Test results for this release can be found - [MSI ACPI device that triggers automatic driver and utility installation manager](https://www.youtube.com/watch?v=K-v-veV_jvI) - [Support for logo customization](https://docs.dasharo.com../../guides/logo-customization/) - UEFI 2.8 errata C compliance in EDKII fork -- [Firmware Update Mode feature](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) +- [Firmware Update Mode](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [This is a Dasharo Pro Package release](https://docs.dasharo.com/dev-proc/versioning/#dasharo-pro-package-releases) - [Use new microcode version, refer to SBOM](https://github.com/coreboot/intel-microcode/commit/390edfb411ba7de8559ad40597c7acb6c6a1ea96) - [Use new ME version, refer to SBOM](https://github.com/Dasharo/dasharo-blobs/tree/main/msi/ms7e06) diff --git a/docs/variants/novacustom_ns5x_adl/releases.md b/docs/variants/novacustom_ns5x_adl/releases.md index 3988df37e1e..c83f608b615 100644 --- a/docs/variants/novacustom_ns5x_adl/releases.md +++ b/docs/variants/novacustom_ns5x_adl/releases.md @@ -16,7 +16,9 @@ Test results for this release can be found ### Added -- [Firmware update via UEFI capsule update interface with LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [LVFS](https://docs.dasharo.com/kb/capsule-updates-overview/) - [Dasharo TrustRoot (Intel Boot Guard) support](https://docs.dasharo.com/glossary/#dasharo-trustroot) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [Human-readable UEFI Secure Boot key management screens](https://docs.dasharo.com/dasharo-menu-docs/device-manager/#secure-boot-configuration) @@ -194,7 +196,7 @@ Test results for this release can be found ### Added -- [Firmware update mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Early boot DMA protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) diff --git a/docs/variants/novacustom_ns5x_tgl/releases.md b/docs/variants/novacustom_ns5x_tgl/releases.md index 0c9b973c281..f15a8ab7d0d 100644 --- a/docs/variants/novacustom_ns5x_tgl/releases.md +++ b/docs/variants/novacustom_ns5x_tgl/releases.md @@ -16,7 +16,9 @@ Test results for this release can be found ### Added -- [Firmware update via UEFI capsule update interface with LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [LVFS](https://docs.dasharo.com/kb/capsule-updates-overview/) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [Quiet boot/Fast boot](https://docs.dasharo.com/dasharo-menu-docs/boot-maintenance-mgr/) - [FTDI controller support](https://github.com/Dasharo/open-source-firmware-validation/blob/develop/docs/novacustom.md) @@ -255,7 +257,7 @@ Test results for this release can be found ### Added -- [Firmware update mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Early boot DMA protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) diff --git a/docs/variants/novacustom_nuc_box/releases.md b/docs/variants/novacustom_nuc_box/releases.md index e2f9e803ba3..e8d3d8004c7 100644 --- a/docs/variants/novacustom_nuc_box/releases.md +++ b/docs/variants/novacustom_nuc_box/releases.md @@ -200,13 +200,13 @@ Test results for this release can be found ### Added - Support for NovaCustom NUC BOX (Meteor Lake) -- [Introduce updates via UEFI capsules (from this firmware onward)](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) - [TPM Measured Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/203-measured-boot/) - [Vboot Verified Boot](https://docs.dasharo.com/guides/vboot-signing/) - [Intel ME soft disable](https://docs.dasharo.com/unified-test-documentation/dasharo-security/20F-me-neuter/) - [Vboot recovery notification in UEFI Payload](https://docs.dasharo.com/unified-test-documentation/dasharo-security/201-verified-boot/) - [UEFI Secure Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/206-secure-boot/) -- [Firmware update mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Early Sign of Life display output](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/347-sign-of-life/) diff --git a/docs/variants/novacustom_nv4x_adl/releases.md b/docs/variants/novacustom_nv4x_adl/releases.md index 51c71526912..8aa5bc6dbe6 100644 --- a/docs/variants/novacustom_nv4x_adl/releases.md +++ b/docs/variants/novacustom_nv4x_adl/releases.md @@ -16,7 +16,9 @@ Test results for this release can be found ### Added -- [Firmware update via UEFI capsule update interface with LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [LVFS](https://docs.dasharo.com/kb/capsule-updates-overview/) - [Dasharo TrustRoot (Intel Boot Guard) support](https://docs.dasharo.com/glossary/#dasharo-trustroot) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [Human-readable UEFI Secure Boot key management screens](https://docs.dasharo.com/dasharo-menu-docs/device-manager/#secure-boot-configuration) @@ -215,7 +217,7 @@ Test results for this release can be found ### Added -- [Firmware update mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Early boot DMA protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) diff --git a/docs/variants/novacustom_nv4x_tgl/releases.md b/docs/variants/novacustom_nv4x_tgl/releases.md index dc95344a9a2..eee9c3667cd 100644 --- a/docs/variants/novacustom_nv4x_tgl/releases.md +++ b/docs/variants/novacustom_nv4x_tgl/releases.md @@ -20,7 +20,9 @@ Test results for this release can be found ### Added -- [Firmware update via UEFI capsule update interface with LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [LVFS](https://docs.dasharo.com/kb/capsule-updates-overview/) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [Quiet boot/Fast boot](https://docs.dasharo.com/dasharo-menu-docs/boot-maintenance-mgr/) - [FTDI controller support](https://github.com/Dasharo/open-source-firmware-validation/blob/develop/docs/novacustom.md) @@ -263,7 +265,7 @@ Test results for this release can be found ### Added -- [Firmware update mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Early boot DMA protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) diff --git a/docs/variants/novacustom_v540tnx/releases.md b/docs/variants/novacustom_v540tnx/releases.md index 1fd9d854d61..bdbe6bb1c66 100644 --- a/docs/variants/novacustom_v540tnx/releases.md +++ b/docs/variants/novacustom_v540tnx/releases.md @@ -33,7 +33,7 @@ Test results for this release can be found - [Sleep type option](https://github.com/Dasharo/coreboot/pull/738/files) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [ACPI driver](https://docs.dasharo.com/unified/novacustom/features/#acpi-driver) -- [UEFI Capsule Update support](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) - Fedora support - [Intel Boot Guard OEM Signing Key check in capsule update](https://docs.dasharo.com/guides/capsule-update/#troubleshooting) @@ -145,7 +145,7 @@ Test results for this release can be found - [Vboot recovery notification in UEFI Payload](https://docs.dasharo.com/unified-test-documentation/dasharo-security/201-verified-boot/) - [UEFI Shell](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/30P-uefi-shell/) - [UEFI Secure Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/206-secure-boot/) -- [Firmware update mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Current limiting for USB-PD power supplies](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/31H-usb-type-c/#utc020001-usb-type-c-pd-current-limiting-ubuntu-2204) diff --git a/docs/variants/novacustom_v540tu/releases.md b/docs/variants/novacustom_v540tu/releases.md index d514a85818b..d001fdf9144 100644 --- a/docs/variants/novacustom_v540tu/releases.md +++ b/docs/variants/novacustom_v540tu/releases.md @@ -121,7 +121,7 @@ Test results for this release can be found - [Sleep type option](https://github.com/Dasharo/coreboot/pull/738/files) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [ACPI driver](https://docs.dasharo.com/unified/novacustom/features/#acpi-driver) -- [UEFI Capsule Update support](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) - Fedora support ### Changed @@ -220,7 +220,7 @@ Test results for this release can be found - [Vboot recovery notification in UEFI Payload](https://docs.dasharo.com/unified-test-documentation/dasharo-security/201-verified-boot/) - [UEFI Shell](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/30P-uefi-shell/) - [UEFI Secure Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/206-secure-boot/) -- [Firmware update mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Early boot DMA protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) diff --git a/docs/variants/novacustom_v560tnx/releases.md b/docs/variants/novacustom_v560tnx/releases.md index edf36887293..1d11f12adb8 100644 --- a/docs/variants/novacustom_v560tnx/releases.md +++ b/docs/variants/novacustom_v560tnx/releases.md @@ -33,7 +33,7 @@ Test results for this release can be found - [Sleep type option](https://github.com/Dasharo/coreboot/pull/738/files) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [ACPI driver](https://docs.dasharo.com/unified/novacustom/features/#acpi-driver) -- [UEFI Capsule Update support](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) - Fedora support - [Intel Boot Guard OEM Signing Key check in capsule update](https://docs.dasharo.com/guides/capsule-update/#troubleshooting) @@ -152,7 +152,7 @@ Test results for this release can be found - [Vboot recovery notification in UEFI Payload](https://docs.dasharo.com/unified-test-documentation/dasharo-security/201-verified-boot/) - [UEFI Shell](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/30P-uefi-shell/) - [UEFI Secure Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/206-secure-boot/) -- [Firmware update mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Current limiting for USB-PD power supplies](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/31H-usb-type-c/#utc020001-usb-type-c-pd-current-limiting-ubuntu-2204) diff --git a/docs/variants/novacustom_v560tu/releases.md b/docs/variants/novacustom_v560tu/releases.md index 3760741e562..ffd1dacac83 100644 --- a/docs/variants/novacustom_v560tu/releases.md +++ b/docs/variants/novacustom_v560tu/releases.md @@ -121,7 +121,7 @@ Test results for this release can be found - [Sleep type option](https://github.com/Dasharo/coreboot/pull/738/files) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [ACPI driver](https://docs.dasharo.com/unified/novacustom/features/#acpi-driver) -- [UEFI Capsule Update support](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) - Fedora support ### Changed @@ -220,7 +220,7 @@ Test results for this release can be found - [Vboot recovery notification in UEFI Payload](https://docs.dasharo.com/unified-test-documentation/dasharo-security/201-verified-boot/) - [UEFI Shell](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/30P-uefi-shell/) - [UEFI Secure Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/206-secure-boot/) -- [Firmware update mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com../../guides/firmware-update/#firmware-update-mode) - [BIOS boot medium write-protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [Early boot DMA protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) From 8c9af2fca0daff4514c587254b1244dd67f33887 Mon Sep 17 00:00:00 2001 From: Oktawian Bieszke Date: Fri, 21 Aug 2026 15:51:50 +0200 Subject: [PATCH 4/6] scripts/generate_firmware_update_support_table.py: add pre-commit hook Signed-off-by: Oktawian Bieszke --- .pre-commit-config.yaml | 6 + .../firmware-update-method-support-table.csv | 22 +-- .../generate_firmware_update_support_table.py | 132 ++++++++++++++++++ 3 files changed, 151 insertions(+), 9 deletions(-) create mode 100644 scripts/generate_firmware_update_support_table.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f18b36d5c88..503e50e1a72 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -68,6 +68,12 @@ repos: entry: python3 scripts/check_openness_score_freshness.py language: system files: ^docs/variants/.*_openness_chart\.png$|^docs/variants/overview\.md$ + - id: generate-firmware-update-support-table + name: Regenerate firmware update method support table + entry: python3 scripts/generate_firmware_update_support_table.py + language: system + files: ^docs/variants/.*/releases\.md$|^docs/guides/firmware-update-method-support-table\.csv$|^scripts/generate_firmware_update_support_table\.py$ + pass_filenames: false ci: autoupdate_commit_msg: "pre-commit: autoupdate hooks" diff --git a/docs/guides/firmware-update-method-support-table.csv b/docs/guides/firmware-update-method-support-table.csv index 3ec95a4bfe0..2269ce5a632 100644 --- a/docs/guides/firmware-update-method-support-table.csv +++ b/docs/guides/firmware-update-method-support-table.csv @@ -1,10 +1,14 @@ Manufacturer,Device,[Firmware Update Mode][fum],[Capsule Update V1][cup1],[FWUPD][fwupd],[LVFS][lvfs],[Capsule Update V2][cup2] -Hardkernel,Odroid H4+,-,v0.9.1,v0.9.1,v0.9.1,- -MSI,Z690-A PRO,v1.1.2,v1.1.4,v1.1.4,-,v1.1.7 -MSI,Z790-P PRO,v0.9.0,v0.9.2,v0.9.2,-,v0.9.5 -NovaCustom,11th Gen,v1.5.0,v1.6.0,v1.6.0,v1.6.0,- -NovaCustom,12th Gen,v1.7.0,v1.8.0,v1.8.0,v1.8.0,- -NovaCustom,14th Gen iGPU,v0.9.0,v1.0.0,v1.0.0,v1.0.0,- -NovaCustom,14th Gen dGPU,v0.9.1,v1.0.0,v1.0.0,v1.0.0,- -NovaCustom,NUC BOX,v0.9.0,v0.9.0,v0.9.0,v0.9.0,- -Protectli,Vault VP66xx,-,v0.9.3,v0.9.3,v0.9.3,- +Hardkernel,ODROID H4,-,v0.9.1,-,-,- +MSI,PRO B850-P WIFI,v0.9.0,v0.9.0,-,-,- +MSI,PRO Z690-A (WIFI) (DDR4),v1.1.2,v1.1.4,-,-,- +MSI,PRO Z790-P (WIFI) (DDR5),v0.9.0,v0.9.2,-,-,- +NovaCustom,NS5x/7x 11th Gen,v1.5.1,v1.6.0,v1.6.0,v1.6.0,- +NovaCustom,NS5x/7x 12th Gen,v1.7.1,v1.8.0,v1.8.0,v1.8.0,- +NovaCustom,NUC BOX 14th Gen,v0.9.0,v0.9.0,-,-,- +NovaCustom,NV4x 11th Gen,v1.5.1,v1.6.0,v1.6.0,v1.6.0,- +NovaCustom,NV4x 12th Gen,v1.7.1,v1.8.0,v1.8.0,v1.8.0,- +NovaCustom,V540TU,v0.9.0,v1.0.0,-,-,- +NovaCustom,V54xTNx 14th Gen,v0.9.1,v1.0.0,-,-,- +NovaCustom,V560TU,v0.9.0,v1.0.0,-,-,- +NovaCustom,V56xTNx 14th Gen,v0.9.1,v1.0.0,-,-,- diff --git a/scripts/generate_firmware_update_support_table.py b/scripts/generate_firmware_update_support_table.py new file mode 100644 index 00000000000..123c54567b9 --- /dev/null +++ b/scripts/generate_firmware_update_support_table.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +""" +Regenerate docs/guides/firmware-update-method-support-table.csv from the +standardized "Added" bullets in docs/variants/*/releases.md. + +Each releases.md is scanned for bullets, under a "### Added" heading, whose +link text is exactly one of these ("Firmware +Update Mode", "Capsule Update V1", "FWUPD", "LVFS", "Capsule Update V2"). The +lowest version a feature is found under is recorded as the version it's +"supported starting from". +""" + +import csv +import io +import re +import sys +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parent.parent +VARIANTS_DIR = REPO_ROOT / "docs/variants" +CSV_PATH = REPO_ROOT / "docs/guides/firmware-update-method-support-table.csv" + +FEATURES = [ + ("Firmware Update Mode", "[Firmware Update Mode][fum]"), + ("Capsule Update V1", "[Capsule Update V1][cup1]"), + ("FWUPD", "[FWUPD][fwupd]"), + ("LVFS", "[LVFS][lvfs]"), + ("Capsule Update V2", "[Capsule Update V2][cup2]"), +] +FEATURE_NAMES = {name for name, _ in FEATURES} +HEADER = ["Manufacturer", "Device"] + [column for _, column in FEATURES] + +VERSION_HEADING_RE = re.compile(r"^##\s+v(\d+(?:\.\d+)*)\b") +SECTION_HEADING_RE = re.compile(r"^###\s+(.+)$") +BULLET_RE = re.compile(r"^-\s*\[([^\]]+)\]") +TITLE_RE = re.compile(r"^#\s+(.+?)\s+Dasharo Release Notes\s*$", re.IGNORECASE) + + +def normalize(a, b): + n = max(len(a), len(b)) + return a + (0,) * (n - len(a)), b + (0,) * (n - len(b)) + + +def parse_manufacturer_device(text): + for line in text.splitlines(): + if not line.startswith("#"): + continue + match = TITLE_RE.match(line.strip()) + if not match: + return None, None + words = match.group(1).split(None, 1) + return (words[0], words[1]) if len(words) == 2 else (words[0], "") + return None, None + + +def parse_feature_versions(text): + """Return {feature_name: version_tuple} for the lowest version each + standardized feature bullet appears under in this file.""" + best = {} + current_version = None + in_added_section = False + for line in text.splitlines(): + match = VERSION_HEADING_RE.match(line) + if match: + current_version = tuple(int(x) for x in match.group(1).split(".")) + in_added_section = False + continue + match = SECTION_HEADING_RE.match(line) + if match: + in_added_section = match.group(1).strip().lower() == "added" + continue + if not in_added_section or current_version is None: + continue + match = BULLET_RE.match(line.strip()) + if not match or match.group(1).strip() not in FEATURE_NAMES: + continue + title = match.group(1).strip() + previous = best.get(title) + if previous is None: + best[title] = current_version + else: + a, b = normalize(current_version, previous) + if a < b: + best[title] = current_version + return best + + +def format_version(version): + return "v" + ".".join(map(str, version)) + + +def collect_rows(): + rows = [] + for releases_md in sorted(VARIANTS_DIR.glob("*/releases.md")): + text = releases_md.read_text() + manufacturer, device = parse_manufacturer_device(text) + if manufacturer is None: + continue + versions = parse_feature_versions(text) + if not versions: + continue + row = [manufacturer, device] + row.extend( + format_version(versions[name]) if name in versions else "-" + for name, _ in FEATURES + ) + rows.append(row) + rows.sort(key=lambda row: (row[0].lower(), row[1].lower())) + return rows + + +def render_csv(rows): + buf = io.StringIO() + writer = csv.writer(buf, lineterminator="\n") + writer.writerow(HEADER) + writer.writerows(rows) + return buf.getvalue() + + +def main(): + new_content = render_csv(collect_rows()) + old_content = CSV_PATH.read_text() if CSV_PATH.exists() else None + if new_content == old_content: + return 0 + CSV_PATH.write_text(new_content) + print(f"Regenerated {CSV_PATH.relative_to(REPO_ROOT)} from releases.md changelogs.") + print("Review the change and stage the file, then commit again.") + return 1 + + +if __name__ == "__main__": + sys.exit(main()) From e8833236795f13db6690a27c5da2f427fb3f3496 Mon Sep 17 00:00:00 2001 From: Oktawian Bieszke Date: Mon, 31 Aug 2026 15:34:40 +0200 Subject: [PATCH 5/6] docs/variants/*/releases.md: standarize FWUPD/LVFS feature titles Signed-off-by: Oktawian Bieszke --- docs/variants/asrock_turind8ud/releases.md | 2 +- docs/variants/dell_optiplex/releases.md | 2 +- docs/variants/gigabyte_mz33-ar1/releases.md | 2 +- docs/variants/hardkernel_odroid_h4/releases.md | 2 ++ docs/variants/msi_b850/releases.md | 1 + docs/variants/msi_z690/releases.md | 1 + docs/variants/msi_z790/releases.md | 1 + docs/variants/novacustom_ns5x_adl/releases.md | 4 ++-- docs/variants/novacustom_ns5x_tgl/releases.md | 4 ++-- docs/variants/novacustom_nuc_box/releases.md | 2 ++ docs/variants/novacustom_nv4x_adl/releases.md | 4 ++-- docs/variants/novacustom_nv4x_tgl/releases.md | 4 ++-- docs/variants/novacustom_v540tnx/releases.md | 2 ++ docs/variants/novacustom_v540tu/releases.md | 2 ++ docs/variants/novacustom_v560tnx/releases.md | 2 ++ docs/variants/novacustom_v560tu/releases.md | 2 ++ docs/variants/qemu_q35/releases.md | 2 +- 17 files changed, 27 insertions(+), 12 deletions(-) diff --git a/docs/variants/asrock_turind8ud/releases.md b/docs/variants/asrock_turind8ud/releases.md index 71f1d06eeed..a135b779b5d 100644 --- a/docs/variants/asrock_turind8ud/releases.md +++ b/docs/variants/asrock_turind8ud/releases.md @@ -60,7 +60,7 @@ Test results for this release can be found - [Serial port console redirection](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/31G-ec-and-superio/#sio004001-serial-port-in-firmware) - [TPM Measured Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/203-measured-boot/) - [SMM BIOS write protection with AMD ROM Armor](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) -- [Firmware update mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) - [Setup menu password configuration](https://docs.dasharo.com/dasharo-menu-docs/overview/#dasharo-menu-guides) - [USB stack disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#usb-configuration) - [Network stack disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#networking-options) diff --git a/docs/variants/dell_optiplex/releases.md b/docs/variants/dell_optiplex/releases.md index 3fb7f5b2bdd..d5daaf45632 100644 --- a/docs/variants/dell_optiplex/releases.md +++ b/docs/variants/dell_optiplex/releases.md @@ -44,7 +44,7 @@ Test results for this release can be found - [Custom boot logo](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/304-custom-logo/) - [Dasharo setup menu full screen mode support](https://github.com/Dasharo/dasharo-issues/issues/118) - [SMM BIOS write protection](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) -- [Firmware update mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) - [Setup menu password configuration](https://docs.dasharo.com/dasharo-menu-docs/overview/#dasharo-menu-guides) - [USB stack disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#usb-configuration) - [Network stack disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#networking-options) diff --git a/docs/variants/gigabyte_mz33-ar1/releases.md b/docs/variants/gigabyte_mz33-ar1/releases.md index 7fc2965f5c2..c1e5aded77c 100644 --- a/docs/variants/gigabyte_mz33-ar1/releases.md +++ b/docs/variants/gigabyte_mz33-ar1/releases.md @@ -40,7 +40,7 @@ Test results for this release can be found - [Serial port console redirection](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/31G-ec-and-superio/#sio004001-serial-port-in-firmware) - [TPM Measured Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/203-measured-boot/) - [SMM BIOS write protection with AMD ROM Armor](https://docs.dasharo.com/kb/amd-security-features/#amd-rom-armor) -- [Firmware update mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) +- [Firmware Update Mode](https://docs.dasharo.com/guides/firmware-update/#firmware-update-mode) - [Setup menu password configuration](https://docs.dasharo.com/dasharo-menu-docs/overview/#dasharo-menu-guides) - [USB stack disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#usb-configuration) - [Network stack disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#networking-options) diff --git a/docs/variants/hardkernel_odroid_h4/releases.md b/docs/variants/hardkernel_odroid_h4/releases.md index 2f149097ffe..f23b96d289a 100644 --- a/docs/variants/hardkernel_odroid_h4/releases.md +++ b/docs/variants/hardkernel_odroid_h4/releases.md @@ -28,6 +28,8 @@ Test results for this release can be found - Support for the Hardkernel ODROID H4 Ultra device - [Support for Net Card 2 module](https://github.com/Dasharo/dasharo-issues/issues/1281) - [Capsule Update V1](https://github.com/Dasharo/dasharo-issues/issues/1471) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://github.com/Dasharo/dasharo-issues/issues/1471) - [In-Band ECC option](https://github.com/Dasharo/dasharo-issues/issues/1276) - [Quiet and fast boot option](https://github.com/Dasharo/dasharo-issues/issues/1278) - [ME disable option](https://github.com/Dasharo/dasharo-issues/issues/1279) diff --git a/docs/variants/msi_b850/releases.md b/docs/variants/msi_b850/releases.md index 3ccf3f739d1..813ca708c5c 100644 --- a/docs/variants/msi_b850/releases.md +++ b/docs/variants/msi_b850/releases.md @@ -51,6 +51,7 @@ Test results for this release can be found - TPM PPI support with UEFI variable backend - [SBOM generation for AMD PSP blobs, video and LAN drivers](https://doc.coreboot.org/sbom/sbom.html) - [Capsule Update V1](https://docs.dasharo.com/unified-test-documentation/dasharo-stability/capsule-update/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) - Rebased coreboot on 25.12 tag - Rebased iPXE on last commit of February 2026 - [Support for firmware flashing via MSI FlashBIOS](https://docs.dasharo.com/unified/msi/recovery/#using-msi-flashbios-button) diff --git a/docs/variants/msi_z690/releases.md b/docs/variants/msi_z690/releases.md index 5d28519ba70..d2712df9b09 100644 --- a/docs/variants/msi_z690/releases.md +++ b/docs/variants/msi_z690/releases.md @@ -414,6 +414,7 @@ Test results for this release can be found ### Added - [Capsule Update V1](https://github.com/Dasharo/dasharo-issues/issues/423) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) - [Preserve user data during a capsule update](https://github.com/Dasharo/dasharo-issues/issues/809) - [CPU configuration menu](https://github.com/Dasharo/dasharo-issues/issues/134) - [Update to a much newer EDKII revision](https://github.com/Dasharo/dasharo-issues/issues/432) diff --git a/docs/variants/msi_z790/releases.md b/docs/variants/msi_z790/releases.md index e62f534d90d..933ee9d20d2 100644 --- a/docs/variants/msi_z790/releases.md +++ b/docs/variants/msi_z790/releases.md @@ -414,6 +414,7 @@ Test results for this release can be found ### Added - [Capsule Update V1](https://github.com/Dasharo/dasharo-issues/issues/423) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) - [Preserve user data during a capsule update](https://github.com/Dasharo/dasharo-issues/issues/809) - [CPU configuration menu](https://github.com/Dasharo/dasharo-issues/issues/134) - [Update to a much newer EDKII revision](https://github.com/Dasharo/dasharo-issues/issues/432) diff --git a/docs/variants/novacustom_ns5x_adl/releases.md b/docs/variants/novacustom_ns5x_adl/releases.md index c83f608b615..c619bc89685 100644 --- a/docs/variants/novacustom_ns5x_adl/releases.md +++ b/docs/variants/novacustom_ns5x_adl/releases.md @@ -17,8 +17,8 @@ Test results for this release can be found ### Added - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) -- [FWUPD](https://docs.dasharo.com/kb/capsule-updates-overview/) -- [LVFS](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - [Dasharo TrustRoot (Intel Boot Guard) support](https://docs.dasharo.com/glossary/#dasharo-trustroot) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [Human-readable UEFI Secure Boot key management screens](https://docs.dasharo.com/dasharo-menu-docs/device-manager/#secure-boot-configuration) diff --git a/docs/variants/novacustom_ns5x_tgl/releases.md b/docs/variants/novacustom_ns5x_tgl/releases.md index f15a8ab7d0d..2c85fdf4813 100644 --- a/docs/variants/novacustom_ns5x_tgl/releases.md +++ b/docs/variants/novacustom_ns5x_tgl/releases.md @@ -17,8 +17,8 @@ Test results for this release can be found ### Added - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) -- [FWUPD](https://docs.dasharo.com/kb/capsule-updates-overview/) -- [LVFS](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [Quiet boot/Fast boot](https://docs.dasharo.com/dasharo-menu-docs/boot-maintenance-mgr/) - [FTDI controller support](https://github.com/Dasharo/open-source-firmware-validation/blob/develop/docs/novacustom.md) diff --git a/docs/variants/novacustom_nuc_box/releases.md b/docs/variants/novacustom_nuc_box/releases.md index e8d3d8004c7..7337e3f31e2 100644 --- a/docs/variants/novacustom_nuc_box/releases.md +++ b/docs/variants/novacustom_nuc_box/releases.md @@ -201,6 +201,8 @@ Test results for this release can be found - Support for NovaCustom NUC BOX (Meteor Lake) - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - [TPM Measured Boot](https://docs.dasharo.com/unified-test-documentation/dasharo-security/203-measured-boot/) - [Vboot Verified Boot](https://docs.dasharo.com/guides/vboot-signing/) - [Intel ME soft disable](https://docs.dasharo.com/unified-test-documentation/dasharo-security/20F-me-neuter/) diff --git a/docs/variants/novacustom_nv4x_adl/releases.md b/docs/variants/novacustom_nv4x_adl/releases.md index 8aa5bc6dbe6..e8af6ad9b3d 100644 --- a/docs/variants/novacustom_nv4x_adl/releases.md +++ b/docs/variants/novacustom_nv4x_adl/releases.md @@ -17,8 +17,8 @@ Test results for this release can be found ### Added - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) -- [FWUPD](https://docs.dasharo.com/kb/capsule-updates-overview/) -- [LVFS](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - [Dasharo TrustRoot (Intel Boot Guard) support](https://docs.dasharo.com/glossary/#dasharo-trustroot) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [Human-readable UEFI Secure Boot key management screens](https://docs.dasharo.com/dasharo-menu-docs/device-manager/#secure-boot-configuration) diff --git a/docs/variants/novacustom_nv4x_tgl/releases.md b/docs/variants/novacustom_nv4x_tgl/releases.md index eee9c3667cd..04349ee2449 100644 --- a/docs/variants/novacustom_nv4x_tgl/releases.md +++ b/docs/variants/novacustom_nv4x_tgl/releases.md @@ -21,8 +21,8 @@ Test results for this release can be found ### Added - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) -- [FWUPD](https://docs.dasharo.com/kb/capsule-updates-overview/) -- [LVFS](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [Quiet boot/Fast boot](https://docs.dasharo.com/dasharo-menu-docs/boot-maintenance-mgr/) - [FTDI controller support](https://github.com/Dasharo/open-source-firmware-validation/blob/develop/docs/novacustom.md) diff --git a/docs/variants/novacustom_v540tnx/releases.md b/docs/variants/novacustom_v540tnx/releases.md index bdbe6bb1c66..334c7caf4b8 100644 --- a/docs/variants/novacustom_v540tnx/releases.md +++ b/docs/variants/novacustom_v540tnx/releases.md @@ -34,6 +34,8 @@ Test results for this release can be found - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [ACPI driver](https://docs.dasharo.com/unified/novacustom/features/#acpi-driver) - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - Fedora support - [Intel Boot Guard OEM Signing Key check in capsule update](https://docs.dasharo.com/guides/capsule-update/#troubleshooting) diff --git a/docs/variants/novacustom_v540tu/releases.md b/docs/variants/novacustom_v540tu/releases.md index d001fdf9144..20ea8c374c2 100644 --- a/docs/variants/novacustom_v540tu/releases.md +++ b/docs/variants/novacustom_v540tu/releases.md @@ -122,6 +122,8 @@ Test results for this release can be found - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [ACPI driver](https://docs.dasharo.com/unified/novacustom/features/#acpi-driver) - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - Fedora support ### Changed diff --git a/docs/variants/novacustom_v560tnx/releases.md b/docs/variants/novacustom_v560tnx/releases.md index 1d11f12adb8..eb37c20e3f9 100644 --- a/docs/variants/novacustom_v560tnx/releases.md +++ b/docs/variants/novacustom_v560tnx/releases.md @@ -34,6 +34,8 @@ Test results for this release can be found - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [ACPI driver](https://docs.dasharo.com/unified/novacustom/features/#acpi-driver) - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - Fedora support - [Intel Boot Guard OEM Signing Key check in capsule update](https://docs.dasharo.com/guides/capsule-update/#troubleshooting) diff --git a/docs/variants/novacustom_v560tu/releases.md b/docs/variants/novacustom_v560tu/releases.md index ffd1dacac83..b9a28b1e8b1 100644 --- a/docs/variants/novacustom_v560tu/releases.md +++ b/docs/variants/novacustom_v560tu/releases.md @@ -122,6 +122,8 @@ Test results for this release can be found - [PCR-0 reconstruction](https://github.com/Dasharo/coreboot/pull/740) - [ACPI driver](https://docs.dasharo.com/unified/novacustom/features/#acpi-driver) - [Capsule Update V1](https://docs.dasharo.com/kb/capsule-updates-overview/) +- [FWUPD support](https://docs.dasharo.com/kb/fwupd/) +- [LVFS support](https://docs.dasharo.com/kb/capsule-updates-overview/) - Fedora support ### Changed diff --git a/docs/variants/qemu_q35/releases.md b/docs/variants/qemu_q35/releases.md index 4e3e435af20..68910d72c20 100644 --- a/docs/variants/qemu_q35/releases.md +++ b/docs/variants/qemu_q35/releases.md @@ -124,7 +124,7 @@ menus, but have no actual backend hooked up: - [SATA disk password support](https://docs.dasharo.com/dasharo-menu-docs/device-manager/#hdd-security-configuration) - SMM BIOS Write Protection support and enable/disable option - [USB stack and mass storage enable/disable option](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#usb-configuration) -- [Firmware Update Mode feature](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) +- [Firmware Update Mode](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) - [One of the two fan profiles can now be selected in Setup Menu](https://docs.dasharo.com/unified/novacustom/features/) - [Setup menu option for switching between S0ix and S3 suspend mode](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#power-management-options) - [Wi-Fi / Bluetooth module disable option in setup menu](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options) From 248861b6c83797bc6df6418efaa3e2c64c5bbbf3 Mon Sep 17 00:00:00 2001 From: Oktawian Bieszke Date: Mon, 31 Aug 2026 15:46:31 +0200 Subject: [PATCH 6/6] scripts/generate_firmware_update_support_table.py: exclude qemu Signed-off-by: Oktawian Bieszke --- .../firmware-update-method-support-table.csv | 21 ++++++++------- .../generate_firmware_update_support_table.py | 26 +++++++++++-------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/docs/guides/firmware-update-method-support-table.csv b/docs/guides/firmware-update-method-support-table.csv index 2269ce5a632..6def1776ea3 100644 --- a/docs/guides/firmware-update-method-support-table.csv +++ b/docs/guides/firmware-update-method-support-table.csv @@ -1,14 +1,17 @@ Manufacturer,Device,[Firmware Update Mode][fum],[Capsule Update V1][cup1],[FWUPD][fwupd],[LVFS][lvfs],[Capsule Update V2][cup2] -Hardkernel,ODROID H4,-,v0.9.1,-,-,- -MSI,PRO B850-P WIFI,v0.9.0,v0.9.0,-,-,- -MSI,PRO Z690-A (WIFI) (DDR4),v1.1.2,v1.1.4,-,-,- -MSI,PRO Z790-P (WIFI) (DDR5),v0.9.0,v0.9.2,-,-,- +ASRock,Rack TURIND8UD-2T/X550,v0.9.0,-,-,-,- +Dell,OptiPlex 7010/9010,v0.1.1,-,-,-,- +Gigabyte,MZ33-AR1,v0.9.0,-,-,-,- +Hardkernel,ODROID H4,-,v0.9.1,v0.9.1,v0.9.1,- +MSI,PRO B850-P WIFI,v0.9.0,v0.9.0,v0.9.0,-,- +MSI,PRO Z690-A (WIFI) (DDR4),v1.1.2,v1.1.4,v1.1.4,-,- +MSI,PRO Z790-P (WIFI) (DDR5),v0.9.0,v0.9.2,v0.9.2,-,- NovaCustom,NS5x/7x 11th Gen,v1.5.1,v1.6.0,v1.6.0,v1.6.0,- NovaCustom,NS5x/7x 12th Gen,v1.7.1,v1.8.0,v1.8.0,v1.8.0,- -NovaCustom,NUC BOX 14th Gen,v0.9.0,v0.9.0,-,-,- +NovaCustom,NUC BOX 14th Gen,v0.9.0,v0.9.0,v0.9.0,v0.9.0,- NovaCustom,NV4x 11th Gen,v1.5.1,v1.6.0,v1.6.0,v1.6.0,- NovaCustom,NV4x 12th Gen,v1.7.1,v1.8.0,v1.8.0,v1.8.0,- -NovaCustom,V540TU,v0.9.0,v1.0.0,-,-,- -NovaCustom,V54xTNx 14th Gen,v0.9.1,v1.0.0,-,-,- -NovaCustom,V560TU,v0.9.0,v1.0.0,-,-,- -NovaCustom,V56xTNx 14th Gen,v0.9.1,v1.0.0,-,-,- +NovaCustom,V540TU,v0.9.0,v1.0.0,v1.0.0,v1.0.0,- +NovaCustom,V54xTNx 14th Gen,v0.9.1,v1.0.0,v1.0.0,v1.0.0,- +NovaCustom,V560TU,v0.9.0,v1.0.0,v1.0.0,v1.0.0,- +NovaCustom,V56xTNx 14th Gen,v0.9.1,v1.0.0,v1.0.0,v1.0.0,- diff --git a/scripts/generate_firmware_update_support_table.py b/scripts/generate_firmware_update_support_table.py index 123c54567b9..5b043cf1eb4 100644 --- a/scripts/generate_firmware_update_support_table.py +++ b/scripts/generate_firmware_update_support_table.py @@ -1,13 +1,10 @@ #!/usr/bin/env python3 """ -Regenerate docs/guides/firmware-update-method-support-table.csv from the -standardized "Added" bullets in docs/variants/*/releases.md. +Regenerate docs/guides/firmware-update-method-support-table.csv from docs/variants/*/releases.md Each releases.md is scanned for bullets, under a "### Added" heading, whose -link text is exactly one of these ("Firmware -Update Mode", "Capsule Update V1", "FWUPD", "LVFS", "Capsule Update V2"). The -lowest version a feature is found under is recorded as the version it's -"supported starting from". +link text is exactly one of these bullet titles: "Firmware Update Mode", +"Capsule Update V1", "FWUPD support", "LVFS support", "Capsule Update V2". """ import csv @@ -20,11 +17,14 @@ VARIANTS_DIR = REPO_ROOT / "docs/variants" CSV_PATH = REPO_ROOT / "docs/guides/firmware-update-method-support-table.csv" +# Not real hardware +EXCLUDED_VARIANTS = {"qemu_q35"} + FEATURES = [ ("Firmware Update Mode", "[Firmware Update Mode][fum]"), ("Capsule Update V1", "[Capsule Update V1][cup1]"), - ("FWUPD", "[FWUPD][fwupd]"), - ("LVFS", "[LVFS][lvfs]"), + ("FWUPD support", "[FWUPD][fwupd]"), + ("LVFS support", "[LVFS][lvfs]"), ("Capsule Update V2", "[Capsule Update V2][cup2]"), ] FEATURE_NAMES = {name for name, _ in FEATURES} @@ -54,8 +54,9 @@ def parse_manufacturer_device(text): def parse_feature_versions(text): - """Return {feature_name: version_tuple} for the lowest version each - standardized feature bullet appears under in this file.""" + """Return {feature_name: version_tuple} for the lowest version + each searched bullet appears under in this file. + """ best = {} current_version = None in_added_section = False @@ -92,6 +93,8 @@ def format_version(version): def collect_rows(): rows = [] for releases_md in sorted(VARIANTS_DIR.glob("*/releases.md")): + if releases_md.parent.name in EXCLUDED_VARIANTS: + continue text = releases_md.read_text() manufacturer, device = parse_manufacturer_device(text) if manufacturer is None: @@ -123,7 +126,8 @@ def main(): if new_content == old_content: return 0 CSV_PATH.write_text(new_content) - print(f"Regenerated {CSV_PATH.relative_to(REPO_ROOT)} from releases.md changelogs.") + print(f"Regenerated {CSV_PATH.relative_to( + REPO_ROOT)} from releases.md changelogs.") print("Review the change and stage the file, then commit again.") return 1