WIFI sta和ap桥接
1. 配置修改¶
内核配置:
make menuconfig 1: Networking support -> Wireless: <*> cfg80211 - wireless configuration API 2: Device Drivers->Generic Driver options [*] Support for uevent helper 3: Networking support → Networking options <M> 802.1d Ethernet Bridging
生成image ,同时在kernel/modules下生成llc.ko,stp.ko,bridge.ko用作桥接驱动。
SSD21x系列: 修改project/kbuild/customize/4.9.84/p3/dispcam/kernel_mod_list_late
SSD20x系列: 修改project/kbuild/4.9.84/i2m/configs/nvr/011A/glibc/8.2.1/xxx/modules/kernel_mod_list
依次添加 llc.ko
、 stp.ko
和 bridge.ko
。
2. 板端修改¶
0:修改/appconfigs/wpa_supplicant.conf,添加外部AP热点信息, / # vi appconfigs/wpa_supplicant.conf ctrl_interface=/tmp/wifi/run/wpa_supplicant update_config=1 network={ ssid="aryl iPhone" psk="123456789a" }
-
加载驱动
cd /config/wifi mkdir -p /tmp/wifi/run/wpa_supplicant insmod llc.ko insmod stp.ko insmod bridge.ko
-
hostapd.conf需要添加一项配置项
interface=p2p0 //ssw101/2b 采用p2p0做ap interface。 bridge=br0 //固定 hw_mode=g //固定 channel=1
注意: 桥接使用channel,前后端都是一致的。取决于wlan0 连接到ap的channel,此处要填写相应channel。
-
添加环境变量,将wifi用到的so添加到系统中。一般放置在/config/wifi下面
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:pwd
-
初始化wifi模块
ssd20x系列参考脚本
./ssw01blnit.sh
ssd21x系列参考脚本
./sigma_wifi_init.sh
注:如果遇到
sh: write error: Invalid argument
,可以忽略。 -
建立网卡桥接
ifconfig wlan0 up ifconfig p2p0 up ifconfig wlan0 0.0.0.0 ifconfig p2p0 0.0.0.0 brctl addbr br0 brctl addif br0 wlan0 brctl addif br0 p2p0 ifconfig br0 up
-
sta连接wifi
./wpa_supplicant -Dnl80211 -i wlan0 -c /appconfigs/wpa_supplicant.conf -b br0 & udhcpc -S /etc/init.d/udhcpc.script -i br0
-
开启AP模式
./hostapd -B /config/wifi/hostapd.conf ./dnsmasq -i p2p0 --no-daemon -C /config/wifi/dnsmasq.conf &
AP: SSID:ssw101bap pwd:12345678
如果sta可以连接外网,那么通过pc连接ssw101bap后,也可以正常连上网络。
注:如果sta连接wifi,出现 wlan0 is not sta mode的错误信息,可能是wifi驱动和kernel没有匹配。请找对应的wifi模组厂,提供新的ko。