目录
[USB Subsystem内核配置](#USB Subsystem内核配置)
[USB Phy内核配置](#USB Phy内核配置)
[USB Host Core驱动内核配置](#USB Host Core驱动内核配置)
[USB EHCI驱动内核配置](#USB EHCI驱动内核配置)
[芯片平台USB Host Controller驱动内核配置](#芯片平台USB Host Controller驱动内核配置)
前言
嵌入式Linux下,USB转网口适配器的主要作用就是让没有网口的设备通过USB接口实现有线网络连接,特别适合嵌入式开发或设备联网需求。它通过USB接口扩展出RJ45网口,让设备能稳定接入有线网络,比Wi-Fi更可靠、延迟更低,适合对网络稳定性要求高的场景,比如工业控制、数据采集或远程调试。
在嵌入式Linux中,它通常需要内核支持USB网络功能,并加载相应驱动(如ASIX AX88772B或RTL8153等芯片的驱动)。 使用时插上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专用驱动为例,以实际硬件为准)
验证测试的参考
- 烧录固件后,主控端接入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
- 通过命令行输入`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)
- 打开主控端的eth0网卡,例如:
bash
# ifconfig eth0 up
- 查看`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)
- 配置主控端的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)
- 通过网线连接PC端的USB转以太网适配器并把PC端的IP配置成192.168.2.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更可靠,延迟更低,还省成本,特别适合工业控制、远程调试这些对网络要求高的场景。