Ubuntu 유선 이더넷은 감지할 수 있지만 다른 장치에 연결할 수 없으며 RX 데이터 전송은 항상 0입니다.

Ubuntu 유선 이더넷은 감지할 수 있지만 다른 장치에 연결할 수 없으며 RX 데이터 전송은 항상 0입니다.

플랫폼

  • CPU: RK3288 ARMv7 임베디드 프로세서
  • 메모리: 2GB
  • 네트워크 카드: 온보드 RTL8211E 칩
  • 운영 체제: 우분투 14.04.1 LTS
root@9tripod:~# uname -a
Linux 9tripod 3.10.0 #26 SMP PREEMPT Sat Mar 4 17:06:44 CST 2017 armv7l armv7l armv7l GNU/Linux
root@9tripod:~# cat /etc/issue
Ubuntu 14.04.1 LTS \n \l

징후

시스템 이미지가 새로 고쳐지고 시작된 후 PC와 개발 보드 사이에 네트워크 케이블을 연결합니다. 그런 다음 다음 명령을 사용하여 PC 및 개발 보드에 고정 IP 주소를 설정합니다 ifconfig.

ifconfig eth0 192.168.1.XXX netmask 255.255.255.0

ping그런 다음 컴퓨터를 사용해 보았 으나 액세스할 수 없었습니다.

root@9tripod:~# ping 192.168.1.107
PING 192.168.1.107 (192.168.1.107) 56(84) bytes of data.
From 192.168.1.233 icmp_seq=1 Destination Host Unreachable
From 192.168.1.233 icmp_seq=2 Destination Host Unreachable
From 192.168.1.233 icmp_seq=3 Destination Host Unreachable
From 192.168.1.233 icmp_seq=4 Destination Host Unreachable
From 192.168.1.233 icmp_seq=5 Destination Host Unreachable
From 192.168.1.233 icmp_seq=6 Destination Host Unreachable
^C
--- 192.168.1.107 ping statistics ---
7 packets transmitted, 0 received, +6 errors, 100% packet loss, time 6005ms
pipe 3

몇 번 시도한 끝에 보드의 RJ45 커넥터에 있는 녹색 LED가 깜박이고 노란색 LED는 꺼져 있는 것을 발견했습니다. 그러나 네트워크 케이블이 분리되면 두 LED 모두 계속 켜집니다. 그런 다음 ifconfig명령을 입력하여 RX 패킷이 전송되지 않았음을 확인했습니다.

root@9tripod:~# ifconfig
eth0      Link encap:Ethernet  HWaddr ee:e3:d4:01:f6:6f
          inet6 addr: fe80::ece3:d4ff:fe01:f66f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2133 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:524034 (524.0 KB)
          Interrupt:59
...

PC를 사용하여 역핑(Ping)하면 "Target Host unreachable"이라고 표시되고 보드는 패킷을 수신하지 않습니다. 시스템을 다시 시작하고 다른 케이블을 변경하고 스위치를 사용하고 심지어 RJ45 커넥터를 새 커넥터로 변경해 보았지만 아무 소용이 없었습니다. 그런데 ping 테스트를 해보니 wlan0이 다운되어 있어서 라우팅 테이블에는 문제가 없을 것 같습니다.

진단 정보

  1. 사용 ifconfig: 증상 섹션을 참조하세요.
  2. 사용 ip link show:
root@9tripod:~# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether ee:e3:d4:01:f6:6f brd ff:ff:ff:ff:ff:ff
3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default
    link/sit 0.0.0.0 brd 0.0.0.0
4: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DORMANT group default qlen 1000
    link/ether 00:90:4c:11:22:33 brd ff:ff:ff:ff:ff:ff
  1. 내용은 다음과 같습니다 /etc/network/interfaces.
root@9tripod:~# cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0
#iface eth0 inet dhcp
  1. 네트워크 관리자 사용:
root@9tripod:~# nmcli device status
DEVICE     TYPE              STATE
eth0       802-3-ethernet    disconnected
wlan0      802-11-wireless   connected
root@9tripod:~# nm-tool

NetworkManager Tool

State: connected (global)

- Device: eth0 -----------------------------------------------------------------
  Type:              Wired
  Driver:            stmmaceth
  State:             disconnected
  Default:           no
  HW Address:        EE:E3:D4:01:F6:6F

  Capabilities:
    Carrier Detect:  yes
    Speed:           1000 Mb/s

  Wired Properties
    Carrier:         on
...
  1. 사용 mii-tool:
root@9tripod:~# mii-tool
eth0: negotiated 1000baseT-FD flow-control, link ok
  1. 사용 ethtool:
root@9tripod:~# ethtool eth0
Settings for eth0:
        Supported ports: [ TP AUI BNC MII FIBRE ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 1
        Transceiver: external
        Auto-negotiation: on
        Supports Wake-on: ug
        Wake-on: d
        Current message level: 0x0000003f (63)
                               drv probe link timer ifdown ifup
        Link detected: yes
  1. 사용 dmesg:
root@9tripod:~# dmesg |grep -i eth0
[   17.685231] eth0: device MAC address ee:e3:d4:01:f6:6f
[   17.693782] eth0: PHY ID 001cc915 at 0 IRQ 0 (stmmac-0:00) active
[   17.693788] eth0: PHY ID 001cc915 at 1 IRQ 0 (stmmac-0:01) active

질문

이제 시스템이 eth0을 감지하여 오류 없이 위의 작업을 수행할 수 있고, IP ​​주소가 정적으로 올바르게 설정되었는데, 보드가 eth0을 통해 다른 장치에 액세스할 수 없는 이유는 무엇일까요?

내 생각엔 네트워크 카드 칩에 문제가 있는 것 같은데, 리눅스에서는 오류 없이 동작하는 게 이상하다. 칩이 전반적으로 잘 작동하는데 일부 기능(예: 데이터 수신)이 손상될 가능성이 있나요?

추가 진단 정보가 필요한 경우 댓글을 남겨주세요. 어떤 조언이라도 감사하겠습니다.

관련 정보