目前已经实现与Windows、Ubuntu系统的共享网络,都能上外网了,但是连接手机死活不行,手机的USB网络共享按钮一直是灰色的。
按照站内其他大佬的教程,在这两种方式下,板子的usb是作为从设备,内核配置开启configfs、CDC ECM,如果与Windows连接需要额外开启RNDIS,VID/PID为 0x0525/0xa4a2。
以下为进入系统后的两个配置脚本,分别配置RNDIS和IP网关
1、rndis_configfs.sh
#!/bin/sh
mount -t configfs none /sys/kernel/config &&
cd /sys/kernel/config/usb_gadget/ &&
mkdir gg &&
cd gg &&
echo "0x0525" > idVendor &&
echo "0xa4a2" > idProduct &&
mkdir functions/rndis.rn0 &&
mkdir configs/c1.1 &&
ln -s functions/rndis.rn0 configs/c1.1/ &&
echo "musb-hdrc.1.auto" > UDC2、network_setup.sh
#!/bin/sh
sleep 3
#配置usb gadget的ip地址
ifconfig usb0 192.168.137.2 netmask 255.255.255.0 up
# 设置windows为网关
ip route add default via 192.168.137.1 dev usb0
# 设置DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf#3、脚本执行结果
4、在Windows/Ubuntu开启网络共享,把能上网的接口共享给板子usb的接口
使用同样的方法连接手机,共享usb网络的按钮始终是灰色,也不知道问题在哪,期待大佬解答!
最近编辑记录 时髦飞行家 (2026-08-05 19:51:41)
离线
这个现象是 USB 主从角色反了。你现在通过 configfs 建的 RNDIS/ECM 是 gadget 模式,板子是 USB Device;Windows/Ubuntu 是 Host,所以这种接法能用。
手机开启“USB 网络共享”时,手机自身要作为 USB Device 向外提供 RNDIS/NCM 网卡,因此 F1C100S/200S 必须切到 USB Host。现在板子和手机都处于 Device 角色,手机检测不到 Host,所以共享按钮会一直是灰色。
建议:
不再执行 rndis_configfs.sh,设备树将 usb_otg 设置为 dr_mode = "host"(或者 OTG 模式下保证 ID 脚接地)。
内核打开 MUSB Host、USB networking,以及 CONFIG_USB_NET_RNDIS_HOST、CONFIG_USB_NET_CDCETHER、CONFIG_USB_NET_CDC_NCM。
使用 OTG Host 线,并确认板端给 VBUS 提供稳定 5V;必要时用带外部供电的 USB Hub。
插手机后先看 lsusb/dmesg,能枚举到手机后再打开手机 USB 网络共享。
共享开启后使用 udhcpc -i usb0 获取地址,不要写死 Windows ICS 的 192.168.137.2/192.168.137.1。
简单说:Windows 方案是“电脑 Host、板子 Device”;手机共享方案应是“板子 Host、手机 Device”,两套配置不能直接通用。
离线
@yixiuge2
非常感谢!没想到手机共享网络只能作为从设备,板子usb和rndis配置成主机模式就可以了
离线