我有一个定制的嵌入式 Linux 板,带有通过 USB 连接的 lan7500i-ABZJ。
因此,我编译了带有内置 smsc75xx 模块的 linux 内核(使用 buildroot)。启动内核消息确实显示:
[ 5.315124] usb 1-1: New USB device found, idVendor=0424, idProduct=7500, bcdDevice= 2.00
[ 5.324072] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 5.340746] smsc75xx v1.0.0
[ 5.539195] smsc75xx 1-1:1.0 eth1: register 'smsc75xx' at usb-ci_hdrc.0-1, smsc75xx USB 2.0 Gigabit Ethernet, 8e:64:f6:eb:5e:65
现在我添加一个IP地址:
ifconfig eth1 192.168.1.44 netmask 255.255.255.0 up
但是一旦我尝试 ping 本地网络上的地址,所有数据包都会丢失:
# ping 192.168.1.40
PING 192.168.1.40 (192.168.1.40): 56 data bytes
^C
--- 192.168.1.40 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
# arp
? (192.168.1.40) at <incomplete> on eth1
并且没有包通过接口传输:
eth1 Link encap:Ethernet HWaddr 8E:64:F6:EB:5E:65
inet addr:192.168.1.44 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
没有其他网络接口处于活动状态。可以 ping 到 localhost,因此我认为 TCP/IP 级别上一切正常。为什么我无法使用以太网接口?
答案1
ifconfig
(或者这里可能busybox ifconfig
)除了管理上处于 UP 状态并且已检测到运营商(即:远程 NIC、交换机等)的 NICRUNNING
之外还会显示 。UP
缺少RUNNING
意味着 NIC 未连接或无法设置为正确检测线路另一侧的 NIC。
ip link
(或busybox ip link
),在 Linux 上应始终优先(与ip address
)一起使用,在这种情况下ifconfig
会显示明确无误的标志。NO-CARRIER
所以你必须检查为什么没有运营商。通常该ethtool
命令在这里会派上用场,以查看自动协商是否失败,或者不得使用等。如果尚不存在,则应将其添加到构建中。