[solved] Intel i226 Firmware (see post #39)

Started by BrandyWine, August 31, 2025, 05:21:07 PM

Previous topic - Next topic
Adding some more tidbit info.
Digging some more around ASPM and related reports that ASPM was causing issues with links dying.

Interestingly enough, i226 ASPM capability is L1 only (no L0s), and my x520 is L0s only (no L1), and my SSD is L0s/L1 capable.

226 LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L1
520 LnkCap: Port #0, Speed 5GT/s, Width x8, ASPM L0s
ssd LnkCap: Port #1, Speed 8GT/s, Width x4, ASPM L0s L1

So with ASPM enabled it's possible the i226 pci link went totally offline, but the x520 will never have that issue.
Mini-pc N150 i226v x520, FREEDOM

Guess what? I had exactly that link dying issue issue with an Intel 82599ES (which is the X520-DAx chipset) and it went away only after I set hw.pci.enable_aspm=0.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Quote from: meyergru on September 25, 2025, 08:45:01 AMGuess what? I had exactly that link dying issue issue with an Intel 82599ES (which is the X520-DAx chipset) and it went away only after I set hw.pci.enable_aspm=0.

That's odd. Maybe state L0s is an issue too. L0s only sleeps one half of pci link, but has fast recovery.

Maybe check your nic capabilities (lspci -vv) and see what your x520 has, maybe different NVM's have different bits set.

Mini-pc N150 i226v x520, FREEDOM

Nope:

# pciconf -lbcv ix1@pci0:1:0:1
ix1@pci0:1:0:1: class=0x020000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x10fb subvendor=0x8086 subdevice=0x000c
    vendor     = 'Intel Corporation'
    device     = '82599ES 10-Gigabit SFI/SFP+ Network Connection'
    class      = network
    subclass   = ethernet
    bar   [10] = type Memory, range 64, base 0x81080000, size 524288, enabled
    bar   [18] = type I/O Port, range 32, base 0x3000, size 32, enabled
    bar   [20] = type Memory, range 64, base 0x81200000, size 16384, enabled
    cap 01[40] = powerspec 3  supports D0 D3  current D0
    cap 05[50] = MSI supports 1 message, 64 bit, vector masks
    cap 11[70] = MSI-X supports 64 messages, enabled
                 Table in map 0x20[0x0], PBA in map 0x20[0x2000]
    cap 10[a0] = PCI-Express 2 endpoint max data 256(512) FLR RO NS
                 max read 512
                 link x4(x8) speed 5.0(5.0) ASPM disabled(L0s)
    cap 03[e0] = VPD
    ecap 0001[100] = AER 1 0 fatal 0 non-fatal 1 corrected
    ecap 0003[140] = Serial 1 90e3baffff00be8a
    ecap 000e[150] = ARI 1
    ecap 0010[160] = SR-IOV 1 IOV disabled, Memory Space disabled, ARI disabled
                     0 VFs configured out of 64 supported
                     First VF RID Offset 0x0180, VF RID Stride 0x0002
                     VF Device ID 0x10ed
                     Page Sizes: 4096 (enabled), 8192, 65536, 262144, 1048576, 4194304
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

September 25, 2025, 06:26:05 PM #94 Last Edit: September 25, 2025, 06:56:52 PM by BrandyWine
cap 10[a0] = PCI-Express 2 endpoint max data 256(512) FLR RO NS
                 max read 512
                 link x4(x8) speed 5.0(5.0) ASPM disabled(L0s)
That's the lnk control settings as defined by bios/driver/app, etc. You disabled ASPM from (wherever) and it shows in [a0] area.
And (as we discussed earlier for what it means), the L0s in "ASPM disabled(L0s)" is telling us what specific L state is disabled. You could technically have L0s/L1 capability in nvm but have only disabled L0s, and it would show in config space as "ASPM disabled(L0s)"

I do however suspect your x520 only has L0s in NVM.
It doesn't make much sense that a nic link (pci link) would drop out in L0s, because there's plenty of wake-up routine to bring it back very fast. If the root issue is in L0s wake-up, then this to me says probably an issue in the driver code. Could probably add some debug code into driver src and recompile and load in as KLM, to see why L0s wake-up is not working as expected.



Grab lspci -vv -d 8086:10fb
Pciconf is giving condensed config space info with byte locations in []
These byte locations (for each device id) are seen from lspci -xxxx

LnkCap are bit settings for capable features coded into nvm.

Side note: my i226's have MAC from vendor Techno Scope Co. Ltd, not Intel. Hmmmm. Maybe BIOS doing it.


Mini-pc N150 i226v x520, FREEDOM

All I can say it did expose the typical "no more network" behaviour before I disabled ASPM via the tuneable about once per week and not anymore since.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

September 30, 2025, 08:08:10 PM #96 Last Edit: September 30, 2025, 08:12:17 PM by nightcom
Thanks all of you for this topic!

I upgraded my Hunsn RJ03 with i226-V from 2.17 to 2.32 version (1MB), all 4 ports without issues.

To anyone with same device:
Vendor, device etc. is the same as in default config, all you need to do is change MAC address and reboot to take effect.

P.S. I don't know if it's placebo but it seems more responsive after upgrade

Quote from: nightcom on September 30, 2025, 08:08:10 PMThanks all of you for this topic!

P.S. I don't know if it's placebo but it seems more responsive after upgrade

Probably is more responsive. New nvm with a matching new driver.
There's text in some Intel notes that say "don't run this new driver w/o 1st getting latest device firmware", paraphrased, not specifically for i226.
Mini-pc N150 i226v x520, FREEDOM

The nvm update tool offers the -rd option to reset user settings. However, the documentation doesn't clearly explain what this does. Would using this option be beneficial? My assumption is that it might remove manufacturer-specific tweaks and return the device to a more stock configuration, but I'm not certain.
In theory there is no difference between theory and practice. In practice there is.

October 02, 2025, 08:45:18 PM #99 Last Edit: October 02, 2025, 08:47:21 PM by BrandyWine
-rd seems like a mystery option.
Maybe the user settings are the writeable registers that store the bits that config a feature?

Not all nvm util options are applicable to all eeprom's, as example, 226 1MB does not have orom.
Mini-pc N150 i226v x520, FREEDOM

Hello,

I have a very strange issue.

My device is a generic N100 with 6 i226V.
I use 4 of them:
igc0 is wan
igc1 is Lan
igc2&3 are tied in lagg0 which is parent interface of my vlans.

igc4&5 are unused.
all i226 devices had 2.13 firmware.
I flashed igc5  with 2.32 and rebooted.
I didn't used it. I just plugged it in a switch and saw in log igc5 link state changed to up
Then i flashed igc4 and rebooted just like for igc5.
After the reboot igc5 is no more present and igc4 has the hardware address of igc5.
When i plug igc4 (as labelled on the device) nothing happens
When i plug igc5 (as labelled on the device) i see in the log :igc4: link state changed to UP

dmesg doesn't show any igc5 device and igc4 with address of the previous igc5.

i can't figure out why this would happen. When you flash the only reference to the device in the command line is the hardware address. You can't make any mistake.
After the flash a folder is created named after the hardware address. I have 2 folders as expected with the correct addressses.

Curiously in the bios i didn't anything related to hardware network devices.

What would you do in such case ?

October 25, 2025, 06:32:04 AM #101 Last Edit: October 25, 2025, 06:53:57 AM by BrandyWine
@caplam
Leave igc5 connected to switch, does the switch log show link state?

Why are you using lagg? For HA, bandwidth?

What does 'lspci | grep 226 ' show?
What does 'pciconf -lbv | grep -A 4 device=0x125c' show?
What does 'ifconfig | grep igc' show?

Can you share your nvram update config(s), and the log files from each folder?
And, you didn't say which version of OPNsense you are running.
Mini-pc N150 i226v x520, FREEDOM

October 25, 2025, 11:59:58 AM #102 Last Edit: October 25, 2025, 12:11:23 PM by caplam
Yes the switch led lights on.
I initially had only 1 switch near my router and not enough free ports. So i decided to use 1 port fort lan and a lagg to 5 vlans. The first switch is 8 sfp ports switch with both fiber modules and rj45 ones. The RJ45 ones are 2,5G (to match my router)
I added another switch i had lying around but i want to replace it (unifi 48 port poe) it's hungry and noisy and only 1Gbps ports (except 2 sfp+)
i'm running opnsense 25.7.6. I think the igc5 update has been made within 25.7.5 version.

lspci : i suppose i need to install a package.
pciconf -lbv | grep -A 4 device=0x125c
igc0@pci0:1:0:0: class=0x020000 rev=0x04 hdr=0x00 vendor=0x8086 device=0x125c subvendor=0x8086 subdevice=0x0000
    vendor     = 'Intel Corporation'
    device     = 'Ethernet Controller I226-V'
    class      = network
    subclass   = ethernet
--
igc1@pci0:2:0:0: class=0x020000 rev=0x04 hdr=0x00 vendor=0x8086 device=0x125c subvendor=0x8086 subdevice=0x0000
    vendor     = 'Intel Corporation'
    device     = 'Ethernet Controller I226-V'
    class      = network
    subclass   = ethernet
--
igc2@pci0:3:0:0: class=0x020000 rev=0x04 hdr=0x00 vendor=0x8086 device=0x125c subvendor=0x8086 subdevice=0x0000
    vendor     = 'Intel Corporation'
    device     = 'Ethernet Controller I226-V'
    class      = network
    subclass   = ethernet
--
igc3@pci0:4:0:0: class=0x020000 rev=0x04 hdr=0x00 vendor=0x8086 device=0x125c subvendor=0x8086 subdevice=0x0000
    vendor     = 'Intel Corporation'
    device     = 'Ethernet Controller I226-V'
    class      = network
    subclass   = ethernet
--
igc4@pci0:6:0:0: class=0x020000 rev=0x04 hdr=0x00 vendor=0x8086 device=0x125c subvendor=0x8086 subdevice=0x0000
    vendor     = 'Intel Corporation'
    device     = 'Ethernet Controller I226-V'
    class      = network
    subclass   = ethernet


ifconfig | grep igc
igc0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
igc1: flags=1008a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
igc2: flags=1008b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
igc3: flags=1008b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
igc4: flags=1008802<BROADCAST,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
laggport: igc2 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: igc3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
vlan: 35 vlanproto: 802.1q vlanpcp: 0 parent interface: igc0

None of igc4 or 5 is actually not plugged.

cat nvm.cfg
CURRENT FAMILY: 1.0.0
CONFIG VERSION: 1.20.0

; NIC device
BEGIN DEVICE
DEVICENAME: Intel(R) Ethernet Controller I226-V
VENDOR: 8086
DEVICE: 125C
SUBVENDOR: 8086
SUBDEVICE: 0000
NVM IMAGE: FXVL_125C_V_2MB_2.32.bin
EEPID: 80000422
RESET TYPE: REBOOT
REPLACES: 80000284

i used this file for flashing both igc 5 and igc 4

For igc4 here is the .rollback.cfg:
sudo cat A8B8E00631FF/.rollback.cfg
;File generated automatically by NVMUpdate tool
CONFIG VERSION: 1.26.0

BEGIN DEVICE
DEVICENAME: Intel(R) Ethernet Controller I226-V
VENDOR: 8086
DEVICE: 125C
REPLACES: 80000422
EEPID: 80000284
NVM IMAGE: A8B8E00631FF/A8B8E00631FF.bin
IMAGE DOWNGRADE: TRUE
RESET TYPE: POWER
END DEVICE

and the flash log
cat flash_igc4.log
Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.43.20.0
Copyright(C) 2013 - 2025 Intel Corporation.

./nvmupdate64e -b -l igc4.log -m a8b8e00631ff -u -c nvm.cfg

Config file read.
Inventory
[00:005:00:00]: Intel(R) Ethernet Controller I226-V
Alternate MAC address is not set.
Flash inventory started.
Shadow RAM inventory started.
Shadow RAM inventory finished.
Flash inventory finished.
OROM inventory started.
OROM inventory finished.
Update
[00:005:00:00]: Intel(R) Ethernet Controller I226-V
Creating backup images in directory: A8B8E00631FF.
Backup images created.
Flash update started.
NVM verification started.
Shadow RAM verification started.
Shadow RAM verification finished.
Flash verification started.
Flash verification finished.
NVM verification finished.
Flash update successful.
Device update successful.
Update security revisions
[00:005:00:00]: Intel(R) Ethernet Controller I226-V
Skipping update minimum security revisions.
Update VPD with VPD template
[00:005:00:00]: Intel(R) Ethernet Controller I226-V
Skipping VPD update with VPD template.
Checking update availability for next tool run.
A reboot is required to complete the update process.

the same for igc5:

sudo cat A8B8E0063200/.rollback.cfg
;File generated automatically by NVMUpdate tool
CONFIG VERSION: 1.26.0

BEGIN DEVICE
DEVICENAME: Intel(R) Ethernet Controller I226-V
VENDOR: 8086
DEVICE: 125C
REPLACES: 80000422
EEPID: 80000284
NVM IMAGE: A8B8E0063200/A8B8E0063200.bin
IMAGE DOWNGRADE: TRUE
RESET TYPE: POWER
END DEVICE

and the log from flash:
cat flash_igc5.log
Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.43.20.0
Copyright(C) 2013 - 2025 Intel Corporation.

./nvmupdate64e -b -l flash_igc5.log -m a8b8e0063200 -u -c nvm.cfg

Config file read.
Inventory
[00:007:00:00]: Intel(R) Ethernet Controller I226-V
Alternate MAC address is not set.
Flash inventory started.
Shadow RAM inventory started.
Shadow RAM inventory finished.
Flash inventory finished.
OROM inventory started.
OROM inventory finished.
Update
[00:007:00:00]: Intel(R) Ethernet Controller I226-V
Creating backup images in directory: A8B8E0063200.
Backup images created.
Flash update started.
NVM verification started.
Shadow RAM verification started.
Shadow RAM verification finished.
Flash verification started.
Flash verification finished.
NVM verification finished.
Flash update successful.
Device update successful.
Update security revisions
[00:007:00:00]: Intel(R) Ethernet Controller I226-V
Skipping update minimum security revisions.
Update VPD with VPD template
[00:007:00:00]: Intel(R) Ethernet Controller I226-V
Skipping VPD update with VPD template.
Checking update availability for next tool run.
A reboot is required to complete the update process.


I didn't pay attention pci devices changed. So i guess after the reboot the appliance didn't list the same pci devices.


October 25, 2025, 12:09:53 PM #103 Last Edit: October 25, 2025, 12:22:44 PM by caplam
i have no more pci0:7:0:0 device.
previously it was igc5

pciconf -l igc5
igc5@pci0:7:0:0:    class=0x020000 rev=0x04 hdr=0x00 vendor=0x8086 device=0x125c subvendor=0x8086 subdevice=0x0000

sudo pciconf -lbcv ix1@pci0:7:0:0
Password:
igc5@pci0:7:0:0:    class=0x020000 rev=0x04 hdr=0x00 vendor=0x8086 device=0x125c subvendor=0x8086 subdevice=0x0000
    vendor    = 'Intel Corporation'
    device    = 'Ethernet Controller I226-V'
    class      = network
    subclass  = ethernet
    bar  [10] = type Memory, range 32, base 0x80500000, size 1048576, enabled
    bar  [1c] = type Memory, range 32, base 0x80600000, size 16384, enabled
    cap 01[40] = powerspec 3  supports D0 D3  current D0
    cap 05[50] = MSI supports 1 message, 64 bit, vector masks
    cap 11[70] = MSI-X supports 5 messages, enabled
                Table in map 0x1c[0x0], PBA in map 0x1c[0x2000]
    cap 10[a0] = PCI-Express 2 endpoint max data 256(512) FLR RO NS
                max read 512
                link x1(x1) speed 5.0(5.0) ASPM disabled(L1)
    ecap 0001[100] = AER 2 0 fatal 0 non-fatal 1 corrected
    ecap 0003[140] = Serial 1 a8b8e0ffff063200
    ecap 0018[1c0] = LTR 1
    ecap 001f[1f0] = Precision Time Measurement 1
    ecap 001e[1e0] = L1 PM Substates 1

i installed pciutils.
sudo lspci | grep 226
01:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)
02:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)
03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)
04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)
05:00.0 Non-Volatile memory controller: Silicon Motion, Inc. SM2263EN/SM2263XT (DRAM-less) NVMe SSD Controllers (rev 03)
06:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)

Finally i managed to flash all the devices.
I guess a reboot is not enough despite what the nvmupdate manual says.
I went to the basement and took my appliance to try a bios update.
When i plugged it the missing interface was back.

For the record i didn't managed to do the update. Making bootable usb with efi shell for flashing with a mac is really a pain in the ...
I remember having struggled for flashing an hba.
Anyway in the iso file provided with firmware there was also eeupdate utility (like nvmupdate but for efi) and the bin files for the i226v devices (type 125c version 2.32)


dmesg | grep EEPROM
[1] igc0: EEPROM V2.32-0 eTrack 0x80000422
[1] igc1: EEPROM V2.32-0 eTrack 0x80000422
[1] igc2: EEPROM V2.32-0 eTrack 0x80000422
[1] igc3: EEPROM V2.32-0 eTrack 0x80000422
[1] igc4: EEPROM V2.32-0 eTrack 0x80000422
[1] igc5: EEPROM V2.32-0 eTrack 0x80000422