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