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

Sorry to hear that, und Linux it created a backup file in the current working directory.

But I never tried to use it, the only backup I trusted was the verified flash dump using a Raspberry Pi with a SOC-8 clip. I successfully debricked a card I flashed the wrong firmware on to.

If you find some one who has the exact card and lends you their dump you can debrick it.

Maybe I’m lucky if someone ends up here:
My card is E810-XXV-2
The PBA is K57775-011, that is also printed on the board

The current ETrackId is 8001F7BB but that changed after the nvm update. I didn’t write down the EtrackId when it had the 3.10 version.

If a dump appears I will invest in the clip. My hope is that a future nvm update will complete the update.

I also read about “Recovery mode” but I don’t seem to be able to trigger it, it is always “Access error”.

As replacement I got a genuine x710 from a trusted seller.

1 Like

Has anyone tried this on a Supermicro AOC-STG-i4S 4 port XL710 and can confirm which firmware image worked, or if anything else was required to crossflash? I get mine delivered next week and am prepping to flash it.

1 Like

I got ahold of the latest firmware from Supermicro, and it contains an image named “SMC_AOC-STG-i4S_XL710_9p40_SFI_NCSI_CFGID7p2_Quad_ASPM-OFF_0.02_8000F39B.bin”

Does it make sense to try “XL710_9p53_SFI_NCSI_CFGID7p2_Quad.bin” in the Intel firmware package? This seems to be their base image before turning ASPM-OFF and whatever else they altered, which is the unknown part.

1 Like

Look at the ETrackID and PBA, see my lengthy post or @kayson post.

And make a BACKUP of the Rom with a raspberry pi or a any other spi flash reader!

1 Like

Here’s what I get from ./nvmeupdate64e -i -l output:

Blockquote
checksum : Valid
[00:130:00:00]: Intel(R) Ethernet Controller X710 for 10GbE SFP+
Vendor : 8086
Device : 1572
Subvendor : 15D9
Subdevice : 087E
Revision : 2
LAN MAC :
Alt MAC : 000000000000
SAN MAC :
ETrackId : 8000F39B
SerialNumber :
NVM Version : 9.64(9.40)
PBA : 040000-000
VPD status : Valid
VPD size : 167
NVM update : No config file entry
checksum : Valid
OROM update : No config file entry
CIVD : 1.3534.0
PXE : 1.1.45, checksum Valid
EFI : 4.9.92, checksum None

I couldn’t find the ETrackID in the 29.5 driver package anywhere (little endian or regular). Gonna be a while before I can get my CH341A modded to 3.3v though to back up the existing rom. I need to decide if I roll the dice and risk losing $75 i paid for it :smiley:

Any raspberry pi would also do the trick, rpi gpio is 3.3V. I would NOT risk it.

Oh you can even use a pico now (thanks to stacksmashing): GitHub - stacksmashing/pico-serprog: Flashrom/serprog compatible firmware for the Raspberry Pi Pico

1 Like

Well, “XL710_9p53_SFI_NCSI_CFGID7p2_Quad.bin” didn’t work for the AOC-STG-i4S (no internet, wouldn’t negotiate 10gbe), and had me worried, but I then re-flashed with “X710DA4_9p53_CFGID7p2_OEMGEN_OO.bin” and it’s working great. I honestly don’t see any additional features enabled from the newer firmware (9p53 intel vs 9p40 supermicro). SR-IOV was supported before and after. I was hoping intel fw would enable ASPM on this card, but I guess the card just doesn’t support it.

Has anyone had any success cross flashing a HPE 562SFP+? I’ve spied a sharp price locally for a card but would prefer to run stock Intel firmware.

There is a post from @ [KungfuPancake] from 2023 which suggests it might be possible? But was hoping for something more definitive.

Providing an update of my journey. My card was in recovery mode after I flashed the Intel firmware on Linux. Surprisingly, after not touching it for a few weeks, I found the card got itself out of the recovery mode (not sure if it’s related: I restarted the Linux box a couple of times). So I prepared a USB drive and tried to flash the Intel firmware in UEFI shell. It was a success!

The good news is that lspci shows SR-IOV support, however, the bad news is that, I lost WOL.

# ethtool ensfp0
	Supports Wake-on: d
	Wake-on: d

The Dell firmware had “Supports Wake-on: g”, and I tested WOL on it. Now with the Intel firmware, WOL is disabled. I tried the following to bring back WOL but none worked.

  1. tried to enable WOL with “bootutil64e.efi -WOLENABLE -NIC=1”, but it threw an error “unsupported feature”;
  2. changed “EEPROM MAP” instructions to “PF_Alloc.txt” (without WOL Disable instructions) in nvmupdate.cfg, and flashed the same firmware again, the same result.
EEPROM MAP: PF_Alloc_WOL_DIS.txt
-> 
EEPROM MAP: PF_Alloc.txt
  1. flashed the X710DA2_9p52_CFGID7p2_OEMGEN_K97470.bin firmware (vs. X710DA2_9p52_CFGID7p2_OEMGEN_OO.bin), observing that its nvmupdate.cfg section does NOT specify a “EEPROM MAP” file. The flash was successful, but no WOL.
  2. flashed the latest 30.0.1 firmware, the same result.

Note that I have another card with ethtool showing “Supports Wake-on: pumbg” on the same box, so it’s not a BIOS/OS setting issue.

Anything else I can try to get WOL working on Intel firmware?

mine has L1 ASPM after cross-flashing.

LnkCap:|Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 <16us
     ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl:|ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
     ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-

Did you enable ASPM?
echo 1 > /sys/class/net/<DevName>/device/link/l1_aspm

edit: I have now tested this, from the x710 datasheet this value is preserved by updates which would explain why your switching to PF_Alloc.txt doesn’t reset it.

Then referring to PF_Alloc_WOL_DIS.txt

    BEGIN DIRECT
	0x019 : FFFF ; SW Revered Word 0x19 Disable WoL
    END DIRECT

I don’t know if it would matter if a 4 port config is used on a 2 port device but I think it’d be either FFFC (2-port) or FFF0 (4-port):

    BEGIN DIRECT
	0x019 : FFF0 ; SW Revered Word 0x19 Enable WoL
    END DIRECT

edit: I have tested on a Dell 2 port card with FFF0 and now see Supports Wake-on: g

3 Likes

@sulphate Thank you for the excellent finding! I tried it and got WOL enabled.

1 Like

I’m encountering an issue with my Dell X710 (Y5M7N) after flashing it with the firmware X710DA2_9p53_CFGID7p2_OEMGEN_OO.bin. Followed the instruction in this tread and the update went without an issue, but running ethtool shows no support for link speeds of 5000Mbps and 2500Mbps alongside the usual 1000/10000 Mbps.

I see some posts with ethtool showing these link speeds supported, am I possibly missing something or is that the expected output or my specific adapter.

2500 and 5000 speeds are only available on the T2L and T4L the versions with RJ45 ports.

Y5M7N is the X710-DA2 with SFP+ ports which only supports 1000 or 10000, some RJ45 transceivers may support other speeds but they’ll report as 10G links to the x710 which in my experience can cause some issues depending on if the module can introduce pause frames to the traffic and not all do, may need to enable flow control on devices.

If may vary by module but without pause frames the devices see a 10G link even if its actaully 2500 or 5000, so they appear to try and. send too much traffic which results in packetloss and low speeds (<1gbps)

Hello,

I have a brand new Lenovo J31980-004 Intel x710 that never worked. The computer doesn’t detect it at all. Is there anything I can do to revive it? Maybe a guide on reflashing or something similar?

Thanks in advance.

Hopefully you are using a known working PCIe port?

I’d suggest seeing if the PCI device can be enumerated; on linux can lspci see it or from EFI pci.

Perhaps see if nvmupdate can see it, available in the Intel® Ethernet Adapter Complete Driver Pack NVMUpdatePackage/700_Series I prefer the EFI version as there seem to be fewer stability concerns.
Extract the zip and browse to it in a EFI Shell and run nvmupdate64e.efi -i -l and see if it can identify the device.

I think that’s where I would start, basically can the machine see there is a device and is it in recovery mode or anything because that would probably be easier to recover from than trying to source a dump and flash the ROM with a hardware device (RPI, SPI programmer, etc)

This card was tested on four different computers, and none of them detected it at all.

I have two more cards, and I performed the cross-flash without any issues, and everything is working like a charm.

This third card I mentioned above has never worked (it’s brand new), and the computer doesn’t detect it at all. I’d like to try reviving it, but I’m not sure what to do next (I have CH341A).

nvm update x64 doesn’t detect it at all

In that case all I think all you can really do is try and restore a known working ROM to see if that brings it to life, if not there must be some hardware failure involved.

You’ll want to ensure that the CH341A is modified to work at 3.3v and I’ve used a soic8 clip with a RPi to dump the card, I’m not too familiar with this having only ever done it on a RPi from Linux but there are instructions for the dumping command on X710 OEM crossflash · GitHub then write it to the broken one – which I’d also try and backup first.

If it works, then there are ways to change/restore the MAC addresses.
But worry about that if you get it working.

edit: I think it’s unlikely to be fixable, the cards appear to be designed to enter a recovery state were they are still visible to the machine. So it’s concerning that you don’t see it at all.

I have CH341A and I was thinking about flashing it to see if it would bring it back to life, but I didn’t see a way to actually do it.