AIC8800 虚拟网卡模式配置与 AP 热点设置
AIC8800 虚拟网卡模式配置与 AP 热点设置

文档:docs/UserGuide/Fhostif-UserGuide.pdf
MCU编译脚本:config/aic8800mc/target_wifi_fhostif/build_fhostif_wifi_case.sh
Linux驱动(需要编译):wifi/LinuxDriver/aic8800_netdrv
- 安装驱动:
sudo insmod aic8800_netdrv.ko
. - 卸载驱动:
sudo rmmod aic8800_netdrv
.
🟢 以上列出的文件路径都是 AIC8800 官方 SDK 中的相对路径。
AP热点模式
编译代码
1、编译选项中添加 SOFTAP=on
后可在 Linux 上使用 custom_msg 开启 AP 模式。

建议同时修改 DHCP 的 DNS 地址,参见下文:修改AP热点默认分配的DNS地址。
2、编译代码
cd /home/ubuntults/aic8800-sdk/config/aic8800mc/target_wifi_fhostif && bash ./build_tgt.sh && cd -
3、代码编译完成后下载到 MCU
设置AP模式
将开发板用数据线连接 PC
1、安装驱动:sudo insmod aic8800_netdrv.ko
(可能需要先编译驱动)。
2、使用 custom_msg 开启 AP:custom_msg vnet0 8 aic8800 11111111 2.4G
(可能需要先编译 custom_msg
这个应用)。

开启成功后 MCU 的控制台会返回它的 IP 地址:

3、将 PC 中 vnet0 的 IP 设置为 MCU 的 IP:sudo ifconfig vnet0 192.168.88.1
4、使用第三个设备(如手机)连接 MCU 的 AP 热点
Linux-[vnet0] ======== AIC8800MC ======== 手机
此时 Linux 不能 ping 通手机
5、使用 custom_msg vnet0 9
切换 AP 的模式为 AIC_MODE_AP_DIRECT

此时 Linux 可以 ping 通手机。
先开启 AIC_MODE_AP_DIRECT 模式则手机无法连接 MCU 的热点,原因尚未深究。
修改AP热点默认分配的DNS地址
默认是分配MCU的IP地址为DNS,无法正常联网。

共享 Linux 的网络
1、网络情况
[ens33] 连接外网
192.168.147.129
/ / 手机1
Linux- / 192.168.88.10
\ /
[vnet0] ====usb==== AIC8800MC ----wifi--—— 手机2
192.168.88.1 \ 192.168.88.20
\
\ 其他设备……

2、目的:让 vnet0 连接的设备通过 ens33 连接互联网。
3、实现方法
首先保证网卡 vnet0 及其连接的其他设备的 IP 均在同一网段(只关心Linux上 vnet0 的配置即可,其他连接该 MCU 的设备由 DHCP 分配)。
在 Linux 上执行以下"修改配置"的操作(建议在执行这些操作前拍虚拟机快照):
# 开始之前先备份要修改的配置
sudo iptables-save > ~/backup/iptables_backup.txt
sudo cp /proc/sys/net/ipv4/ip_forward ~/backup/ip_forward_backup.txt
# 修改配置 (这些配置修改后立即生效)
sudo iptables -F
sudo iptables -A FORWARD -o ens33 -i vnet0 -s 192.168.88.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
# 这里只是将配置保存到"iptables.sav"文件,若实现开机自动加载需额外操作。
# sudo iptables-save | sudo tee /etc/iptables.sav
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 还原配置 (这些配置还原后立即生效)
# 一般情况下系统重启后iptables会恢复默认配置
sudo iptables -F
sudo iptables-restore < ~/backup/iptables_backup.txt
sudo cp ~/backup/ip_forward_backup.txt /proc/sys/net/ipv4/ip_forward
# 直接执行`iptables-save`可以显示出当前启用的所有规则
参考: