AP模式
首先需要配置kernel config:
# cd kernel
# ARCH=arm make menuconfig
每次修改配置后,更新一下defconfig:
# cp .config ./arch/arm/configs/infinity2m_spinand_ssc011a_s01a_minigui_defconfig -f
系统起来后,首先加载wifi驱动:
# /config/wifi/ssw01bInit.sh
////////////如需桥接则按以下操作////////////////
# 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
//////////////////////////////////////////////
当然,我们的WIFI模块作为AP热点,需要配置一下热点信息:
# vi /config/wifi/hostapd.conf
接下来,打开AP热点:
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/config/wifi
# /config/wifi/hostapd -B /config/wifi/hostapd.conf
此时,在手机/电脑上就可以搜索到我们的AP热点了:
尝试连接,发现一直在连接但并没有连接成功,这是因为没有开启DHCP服务,没有给连接设备分配到IP导致连接失败,所以我们还需要开启DHCP服务(使用dnsmasq工具):
# vi /config/wifi/dnsmasq.conf
关注dhcp-range,它表示给配给设备的IP范围:
关注interface,这里把它设置为wlan0:
由于dhcp-range设置为192.168.1.x,因此wlan0的静态IP设置为192.168.0.1:
# ifconfig wlan0 192.168.0.1
# /config/wifi/dnsmasq -i wlan0 -C /config/wifi/dnsmasq.conf
此时,设备可以正常连接了,并且分配的IP位于dhcp-range范围内:
现在设备可以正常连接热点了,但此时我想连接设备能够上网,即把板子当作一个路由器,把eth0当作WAN,把wlan0当作LAN。
首先需要确认eth0是可以上网的:
# ping www.baidu.com -I eth0
通过brctl桥接工具可以实现,此工具默认是没有安装的,和之前一样,从buildroot获取:
# cd buildroot-2020.05/
# ARCH=arm make menuconfig
# cp .config ./configs/ssd20x_defconfig -f
# make BR2_JLEVEL=4
# cd ../project/image/rootfs
# rm rootfs/* -rf
# cp ../../../buildroot-2020.05/output/images/rootfs.tar ./ -f
# tar -xvf rootfs.tar -C ./rootfs/
# tar -cvf rootfs.tar.gz ./rootfs
# cd ../../../
重新编译并更新固件:
# ./Release_to_customer.sh -f nand -p ssd201
更新固件后,前面的加载驱动、hostapd服务和dnsmasq服务需要重新执行,然后执行以下命令建立桥接:
# brctl addbr br0
# brctl addif br0 wlan0
# brctl addif br0 eth0
# ifconfig br0 up
此时,连接设备就可以正常上网了:
至此,WIFI的STA和AP模式调试完成。
文档更新时间: 2023-03-15 14:56 作者:Aeeditor