Intel X520-DA1/DA2 firmware update with BootUtil (unsupported SFP+ module fix)
Intel X520 adapters (X520-DA1 with one SFP+ port, X520-DA2 with two) are among the most common 10 GbE cards in second-hand servers and home labs. They are cheap,…
Updated:
Intel X520 adapters (X520-DA1 with one SFP+ port, X520-DA2 with two) are among the most common 10 GbE cards in second-hand servers and home labs. They are cheap, well supported by every operating system, and usually just work. Occasionally, though, a card refuses to bring up a link and the driver logs this line:
ixgbe: failed to initialize because an unsupported SFP+ module type was detected
There are several ways to deal with it, including forcing the driver to accept the module. This guide covers a different remedy that often resolves the situation and is worth doing anyway on an older card: updating the adapter’s Preboot firmware (the UEFI and PXE boot agents stored in the card’s flash) with Intel’s BootUtil tool under Linux. The steps are written for the X520-DA1 and apply equally to the X520-DA2.
Step 1. Download the Preboot package
Intel distributes the boot agents and BootUtil in an archive named Preboot.tar.gz. Download the current version from Intel’s download centre (search for “Intel Ethernet Connections Boot Utility, Preboot Images, and EFI Drivers”), or use a copy from your own infrastructure mirror. Then transfer it to the server by any convenient method:
scp Preboot.tar.gz root@server:/root/
Step 2. Extract the archive
cd /root
mkdir -p /root/preboot
tar -xzvf Preboot.tar.gz -C /root/preboot
Step 3. Go to the BootUtil directory
cd /root/preboot/APPS/BootUtil/Linux_x64
chmod +x bootutil64e
Step 4. List the detected adapters
Run the utility without arguments:
./bootutil64e
It prints every Intel adapter it can see, together with the flash firmware currently installed:
Error: Connection to QV driver failed - please reinstall it!
Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.43.36.0
Port Network Address Location Series WOL Flash Firmware Version
==== =============== ================== ======= === ===================== =======
1 90E2BA343A0A 00000:033:00.0 10GbE N/A UEFI,PXE Enabled 2.4.59
2 D85ED3694B2E 00000:100:00.0 Gigabit YES FLASH Not Present
3 D85ED3694B2F 00000:100:00.1 Gigabit YES FLASH Not Present
Find the X520 in the list (the 10GbE series row) and note its Port number. This is the NIC value used in the next step. In the example above the X520 is port 1, so NIC=1. On an X520-DA2 you will see two 10GbE rows; the firmware is per adapter, so update the first port and check whether the second shows the new version too.
About “Connection to QV driver failed”
The first line of output is a warning, not a failure:
Error: Connection to QV driver failed - please reinstall it!
It means BootUtil could not load Intel’s helper kernel module (iqvlinux), which it prefers to use for direct hardware access. In most cases this is not critical. If the adapter appears in the table, BootUtil is talking to it through the standard interface and the update can proceed without installing the driver.
Step 5. Update the firmware
The boot image is BootIMG.FLB, one level up from the Linux binary. Two variants are available.
Option 1. UEFI only
If you need only the UEFI boot agent and do not use PXE (legacy network boot):
./bootutil64e -NIC=1 -UP=EFI -FILE=../BootIMG.FLB
Expected output:
Error: Connection to QV driver failed - please reinstall it!
Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.43.36.0
Copyright (C) 2003-2026 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 10FB4003.FLB...saved
Updating EFI removes PXE functionality.
Would you like to continue? (Y)es or (N)o: y
Y
Flash update successful
Port Network Address Location Series WOL Flash Firmware Version
==== =============== ================== ======= === ===================== =======
1 90E2BA343A0A 00000:033:00.0 10GbE N/A UEFI 8.3.17
2 D85ED3694B2E 00000:100:00.0 Gigabit YES FLASH Not Present
3 D85ED3694B2F 00000:100:00.1 Gigabit YES FLASH Not Present
Note the warning in the middle: Updating EFI removes PXE functionality. After this variant the card boots only through UEFI.
Option 2. UEFI + PXE (combo)
To update both the UEFI and the PXE boot agents at once:
./bootutil64e -NIC=1 -UP=combo -FILE=../BootIMG.FLB
This is the recommended variant in most cases: it refreshes both components and keeps PXE available. The prompts are the same. Answer y when asked to create a restore image, which saves the current flash contents to a .FLB file in the working directory (keep it), and y to confirm the update. Afterwards the table shows the new version for the port.
After the update
- Reboot the server fully (a cold power cycle is safest so the card re-initialises its option ROM).
- Run
./bootutil64eagain and confirm the port reports the new version (8.3.17 in the example). - Check
dmesg | grep ixgbeand the link state (ip link) to confirm the adapter initialises without errors and, if the SFP+ warning was the reason for the update, whether it is gone. - Enter the system firmware (BIOS/UEFI) setup: the card should now appear with an “Intel(R) Ethernet” entry offering UEFI network boot with the new version.
If the SFP+ error remains
The Preboot firmware update fixes the boot agents; it does not change which transceivers the ixgbe driver accepts. If the unsupported-module message persists, the remaining options are to use an Intel-coded or compatible SFP+/DAC module, or to load the driver with the allow_unsupported_sfp=1 parameter:
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe.conf
update-initramfs -u # Debian/Ubuntu; dracut -f on RHEL-family
reboot
Unsupported modules may work fine or may have link stability issues; test before relying on them in production.
Frequently asked questions
Can I run BootUtil from a live USB?
Yes. Any x86-64 Linux live environment with root access works, and it avoids touching the installed system. Copy the extracted preboot directory to writable storage so the restore image can be saved.
What does the restore image do?
It is a copy of the flash contents before the update. If the new boot agent causes problems, flash it back with ./bootutil64e -NIC=1 -UP=combo -FILE=10FB4003.FLB (use the file name printed during your run).
Does this work on Windows?
The same archive contains BootUtil for Windows (APPS/BootUtil/Winx64/BootUtilw64e.exe) with identical options.
A firmware update is a small, reversible step that brings a ten-year-old adapter back to current boot behaviour; do it deliberately, keep the restore image, and verify afterwards.
In short: Download Intel’s Preboot package, extract it, run bootutil64e to find the X520’s port number, then update with -UP=combo (UEFI + PXE, recommended) or -UP=EFI, answering yes to the restore image and confirmation prompts. Ignore the QV driver warning if the card is listed. Reboot and confirm the new version. If the SFP+ error persists, address the module or driver setting separately.