Skip to content

Instantly share code, notes, and snippets.

@mietzen
Last active January 17, 2026 01:57
Show Gist options
  • Select an option

  • Save mietzen/736583d37a1d370273c0775aaaa57aa5 to your computer and use it in GitHub Desktop.

Select an option

Save mietzen/736583d37a1d370273c0775aaaa57aa5 to your computer and use it in GitHub Desktop.
X710 OEM crossflash

How to crossflash intel X710 OEM cards

Disclaimer

ONLY do this if you understand what this script does and when you are sure that this method is applicable to your card!!!

I'm not responsible for your doings! You are flashing the firmware of your ethernet card, in the worst case you endup with a soft- or even hardbricked card! Also this might void your warrenty.

Having said this, if you are uncertain if this will work for your card be sure to dump the ROM with a RPI, RPI Pico or 3.3v moded SPI-Flash Programmer:

sudo flashrom --programmer ch341a_spi -c "W25Q64BV/W25Q64CV/W25Q64FV" -r lenovo_X710-DA2_FW9.3.bin

Repeate this at least 3 times and check that all three dumps have the same checksum, use e.g. sha256sum

Why crossflash

Many OEM (lenovo/dell/hp) ethernet x710 cards have some features disabled, in my case my LENOVO INTEL X710-DA 00YK615 doesn't support SR-IOV.

This guide tells you how to flash the original intel firmware and boot image on your card to enable all features.

Flash

You need to run all of this as root:

$ sudo -i

Download the latest intel-ethernet-adapter-complete-driver-pack, e.g. version 29.0, update the link if a newer versions exist:

$ WORKDIR=/opt/intel_x710_ethernet_fw && \
  mkdir -p $WORKDIR/download_pkg && \
  cd $WORKDIR/download_pkg && \
  wget https://downloadmirror.intel.com/816410/Release_29.0.zip

Unzip and prepare files:

$ unzip Release_*.zip && \
  rm Release_*.zip && \
  cd NVMUpdatePackage/700_Series && \
  tar -xf 700Series_NVMUpdatePackage_v*_Linux.tar.gz && \
  cd $WORKDIR && \
  VERSION=$(cat download_pkg/NVMUpdatePackage/700_Series/700Series/Linux_x64/version.txt) && \ 
  mv download_pkg/NVMUpdatePackage/700_Series/700Series/Linux_x64 $VERSION && \
  mv download_pkg/APPS/BootUtil/Linux_x64/DRIVER $VERSION/ && \
  mv download_pkg/APPS/BootUtil/Linux_x64/bootutil64e $VERSION/ && \
  rm -rf download_pkg && \
  chmod +x $VERSION/nvmupdate64e && \
  chmod +x $VERSION/bootutil64e && \
  chmod +x $VERSION/DRIVER/install

You may need to install the kernel headers if they are not present on your system:

  • debian: apt install linux-headers-amd64
  • proxmox: apt install pve-headers
  • ubuntu: apt install linux-generic
  • rocky: dnf install kernel-headers-$(uname -r)

Install the QV driver, it is needed to flash the card.

$ cd $WORKDIR/$VERSION/DRIVER && ./install
Extracting archive...OK!
Compiling the driver...OK!
Directory for driver installation does not exist...need to create it.
Directory for driver installation created successfully.
Skipping removing QV driver - it does not exist...
Copying iqvlinux.ko driver file to /lib/modules directory...OK!
Driver installation verification...Installed!

Check which is the right card:

$ cd $WORKDIR/$VERSION && ./bootutil64e

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.40.05.0
Copyright (C) 2003-2023 Intel Corporation

Type BootUtil -? for help

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   xxx     0:31.6 Gigabit N/A FLASH Not Present
  2   xxx     1:00.0 40GbE   N/A UEFI,PXE                      -------
  3   xxx     1:00.1 40GbE   N/A UEFI,PXE                      -------

Look which nic is the X710, here it is NIC 2 and 3. Now flash the cards boot image.

$ ./bootutil64e -NIC=2 -up=combo

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.40.05.0
Copyright (C) 2003-2023 Intel Corporation

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

Saving flash firmware image on port 2 to file 1572600B.FLB...saved
/
Flash update successful

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   xxx     0:31.6 Gigabit N/A FLASH Not Present
  2   xxx     1:00.0 40GbE   N/A UEFI,PXE Enabled              1.1.44
  3   xxx     1:00.1 40GbE   N/A UEFI,PXE Enabled              1.1.44

Run ethtool on your nic to get the ETrackID, here it is 8000ee1c:

$ ethtool -i enp1s0f0
driver: i40e
version: 6.5.13-1-pve
firmware-version: 9.30 0x8000ee1c 1.2890.0
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

Backup the default config file:

$ mv nvmupdate.cfg nvmupdate.cfg.bak

and create your own, put your ETrackID into the REPLACES block.

$ cat <<EOF > nvmupdate.cfg
CURRENT FAMILY: 1.0.0
CONFIG VERSION: 1.14.0

BEGIN DEVICE
DEVICENAME: XL710
VENDOR: 8086
DEVICE: 1572
NVM IMAGE: X710DA2_9p40_CFGID7p2_J51959_Retail_8M.bin
EEPID: 8000ECCE
REPLACES: 8000EE1C
OROM IMAGE: BootIMG.FLB
RESET TYPE: REBOOT
END DEVICE
EOF

Now update the Firmware, the -rd flag resets the vendor settings:

$ ./nvmupdate64e -rd

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.40.5.5
Copyright(C) 2013 - 2023 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 Controller X710   9.64(9.40)   1572 00:001 Update
    for 10GbE SFP+                                               available

Options: Adapter Index List (comma-separated), [A]ll, e[X]it
Enter selection: 2
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 Connection (7)      N/A(N/A)   15BC 00:000 Not supported
    I219-V
02) Intel(R) Ethernet Controller X710   9.64(9.40)   1572 00:001 Update
    for 10GbE SFP+                                               successful

A power cycle is required to complete the update process.

Tool execution completed with the following status: All operations completed successfully.
Press any key to exit.

Now reboot

$ reboot

After reboot your card is now crossflashed!

$ ethtool -i enp1s0f0
driver: i40e
version: 6.5.13-1-pve
firmware-version: 9.40 0x8000ecb7 1.3429.0
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

All functions should be available, in my case SR-IOV:

$ lspci -vv | grep -i SR-IOV
	Capabilities: [160 v1] Single Root I/O Virtualization (SR-IOV)

Resources:

@Xeroxxx
Copy link

Xeroxxx commented Jan 10, 2026

I do have a Dell X710-DA2 with latest firmware and etrackid 0x8000e9c2.

Flash X710DA2_9p56_CFGID7p2_J51959_Retail_8M.bin or X710DA2_9p56_CFGID7p2_OEMGEN.bin ?

@wapebira
Copy link

wapebira commented Jan 16, 2026

I had to upgrade 4 X710-DA2. 3 were 80003751, one was 800034E9. Based on NVM v6 and PBA, all these AI LLM pointed to an Intel card. Even though they had the dell part number sticker on them .
I used EFI mode. Put the bootutil, nvmupdate, nvmconfig, BootImg, the firmware file and UEFI shell on a FAT32 USB. On 3 of them I had to run the bootutil update.
This how they looked before upgrade

[00:004:00:00]: Intel(R) Ethernet Converged Network Adapter X710
        Vendor                 : 8086
        Device                 : 1572
        Subvendor              : 8086
        Subdevice              : 0006
        Revision               : 1
        LAN MAC                : F8F21E1B7D00
        Alt MAC                : 000000000000
        SAN MAC                : F8F21E1B7D01
        ETrackId               : 80003751
        SerialNumber           : 007D1BFFFF1EF2F8
        NVM Version            : 6.00(6.00)
        PBA                    : H26869-006
        VPD status             : Valid
        VPD size               : 307
        NVM update             : No config file entry
          checksum             : Valid
        OROM update            : No config file entry
          CIVD                 : 18.5.17
          PXE                  : 1.0.66, checksum Not Relevant
          ISCSI                : 3.1.30, checksum Not Relevant
          EFI                  : 3.0.5, checksum None
          SMCLP                : 3.0.90, checksum Valid

this was my config I used. After the first card, nvmupdate had some issue finding them. So I add the combinations of subdevice and EtrackId.

`CURRENT FAMILY: 1.0.0
CONFIG VERSION: 1.14.0

BEGIN DEVICE
DEVICENAME: XL710
VENDOR: 8086
DEVICE: 1572
SUBVENDOR: 8086
SUBDEVICE: 0006
NVM IMAGE: X710DA2_9p56_CFGID7p2_J51959_Retail_8M.bin
EEPID: 800100ED
REPLACES: 80003751
OROM IMAGE: BootIMG.FLB
RESET TYPE: REBOOT
END DEVICE

BEGIN DEVICE
DEVICENAME: XL710
VENDOR: 8086
DEVICE: 1572
SUBVENDOR: 8086
SUBDEVICE: 0000
NVM IMAGE: X710DA2_9p56_CFGID7p2_J51959_Retail_8M.bin
EEPID: 800100ED
REPLACES: 80003751
OROM IMAGE: BootIMG.FLB
RESET TYPE: REBOOT
END DEVICE

BEGIN DEVICE
DEVICENAME: XL710
VENDOR: 8086
DEVICE: 1572
SUBVENDOR: 8086
SUBDEVICE: 0006
NVM IMAGE: X710DA2_9p56_CFGID7p2_J51959_Retail_8M.bin
EEPID: 800100ED
REPLACES: 800034E9
OROM IMAGE: BootIMG.FLB
RESET TYPE: REBOOT
END DEVICE

BEGIN DEVICE
DEVICENAME: XL710
VENDOR: 8086
DEVICE: 1572
SUBVENDOR: 8086
SUBDEVICE: 0000
NVM IMAGE: X710DA2_9p56_CFGID7p2_J51959_Retail_8M.bin
EEPID: 800100ED
REPLACES: 800034E9
OROM IMAGE: BootIMG.FLB
RESET TYPE: REBOOT
END DEVICE

I also temporary disabled the onboard NIC (which was another Intel)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment