USB에서 이더넷으로: 패킷을 전송할 수 없습니다.

USB에서 이더넷으로: 패킷을 전송할 수 없습니다.

USB를 통해 연결된 lan7500i-ABZJ가 있는 맞춤형 임베디드 Linux 보드가 있습니다.

따라서 내장된 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)

다른 네트워크 인터페이스는 활성화되어 있지 않습니다. localhost에 ping을 실행할 수 있으므로 TCP/IP 수준에서는 모든 것이 정상이라고 가정합니다. 이더넷 인터페이스를 사용할 수 없는 이유는 무엇입니까?

답변1

ifconfig(또는 여기에 있을 수도 있음 ) busybox ifconfig은 관리상 UP 상태이고 캐리어(예: 원격 NIC, 스위치 등)를 감지한 NIC 외에 RUNNING표시됩니다 . UP누락은 RUNNINGNIC가 연결되지 않았거나 회선 반대편의 NIC를 올바르게 감지하도록 설정할 수 없음을 의미합니다.

ip link(또는 busybox ip link), Linux에서는 항상 ip address(with)보다 우선적으로 사용되어야 하며, 이 경우 ifconfig틀림없는 플래그가 표시됩니다.NO-CARRIER

그럼 왜 연산자가 없는지 확인해야 합니다. 일반적으로 이 ethtool명령은 자동 협상이 실패했는지 또는 사용이 허용되지 않는지 등을 확인하는 데 유용합니다. 아직 존재하지 않는 경우 빌드에 추가해야 합니다.

관련 정보