Kernel: Linux 5.15.x
在i.MX8MP Linux 5.15.x上使能USB RNDIS(Remote Network Driver Interface Specification),通常需要以下几个步骤。
1. 内核配置
首先,需要确保Linux内核支持RNDIS。可以通过配置内核选项来启用RNDIS支持:
- 导航到以下选项并启用:
Device Drivers ---> USB support ---> USB Gadget Support ---> RNDIS support
- 如果使用的是特定的 USB 控制器,还需要启用对应的 USB Gadget 驱动,例如:
Device Drivers ---> USB support ---> USB Gadget Support ---> USB Gadget Drivers ---> Ethernet Gadget (with CDC Ethernet support) RNDIS gadget (EXPERIMENTAL)
2. 配置USB Gadget
在启用了内核支持后,可以通过配置USB Gadget以使能RNDIS功能。
- 创建USB Gadget配置:
mkdir /sys/kernel/config/usb_gadget/g1
cd /sys/kernel/config/usb_gadget/g1
- 设置 USB Vendor ID 和 Product ID:
echo 0x1d6b > idVendor # Linux Foundation
echo 0x0104 > idProduct # Multifunction Composite Gadget
- 配置字符串描述符:
mkdir strings/0x409
echo "0123456789" > strings/0x409/serialnumber
echo "YourManufacturer" > strings/0x409/manufacturer
echo "RNDIS Gadget" > strings/0x409/product
- 配置RNDIS 功能:
mkdir functions/rndis.usb0
- 创建配置并将 RNDIS 添加到配置中:
mkdir configs/c.1
echo 250 > configs/c.1/MaxPower
ln -s functions/rndis.usb0 configs/c.1/
- 启用USB Gadget:
echo > UDC
Note:其中是设备控制器的名称,可以通过查看/sys/class/udc/来找到可用的UDC。
# ls /sys/class/udc/
# 38100000.usb
# echo 38100000.usb > UDC
3. 网络接口配置
启动RNDIS后,系统会生成一个新的网络接口(通常为 usb0 或 rndis0)。可以使用以下命令来配置网络接口:
ifconfig usb0 192.168.0.2 up
udhcpd -Sf /etc/udhcpd.conf &
4. 连接主机设备
将ARM设备通过USB连接到主机设备(如 PC)。主机设备应该识别出一个新的RNDIS网络接口。主机上可以配置对应的IP地址,并通过该网络接口进行通信。