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

I’m wondering if its possible to run the official intel firmware on dell/lenovo branded X710-DA2 10G SFP+ network cards. I haven’t found any information online about this other than running the intel software update will not find updates for non-intel cards and folks need to run dell specific firmware update procedures.

UPDATE: These instructions load the wrong firmware on the card, resulting in only one of the SFP+ ports working. See update below!

I’ve just done this to two Dell cards. I don’t yet have any transceivers or DACs that the cards will talk with to test they’re not bricked though.

You’ll need two tools, both available in the latest Intel “complete package” for these devices.

You need to use the BootUtil to replace the Dell Option ROM, as it contains extras that the Intel firmware flasher refuses to have anything to do with.

update=combo

Once that’s done, you’ll have to use the firmware update utility nvmupdate to do an inventory of the card and discover the current unique ID of the existing Dell firmware - Intel calls this an ETrackID

Make your own copy of the included nvmupdate.cfg, and rip out everything but the two-line header and the one block for X710-DA2. Replace the contents of the Replaces: line with the ETrackID on your card.

Then run the firmware utility instructing it to use your configuration file.

To follow up, yes the cards were kinda bricked.
You’ll need to run the nvmupdate utility with the -rd option to reset the card options to factory defaults.

Lastly, if someone else hasn’t already done it, you’re probably going to want to boot an Ubuntu live-cd and hit the card with an unlocker to make it actually work with SFP+ modules not specifically approved by Intel. Have a look at github slash bibigon812/xl710-unlocker

Yes, I know that repository hasn’t been touched in 6 years. But it works!

1 Like

My initial instructions load the wrong firmware, resulting in only one SFP+ port working.

When editing the configuration file, remove all entries for everything that isn’t X710 or X710-DA2. That should leave you with four entries.

One is for OCP 3.0 - get rid of it.
The one I mistakenly instructed to flash previously is X710-DA2 - get rid of it.

That leaves you with two entries, both with NVM image files named HPI_EagleFountain

One ends 000_v00.bin, and the other 000.bin

I didn’t try 000_v00, but 000.bin appears to be working correctly for me. As of firmware 9.20, that’s ETrack 8000D8CD, but of course this will have changed if you’re reading these instructions in the future.

Good luck!

First of all, thank you for those instructions, they helped my to update the firmware on my card. The different entries in the config file - besides other things - depend on the SPI flash size on the card. I have a HPE 562SFP+ card which uses a 8Mb flash compared to others that use a 4Mb chip. This lead to the flash process failing, leaving the card in a bricked state.
I was able to flash the backup made by the updater via a hardware flasher, recovery might not be possible without that. So check beforehand if the image you’re about to flash has the right size! I actually needed the X710-DA2 entry which uses the correct flash size for this particular card. WIth the -rd option the card flashes and works fine and I now have the current version 9.30 on the card.

Hi there, I would like to flash my Lenovo X710-DA2 to the latest Intel 9.4 FW.
But I have some questions:

  • do i need to use bootutil as well? Where do I get it? Edit: Got it from the intel preboot.tar.gz, but I’m not sure what to do here:
 ./bootutil64e -?
Error: Connection to QV driver failed - please reinstall it!

RUNNING BootUtil
================
The syntax for issuing BootUtil command-line options is:

BOOTUTIL -[OPTION] or -<OPTION>=<VALUE>


COMMAND LINE OPTIONS
====================
BootUtil accepts one executable option and its associated non-executable
options in an execution. If conflicting executable options are specified,
BootUtil exits with an error.

The options, where applicable, are listed in logical groups.

NOTE: If you run BootUtil without any command-line options, the utility
displays a list of all supported Intel network ports found in the system.


GENERAL OPTIONS:
-? or -HELP
Displays a list of command-line options.

> Press ENTER key to continue, 'q' to exit:
  • can i also use the “replaces” line from the original lenovo config? Because Inventory mode displays nothing:
./nvmupdate64e -i

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

  • how do I know which spi flash size my card uses Edit: I used a Raspberry Pi to dump the SPI Flash (3 times) it is 8 MB, I made sure that all 3 dumps are 100% identical.

I have a Dell branded Intel X710-T4L card that advertises only 1G and 10G modes even though it should also work with 5G and 2.5G. I guess the Dell firmware might be the cause of this problem.
Now I would like to flash the Intel firmware.
Could you provide more detailed instructions how to do that? I don’t want to brick the card for obvious reasons. :smiley:

root@proxmox:~# ethtool enp5s0f1
Settings for enp5s0f1:
        Supported ports: [  ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseT/Full
                                10000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Unknown! (255)
        Auto-negotiation: off
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: no
root@proxmox:~# ethtool -i enp5s0f1
driver: i40e
version: 6.5.13-1-pve
firmware-version: 9.40 0x8000e9b2 22.5.7
expansion-rom-version:
bus-info: 0000:05:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
root@proxmox:~# lspci -d 8086: -vvv
05:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GBASE-T (rev 02)
        Subsystem: Intel Corporation Ethernet 10G 4P X710-T4L-t Adapter
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 93
        NUMA node: 0
        IOMMU group: 33
        Region 0: Memory at 3001e000000 (64-bit, prefetchable) [size=16M]
        Region 3: Memory at 3001f818000 (64-bit, prefetchable) [size=32K]
        Expansion ROM at f2680000 [disabled] [size=512K]
        Capabilities: [40] Power Management version 3
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
                Address: 0000000000000000  Data: 0000
                Masking: 00000000  Pending: 00000000
        Capabilities: [70] MSI-X: Enable+ Count=129 Masked-
                Vector table: BAR=3 offset=00000000
                PBA: BAR=3 offset=00001000
        Capabilities: [a0] Express (v2) Endpoint, MSI 00
                DevCap: MaxPayload 2048 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W
                DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
                        RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop- FLReset-
                        MaxPayload 512 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 8GT/s, Width x8, ASPM L1, Exit Latency L1 <16us
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
                LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 8GT/s, Width x8
                        TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR-
                         10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
                         EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                         FRS- TPHComp- ExtTPHComp-
                         AtomicOpsCap: 32bit- 64bit- 128bitCAS-
                DevCtl2: Completion Timeout: 260ms to 900ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
                         AtomicOpsCtl: ReqEn-
                LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+
                         EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
                         Retimer- 2Retimers- CrosslinkRes: unsupported
        Capabilities: [e0] Vital Product Data
                Product Name: X710 10GbE Controller
                Read-only fields:
                        [V0] Vendor specific: FFV22.5.7
                        [PN] Part number: ND4PT
                        [MN] Manufacture ID: 1028
                        [V1] Vendor specific: DSV1028VPDR.VER2.1
                        [V3] Vendor specific: DTINIC
                        [V4] Vendor specific: DCM1001FFFFFF2101FFFFFF3201FFFFFF4301FFFFFF
                        [V5] Vendor specific: NPY4
                        [V6] Vendor specific: PMT1
                        [V7] Vendor specific: NMVIntel Corp
                        [V8] Vendor specific: L1D0
                        [RV] Reserved: checksum good, 1 byte(s) reserved
                Read/write fields:
                        [Y1] System specific: CCF1
                End
        Capabilities: [100 v2] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt+ UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO+ CmpltAbrt- UnxCmplt+ RxOF+ MalfTLP+ ECRC+ UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
                AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
                        MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
                HeaderLog: 00000000 00000000 00000000 00000000
        Capabilities: [140 v1] Device Serial Number e0-d3-f1-ff-ff-91-96-b4
        Capabilities: [150 v1] Alternative Routing-ID Interpretation (ARI)
                ARICap: MFVC- ACS-, Next Function: 1
                ARICtl: MFVC- ACS-, Function Group: 0
        Capabilities: [160 v1] Single Root I/O Virtualization (SR-IOV)
                IOVCap: Migration- 10BitTagReq- Interrupt Message Number: 000
                IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy+ 10BitTagReq-
                IOVSta: Migration-
                Initial VFs: 32, Total VFs: 32, Number of VFs: 0, Function Dependency Link: 00
                VF offset: 16, stride: 1, Device ID: 154c
                Supported Page Size: 00000553, System Page Size: 00000001
                Region 0: Memory at 000003001f600000 (64-bit, prefetchable)
                Region 3: Memory at 000003001f9a0000 (64-bit, prefetchable)
                VF Migration: offset: 00000000, BIR: 0
        Capabilities: [1a0 v1] Transaction Processing Hints
                Device specific mode supported
                No steering table available
        Capabilities: [1b0 v1] Access Control Services
                ACSCap: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
                ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
        Capabilities: [1d0 v1] Secondary PCI Express
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-
                LaneErrStat: 0
        Kernel driver in use: i40e
        Kernel modules: i40e

I’ve tried it today. The bootutil part worked fine as far as I can see.

Before:

root@proxmox:/tmp/BootUtil/Linux_x64# ./bootutil64e
Error: Connection to QV driver failed - please reinstall it!

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   B49691F1D3E0     5:00.0 40GbE   N/A UEFI,PXE                      -------
  2   B49691F1D3E1     5:00.1 40GbE   N/A UEFI,PXE                      -------
  3   B49691F1D3E2     5:00.2 40GbE   N/A UEFI,PXE                      -------
  4   B49691F1D3E3     5:00.3 40GbE   N/A UEFI,PXE                      -------

After:

root@proxmox:/tmp/BootUtil/Linux_x64# ./bootutil64e -NIC=1 -up=combo
Error: Connection to QV driver failed - please reinstall it!

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.40.05.0
Copyright (C) 2003-2023 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
Y

Saving flash firmware image on port 1 to file 15FF600B.FLB...saved                                                                                                                                                                                          /
Flash update successful

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   B49691F1D3E0     5:00.0 40GbE   N/A UEFI,PXE Enabled              1.1.45
  2   B49691F1D3E1     5:00.1 40GbE   N/A UEFI,PXE Enabled              1.1.45
  3   B49691F1D3E2     5:00.2 40GbE   N/A UEFI,PXE Enabled              1.1.45
  4   B49691F1D3E3     5:00.3 40GbE   N/A UEFI,PXE Enabled              1.1.45

I’ve installed the QV driver after that:

root@proxmox:/tmp/BootUtil/Linux_x64/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!

But if I run nvmupdate I get “Device not found.” even though the device is listed:

root@proxmox:/tmp/NVMUpdate/Linux_x64# ./nvmupdate64e

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 10G 4P            9.64(9.40)   15FF 00:005 Update not
    X710-T4L-t Adapter                                           available


Tool execution completed with the following status: Device not found.
Press any key to exit.

If I want to run the inventory I just get nothing:

root@proxmox:/tmp/NVMUpdate/Linux_x64# ./nvmupdate64e -i

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

So how do I get the current ETrackID now?

I’m stuck at the same point QV is installed but I don’t get an inventory.

Update, I found this post:

https://forums.servethehome.com/index.php?threads/firmware-flash-x520.8438/post-151071

Run this to get the ETrackId:

$ ./nvmupdate64e -i -l

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

Config file will not be read.
Unsupported device found - DeviceId: 15BC.
Inventory
[00:001:00:00]: Intel(R) Ethernet Controller X710 for 10GbE SFP+
	Flash inventory started.
	Shadow RAM inventory started.
	Shadow RAM inventory finished.
	Flash inventory finished.
	OROM inventory started.
	OROM inventory finished.
[00:001:00:01]: Intel(R) Ethernet Converged Network Adapter X710
	Device already inventoried.
[00:001:00:00]: Intel(R) Ethernet Controller X710 for 10GbE SFP+
	Vendor                 : 8086
	Device                 : 1572
	Subvendor              : 8086
	Subdevice              : 000A
	Revision               : 1
	LAN MAC                : xxxx
	Alt MAC                : 000000000000
	SAN MAC                : xxxx
	ETrackId               : 8000EE1C
	SerialNumber           : xxxx
	NVM Version            : 9.48(9.30)
	PBA                    : J31980-004
	VPD status             : Valid
	VPD size               : 212
	NVM update             : No config file entry
	  checksum             : Valid
	OROM update            : No config file entry
	  CIVD                 : 1.3450.0
	  PXE                  : 1.1.44, checksum Valid
	  EFI                  : 4.9.70, checksum None
[00:001:00:01]: Intel(R) Ethernet Converged Network Adapter X710
	Vendor                 : 8086
	Device                 : 1572
	Subvendor              : 8086
	Subdevice              : 0000
	Revision               : 1
	LAN MAC                : xxxx
	Alt MAC                : 000000000000
	SAN MAC                : xxxx
	ETrackId               : 8000EE1C
	SerialNumber           : xxxx
	NVM Version            : 9.48(9.30)
	PBA                    : J31980-004
	VPD status             : Valid
	VPD size               : 212
	NVM update             : No config file entry
	  checksum             : Valid
	OROM update            : No config file entry
	  CIVD                 : 1.3450.0
	  PXE                  : 1.1.44, checksum Valid
	  EFI                  : 4.9.70, checksum None

You can also save the inventory to a xml file with:

./nvmupdate64e -i -o inventory.xml

Edit:

Which BootIMG.FLB did you use? There are two one in the APPS/BootUtil folder and one in NVMUpdatePackage/700_Series/700Series/Linux_x64/

❯ sha256sum APPS/BootUtil/BootIMG.FLB
3cc4d7e712a8740d337737d40d27bdcf19d138070c551a09de9b971b478bf899  APPS/BootUtil/BootIMG.FLB

❯ sha256sum NVMUpdatePackage/700_Series/700Series/Linux_x64/BootIMG.FLB
17aedbe64ef8097597abc939ba78fbb96585fc1e1c6dd2c5a323bba0fc3d9ecf  NVMUpdatePackage/700_Series/700Series/Linux_x64/BootIMG.FLB

Did you copy bootutil64e in the NVMUpdatePackage folder?

Ok, I got it working for my X710-T4L:

  1. Install QV driver:
root@proxmox:/tmp/BootUtil/Linux_x64/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!
  1. Update ROM using BootUtil:
root@proxmox:/tmp/BootUtil/Linux_x64# ./bootutil64e -NIC=1 -up=combo
Error: Connection to QV driver failed - please reinstall it!

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.40.05.0
Copyright (C) 2003-2023 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
Y

Saving flash firmware image on port 1 to file 15FF600B.FLB...saved                                                                                                                                                                                          /
Flash update successful

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   B49691F1D3E0     5:00.0 40GbE   N/A UEFI,PXE Enabled              1.1.45
  2   B49691F1D3E1     5:00.1 40GbE   N/A UEFI,PXE Enabled              1.1.45
  3   B49691F1D3E2     5:00.2 40GbE   N/A UEFI,PXE Enabled              1.1.45
  4   B49691F1D3E3     5:00.3 40GbE   N/A UEFI,PXE Enabled              1.1.45
  1. Run ethtool to get the ETrackID:
root@proxmox:~# ethtool -i enp5s0f1
driver: i40e
version: 6.5.13-1-pve
firmware-version: 9.40 0x8000e9b2 22.5.7
expansion-rom-version:
bus-info: 0000:05:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

Here you are looking for “8000e9b2”.

  1. Edit nvmupdate.cfg: Find the right image via the PBA (In my case “K37380”) and delete everything else.
CURRENT FAMILY: 1.0.0
CONFIG VERSION: 1.14.0

BEGIN DEVICE
DEVICENAME: XL710
VENDOR: 8086
DEVICE: 15FF
NVM IMAGE: X710_T4L_9p40_CFGID14p0_Retail_K37380.bin
OROM IMAGE: BootIMG.FLB
EEPID: 8000ECCF
REPLACES: 8000E9B2
RESET TYPE: REBOOT
END DEVICE

Delete everything after “REPLACES:” and add your ETrackID.

  1. Run the firmware update via NVMUpdate:
root@proxmox:/tmp/NVMUpdate/Linux_x64# ./nvmupdate64e

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 10G 4P            9.64(9.40)   15FF 00:005 Update
    X710-T4L-t Adapter                                           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 10G 4P            9.64(9.40)   15FF 00:005 Update
    X710-T4L-t Adapter                                           successful

A reboot is required to complete the update process.

Tool execution completed with the following status: All operations completed successfully.
Press any key to exit.
  1. Result:
root@proxmox:~# ethtool -i enp5s0f0
driver: i40e
version: 6.5.13-1-pve
firmware-version: 9.40 0x8000eccf 1.3534.0
expansion-rom-version:
bus-info: 0000:05:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
2 Likes

I’ve used the BootIMG.FLB that came in the folder of the respective utility.

Unfortunatelly the retail firmware didn’t fix my problem and the card is still not listing 2,5G and 5G:

Settings for enp5s0f0:
        Supported ports: [  ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseT/Full
                                10000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Unknown! (255)
        Auto-negotiation: off
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: no

Edit: I also documented everything in a gist: X710 OEM crossflash · GitHub

Summary:

  • Card: LENOVO INTEL X710-DA 00YK615 (LP)
  • Issue: SR-IOV not working

It worked for me as well:

root@proxmox-m720q-0:~/intel_x710/700Series_NVMUpdatePackage_v9_40_Linux/700Series/Linux_x64# ./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                      -------
root@proxmox-m720q-0:~/intel_x710/700Series_NVMUpdatePackage_v9_40_Linux/700Series/Linux_x64# ./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
root@proxmox-m720q-0:~/intel_x710/700Series_NVMUpdatePackage_v9_40_Linux/700Series/Linux_x64# 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
root@proxmox-m720q-0:~/intel_x710/700Series_NVMUpdatePackage_v9_40_Linux/700Series/Linux_x64# mv nvmupdate.cfg nvmupdate.cfg.bak

root@proxmox-m720q-0:~/intel_x710/700Series_NVMUpdatePackage_v9_40_Linux/700Series/Linux_x64# 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
root@proxmox-m720q-0:~/intel_x710/700Series_NVMUpdatePackage_v9_40_Linux/700Series/Linux_x64# ./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.
root@proxmox-m720q-0:~/intel_x710/700Series_NVMUpdatePackage_v9_40_Linux/700Series/Linux_x64# reboot
root@proxmox-m720q-0:~# 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

Which BootIMG.FLB did you use? There are two one in the APPS/BootUtil folder and one in NVMUpdatePackage/700_Series/700Series/Linux_x64/

And I can answer my own Question, I used the BootIMG.FLB inside the NVMUpdatePackage folder and it is older 1.1.44 vs. 1.1.45

Unfortunately I also didn’t get the result I hoped for, I had a glimps of hope of getting SR-VIO working, but sadly it wasn’t the FW.

You might want to try flashing again with ./nvmupdate64e -rd to reset to defaults. Perhaps there are still some “dell settings” left , it unlocked SR-IOV for my lenovo card :heart_eyes:

	Capabilities: [150 v1] Alternative Routing-ID Interpretation (ARI)
		ARICap:	MFVC- ACS-, Next Function: 0
		ARICtl:	MFVC- ACS-, Function Group: 0
	Capabilities: [160 v1] Single Root I/O Virtualization (SR-IOV)
		IOVCap:	Migration- 10BitTagReq- Interrupt Message Number: 000
		IOVCtl:	Enable- Migration- Interrupt- MSE- ARIHierarchy- 10BitTagReq-
		IOVSta:	Migration-
		Initial VFs: 64, Total VFs: 64, Number of VFs: 0, Function Dependency Link: 01
		VF offset: 335, stride: 1, Device ID: 154c
		Supported Page Size: 00000553, System Page Size: 00000001
		Region 0: Memory at 00000000b1400000 (64-bit, prefetchable)
		Region 3: Memory at 00000000b1910000 (64-bit, prefetchable)
		VF Migration: offset: 00000000, BIR: 0

I updated the post above.

1 Like

Yes, that did the trick! Awesome that we both got working what we wanted. :smiley:

root@proxmox:~# ethtool enp5s0f0
Settings for enp5s0f0:
        Supported ports: [  ]
        Supported link modes:   100baseT/Full
                                1000baseT/Full
                                10000baseT/Full
                                2500baseT/Full
                                5000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  100baseT/Full
                                1000baseT/Full
                                10000baseT/Full
                                2500baseT/Full
                                5000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Unknown! (255)
        Auto-negotiation: off
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: no

Thank you for the very detailed instructions. As I was following along with Dell x710-DA4 card I got stuck at the bootutil64e step. I’m running Debian live (off of USB stick) and I do not see expected output of the bootutil64e command. Mine looks like

root@debian:/opt/intel_x710_ethernet_fw/v9.40# 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   (Cannot initialize adapter)
  2   (Cannot initialize adapter)
  3   (Cannot initialize adapter)
  4   (Cannot initialize adapter)

Otherwise card work fine. I can connect to the internet, and in fact, I’m writing this post with it connected. Any insight?

root@debian:/opt/intel_x710_ethernet_fw/v9.40# ethtool enp98s0f0
Settings for enp98s0f0:
        Supported ports: [ FIBRE ]
        Supported link modes:   10000baseSR/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10000baseSR/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 10000Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: g
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes
root@debian:/opt/intel_x710_ethernet_fw/v9.40# ethtool -i enp98s0f0
driver: i40e
version: 6.1.0-18-amd64
firmware-version: 9.40 0x8000e9af 22.5.7
expansion-rom-version: 
bus-info: 0000:62:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
root@debian:/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.
Inventory
[00:098: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:098:00:01]: Intel(R) Ethernet Converged Network Adapter X710
        Device already inventoried.
[00:098:00:02]: Intel(R) Ethernet Converged Network Adapter X710
        Device already inventoried.
[00:098:00:03]: Intel(R) Ethernet Converged Network Adapter X710
        Device already inventoried.
[00:098:00:00]: Intel(R) Ethernet Converged Network Adapter X710
        Vendor                 : 8086
        Device                 : 1572
        Subvendor              : 8086
        Subdevice              : 0005
        Revision               : 1
        LAN MAC                : F8F21E1C0C00
        Alt MAC                : 000000000000
        SAN MAC                : F8F21E1C0C01
        ETrackId               : 8000E9AF
        SerialNumber           : 000C1CFFFF1EF2F8
        NVM Version            : 9.64(9.40)
        PBA                    : H53934-010
        VPD status             : Valid
        VPD size               : 303
        NVM update             : No config file entry
          checksum             : Valid
        OROM update            : No config file entry
          CIVD                 : 22.5.7
          PXE                  : 1.1.44, checksum Valid
          EFI                  : 4.9.83, checksum None
[00:098:00:01]: Intel(R) Ethernet Converged Network Adapter X710
        Vendor                 : 8086
        Device                 : 1572
        Subvendor              : 8086
        Subdevice              : 0000
        Revision               : 1
        LAN MAC                : F8F21E1C0C02
        Alt MAC                : 000000000000
        SAN MAC                : F8F21E1C0C03
        ETrackId               : 8000E9AF
        SerialNumber           : 000C1CFFFF1EF2F8
        NVM Version            : 9.64(9.40)
        PBA                    : H53934-010
        VPD status             : Valid
        VPD size               : 303
        NVM update             : No config file entry
          checksum             : Valid
        OROM update            : No config file entry
          CIVD                 : 22.5.7
          PXE                  : 1.1.44, checksum Valid
          EFI                  : 4.9.83, checksum None
[00:098:00:02]: Intel(R) Ethernet Converged Network Adapter X710
        Vendor                 : 8086
        Device                 : 1572
        Subvendor              : 8086
        Subdevice              : 0000
        Revision               : 1
        LAN MAC                : F8F21E1C0C04
        Alt MAC                : 000000000000
        SAN MAC                : F8F21E1C0C05
        ETrackId               : 8000E9AF
        SerialNumber           : 000C1CFFFF1EF2F8
        NVM Version            : 9.64(9.40)
        PBA                    : H53934-010
        VPD status             : Valid
        VPD size               : 303
        NVM update             : No config file entry
          checksum             : Valid
        OROM update            : No config file entry
          CIVD                 : 22.5.7
          PXE                  : 1.1.44, checksum Valid
          EFI                  : 4.9.83, checksum None
[00:098:00:03]: Intel(R) Ethernet Converged Network Adapter X710
        Vendor                 : 8086
        Device                 : 1572
        Subvendor              : 8086
        Subdevice              : 0000
        Revision               : 1
        LAN MAC                : F8F21E1C0C06
        Alt MAC                : 000000000000
        SAN MAC                : F8F21E1C0C07
        ETrackId               : 8000E9AF
        SerialNumber           : 000C1CFFFF1EF2F8
        NVM Version            : 9.64(9.40)
        PBA                    : H53934-010
        VPD status             : Valid
        VPD size               : 303
        NVM update             : No config file entry
          checksum             : Valid
        OROM update            : No config file entry
          CIVD                 : 22.5.7
          PXE                  : 1.1.44, checksum Valid
          EFI                  : 4.9.83, checksum None

The installation of the QV driver did work?

Yes. Identical output from it as you posted it earlier.

Do you have any other NICs installed besides the X710-DA4? If not I would just try running ./bootutil64e -NIC=1 -up=combo
Copy the BootIMG.FLB to the Linux_x64 directory first.

The only other NICs are on-board Realtek 2.5Gb/s one, and onboard WiFi. I guess I can try to disable them in the BIOS. I originally tried to force it, like you show, but no dice. Still couldn’t find anything.