最准最快的方法是执行ethtool -i 网卡名,输出中firmware-version字段即固件版本号;需先用ip -br a确认物理网卡名(如ens33),且必须加-i参数,不加或用--driver均无效。

用 ethtool -i 直接查网卡固件版本
想立刻确认当前物理网卡正在运行的固件版本,最准最快的方法就是执行 ethtool -i 命令,它会一次性输出 driver、version、firmware-version 和 bus-info 四项关键信息,其中 firmware-version 字段就是你要找的固件版本号。
先用 ip -br a 或 ls /sys/class/net/ 列出所有网络接口,排除 lo、veth*、docker0、wg* 等非物理网卡,挑出形如 ens33、eno1、enp0s3 或 eth0 的真实接口名。
执行命令:ethtool -i ens33(把 ens33 换成你查到的网卡名)。
输出中找到 firmware-version: 这一行,后面的内容就是固件版本,常见格式有 1.56、0x80000acf、14.5.8 —— 第一个数字是主版本号,升级前务必核对厂商推荐值(比如 Intel 官方文档明确要求 X710 卡固件 ≥6.80)。
注意:ethtool ens33(不加 -i)完全不显示固件信息,只返回链路状态;--driver 参数会被忽略,无效。
当 ethtool 不可用或驱动未加载时的备用方法
如果系统没装 ethtool,或者网卡驱动根本没加载成功,就无法靠 ethtool -i 获取固件版本。这时可以尝试从内核设备路径直接读取原始固件标识。
执行:cat /sys/class/net/ens33/device/firmware_rev 2>/dev/null(把 ens33 替换为你的网卡名)。
这条命令会尝试读取 PCI 设备节点下的 firmware_rev 文件,部分 Intel、Broadcom 网卡支持该接口,输出格式与 ethtool -i 中的 firmware-version 一致。
若提示 No such file or directory,说明该网卡不暴露此 sysfs 接口,跳过这步即可,不用硬试其他路径。
再试一次更底层的定位:先用 lspci -vvv -s $(basename $(readlink /sys/class/net/ens33/device)) 2>/dev/null | grep -i firmware,它会通过 PCI 总线地址反查详细设备描述,部分型号会在 Capabilities 或 Expansion ROM 区域带出固件字符串。
结合 dmesg 验证固件加载是否成功
光看到固件版本数字还不够,得确认内核在启动时是否真正把它载入并识别了。很多“固件缺失”问题不会报错,但会导致链路异常或自检失败。
运行:dmesg | grep -i "ens33\|firmware\|phy\|eeprom"(把 ens33 换成你的网卡名)。
重点查找这些关键词:
• firmware: failed to load → 固件文件根本不存在于 /lib/firmware/ 目录下
• PHY reset failed 或 ignoring PHY interrupt → 固件已加载但功能异常,常见于 Realtek + r8169 组合
• eeprom read failed → 固件可能损坏或版本不匹配,导致 MAC 地址读取失败
如果出现上述任一提示,即使 ethtool -i 显示了 firmware-version,也不能认为固件正常生效。


















