README.md aktualisiert
This commit is contained in:
235
README.md
235
README.md
@@ -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
|
Reference in New Issue
Block a user