r/openwrt • u/ElderberryHamlet • 1h ago
How I updated I226-V NVM firmware
Intel does NOT offer a standalone NVM update for any i226 nics. Instead, they expect you to obtain their firmware from your device OEM but this is often unavailable or grossly outdated.
The Work Around. BEWARE YOU RISK BRICKING YOUR NIC => MAKE A BACKUP !!!
- Download & Extract -- https://www.intel.com/content/www/us/en/download/15084/intel-ethernet-adapter-complete-driver-pack.html -- look inside for NVMUpdatePackage/I225/I225.tar.gz and extract -- look further into this I225 folder until you find nvmupdate64e (updater tool). Leave this tool where it is. Make a companion I226-V work folder and copy the nvmupdate64e + nvmudate.cfg from the I225 folder to the I226-V work folder.
- Open a terminal inside this new folder </> sudo ./nvmupdate64e -i -l inventory.txt </> -- Take note of what this text file says the ETrackID numeric value is for your i226 NIC. This is the firmware identifier you currently have installed.
- Visit BillyCurtis Community Repo for I226 firmware https://github.com/BillyCurtis/Intel-I226-V-NVM-Firmware/tree/main -- find your NIC and your current ETrackID. Find the latest 1mb or 2mb firmware version for your NIC, Take note of the ETrackID for the latest 1mb or 2mb firmware version for your NIC and download it.
- Drop this firmware update directly into the local I226-V work folder.
- Open any text editor and change the nvmupdate.cfg file -- example below
- Open a terminal in this same folder </> sudo ./nvmupdate64e -u -l -b -c nvmupdate.cfg </>
NOTE: If by some chance you also need to update any I225 NIC, do that first if you intend to overwrite the initial I226 nvmupdate.cfg file. You can also update other Intel NICs using the other update folders respectively. In every case, you can use the same command listed in step 6 above. This will begin the process of evaluating your NIC Non-Volatile Memory chip (NVM) for update (-u). It will verbosely log its progress (-l). Make a backup (-b). Using the config file (-c) nvmupdate.cfg. If you neglect the -l flag it will proceed silently. If you neglect the -b flag there will be no backup. You can also use the update tool to inventory all your NICs and output to a text file as suggested in step 2.
I226-V Config file Process. Use ETrackId numeric values for your NIC firmware. Don't guess
A. This is the output of my initial discovery command above in step 2, minus sensitive info
</> sudo ./nvmupdate64e -i -l inventorty.txt </>
[00:005:00:00]: Intel(R) Ethernet Controller I226-V
Vendor : 8086
Device : 125C
Subvendor : 8086
Subdevice : 0000
Revision : 4
LAN MAC : ### LAN MAC is hidden by me ###
Alt MAC : 000000000000
SAN MAC : 000000000000
ETrackId : 80000308
SerialNumber : ### SerialNumber is hidden by me ###
NVM Version : 2.23(2.17)
PBA : G23456-000
VPD status : Not set
VPD size : 0
NVM update : No config file entry
checksum : Valid
B. This README file section is where I verified the correct (1MB) firmware for my i226-V NIC
-- https://github.com/BillyCurtis/Intel-I226-V-NVM-Firmware/tree/main/README.md
I226-V
| 1MB File Name | Ver | EtrackID | 2MB File Name | Ver | EtrackID |
|---|---|---|---|---|---|
FXVL_125C_V_1MB_2.14.bin |
2.14 | 80000290 | FXVL_125C_V_2MB_2.14.bin |
2.14 | 8000028D |
FXVL_125C_V_1MB_2.17.bin |
2.17 | 80000308 | FXVL_125C_V_2MB_2.17.bin |
2.17 | 80000303 |
FXVL_125C_V_1MB_2.23.bin |
2.23 | 8000039D | FXVL_125C_V_2MB_2.22.bin |
2.22 | 80000371 |
FXVL_125C_V_1MB_2.27.bin |
2.27 | 80000425 | FXVL_125C_V_2MB_2.25.bin |
2.25 | 800003AD |
FXVL_125C_V_1MB_2.32.bin |
2.32 | 80000425 | FXVL_125C_V_2MB_2.27.bin |
2.27 | 80000422 |
FXVL_125C_V_2MB_2.32.bin |
2.32 | 80000422 |
you can see above my intial firmware is ETRackID 80000308 which tells me I need a 1MB size version of which the latest is version 2.32, ETrackID 80000425.
C. Just above where the README file is posted, I clicked on the I226-V > 2.32 downloads folder and downloaded FXVL_125C_V_1MB_2.32.bin raw file for my 1226-V NIC
-- https://github.com/BillyCurtis/Intel-I226-V-NVM-Firmware/tree/main/I226-V/2.32 -- and dropped it into my local I226-V work folder.
D. Having copied the initial i225 config file to my I226-V work folder, I overwrote it as follows
CURRENT FAMILY: 1.0.0
CONFIG VERSION: 1.20.0
; Upgrade all 4 onboard Intel i226-V controllers
BEGIN DEVICE
DEVICENAME: Intel(R) Ethernet Controller I226-V
VENDOR: 8086
DEVICE: 125C
SUBVENDOR: 8086
SUBDEVICE: 0000
NVM IMAGE: FXVL_125C_V_1MB_2.32.bin
EEPID: 80000425
REPLACES: 80000308
RESET TYPE: NONE
END DEVICE
E. Save and open a terminal </> sudo ./nvmupdate64e -u -l -b -c nvmupdate.cfg </>
D. I'm told I can restore the backups created by the -b flag by running the following.
</> sudo ./nvmupdate64e -r -l -c nvmupdate.cfg </>
However, I've had no need to use this command and therefore don't know it it'll work or if the config file needs more info or what.
I226-V Release Notes
| Version | Onboard I226-V |
|---|---|
| 2.32 | Fixes an issue in MDI lane swap handling that caused the P (positive) and N (negative) signal polarities to be swapped incorrectly. |
| 2.27 | General Note:1. PHY FW: 4C08_88B62. EFI LAN driver in 2MB: 0.10.06Bug Fix:• HSD 13012034657: [Foxville][NVM] QV Tools External Loopback test fails with NVM version 2.25 |
| 2.25 | General Note:1. PHY FW: 4C08_08a62. EFI LAN driver in 2MB: 0.10.06Bug Fix:• HSD 13010560068: Link Flaps with Energy Efficient Ethernet Enabled• HSD 13011274310: Unexpected Link |
| 2.23 | General Note:1. PHY FW: 4C08_889D2. EFI LAN driver in 2MB: 0.10.06Bug Fix:• HSD 13011253836: Device Not Enumerated during power cycle (restart, power-on, etc.) |
| 2.22 | 1. Update PHY FW to 4C08_889D2. EFI LAN driver: 0.10.06 (recommend to update to the latest version in Doc ID: 615203).Bug Fix:• #1309832919: LAN Device not enumerated after WR cycle• #13010560068: Link flaps with Energy Efficient Etherneto Note: Energy Efficient Ethernet Setting is controlled by OS drivers for both Windows and Linux and the default setting is Disabled.• #16020921487: [AMT provisioned] Sporadically Autowake during S3/S4RCR:• #1309242132: Prevent NVM update between I225 and I226• #1307470158: Enable RTD3 ULP wake from LAN_DISABLE_N negation• #18022583990: [AMT provisioned] Enable DHCP server (port 67) for PreBoot Network Boot Support• #1308723082: Dynamic D3Cold support for preventing D3Cold in S0 upon request from CSME |
| 2.17 | 1. Update PHY FW to 4C07_888D |
| 2.14 | Production Release1. PHY FW to 4C08_78772. Management FW: 1.543. Energy Efficient Ethernet is enabled by the driver (Windows & Linux) |
| 2.13 | Initial Release1. PHY FW to 4C08_78772. Management FW: 1.533. Alternative MAC address section is permanently removed4. Energy Efficient Ethernet is disabled by default |