在 Linux 上使用 ethtool 来读取 LAN8670 设备的状态非常简便,ethtool 是一个常用的网络工具,允许用户查询和更改网卡的设置。它支持查看链路状态、速度、双工模式以及一些与 MDIO(管理数据输入输出)相关的信息。下面是如何在 Linux 系统上使用 ethtool 来获取 LAN8670 的详细状态。
1. 安装 ethtool
在大多数现代 Linux 发行版中,ethtool 是默认安装的。如果未安装,可以通过包管理器安装:
在 Debian/Ubuntu 系统上:
bash
复制
编辑
sudo apt-get install ethtool
在 CentOS/RHEL 系统上:
bash
复制
编辑
sudo yum install ethtool
2. 使用 ethtool 读取 LAN8670 设备状态
首先,使用 ifconfig 或 ip link show 查看网络接口的名称。例如,假设接口名称为 eth0(根据你的系统,可能是 enp0s31f6 或其他名称)。
bash
复制
编辑
ifconfig
# 或者
ip link show
假设你的接口是 eth0,接下来使用 ethtool 查询该设备的状态。
2.1 查看链路状态
bash
复制
编辑
sudo ethtool eth0
输出示例:
yaml
复制
编辑
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 1000baseT/Full
100baseT/Full
10baseT/Full
Supports auto-negotiation: Yes
Supported pause frame use: Symmetric
Supports asymmetry pause: No
Current message level: 0x00000003 (3)
Link detected: yes
Link detected: yes:表示链路正常,设备已连接。
Supported link modes:列出了设备支持的速率和双工模式(例如,1000baseT/Full 表示支持千兆以太网全双工模式)。
Current message level:显示当前的日志级别。
Supported ports:显示支持的端口类型(例如,TP、MII)。
Auto-negotiation:显示是否支持自动协商。
2.2 查看设备速度和双工模式
bash
复制
编辑
sudo ethtool eth0 | grep -i speed
输出示例:
makefile
复制
编辑
Speed: 1000Mb/s
Duplex: Full
Speed:当前的网络速度(例如 1000Mb/s 表示 1 Gbps)。
Duplex:双工模式(Full 表示全双工,Half 表示半双工)。
2.3 检查自协商状态
自协商允许设备与对端设备协商合适的传输速率和双工模式。
bash
复制
编辑
sudo ethtool eth0 | grep -i "auto-negotiation"
输出示例:
vbnet
复制
编辑
Supports auto-negotiation: Yes
Auto-negotiation: on
Auto-negotiation: on:表示自动协商已启用。
Supports auto-negotiation: Yes:表示设备支持自动协商。
2.4 检查 MDIO 相关信息
ethtool 支持读取设备的一些 MDIO(管理数据输入输出)信息,包括 PHY 的状态、能力等。要查看 MDIO 相关信息,可以使用以下命令:
bash
复制
编辑
sudo ethtool -i eth0
输出示例:
makefile
复制
编辑
driver: lan8670
version: 1.0.0
firmware-version: 1.0.1
expansion-rom-version:
bus-info: mdio-0:00
driver:显示正在使用的驱动(例如 lan8670)。
bus-info:显示设备与 MDIO 总线 的信息(例如 mdio-0:00 表示 MDIO 总线上的第一个设备)。
查看 PHY 状态:
bash
复制
编辑
sudo ethtool -p eth0
该命令会触发设备的 PHY 指示灯闪烁(仅适用于支持该功能的硬件)。
2.5 查看以太网设备的所有支持模式
bash
复制
编辑
sudo ethtool eth0
输出示例:
yaml
复制
编辑
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 1000baseT/Full
100baseT/Full
10baseT/Full
Supports auto-negotiation: Yes
Supported pause frame use: Symmetric
Supports asymmetry pause: No
Current message level: 0x00000003 (3)
Link detected: yes
Supported link modes:显示设备支持的速率和双工模式。
Supports auto-negotiation:表示设备是否支持自动协商。
Supported pause frame use:表示设备是否支持暂停帧功能(通常用于流量控制)。
3. 使用 ethtool 设置 LAN8670 配置
除了查询设备信息,ethtool 还允许你修改某些配置项。
3.1 启用或禁用自协商
bash
复制
编辑
sudo ethtool -s eth0 autoneg on # 启用自协商
sudo ethtool -s eth0 autoneg off # 禁用自协商
3.2 设置速率和双工模式
bash
复制
编辑
sudo ethtool -s eth0 speed 100 duplex full
此命令将速率设置为 100 Mbps,双工模式设置为 全双工。
4. 使用 ethtool 验证和调试 MDIO 通信
在 LAN8670 的设备上,ethtool 也允许查看 MDIO 状态并与 PHY 进行通信。可以通过 mdio-tool 来直接查询 LAN8670 的 MDIO 寄存器。
例如:
bash
复制
编辑
mdio-tool read 0 0x01 # 读取设备 0 的基本状态寄存器(BMSR)
如果你已经设置了多 LAN8670 设备,可以使用 mdio-tool 读取或修改特定设备的 MDIO 寄存器。
5. 总结
常用 ethtool 命令:
查看设备信息:
bash
复制
编辑
sudo ethtool eth0
查看链路状态:
bash
复制
编辑
sudo ethtool eth0 | grep -i "link detected"
查看设备速度和双工模式:
bash
复制
编辑
sudo ethtool eth0 | grep -i speed
查看 MDIO 驱动信息:
bash
复制
编辑
sudo ethtool -i eth0
启用或禁用自协商:
bash
复制
编辑
sudo ethtool -s eth0 autoneg on
sudo ethtool -s eth0 autoneg off
设置速率和双工模式:
bash
复制
编辑
sudo ethtool -s eth0 speed 100 duplex full
ethtool 提供了丰富的功能,用于 LAN8670 设备的管理和调试。通过这些命令,你可以查看 LAN8670 的链路状态、速度、双工模式,配置自协商和其他参数,从而帮助你确保网络设备正常运行。
|