git: f1bd97bc567b - main - sysutils/intel-nvmupdate-i225-i226: New port
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 04 Sep 2026 05:50:35 UTC
The branch main has been updated by kbowling:
URL: https://cgit.FreeBSD.org/ports/commit/?id=f1bd97bc567b293fcbe53b5f6b5e1cbe0d059cb1
commit f1bd97bc567b293fcbe53b5f6b5e1cbe0d059cb1
Author: Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2026-09-04 05:31:54 +0000
Commit: Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2026-09-04 05:50:28 +0000
sysutils/intel-nvmupdate-i225-i226: New port
PR: 265714
---
sysutils/Makefile | 1 +
sysutils/intel-nvmupdate-i225-i226/Makefile | 76 +++++++++++++++
sysutils/intel-nvmupdate-i225-i226/distinfo | 5 +
.../intel-nvmupdate-i225-i226/files/README.FreeBSD | 80 ++++++++++++++++
.../files/nvmupdate-i225-i226.in | 4 +
.../files/nvmupdate-i226-it-1mb.cfg | 14 +++
.../files/nvmupdate-i226-it-2mb.cfg | 14 +++
.../files/nvmupdate-i226-lm-1mb.cfg | 14 +++
.../files/nvmupdate-i226-lm-2mb.cfg | 14 +++
.../intel-nvmupdate-i225-i226/files/nvmupdate.cfg | 102 +++++++++++++++++++++
.../intel-nvmupdate-i225-i226/files/pkg-message.in | 45 +++++++++
.../files/source_manifest.txt | 52 +++++++++++
.../intel-nvmupdate-i225-i226/files/version.txt | 6 ++
sysutils/intel-nvmupdate-i225-i226/pkg-descr | 11 +++
sysutils/intel-nvmupdate-i225-i226/pkg-plist | 24 +++++
15 files changed, 462 insertions(+)
diff --git a/sysutils/Makefile b/sysutils/Makefile
index 132af50b9bf6..54df9d836c4c 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -558,6 +558,7 @@
SUBDIR += intel-nvmupdate-e810
SUBDIR += intel-nvmupdate-e830
SUBDIR += intel-nvmupdate-i210
+ SUBDIR += intel-nvmupdate-i225-i226
SUBDIR += intel-nvmupdate-x550
SUBDIR += intel-pcm
SUBDIR += intel-undervolt
diff --git a/sysutils/intel-nvmupdate-i225-i226/Makefile b/sysutils/intel-nvmupdate-i225-i226/Makefile
new file mode 100644
index 000000000000..5e74a216165c
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/Makefile
@@ -0,0 +1,76 @@
+PORTNAME= nvmupdate
+DISTVERSION= 20260903
+CATEGORIES= sysutils
+MASTER_SITES= https://downloadmirror.intel.com/923640/:intel
+PKGNAMEPREFIX= intel-
+PKGNAMESUFFIX= -i225-i226
+DISTFILES= E610_NVMUpdatePackage_v1_61_FreeBSD.tar.gz:intel
+
+MAINTAINER= kbowling@FreeBSD.org
+COMMENT= NVM update utility for Intel I225-V and I226 Ethernet controllers
+WWW= https://github.com/BillyCurtis/Intel-I226-V-NVM-Firmware \
+ https://www.intel.com/content/www/us/en/download/15084/intel-ethernet-adapter-complete-driver-pack.html
+
+LICENSE= IFL IPL
+LICENSE_COMB= multi
+
+LICENSE_NAME_IFL= Intel Firmware License
+LICENSE_NAME_IPL= Intel Proprietary License
+LICENSE_FILE_IFL= ${INTEL_WRKSRC}/Intel_firmware_license.txt
+LICENSE_FILE_IPL= ${INTEL_WRKSRC}/license.txt
+LICENSE_PERMS_IFL= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+LICENSE_PERMS_IPL= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+IGNORE_DragonFly= FreeBSD binary port
+ONLY_FOR_ARCHS= amd64
+ONLY_FOR_ARCHS_REASON= not supported on anything other than amd64
+
+USE_GITHUB= yes
+GH_ACCOUNT= BillyCurtis
+GH_PROJECT= Intel-I226-V-NVM-Firmware
+GH_TAGNAME= 5fb02f3128f894fdeb47bea6450af872fb85ff45
+
+NO_ARCH= yes
+NO_ARCH_IGNORE= nvmupdate64e
+NO_BUILD= yes
+
+SUB_FILES= nvmupdate-i225-i226 pkg-message
+SUB_LIST= NVMUPDATE_DIR=${NVMUPDATE_DIR}
+
+INTEL_WRKSRC= ${WRKDIR}/E610/FreeBSDx64
+NVMUPDATE_DIR= intel-nvmupdate-i225-i226
+
+CONFIG_FILES= nvmupdate-i226-it-1mb.cfg nvmupdate-i226-it-2mb.cfg \
+ nvmupdate-i226-lm-1mb.cfg nvmupdate-i226-lm-2mb.cfg \
+ nvmupdate.cfg
+INTEL_FILES= Intel_Proprietary_License.pdf Intel_firmware_license.txt \
+ file_license.txt license.pdf license.txt
+NVM_FILES= I225-V/1.89/FXVL_15F3_V_1MB_1.89.bin \
+ I225-V/1.89/FXVL_15F3_V_2MB_1.89.bin \
+ I226-V/2.32/FXVL_125B_LM_1MB_2.32.bin \
+ I226-V/2.32/FXVL_125B_LM_2MB_2.32.bin \
+ I226-V/2.32/FXVL_125C_V_1MB_2.32.bin \
+ I226-V/2.32/FXVL_125C_V_2MB_2.32.bin \
+ I226-V/2.32/FXVL_125D_IT_1MB_2.32.bin \
+ I226-V/2.32/FXVL_125D_IT_2MB_2.32.bin
+PORT_FILES= README.FreeBSD source_manifest.txt version.txt
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${PREFIX}/${NVMUPDATE_DIR}
+.for f in ${CONFIG_FILES} ${PORT_FILES}
+ ${INSTALL_DATA} ${FILESDIR}/${f} ${STAGEDIR}${PREFIX}/${NVMUPDATE_DIR}/
+.endfor
+.for f in ${INTEL_FILES}
+ ${INSTALL_DATA} ${INTEL_WRKSRC}/${f} ${STAGEDIR}${PREFIX}/${NVMUPDATE_DIR}/
+.endfor
+.for f in ${NVM_FILES}
+ ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${PREFIX}/${NVMUPDATE_DIR}/
+.endfor
+ ${INSTALL_DATA} ${WRKSRC}/README.md \
+ ${STAGEDIR}${PREFIX}/${NVMUPDATE_DIR}/README.mirror
+ ${INSTALL_PROGRAM} ${INTEL_WRKSRC}/nvmupdate64e \
+ ${STAGEDIR}${PREFIX}/${NVMUPDATE_DIR}/
+ ${INSTALL_SCRIPT} ${WRKDIR}/nvmupdate-i225-i226 \
+ ${STAGEDIR}${PREFIX}/sbin/
+
+.include <bsd.port.mk>
diff --git a/sysutils/intel-nvmupdate-i225-i226/distinfo b/sysutils/intel-nvmupdate-i225-i226/distinfo
new file mode 100644
index 000000000000..1f5fed5576b0
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1788499038
+SHA256 (E610_NVMUpdatePackage_v1_61_FreeBSD.tar.gz) = b88cbbd093611f35bbb892b3cdb8cfcdf0df92fa0783b8bdeae24f659275fd70
+SIZE (E610_NVMUpdatePackage_v1_61_FreeBSD.tar.gz) = 14886287
+SHA256 (BillyCurtis-Intel-I226-V-NVM-Firmware-20260903-5fb02f3128f894fdeb47bea6450af872fb85ff45_GH0.tar.gz) = 4f5f88793f9faed2ad64c8271cad359ffe31c7fc520011ea05bf43e5c8c64fea
+SIZE (BillyCurtis-Intel-I226-V-NVM-Firmware-20260903-5fb02f3128f894fdeb47bea6450af872fb85ff45_GH0.tar.gz) = 4856862
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/README.FreeBSD b/sysutils/intel-nvmupdate-i225-i226/files/README.FreeBSD
new file mode 100644
index 000000000000..d1c4d8ee82ec
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/README.FreeBSD
@@ -0,0 +1,80 @@
+Intel I225-V/I226 NVM Update Port for FreeBSD
+==============================================
+
+This is an unofficial combination assembled by the FreeBSD port. Intel did
+not publish or support it as an Intel NVM Update Package.
+
+Sources
+-------
+
+* The FreeBSD nvmupdate64e 1.43.37.1a executable and Intel license files are
+ fetched unmodified from Intel's E610 v1.61 FreeBSD NVM Update Package.
+ Although that archive also contains E610 firmware, this port does not install
+ any of it.
+* The I225-V device 15F3 NVM 1.89 images and I226-V, I226-LM, and I226-IT NVM
+ 2.32 images are fetched unmodified from
+ BillyCurtis/Intel-I226-V-NVM-Firmware at commit
+ 5fb02f3128f894fdeb47bea6450af872fb85ff45. This is an unofficial,
+ unsupported GitHub mirror. Intel's corresponding I226 NVM package is
+ access-controlled in RDC. FreeBSD does not vouch for the mirror's provenance
+ or assert that it is authorized by Intel.
+* This port installs only the current images named in source_manifest.txt; the
+ GitHub snapshot also contains historical images that are not installed.
+* The configuration files, README.FreeBSD, source_manifest.txt, and version.txt
+ are generated and maintained by the FreeBSD port. They were not supplied or
+ approved by Intel or the GitHub mirror maintainer.
+
+Configuration matching
+----------------------
+
+EEPID identifies and verifies the target image. REPLACES is optional. Per
+Intel's NVMUpdate documentation, a device block without REPLACES wildcard-
+matches its exact vendor, device, subvendor, and subdevice IDs.
+
+The I225-V and I226-V entries in nvmupdate.cfg list known ETrack lineages, which
+also distinguish their 1MB and 2MB variants. The I226-LM and I226-IT entries
+omit REPLACES so they can update any NVM version with the matching four-part PCI
+ID. Four single-image configuration files let the operator select the intended
+LM/IT flash size explicitly.
+
+Security model
+--------------
+
+Intel documents a secure NVM flow for I225/I226 in which secured OROM, PHY, and
+firmware modules are signed by Intel and authenticated by the controller. This
+does not establish the provenance of the complete .bin container, its filename,
+the GitHub archive, or nvmupdate.cfg as a unit. The NVMUpdate tool also verifies
+images by default; keep that verification enabled and never pass its -sv option.
+
+Scope and safety
+----------------
+
+The generated entries intentionally match only the Intel reference subsystem
+IDs listed in nvmupdate.cfg. They do not match arbitrary OEM subsystem IDs,
+I225 device 15F2, or I225-IT device 0D9F.
+
+The combined nvmupdate.cfg contains both flash-size candidates for I226-LM and
+I226-IT, whose PCI IDs do not reveal flash size. Do not use the combined file
+to update those devices. Select exactly one of these files with -c after
+determining the correct flash size from authoritative platform information:
+
+ nvmupdate-i226-lm-1mb.cfg
+ nvmupdate-i226-lm-2mb.cfg
+ nvmupdate-i226-it-1mb.cfg
+ nvmupdate-i226-it-2mb.cfg
+
+A 2MB backup does not prove that the device has 2MB flash. Reports in the
+OPNsense thread show that NVMUpdate backups can be 2MB for a 1MB device.
+
+Run inventory mode first and save its output:
+
+ nvmupdate-i225-i226 -i -l inventory.log -o inventory.xml
+
+For example, inventory an I226-LM against only the selected 2MB image with:
+
+ nvmupdate-i225-i226 -i -c nvmupdate-i226-lm-2mb.cfg \
+ -l inventory.log -o inventory.xml
+
+An update can interrupt networking and requires a complete power cycle. Make
+a backup, use an out-of-band management path, and follow Intel's NVM Update Tool
+documentation before choosing to update any device.
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i225-i226.in b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i225-i226.in
new file mode 100644
index 000000000000..05beba1bf604
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i225-i226.in
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd %%PREFIX%%/%%NVMUPDATE_DIR%% || exit 1
+exec ./nvmupdate64e "$@"
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-it-1mb.cfg b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-it-1mb.cfg
new file mode 100644
index 000000000000..0593ca410a41
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-it-1mb.cfg
@@ -0,0 +1,14 @@
+CURRENT FAMILY: 1.0.0
+CONFIG VERSION: 1.20.0
+
+; REPLACES is intentionally omitted to wildcard-match the exact PCI IDs.
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-IT 1MB
+VENDOR: 8086
+DEVICE: 125D
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125D_IT_1MB_2.32.bin
+EEPID: 80000433
+RESET TYPE: REBOOT
+END DEVICE
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-it-2mb.cfg b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-it-2mb.cfg
new file mode 100644
index 000000000000..e9f5e559584c
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-it-2mb.cfg
@@ -0,0 +1,14 @@
+CURRENT FAMILY: 1.0.0
+CONFIG VERSION: 1.20.0
+
+; REPLACES is intentionally omitted to wildcard-match the exact PCI IDs.
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-IT 2MB
+VENDOR: 8086
+DEVICE: 125D
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125D_IT_2MB_2.32.bin
+EEPID: 80000431
+RESET TYPE: REBOOT
+END DEVICE
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-lm-1mb.cfg b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-lm-1mb.cfg
new file mode 100644
index 000000000000..b23d55ae874c
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-lm-1mb.cfg
@@ -0,0 +1,14 @@
+CURRENT FAMILY: 1.0.0
+CONFIG VERSION: 1.20.0
+
+; REPLACES is intentionally omitted to wildcard-match the exact PCI IDs.
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-LM 1MB
+VENDOR: 8086
+DEVICE: 125B
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125B_LM_1MB_2.32.bin
+EEPID: 80000424
+RESET TYPE: REBOOT
+END DEVICE
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-lm-2mb.cfg b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-lm-2mb.cfg
new file mode 100644
index 000000000000..b27f24dff93a
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate-i226-lm-2mb.cfg
@@ -0,0 +1,14 @@
+CURRENT FAMILY: 1.0.0
+CONFIG VERSION: 1.20.0
+
+; REPLACES is intentionally omitted to wildcard-match the exact PCI IDs.
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-LM 2MB
+VENDOR: 8086
+DEVICE: 125B
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125B_LM_2MB_2.32.bin
+EEPID: 80000421
+RESET TYPE: REBOOT
+END DEVICE
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate.cfg b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate.cfg
new file mode 100644
index 000000000000..ae51986070f8
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/nvmupdate.cfg
@@ -0,0 +1,102 @@
+CURRENT FAMILY: 1.0.0
+CONFIG VERSION: 1.20.0
+
+; Unofficial mirror: I225-V 1MB reference image
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I225-V 1MB
+VENDOR: 8086
+DEVICE: 15F3
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_15F3_V_1MB_1.89.bin
+EEPID: 800002FC
+RESET TYPE: REBOOT
+REPLACES: 80000150 80000182 800001CE 800002FC
+END DEVICE
+
+; Unofficial mirror: I225-V 2MB reference image
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I225-V 2MB
+VENDOR: 8086
+DEVICE: 15F3
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_15F3_V_2MB_1.89.bin
+EEPID: 800002F4
+RESET TYPE: REBOOT
+REPLACES: 8000014B 80000185 800001C7 800002F4
+END DEVICE
+
+; Unofficial mirror: I226-V 1MB reference image
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-V 1MB
+VENDOR: 8086
+DEVICE: 125C
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125C_V_1MB_2.32.bin
+EEPID: 80000425
+RESET TYPE: REBOOT
+REPLACES: 80000110 80000290 80000308 8000039D 80000425
+END DEVICE
+
+; Unofficial mirror: I226-V 2MB reference image
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-V 2MB
+VENDOR: 8086
+DEVICE: 125C
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125C_V_2MB_2.32.bin
+EEPID: 80000422
+RESET TYPE: REBOOT
+REPLACES: 80000284 8000028D 80000303 80000371 800003AD 80000422
+END DEVICE
+
+; Unofficial mirror: I226-LM 1MB image; REPLACES omitted for wildcard match
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-LM 1MB
+VENDOR: 8086
+DEVICE: 125B
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125B_LM_1MB_2.32.bin
+EEPID: 80000424
+RESET TYPE: REBOOT
+END DEVICE
+
+; Unofficial mirror: I226-LM 2MB image; REPLACES omitted for wildcard match
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-LM 2MB
+VENDOR: 8086
+DEVICE: 125B
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125B_LM_2MB_2.32.bin
+EEPID: 80000421
+RESET TYPE: REBOOT
+END DEVICE
+
+; Unofficial mirror: I226-IT 1MB image; REPLACES omitted for wildcard match
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-IT 1MB
+VENDOR: 8086
+DEVICE: 125D
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125D_IT_1MB_2.32.bin
+EEPID: 80000433
+RESET TYPE: REBOOT
+END DEVICE
+
+; Unofficial mirror: I226-IT 2MB image; REPLACES omitted for wildcard match
+BEGIN DEVICE
+DEVICENAME: Intel(R) Ethernet Controller I226-IT 2MB
+VENDOR: 8086
+DEVICE: 125D
+SUBVENDOR: 8086
+SUBDEVICE: 0000
+NVM IMAGE: FXVL_125D_IT_2MB_2.32.bin
+EEPID: 80000431
+RESET TYPE: REBOOT
+END DEVICE
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/pkg-message.in b/sysutils/intel-nvmupdate-i225-i226/files/pkg-message.in
new file mode 100644
index 000000000000..e0cc4cb294cb
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/pkg-message.in
@@ -0,0 +1,45 @@
+[
+{ type: install
+ message: <<EOM
+The NVM images in this package come from an unofficial, unsupported GitHub
+mirror. Intel supplies the FreeBSD updater, but did not supply or approve the
+mirror or this port's generated configuration.
+
+Intel documents that secured modules within I225/I226 NVM images are signed by
+Intel and authenticated by the controller, and NVMUpdate verifies images by
+default. These checks do not authenticate the GitHub archive or the generated
+configuration as a unit. Never disable image verification with the -sv option.
+
+The generated entries match only these Intel reference devices:
+
+- I225-V device 15F3, subsystem 8086:0000
+- I226-V device 125C, subsystem 8086:0000
+- I226-LM device 125B, subsystem 8086:0000
+- I226-IT device 125D, subsystem 8086:0000
+
+They do not support arbitrary OEM devices, I225 device 15F2, or I225-IT device
+0D9F. The I226-LM/IT entries omit the optional REPLACES field and therefore
+match any NVM version with the exact four-part PCI ID. Obtain an update package
+from the system or motherboard vendor for an OEM design.
+
+Both 1MB and 2MB I226-LM/IT entries are present in nvmupdate.cfg, but their PCI
+IDs do not identify flash size. Do not update an LM/IT device with that
+combined file. Select exactly one of the dedicated
+nvmupdate-i226-*-1mb.cfg or nvmupdate-i226-*-2mb.cfg files with -c after
+determining the correct flash size.
+
+Inventory is read-only and should always be run first:
+
+# nvmupdate-i225-i226 -i -l inventory.log -o inventory.xml
+
+Before any update, read the FreeBSD-specific instructions and provenance notes:
+
+%%PREFIX%%/%%NVMUPDATE_DIR%%/README.FreeBSD
+
+Save a backup, use an out-of-band management path, ensure stable power, and
+read Intel's NVMUpdate documentation. An interrupted or mismatched update can
+make the controller unusable. A complete power cycle is required after an
+update. Use the latest igc driver available for the installed FreeBSD release.
+EOM
+}
+]
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/source_manifest.txt b/sysutils/intel-nvmupdate-i225-i226/files/source_manifest.txt
new file mode 100644
index 000000000000..4b811d3618f5
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/source_manifest.txt
@@ -0,0 +1,52 @@
+FreeBSD port data version: 20260903
+
+Intel I225/I226 secure NVM documentation
+ Intel Ethernet Controller I225/I226 Datasheet, document 596659
+ URL: https://www.intel.com/content/www/us/en/secure/content-details/596659/intel-ethernet-controller-i225-i226-datasheet.html
+
+Intel NVMUpdate configuration semantics
+ Intel Ethernet Adapters and Devices User Guide
+ URL: https://edc.intel.com/content/www/us/en/design/products/ethernet/adapters-and-devices-user-guide/intel-ethernet-nvm-update-tool/
+ EEPID is the optional target image ETrack tag. With REPLACES omitted, a
+ device block wildcard-matches its VENDOR, DEVICE, SUBVENDOR, and SUBDEVICE.
+
+Intel I226 NVM package
+ Intel Ethernet Controller I226 NVM, document 686540
+ URL: https://www.intel.com/content/www/us/en/secure/content-details/686540/intel-ethernet-controller-i226-nvm.html
+
+Intel FreeBSD updater source
+ URL: https://downloadmirror.intel.com/923640/E610_NVMUpdatePackage_v1_61_FreeBSD.tar.gz
+ Archive: E610_NVMUpdatePackage_v1_61_FreeBSD.tar.gz
+ SHA256: b88cbbd093611f35bbb892b3cdb8cfcdf0df92fa0783b8bdeae24f659275fd70
+ nvmupdate64e SHA256: 8de98098a32798b668357bbdb9364d779bc177f624a47bd42b7544149936c179
+ Version: 1.43.37.1a
+
+Unofficial I225-V/I226 image mirror
+ URL: https://github.com/BillyCurtis/Intel-I226-V-NVM-Firmware
+ Commit: 5fb02f3128f894fdeb47bea6450af872fb85ff45
+ This is not an official or supported Intel distribution channel.
+
+ FXVL_15F3_V_1MB_1.89.bin
+ ETrack: 800002FC
+ SHA256: f0329ccb43a4e5d44a74c772c29404253bbf7d208920ae6414ec053358cf0f61
+ FXVL_15F3_V_2MB_1.89.bin
+ ETrack: 800002F4
+ SHA256: 227121965e7248ef1cd1723ec59e381d9c80c3116b4350267f5fbee588602683
+ FXVL_125C_V_1MB_2.32.bin
+ ETrack: 80000425
+ SHA256: 881434a8e54ebaf70117dd5061c3a2f04b16fe1cc3e443777337fb6774892024
+ FXVL_125C_V_2MB_2.32.bin
+ ETrack: 80000422
+ SHA256: 1bc7ce6aec0dfacb1bd4f156054af0018efee7fbff23687a20efe8c50b346e08
+ FXVL_125B_LM_1MB_2.32.bin (wildcard four-part PCI ID config entry)
+ ETrack: 80000424
+ SHA256: 5426ed761d21527105fc794cd8f694e3013db580d1203fd07c387192a6c9e710
+ FXVL_125B_LM_2MB_2.32.bin (wildcard four-part PCI ID config entry)
+ ETrack: 80000421
+ SHA256: cddc090b99541e05a0a2a36c5e2cb52e8d920e2d07067d565d486aad3a9728f6
+ FXVL_125D_IT_1MB_2.32.bin (wildcard four-part PCI ID config entry)
+ ETrack: 80000433
+ SHA256: b0a3eeea63b0d26f669337c55c0aed727978b365913633af524983b4d866017a
+ FXVL_125D_IT_2MB_2.32.bin (wildcard four-part PCI ID config entry)
+ ETrack: 80000431
+ SHA256: f0825b2136ecd35a0cd357789ca53cfbe9bd0f4270036a5782de95cb5fde1869
diff --git a/sysutils/intel-nvmupdate-i225-i226/files/version.txt b/sysutils/intel-nvmupdate-i225-i226/files/version.txt
new file mode 100644
index 000000000000..fc3ab406268f
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/files/version.txt
@@ -0,0 +1,6 @@
+FreeBSD port data version: 20260903
+Intel NVMUpdate: 1.43.37.1a
+I225-V device 15F3: NVM 1.89
+I226-V device 125C: NVM 2.32
+I226-LM device 125B: NVM 2.32
+I226-IT device 125D: NVM 2.32
diff --git a/sysutils/intel-nvmupdate-i225-i226/pkg-descr b/sysutils/intel-nvmupdate-i225-i226/pkg-descr
new file mode 100644
index 000000000000..3a3cc6aa3b53
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/pkg-descr
@@ -0,0 +1,11 @@
+Intel's FreeBSD NVMUpdate utility and NVM images for Intel I225-V and I226
+Ethernet controllers. The utility and license files are fetched directly
+from Intel's E610 FreeBSD update package. The NVM images are fetched from a
+pinned commit of an unofficial, unsupported GitHub mirror and are not supplied
+or endorsed by Intel through that mirror.
+
+The generated configuration is limited to Intel reference subsystem IDs. It
+uses known ETrack lineages for I225-V and I226-V. I226-LM and I226-IT entries
+omit REPLACES so they match the exact four-part PCI ID regardless of installed
+NVM version; separate configurations select each flash-size variant. The
+generated configuration is not supplied, approved, or supported by Intel.
diff --git a/sysutils/intel-nvmupdate-i225-i226/pkg-plist b/sysutils/intel-nvmupdate-i225-i226/pkg-plist
new file mode 100644
index 000000000000..dd1741a87f63
--- /dev/null
+++ b/sysutils/intel-nvmupdate-i225-i226/pkg-plist
@@ -0,0 +1,24 @@
+intel-nvmupdate-i225-i226/FXVL_125B_LM_1MB_2.32.bin
+intel-nvmupdate-i225-i226/FXVL_125B_LM_2MB_2.32.bin
+intel-nvmupdate-i225-i226/FXVL_125C_V_1MB_2.32.bin
+intel-nvmupdate-i225-i226/FXVL_125C_V_2MB_2.32.bin
+intel-nvmupdate-i225-i226/FXVL_125D_IT_1MB_2.32.bin
+intel-nvmupdate-i225-i226/FXVL_125D_IT_2MB_2.32.bin
+intel-nvmupdate-i225-i226/FXVL_15F3_V_1MB_1.89.bin
+intel-nvmupdate-i225-i226/FXVL_15F3_V_2MB_1.89.bin
+intel-nvmupdate-i225-i226/Intel_Proprietary_License.pdf
+intel-nvmupdate-i225-i226/Intel_firmware_license.txt
+intel-nvmupdate-i225-i226/README.FreeBSD
+intel-nvmupdate-i225-i226/README.mirror
+intel-nvmupdate-i225-i226/file_license.txt
+intel-nvmupdate-i225-i226/license.pdf
+intel-nvmupdate-i225-i226/license.txt
+intel-nvmupdate-i225-i226/nvmupdate-i226-it-1mb.cfg
+intel-nvmupdate-i225-i226/nvmupdate-i226-it-2mb.cfg
+intel-nvmupdate-i225-i226/nvmupdate-i226-lm-1mb.cfg
+intel-nvmupdate-i225-i226/nvmupdate-i226-lm-2mb.cfg
+intel-nvmupdate-i225-i226/nvmupdate.cfg
+intel-nvmupdate-i225-i226/nvmupdate64e
+intel-nvmupdate-i225-i226/source_manifest.txt
+intel-nvmupdate-i225-i226/version.txt
+sbin/nvmupdate-i225-i226