Reviving a 'Non-Updatable' Intel X550-T2 NIC (Silicom / Lenovo Variant)

How to update firmware on OEM Intel X550 NICs (Silicom/Lenovo) that show 'No config file entry' using Lenovo's older updater and config editing.

Reviving a "Non-Updatable" Intel X550-T2 NIC (Silicom / Lenovo Variant)

I ran into a fun one with a Silicom X550-AT2 recently: a dual-port 10 GbE NIC based on Intel's X550 that's advertised as supporting 1G / 2.5G / 5G / 10G, but appeared to be non-updatable using Intel's official tools.

It turned out to be an OEM-branded Lenovo variant (device 1563) with custom subvendor IDs that the stock Intel NVM update config doesn't know about. With a bit of config editing and an older Lenovo update bundle, the card is now happily running current firmware and negotiating 2.5 GbE.

Environment and Prerequisites

  • Host OS: Linux (Ubuntu live ISO recommended)
  • Hardware: Silicom X550-AT2 (Lenovo-branded Intel X550-T2, device ID 1563)
  • Tools needed:
    • Lenovo NIC update bundle: intc-lnvgy_sw_nic_v24.1-sw-cd2_anyos_x86-64.zip
    • Intel Ethernet NVM Update Tool (from Intel's X550 firmware packages)

Tip: Use a live USB or secondary NIC. Don't update your only network connection.

Step 1: Identify the NIC and PCI IDs

lspci -nn | grep -i ether

Expected output:

37:00.0 Ethernet controller : Intel Corporation Ethernet Controller X550-T2 [8086:1563]
37:00.1 Ethernet controller : Intel Corporation Ethernet Controller X550-T2 [8086:1563]

Run Intel's inventory tool:

sudo ./nvmupdate64e -i

Key output showing the problem:

[00:037:00:00]: Intel(R) Ethernet Controller X550-T2
    Vendor                 : 8086
    Device                 : 1563
    Subvendor              : 1374
    Subdevice              : 0220
    NVM Version            : 3.112(3.70)
    NVM update             : No config file entry

Step 2: Download Lenovo Update Bundle

Get the older Lenovo package:

mkdir -p ~/x550-lenovo
# Download: intc-lnvgy_sw_nic_v24.1-sw-cd2_anyos_x86-64.zip
unzip intc-lnvgy_sw_nic_v24.1-sw-cd2_anyos_x86-64.zip -d ~/x550-lenovo
cd ~/x550-lenovo

Step 3: Edit nvmupdate.cfg

nano nvmupdate.cfg

Add/modify an entry matching your IDs:

[Device0]
VendorID = 0x8086
DeviceID = 0x1563
SubVendorID = 0x1374
SubDeviceID = 0x0220

Your exact values from inventory:

Vendor:     8086
Device:     1563
Subvendor:  1374
Subdevice:  0220

Step 4: Flash Lenovo Firmware

sudo ./nvmupdate64e

Let it apply the Lenovo firmware image. Reboot:

sudo reboot

Verify:

sudo ./nvmupdate64e -i

Step 5: Update to Latest Intel Firmware

Download Intel's latest X550 package and extract:

mkdir -p ~/x550-intel
unzip <intel-package>.zip -d ~/x550-intel
cd ~/x550-intel
sudo ./nvmupdate64e


Reboot again:

sudo reboot

Step 6: Verify Success

Final inventory shows clean detection:

NVM Version            : 3.112(3.70)
checksum               : Valid
PXE                    : 2.4.45, checksum Valid
EFI                    : 8.1.0

Check link speed:

sudo ethtool eno1

Supported link modes:  1000baseT/Full 2500baseT/Full 5000baseT/Full 10000baseT/Full
Speed: 2500Mb/s
Duplex: Full

Why This Works

OEM X550 cards use custom SubVendor/SubDevice IDs that Intel's generic config ignores. Lenovo's older bundle knows these OEM IDs.

The process:

  1. Lenovo updater → gets card to "standard" firmware state
  2. Intel updater → applies latest official firmware

Notes and Warnings

  • Backup access: Have console/IPMI or secondary NIC
  • Don't mix: Only use X550-T2 firmware images
  • IDs matter: Double-check your exact PCI values
  • Works for: Silicom X550-AT2, Lenovo 1563, similar OEM rebrands

Now your "non-updatable" X550 runs current firmware with full 2.5G/10G support. No more e-waste!

💬 Comments Setup Required

To enable comments on your blog:

  1. Create a public GitHub repository (or use an existing one)
  2. Enable GitHub Discussions in the repo settings
  3. Visit giscus.app to configure
  4. Add the generated values to your .env.local file:
NEXT_PUBLIC_GISCUS_REPO=username/repo
NEXT_PUBLIC_GISCUS_REPO_ID=your-repo-id
NEXT_PUBLIC_GISCUS_CATEGORY=General
NEXT_PUBLIC_GISCUS_CATEGORY_ID=your-category-id