ethtool -i 能直接看到 firmware-version 字段,是查看网卡物理固件(PHY/MAC)版本最直接可靠的方式;该字段首值(如6.80、14.5.8)即主固件版本号,为空或N/A通常因驱动不支持、缺固件文件或设备虚拟所致。

ethtool -i 能直接看到 firmware-version 字段
Linux 下查网卡物理固件(PHY / MAC 固件)版本,ethtool -i 是最直接、最可靠的方式。它不依赖内核日志或硬件扫描,输出字段明确,且在单用户模式下也能运行。
先确认物理网卡名,排除 lo、veth*、docker0 等虚拟接口:
- 用
ip -br a或ls /sys/class/net/列出所有接口 - 常见物理名:
ens33、eno1、enp0s3、eth0(老系统)
执行命令:
sudo ethtool -i ens33
重点看这行:
firmware-version: 6.80 0x80003cfb 1.2007.0
其中第一个字段(如 6.80)就是主固件版本号,Intel 官方推荐 ≥6.80;Realtek 常见有效值为 14.5.8 或 0x80000acf 类格式。注意:这不是 BIOS/UEFI 固件,而是网卡芯片自身的固件。
firmware-version 为空或显示 N/A 怎么办
出现 firmware-version: 后面为空、N/A 或 0.0,通常不是命令没跑对,而是以下几种情况:
- 驱动不支持读取固件(如某些
r8169版本对 RTL8111 的固件访问被禁用) - 固件未加载成功,dmesg 中可能出现
firmware missing或failed to load firmware - 网卡是虚拟设备(如
vmxnet3、veth),物理固件不存在,ethtool -i不报错但字段留空 - PCIe 设备未完成初始化(比如 BIOS 关闭了 ASPM,dmesg 有
PCIe Bus Error),导致固件无法枚举
此时应补查:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
dmesg | grep -i "ens33\|firmware\|phy"
若看到 request_firmware failed,说明缺固件文件,需从厂商官网下载对应 .bin 文件放进 /lib/firmware/ 并重启模块。
别把 BIOS 固件和网卡固件搞混
firmware-version 来自 ethtool -i,只反映网卡芯片(MAC/PHY)的固件;而 dmidecode -t bios 或 cat /sys/class/dmi/id/bios_version 查的是主板 BIOS/UEFI 固件——两者完全独立,升级一个不解决另一个的问题。
典型混淆场景:
- 服务器频繁硬重启,有人查 BIOS 版本发现很旧,却忽略
ethtool -i显示网卡固件是1.56(Intel 推荐 ≥6.80) - Realtek 网卡 link 反复 down/up,
dmesg报PHY reset failed,但 BIOS 版本最新——问题在网卡固件,不是主板
判断依据很简单:只要 ethtool -i 输出里有 firmware-version 字段,它就属于网卡本身;其他任何路径下的固件信息都不相关。
某些网卡需要额外固件包才能显示完整版本
部分厂商(尤其是 Intel 和 Broadcom)把固件拆成独立二进制文件,不在内核源码中自带。如果 ethtool -i 显示 firmware-version: 为空,但 driver 字段正常(如 i40e、ixgbe),大概率是缺固件包:
- Debian/Ubuntu:
sudo apt install firmware-intel-sound firmware-misc-nonfree(后者含多数 Intel 网卡固件) - RHEL/CentOS:
sudo dnf install linux-firmware - Arch Linux:
sudo pacman -S linux-firmware
装完后 reload 驱动:
sudo modprobe -r i40e && sudo modprobe i40e
再跑 ethtool -i,firmware-version 通常就能正常显示。注意:不是所有发行版默认启用非自由固件,这点容易被忽略。

















