Crossflashing Intel official firmware on Dell / Lenovo PCIe X710-DA2 nics? Solved

Tried following the mietzen’s guide for this today, update didn’t go so well for me after running ./nvmupdate64e -rd it took like 20m then reported update failed. After that it seems ./nvmupdate64e -i -l gets stuck.

root@ubuntu:/opt/intel_x710_ethernet_fw/v9.40# ./nvmupdate64e -i -l

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.40.5.5
Copyright(C) 2013 - 2023 Intel Corporation.

Config file will not be read.
Unsupported device found - DeviceId: 15BC.
Inventory
[00:002:00:00]: Intel(R) Ethernet Converged Network Adapter X710

(sits here forever)
I grabbed the backup it created and threw it on my nextcloud, but I’m assuming the card is bricked now.

Rebooted back into windows and now I get this:

nvmupdatew64e.exe -i -l

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.42.8.0
Copyright(C) 2013 - 2024 Intel Corporation.

Config file will not be read.
Unsupported device found - DeviceId: 15BC.
Warning: Cannot initialize port: [00:002:00:00] Intel(R) Ethernet Converged Network Adapter X710
Warning: Cannot initialize port: [00:002:00:01] Intel(R) Ethernet Converged Network Adapter X710

notlikerin

Yep after fucking around with it for a few hours I can’t do anything anymore:

.\nvmupdatew64e.exe -c .\6CFE54331BE0\.rollback.cfg -rd

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.42.8.0
Copyright(C) 2013 - 2024 Intel Corporation.


WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [*-........]


Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Connection (7)      N/A(N/A)   15BC 00:000 Not supported
    I219-V
02) Intel(R) Ethernet Converged           N/A(N/A)   1572 00:002 Access error
    Network Adapter X710


Tool execution completed with the following status: An error occurred accessing the device.
Press any key to exit.

I got the card to show up as recovery available on linux and was able to restore the backup.

./nvmupdate64e -i -l

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.40.5.5
Copyright(C) 2013 - 2023 Intel Corporation.

Config file will not be read.
Unsupported device found - DeviceId: 15BC.
Warning: Cannot initialize port: [00:002:00:01] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:00:02] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:00:03] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:00:04] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:00:05] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:00:06] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:00:07] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:01:00] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:01:01] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:01:02] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:01:03] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:01:04] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:01:05] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:01:06] Intel(R) Ethernet Controller XL710 Generic ID
Warning: Cannot initialize port: [00:002:01:07] Intel(R) Ethernet Controller XL710 Generic ID
Inventory
[00:002:00:00]: Intel(R) Ethernet Converged Network Adapter X710
	Flash inventory started.
	Shadow RAM inventory started.
	Shadow RAM inventory finished.
	Flash inventory finished.
	OROM inventory started.
	OROM inventory finished.
[00:002:00:00]: Intel(R) Ethernet Converged Network Adapter X710
	Vendor                 : 8086
	Device                 : 1572
	Subvendor              : 8086
	Subdevice              : 0006
	Revision               : 2
	SAN MAC                : FFFFFFFFFFFF
	ETrackId               : 8000AF82
	SerialNumber           : 000000FFFF000000
	NVM Version            : 8.64(8.40)
	PBA                    : M13612-002
	VPD status             : Valid
	VPD size               : 304
	NVM update             : No config file entry
	  checksum             : Valid
	OROM update            : No config file entry
	  CIVD                 : 1.3429.0
	  PXE                  : 1.1.44, checksum Valid
	  EFI                  : 4.9.70, checksum None

Looks like it’s back on the dell firmware reports that it’s functioning again, I did try to flash the OEMGEN_00.bin per sulphates recommendation but when I put that bin in the nvmupdate.cfg it reported that there was a syntax error in the file. So I’m calling it quits for now.

I got the flash to go through finally, after looking through some more posts here I saw that a lot of people were just using the default config and updating it instead of making their own. So dug through the default config and updated this entry with 8000AF82

;OO
BEGIN DEVICE
DEVICENAME: XL710
VENDOR: 8086
DEVICE: 1572
NVM IMAGE: X710DA2_9p52_CFGID7p2_OEMGEN_OO.bin
OROM IMAGE: BootIMG.FLB
EEPID: 8000F4FF
REPLACES: 80001FA4 8000252F 80002928 800035B1 8000378B 80003CC3 80004CD5 8000646E 800079E6 80008399 80008B6C 80009468 8000960D 80009B92 8000A499 8000ABC4 8000B6F5 8000BA28 8000BD63 8000C3F9 8000C8C8 8000CE7D 8000D319 8000D012 8000D884 8000D93A 8000E5DA 8000F0A6 8000F0A4 8000ECE7 8000F180 8000AF82
EEPROM MAP: PF_Alloc_WOL_DIS.txt
RESET TYPE: REBOOT
END DEVICE

The flash went through, I can’t test it right yet but looks like that may have worked.


Update:
Can confirm that the above flash has both of the ports on my card working.

1 Like

I’ve got a dell PGRFV X710-da4 Im trying to flash. Im able to use bootutil to flash the option rom, but its when i try nvmupdate64e that it just hangs. It does the inventory, i select the card, it gets like partial and just sits, forever. Failed flash.

I have a dump good from my hardware flasher, so i revert back with it. Im not exactly sure which bin I should be flashing, so ive tried several of the da4’s.

Any help would be greatly appreciated!

Same, I bought a Dell X710-DA4 (DP/N: 0DDJKY) but I couldn’t crossflash it. The dump appeared to be 8MB so I tried the two 8MB bins for the DA4 (non-OCP3 and one said OCP3), but it would always hang around the second tick mark and eventually timeout. Fortunately, the recovery mode worked fine and I didn’t have to reflash it back to stock, and the unlocker worked as well, so maybe I should just leave it alone.

Hi @Arimil, can you please share how you got the card out of the recovery mode?
I have the same errors of “Cannot initialize port” and “Access error”, after flashing X710DA2_9p52_CFGID7p2_OEMGEN_OO.bin onto a Dell X710 (Y5M7N) on Linux. I made sure to read the entire thread and followed the instructions from @sulphate .

Nov 07 18:30:46 xxx kernel: i40e 0000:08:00.0: PF reset failed: -5
Nov 07 18:30:46 xxx kernel: i40e 0000:08:00.0: Entering recovery mode due to repeated FW resets. This may take several minutes. Refer to the Intel(R) Ethernet Adapters and Devices User Guide.
Nov 07 18:30:46 xxx kernel: i40e: probe of 0000:08:00.0 failed with error -5
.\nvmupdatew64e.exe -c .\6CFE54331BE0\.rollback.cfg -rd

It was the linux equivalent of this to flash the backup that gets made.

Thank you for the quick response, @Arimil .

I tried it on Linux and got “Access error”. It seems that nvmupdate64e can NOT communicate with the X710 card anymore (probably because it’s in recovery mode).

 ls -al 3CFDFE2CCF80/
total 8436
d-w---x--T 2 root root    4096 Nov  7 16:33 .
drwxr-xr-x 5  500  544   12288 Nov  7 19:16 ..
-r-------- 1 root root 8388608 Nov  7 16:25 3CFDFE2CCF80.bin
-r-------- 1 root root  225565 Nov  7 16:25 3CFDFE2CCF80.flb
-rw-r--r-- 1 root root     282 Nov  7 16:36 .rollback.cfg

./nvmupdate64e -c ./3CFDFE2CCF80/.rollback.cfg -rd

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.42.8.0
Copyright(C) 2013 - 2024 Intel Corporation.

WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [*.........]

Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Converged           N/A(N/A)   1572 00:008 Access error  
    Network Adapter X710                                                       

Tool execution completed with the following status: An error occurred accessing the device.

My Dell X710 (Y5M7N) card is in recovery mode (presumably bricked?) after flashing. I compiled my steps after reading carefully through this thread. Any input on what to do next would be appreciated. Thank you!

Info of the X710 card
a) on the physical card itself, I can see the following
- DP/N 0Y5M7N
- Y5M7N MAC 3C-FD-FE-2C-CF-80
- H54188 - 008
b) on my linux box, running “./nvmupdate64e -i -l” had the following output (this was before I flashed the Intel firmware. Right now I get “Access error” when running this same command).

[00:008:00:00]: Intel(R) Ethernet Converged Network Adapter X710
        Vendor                 : 8086
        Device                 : 1572
        Subvendor              : 8086
        Subdevice              : 0006
        Revision               : 1
        LAN MAC                : 3CFDFE2CCF80
        Alt MAC                : 000000000000
        SAN MAC                : 3CFDFE2CCF81
        ETrackId               : **800051A4**
        SerialNumber           : 80CF2CFFFFFEFD3C
        NVM Version            : 7.16(7.10)
        PBA                    : H54188-008
        VPD status             : Valid
        VPD size               : 311
        NVM update             : No config file entry
          checksum             : Valid
        OROM update            : No config file entry
          CIVD                 : 19.0.12
          PXE                  : 1.1.9, checksum Not Relevant
          ISCSI                : 3.1.57, checksum Not Relevant
          EFI                  : 3.7.12, checksum None
          SMCLP                : 3.1.14, checksum Valid

The steps I went through to cross-flash the Intel firmware:
0) download the Intel driver/firmware 29.3.1
wget http s://downloadmirror.intel.com/832330/Release_29.3.1.zip

1) Install QV driver (success)

cd driver/APPS/BootUtil/Linux_x64/DRIVER
./install

2) ./bootutil64e

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.42.06.0
Copyright (C) 2003-2024 Intel Corporation

Type BootUtil -? for help

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   3CFDFE2CCF80     8:00.0 40GbE   N/A UEFI,CLP,PXE,iSCSI            -------
  2   3CFDFE2CCF82     8:00.1 40GbE   N/A UEFI,CLP,PXE,iSCSI            -------

3) ./bootutil64e -NIC=1 -up=combo

ntel(R) Ethernet Flash Firmware Utility
BootUtil version 1.42.06.0
Copyright (C) 2003-2024 Intel Corporation

Programming flash on port 1 with flash firmware image
Create restore image of NIC 1 before proceeding? (Y)es or (N)o: Y

Saving flash firmware image on port 1 to file 1572401B.FLB...saved

Updating PXE+EFI removes PXE+iSCSI+EFI functionality.
Would you like to continue? (Y)es or (N)o: Y
Flash update successful

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   3CFDFE2CCF80     8:00.0 40GbE   N/A UEFI,PXE Enabled              1.1.45
  2   3CFDFE2CCF82     8:00.1 40GbE   N/A UEFI,PXE Enabled              1.1.45

4) cat nvmupdate.cfg

CURRENT FAMILY: 1.0.0
CONFIG VERSION: 1.14.0

;OO
BEGIN DEVICE
DEVICENAME: XL710
VENDOR: 8086
DEVICE: 1572
NVM IMAGE: X710DA2_9p52_CFGID7p2_OEMGEN_OO.bin
OROM IMAGE: BootIMG.FLB
EEPID: 8000F4FF
REPLACES: **800051A4**
EEPROM MAP: PF_Alloc_WOL_DIS.txt
RESET TYPE: REBOOT
END DEVICE

Note:

  • the ETraceID of my card (extracted from “/nvmupdate64e -i -l”) is in the “REPLACES” line.
  • For the firmware image, I searched for the little-endian of my card’s PBA (H54188 → 5H1488) with command “grep 5H1488 *.bin” but yielded nothing. A couple of posts in this thread indicated success of using X710DA2_9p52_CFGID7p2_OEMGEN_OO.bin on the Dell Y5M7N card, so I ended up using that one.

5) ./nvmupdate64e -rd

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.42.8.0
Copyright(C) 2013 - 2024 Intel Corporation.

WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [**********]

Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Converged         7.16(7.10)   1572 00:008 Update        
    Network Adapter X710                                         available     

Options: Adapter Index List (comma-separated), [A]ll, e[X]it
Enter selection: 01
Would you like to back up the NVM images? [Y]es/[N]o: Y
Update in progress. This operation may take several minutes.
[**+.......]

Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Converged           N/A(N/A)   1572 00:008 Update failed 
    Network Adapter X710                                                       

Tool execution completed with the following status: An error occurred when updating a firmware module.
Press any key to exit.

Result: X710 in Recovery Mode
dmesg/journalctl indicates that the card is in recovery mode. lspci shows the PCIe card, but none of ethtool, “ip link”, nvmupdate64e has any info about the card.

Nov 07 18:30:46 xxx kernel: i40e 0000:08:00.0: PF reset failed: -5
Nov 07 18:30:46 xxx kernel: i40e 0000:08:00.0: Entering recovery mode due to repeated FW resets. This may take several minutes. Refer to the Intel(R) Ethernet Adapters and Devices User Guide.
Nov 07 18:30:46 xxx kernel: i40e: probe of 0000:08:00.0 failed with error -5

I suggest trying the restore from from EFI, linux bricked my Dell card in the same way (well it hung for over an hour and I gave up)

If you are unsuccessful I think you could flash the .bin file with a hardware flasher instead.

Iirc I did the flash that worked on Windows.

Thank you, @sulphate . I’ll try the EFI approach later today.

In the meanwhile, can you share a bit on how to flash the .bin file with a hardware flasher? I have a SOIC8 clip and a RPi but never used the SOIC8 clip. Thanks.

I used a RPi 4 and pretty much followed Libreboot – Read/write 25XX NOR flash via SPI protocol however I used flashrom.

The pinout matched my chip (Winbond W25Q64FV) but make sure to check the datasheet, confusingly different names for the same thing. I only had 6 wires connected.

I’d test with reading first using -r FILENAME then write your original with -w FILENAME

Read

flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8000 -r original.bin -c "W25Q64BV/W25Q64CV/W25Q64FV"

Anyone seeing this, when taking an original backup read multiple times and compare the files to ensure you have an identical read.

Write

flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8000 -w 3CFDFE2CCF80.bin -c "W25Q64BV/W25Q64CV/W25Q64FV"


EEUPDATE

Rather than hardware flashers it might be possible to use Intels EEUPDATE tool

1 Like

In case anyone comes through here confused as I was, I just ran through the following steps with the 29.4 package, and I was able to successfully flash both my Dell and Lenovo cards via UEFI shell. (Unfortunately, though, it didn’t fix the problem I was having with the Dell cards causing my Lenovo M920q to hang on reboots).

Prepare the updater

  1. Download the package from the link above
  2. Unzip the package, and also unzip the NVMUpdatePackage\700_Series\700Series_NVMUpdatePackage_v9_52_EFI.zip file
  3. Go to APPS\BootUtil and copy BootIMG.FLB into EFI2_x64
  4. Copy the whole thing onto a USB drive

Boot into UEFI

  1. Some BIOS/machines have a built in UEFI shell that you can usually access via boot order settings or the save / discard screen.
  2. If not, you can download the tianocore/EDK2 project’s binary from github (see the edk2-stable202002
    release, ShellBinPkg.zip)
  3. If you grabbed the binary, you can easily boot into it using something like ventoy or netboot, or prepare a bootable USB drive

(If you want, you can combine the firmware updater and the shell binary into one drive. I just used ventoy).

Update the firmware

  1. Go to APPS\BootUtil\EFI2_x64 and run BOOTUTIL64E.EFI to find the correct NIC number, then run BOOTUTIL64E.EFI -nic=# -up=combo (replacing # with the number you found in the first part)
  2. Go into your unzipped 700Series_NVMUpdatePackage_v9_52_EFI directory and run nvmupdate64e.efi -i -l
  3. Write down your ETrackID and your PBA
  4. Try to find a binary that has your PBA by running grep <PBA> *.bin (on a different machine with all the bin files). You may have to search in little-endian order by reversing every byte (e.g. ABCDEF becomes BADCFE).
  5. Back on the UEFI shell, run edit nvmupdate.cfg. If you found a binary with your PBA, then find that entry in the file and add your ETrackID to the REPLACES line.
  6. If you couldn’t find any binaries (I couldn’t for the Dell nor the Lenovo), then you can try the entry for X710DA2_9p52_CFGID7p2_OEMGEN_OO.bin (still update the REPLACES line). Note that the EEPROM map selected in this one disables WoL, but I’m ok with that.
  7. Run nvmupdate64e.efi -rd
  8. Run reset -c

Hopefully this helps someone!

@Tokiwalki I am looking to crossflash a Dell X550-T2. I can see you where working on this, did you come to a conclusion on how to do this?

Thanks

I want to share my miserable experience cross-flashing Intel E810-XXVDA2 card. Unfortunately I did it way before I discovered this forum/thread.

It’s 2x25GB OEM card that I bought from AliExpress. To be honest I don’t even know whether its OEM, as it has no branding. It comes from BKHD shop that as I understand make their own boards but I have no idea whether they are OEM to Intel.

Basically I downloaded 29.4 version of NVM updater on Windows and just run nvmupdate tool. It did recognize the card and says there is an update avialable.

Unfortunately I was silly enough not to backup the original firmware.

Anyway, it flashed fine and after reboot I got Access Error

I tried many things, installing driver from same version, trying the whole thing under Linux but no luck. Card is visible on PCIe but Windows/Linux drivers unable to recognize it. nvmupdate -rd didn’t work, just saying Access Error.

I later tried running bootutil which started but failed in the middle and since then didn’t even want to start second time.

I guess the card is bricked and I need SPI flasher to recover it, but I don’t have original image.

1 Like

Has anyone noticed an impact on ASPM when cross flashing firmware? It seems that doing so has gotten rid of L1 PM Sub states capabilities…

I am in a similar situation. I ordered a E810-XXVDA2 from FLYBISH store and attempted an upgrade to 4.70 in linux/debian.
That failed and after that the linux driver is unable to initialize the card. with an ice_hw_init_hw failed: -5.

I updated the driver to 1.16.3 but no luck.

Windows 11 after installing the latest driver also fails to initialize the card.

nvmupdate64e always reports “Access error” except for UEFI mode. In UEFI shell I can see the the card is up to date as if it updated to 4.70. Forcing the update fails again and using releases previous to 4.70 gives me “Access Error” even in UEFI shell.

So it seems like the update failed but it still updated the version to 4.70.

Can you try UEFI shell if you can at least not get “Acces error”?

On the first update attempted I answered Y to make a backup but I don’t see any file or folder created. I guess I have another brick…