道阻且长,行则将至。埋头苦干,不鸣则已,一鸣惊人!加油,骚年!
Hello 大家好,我是小二,久违了!(PS:其实是最近加班太多了…)
上篇文章,我总结了 WiFi 连接路由的过程
本篇文章想分享一下 WiFi 开启热点的过程,也就是常说的 AP 模式。
1 参考资料按照惯例,先呈上参考资料,这样可以先打开,再结合文章一块食用,体验更佳!
首先强烈推荐 周立功 网站提供的两个参考教程,详细介绍了 WiFi 模组使用方法。
其他地方也很难找到这么详细的教程
- 【WiFi-BL使用说明】https://manual.zlg.cn/web/#/30?page_id=1157
- 【蓝牙使用】https://manual.zlg.cn/web/#/45?page_id=4819
然后是我自己在网上找到的参考资料
最后,还有一些其他前辈的教程,十分感谢!
2 环境介绍为了方便,本文代码采用两种方式展示,一种图片格式,方便阅读;一种源码格式,方便复制;请君按需取用~
1、Ubuntu18.04 ,不加密环境,版本信息如下:
zhaoc@Ubuntu1804:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic zhaoc@Ubuntu1804:~$ uname -a Linux Ubuntu1804 5.4.0-54-generic #60~18.04.1-Ubuntu SMP Fri Nov 6 17:25:16 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
2、Linux 内核版本:4.4.179 ;
3、交叉编译链版本
arm-none-linux-gnueabi-gcc gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)3 配置过程
参考周立功的资料,记录开启 AP 的脚本文件,内容如下
#!/bin/sh killall hostapd udhcpd wpa_supplicant udhcpc 2> /dev/null #insmod /opt/bcmdhd.ko # bcmdhd.ko驱动模块放在其它目录,则需要对应修改 rmmod 8188fu insmod ./8188fu.ko ifconfig wlan0 down #echo /lib/firmware/bcm/SN8000_BCM43362/fw_bcmdhd_apsta.bin > /sys/module/bcmdhd/parameters/firmware_path #echo /lib/firmware/bcm/SN8000_BCM43362/bcmdhd.SN8000.SDIO.cal > /sys/module/bcmdhd/parameters/nvram_path ifconfig wlan0 up sleep 1 #echo "1" > /proc/sys/net/ipv4/ip_forward #iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE #eth0是联网网卡名 #iptables -A FORWARD -s 192.168.5.0/24 -j ACCEPT #wlan0的ip #iptables -A FORWARD -d 192.168.151.0/24 -j ACCEPT #联网网卡的ip ifconfig wlan0 192.168.5.1 udhcpd ./udhcpd.conf # udhcpd.conf放在其它目录,则需要对应修改 echo "hostapd -B ./hostapd.conf" hostapd -B ./hostapd.conf # hostapd.conf放在其它目录,则需要对应修改
参考上述脚本示例,就能有一个大概的思路。
结合自身需求,整理命令如下:
# 查看wlan0网卡是否存在 ifconfig -a # 重启无线网卡 ifconfig wlan0 down ifconfig wlan0 up # 配置wlan0网卡IP ifconfig wlan0 192.168.5.1 # 使能DHCP,自动分配IP服务 udhcpd /etc/udhcpd.conf # 开启WiFi hostapd -B /etc/hostapd.conf
udhcpd 命令、hostapd 命令,需要使用对应配置文件启动,整理文件内容如下:
/etc/udhcpd.conf 文件内容如下:
[root]#cat /etc/udhcpd.conf # the start and end of the IP lease block start 192.168.5.10 end 192.168.5.254 # the interface that udhcpd will use interface wlan0 opt dns 114.114.114.114 option subnet 255.255.255.0 opt router 192.168.5.1 option domain local option lease 864000 # 10days of seconds
/etc/hostapd.conf 文件内容如下:
[root]#cat /etc/hostapd.conf # WPA2-PSK authentication with AES encryption interface=wlan0 driver=nl80211 ctrl_interface=/var/run/hostapd ssid=ZHAOC channel=6 ieee80211n=1 hw_mode=g ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=12345678 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP
其中包含 WiFi 名称、密码等信息
- WiFi 名称( ssid ):ZHAOC
- WiFi 密码( wpa_passphrase ):12345678
在熟悉了基本的命令、配置文件后,就可以编写脚本,自动化执行了,这样可以大大节省调试时间。
开启 WiFi AP 模式,脚本文件如下,并附有详细注释
#/bin/sh # 先杀死所有相关进程 killall hostapd udhcpd wpa_supplicant udhcpc # 重启无线网卡 ifconfig wlan0 down ifconfig wlan0 up # 延时1秒 sleep 1 # 配置无线网卡固定IP ifconfig wlan0 192.168.43.1 # 启动服务端,DHCP自动分配IP地址 udhcpd /App/udhcpd.conf # 开启设备热点 echo "hostapd -B /App/hostapd.conf" hostapd -B /App/hostapd.conf
基本与单纯的命令行操作差不太多。主要是集合到脚本文件当中,要求格式统一等。
下面看看停止 WiFi AP 模式脚本,其实就是 killall 命令
#/bin/sh echo "[root] killall hostapd udhcpd" killall hostapd udhcpd
下面就是自己配置的 App/hostapd.conf ,附有详细注释
# WPA2-PSK authentication with AES encryption # 使用网卡 interface=wlan0 # 网卡驱动 driver=nl80211 # 未知 ctrl_interface=/var/run/hostapd # 热点名称 ssid=ZHAOC # 热点使用信道,频段 channel=11 # 未知 ieee80211n=1 hw_mode=g ignore_broadcast_ssid=0 # 下面四项,当配置为加密模式时,需开启; # 即连接 WiFi 热点时,需要输入密码; #wpa=2 #wpa_passphrase=12345678 #wpa_key_mgmt=WPA-PSK #rsn_pairwise=CCMP
最后则是更新后的, DHCP 自动分配 IP 配置文件,App/udhcpd.conf
# the start and end of the IP lease block start 192.168.43.10 end 192.168.43.254 # the interface that udhcpd will use interface wlan0 opt dns 114.114.114.114 option subnet 255.255.255.0 opt router 192.168.43.1 option domain local option lease 864000 # 10days of seconds4 注意事项
1、hostapd 需要使用新版本的,目前用的 2.9 版本的;
2、driver 最好使用 nl80211 ,即如下内容
driver=nl80211
原因:目前看到的所有成功的教程,都是使用 nl80211 ,最好保持一致。
3、为什么原来用 nl80211 不可以?
回答:
原来将 driver 配置为 nl80211 ,运行命令报错,是因为使用的工具版本不支持导致的,后来换了 2.9 版本的 hostapd 后,就正常了。
4、目前 WiFi 开启热点后,使用的信道 11 ,经过自测,此信道在当前环境下,相对比较稳定;
channel=11
好了,本期内容就是这样,下篇文章将总结一下整个移植过程,以及自己的思考。
感谢您的阅读,我是小二,我们下期再见!
如果文章内容有误,麻烦评论/私信多多指教!如果觉得文章内容还不错,记得一键四连哦(点赞、收藏、留言、关注),如果您能点个关注,那就是对我最大的鼓励,也将是我创作的动力,谢谢您嘞!