|
【应用开发】
开发板模拟 USB 网卡
发表于 2019-8-29 15:00:24
浏览:6805
|
回复:0
打印
只看该作者
[复制链接]
楼主
本帖最后由 Negro旋 于 2019-9-26 09:16 编辑
本文主要讲述的是用开发板模拟成USB网卡,通过流量转发实现PC机上网。
第一步:内核配置
进入内核配置菜单选项中,选择以下选项:
1. Device Drivers -> USB Support -> USB Gadget Support,然后在 USB Gadget Driver 选项中选择到 Ethernet Gadget (with CDC Ethernet support)。
2. 选择到 RNDIS support 选项。
```
...
<*> USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support)) --->
Ethernet Gadget (with CDC Ethernet support) RNDIS support (NEW)
...
```
然后编译内核,并将内核烧录到开发板中。
第二步:IP 地址设置
在开发板上:
1. 网线连接开发板,使开发板可以上网。对应的网卡是eth0, IP 地址是 168.168.100.48。
2. ifconfig -a 可以查看到 usb0 网卡,这个是模拟出来的网卡。设置它的 IP 地址: ifconfig usb0 192.168.1.100。
(注意 eth0 和 usb0 的网段不可以相同)
在 PC 机上:
1. 用数据线连接开发板的 OTG 接口和 电脑的 USB 接口,然后执行 lsusb 可以看到 USB 网卡设备:Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
2. 设置 USB 网卡 IP 地址,网段和开发板 usb0 的要一致,这里设置为 192.168.1.101。
3. 设置开发板的 usb0 为默认网关:sudo route add default gw 192.168.1.100。
第三步:开发板设置转发规则
在开发板上:
1. 允许 IP 转发: echo 1 > /proc/sys/net/ipv4/ip_forward
2. 添加转发规则: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 168.168.100.48
此时 PC 机就可以通过开发板模拟的 USB 网卡上网了。(如果 PC 机可以 ping 通开发板的 usb0 和 eth0 却无法上网,请将 PC 机上 USB 网卡的 DNS 设置为开发板 eth0 的 DNS 一致或者设置为 8.8.8.8或其他可用的 DNS)
更多的 Ubuntu 应用教程,可以参考 Firefly-RK3399 的 wiki。
http://wiki.t-firefly.com/zh_CN/ ... buntu_support.html# |
|