README.md aktualisiert

This commit is contained in:
2025-01-18 11:17:38 +01:00
parent 0324d854a7
commit 13eca1f032

235
README.md
View File

@@ -1,2 +1,235 @@
# crossflash-x710-da2
# 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](https://wiki.flashrom.org/RaspberryPi), [RPI Pico](https://libreboot.org/docs/install/spi.html#raspberry-pi-pico) or [**3.3v moded** SPI-Flash Programmer](https://wej.k.vu/electronics/ch341a-mini-programmer-fix/):
```shell
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:
```shell
$ sudo -i
```
Download the latest [intel-ethernet-adapter-complete-driver-pack](https://www.intel.com/content/www/us/en/download/15084/intel-ethernet-adapter-complete-driver-pack.html), e.g. version 29.0, update the link if a newer versions exist:
```shell
$ WORKDIR=/root/x710-crossflash && \
mkdir -p $WORKDIR/download_pkg && \
cd $WORKDIR/download_pkg && \
wget https://downloadmirror.intel.com/843839/Release_29.5.zip
```
Unzip and prepare files:
```shell
$ 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 | tr -d '\r') && \
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.
```shell
$ 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:
```shell
$ 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.
```shell
$ ./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`:
```shell
$ ethtool -i eth1
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:
```shell
$ mv nvmupdate.cfg nvmupdate.cfg.bak
```
and create your own, put your `ETrackID` into the `REPLACES` block.
```shell
$ 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_9p53_CFGID7p2_J51959_Retail_8M.bin
EEPID: 8000F91A
REPLACES: 80006432 8000839B 80008B7E 800093DA 80009614 80009B8E 8000A494 8000ABC3 8000B6D8 8000BD54 8000C3DB 8000C91A 8000CEC4 8000D059 8000D8CE 8000E61C 8000ECCE 8000F16A 8000F4E8 8000E9C2
OROM IMAGE: BootIMG.FLB
RESET TYPE: REBOOT
END DEVICE
EOF
```
Now update the Firmware, the `-rd` flag resets the vendor settings:
```shell
$ ./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
```shell
$ reboot
```
After reboot your card is now crossflashed!
```shell
$ ethtool -i eth1
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:
```shell
$ lspci -vv | grep -i SR-IOV
Capabilities: [160 v1] Single Root I/O Virtualization (SR-IOV)
```
Resources:
- https://gist.github.com/mietzen/736583d37a1d370273c0775aaaa57aa5#file-x710_oem_crossflash-md
- https://forum.level1techs.com/t/crossflashing-intel-official-firmware-on-dell-lenovo-pcie-x710-da2-nics/196357/7
- https://forums.servethehome.com/index.php?threads/firmware-flash-x520.8438/post-151071