ethtool -d 可读取 phy 寄存器快照,需 root 权限及驱动支持 mdio;先用 ethtool eth0 检查 phyad 字段确认支持性,再解析 0x00~0x04 等关键寄存器含义并结合 dmesg、ethtool -s 交叉验证。

Linux 中用 ethtool 查看网卡硬件寄存器状态,核心是使用 -d 选项读取 PHY 寄存器快照。这属于底层调试操作,需 root 权限,且结果依赖网卡驱动是否支持 MDIO 访问。
确认网卡是否支持寄存器读取
不是所有网卡都支持 ethtool -d。执行前先验证:
- 运行
ethtool eth0(替换为你的接口名),检查输出中是否有PHYAD字段(如PHYAD: 1),有则大概率支持; - 若报错
No such device或Operation not supported,说明驱动未实现寄存器访问接口,常见于部分虚拟网卡(veth、macvlan)或老旧/精简驱动; - Realtek 等部分芯片可能返回乱码,属驱动限制,非操作错误。
读取 PHY 寄存器快照
以 root 身份运行:
sudo ethtool -d eth0
输出是一组十六进制寄存器值,按地址顺序排列(如 0x00: 0xXXXX)。关键寄存器含义:
-
0x00 (BMCR):基本控制寄存器 —— 关注 bit15(软复位)、bit12(自协商使能)、bit8(全双工)、bit9(重启协商); -
0x01 (BMSR):基本状态寄存器 —— bit2 表示 Link status(1=链路通),bit5 表示自协商完成; -
0x04 (ANAR):本端通告能力 —— 查看它实际向对端声明了哪些速率和双工模式; -
0x02/0x03:PHY ID 寄存器 —— 用于确认真实 PHY 厂商型号,比对数据手册。
结合其他命令交叉验证
寄存器值需结合上下文解读,不能孤立判断:
- 若
BMSR bit2 = 0(Link down)但物理灯亮,可能是 PHY 供电异常或固件卡死; - 运行
sudo dmesg | grep -i eth0查看内核是否报link down或PHY reset failed; - 用
ethtool -S eth0查统计计数器(如rx_missed_errors),比寄存器更易定位丢包类问题; - 若怀疑协商僵死,可尝试
sudo ethtool -r eth0软复位 PHY(会短暂断连,慎用于生产环境)。
注意事项
直接读寄存器是硬件级操作,务必注意:
- 不同芯片寄存器布局差异大,无对应数据手册不建议自行修改字段;
-
-d仅读取,不写入,相对安全;但-r(复位)或-s(设参数)可能引发瞬时中断; - 云服务器通常屏蔽 PHY 访问,该操作主要适用于物理机、嵌入式设备或可控的本地网络环境。











