人的发个哈哈 发表于 2025-3-24 18:06

如何在 Linux 上使用 ethtool 读取 LAN8670 设备状态?

在 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 的链路状态、速度、双工模式,配置自协商和其他参数,从而帮助你确保网络设备正常运行。

xuanhuanzi 发表于 2025-3-25 11:06

Linxu挺有意思,只用命令行操作

g36xcv 发表于 2025-3-27 16:44

使用 ifconfig 或 ip link show 命令查看系统中的网络接口名称,LAN8670 设备通常会被命名为 eth0、enp0s31f6 或其他接口名。可以选择其中一个接口来查询。

一切D都好 发表于 2025-4-17 14:20

在 Linux 上,ethtool 是一个强大的工具,用于查询和配置网络接口的参数。要使用 ethtool 读取 LAN8670 设备状态,需要知道 LAN8670 所连接的网络接口名称(如 eth0、enp3s0 等)。 可以通过ip link show或者用ifconfig -a来扫描

gongqijuns 发表于 2025-4-17 15:35

确保系统已安装 ethtool 工具。如果未安装,可以通过包管理器安装

ewyu 发表于 2025-4-17 17:09

假设 LAN8670 连接的网络接口名称为 eth0,可以使用sudo ethtool eth0命令读取其状态

pe66ak 发表于 2025-4-17 18:12

如果需要查看更详细的 PHY 寄存器信息,可以使用 -P 选项

hight1light 发表于 2025-4-17 19:20

有时需要确认驱动程序是否正确加载。可以利用ethtool -i eth0命令查看网络接口的驱动信息

suiziq 发表于 2025-4-17 22:05

如果需要直接读取 PHY 寄存器的值,可以使用 -e 选项(需要 root 权限)

nqty 发表于 2025-4-18 09:11

一般来说,如果 ethtool 输出显示链路未连接(Link detected: no),可以尝试检查网线连接是否正常。检查网络接口是否被禁用

wamed 发表于 2025-4-18 10:06

通过 ethtool,可以轻松读取 LAN8670 的设备状态,包括链路状态、速度、双工模式等信息。

gra22ce 发表于 2025-4-18 13:18

没在linux上读取lan8760的状态,正常来说,你可以用脚本读吧

清芯芯清 发表于 2025-4-18 15:13

一般是可以利用Ipconfig读取
页: [1]
查看完整版本: 如何在 Linux 上使用 ethtool 读取 LAN8670 设备状态?