Linux USB HOST EXTERNAL USB TO ETH ADAPTER

目录

目录

前言

DTS配置的参考

内核配置的参考

[USB Subsystem内核配置](#USB Subsystem内核配置)

[USB Phy内核配置](#USB Phy内核配置)

[USB Host Core驱动内核配置](#USB Host Core驱动内核配置)

[USB EHCI驱动内核配置](#USB EHCI驱动内核配置)

[芯片平台USB Host Controller驱动内核配置](#芯片平台USB Host Controller驱动内核配置)

网络设备驱动内核配置

USB网络适配器驱动内核配置

使用多用途USB网络框架内核配置

USB转以太网适配器的驱动

验证测试的参考

总结


前言

嵌入式Linux下,USB转网口适配器的主要作用就是‌让没有网口的设备通过USB接口实现有线网络连接‌,特别适合嵌入式开发或设备联网需求。它通过USB接口扩展出RJ45网口,让设备能稳定接入有线网络,比Wi-Fi更可靠、延迟更低,适合对网络稳定性要求高的场景,比如工业控制、数据采集或远程调试。

在嵌入式Linux中,它通常需要内核支持USB网络功能,并加载相应驱动(如ASIX AX88772BRTL8153等芯片的驱动)。 使用时插上USB网卡,系统会自动识别并创建网络接口(如eth0),然后配置IP地址就能正常通信了。

具体来说,它常用于:

  • 工业控制‌:连接PLC、传感器等设备,实现数据采集和远程监控。
  • 远程调试‌:工程师通过USB网口远程访问设备,进行故障排查和系统维护。
  • 物联网设备‌:为没有网口的设备(如传感器、边缘计算节点)提供有线网络连接。

简单来说,它就是个低成本、即插即用的网络扩展方案,特别适合嵌入式设备联网。


DTS配置的参考

bash 复制代码
/* usb20 host controller */
   usb_1: usb1@YYYYYYYY {
        compatible = "xxx,xxx-usb";
        reg = <0xYYYYYYYY 0xYYY>;
        interrupts = <GIC_SPI INT_USB20_HOST IRQ_TYPE_LEVEL_HIGH>;

        clocks = <&ahbX_gate 9>, <&ahbX_reset 9>;
        clock-names = "usb_gate", "usb_reset";

        xxx,usbphy = <&usbphy_1>;

        dr_mode = "host"; /* 配置成了USB host模式 */
   ...

内核配置的参考

USB Subsystem内核配置

bash 复制代码
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y

USB Phy内核配置

bash 复制代码
CONFIG_USB_PHY=y
CONFIG_USB_NX_PHY=y

USB Host Core驱动内核配置

bash 复制代码
CONFIG_USB_COMMON=y
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_DEFAULT_PERSIST=y

USB EHCI驱动内核配置

bash 复制代码
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_EHCI_HCD_PLATFORM=y

芯片平台USB Host Controller驱动内核配置

bash 复制代码
CONFIG_USB_XXX=y
CONFIG_USB_XXX_HOST=y
CONFIG_USB_XXX_DEBUG=y

网络设备驱动内核配置

bash 复制代码
CONFIG_NETDEVICES=y

USB网络适配器驱动内核配置

bash 复制代码
CONFIG_USB_NET_DRIVERS=y

使用多用途USB网络框架内核配置

bash 复制代码
CONFIG_USB_USBNET=y

USB转以太网适配器的驱动

bash 复制代码
CONFIG_USB_NET_AX8817X=y
CONFIG_USB_NET_AX88179_178A=y (这里以亚信的AX88179_178A专用驱动为例,以实际硬件为准)

验证测试的参考

  1. 烧录固件后,主控端接入USB转USB转以太网适配器,正常开机,命令行终端可以输入:dmesg | grep "usb",探测到该USB转以太网适配器的打印如下:
bash 复制代码
# dmesg | grep "usb"
  usb 1-1.1: new high-speed USB device number 3 using lb_hdc
  usb 1-1.1: New USB device found, idVendor=0b95, idProduct=1790, bcdDevice= 2.00
  usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
  usb 1-1.1: Product: AX88179A
  usb 1-1.1: Manufacturer: ASIX
  usb 1-1.1: SerialNumber: 00AF2406
  ax88179_178a 1-1.1:1.0 eth0: register 'ax88179_178a' at usb-xxx_hdc.1-1.1, ASIX AX88179 USB 3.0 Gigabit Ethernet, f8:e4:3b:af:24:06
  1. 通过命令行输入`ifconfig -a`可以查看`eth0`网卡对应的信息,则说明USB转以太网适配器驱动已经加载成功,例如:
bash 复制代码
# ifconfig -a
  eth0 Link encap:Ethernet  HWaddr F8:E4:3B:AF:24:06
  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)
  1. 打开主控端的eth0网卡,例如:
bash 复制代码
# ifconfig eth0 up
  1. 查看`eth0`网卡是否已经被打开,其中若显示有`UP`则代表`eth0`网卡已经被打开,例如:
bash 复制代码
# ifconfig eth0
  eth0 Link encap:Ethernet  HWaddr F8:E4:3B:AF:24:06
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  RX packets:120 errors:63 dropped:18 overruns:0 frame:63
  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:8520 (8.3 KiB)  TX bytes:0 (0.0 B)
  1. 配置主控端的IP地址和NETMASK地址,注意需要保证主控端与PC端处于同一网段,例如:
bash 复制代码
# ifconfig eth0 192.168.2.2 netmask 255.255.255.0

# ifconfig eth0
  eth0 Link encap:Ethernet  HWaddr F8:E4:3B:AF:24:06
  inet addr:192.168.2.2  Bcast:192.168.2.255  Mask:255.255.255.0
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  RX packets:18653 errors:13707 dropped:1536 overruns:0 frame:13699
  TX packets:36180 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:857039 (836.9 KiB)  TX bytes:50695860 (48.3 MiB)
  1. 通过网线连接PC端的USB转以太网适配器并把PC端的IP配置成192.168.2.1,例如:
  1. PC端和主控端进行简单连通性测试。例如:
bash 复制代码
# ping 192.168.2.1 -I eth0 -c 5
  PING 192.168.2.1 (192.168.2.1): 56 data bytes
  64 bytes from 192.168.2.1: seq=0 ttl=128 time=1.860 ms
  64 bytes from 192.168.2.1: seq=1 ttl=128 time=1.009 ms
  64 bytes from 192.168.2.1: seq=2 ttl=128 time=0.976 ms
  64 bytes from 192.168.2.1: seq=3 ttl=128 time=0.946 ms
  64 bytes from 192.168.2.1: seq=4 ttl=128 time=0.940 ms
  --- 192.168.2.1 ping statistics ---
  5 packets transmitted, 5 packets received, 0% packet loss
  round-trip min/avg/max = 0.940/1.146/1.860 ms

总结

嵌入式Linux下外接USB转网口适配器,核心优势就三个字:‌稳、快、省‌。它让没网口的设备也能用有线网络,比Wi-Fi更可靠,延迟更低,还省成本,特别适合工业控制、远程调试这些对网络要求高的场景。


相关推荐
GHL2842710902 小时前
redis编译调试(linux)
linux·数据库·redis
黑猫学长呀2 小时前
【嵌入式系统科普】第2篇:什么是uboot/kernel/根文件系统/BootLoader/操作系统/bios/设备树
linux·arm开发·单片机·嵌入式硬件·arm
优选资源分享2 小时前
AnyDesk 便携版 v9.6.7.0:高效远程控制工具
网络
文弱书生6562 小时前
7-Robot类大体框架
linux·单片机·嵌入式硬件
jerryinwuhan2 小时前
linux_shell_1226_1
linux
羽飞2 小时前
GCC ABI炸弹
linux·c++·python
nnsix2 小时前
Http - POST请求
网络·网络协议·http
代码游侠2 小时前
应用——HTTP天气查询
网络·笔记·网络协议·算法·http
程序猿编码2 小时前
手动清理 TCP TIME-WAIT 套接字:Linux 内核模块的实现与原理
linux·网络·tcp/ip·linux内核·套接字