前言
本篇博文我们来分享嵌入式Linux设备开启无线AP/无线接入点(Wireless Access Point)的方法。
什么情况下会用到无线AP?
我最近的工作中有如下两种情况需要用到:
(1)AP配网。设备热点配网,智能硬件处于AP模式,手机作为STA连接到处于AP模式的智能硬件后组成局域网。此时,手机就可以通过局域网把设备即将连接的路由的ssid和pwd信息至智能硬件,智能硬件接收后,连接路由器,完成配网。
(2)把废旧不用的板子作为开启无线AP组建各设备的局域网通信。对于移动机器人的开发来说,设备实际工作过程中,无线调试无疑是最方便的。
因为设备一直处于运动状态,如果接着有线,电脑需要跟着设备跑,很不方便。因为我们调试时,对路由器的需求比较大,而路由器比较有限,所以我把废旧不用的板子配成了无线AP模式。
经过实测,相同距离,旧板子局域网通信速度略低于我们路由器,但不影响我们作为调试时使用。
嵌入式Linux设备,要开启无线接入点需要准备如下四个文件:
hostapd:一个用户态用于AP和认证服务器的守护进程。
hostapd.conf:hostapd配置文件,包含无线AP的名称、密码等信息。
udhcpd:dhcp拨号的服务器端。
udhcpd.conf:udhcpd配置文件,配置网关地址及IP地址的范围。
其中,hostapd、udhcpd工具busybox中包含有。当然,也可以自己下载源码进行编译,方法可参照我们往期的博文:
远程登陆开发板:RTL8723驱动移植+wpa_supplicant移植+SSH移植,编译方法都是大同小异的。
注意区分:udhcpc、udhcpd工具。
udhcpc是dhcp拨号的客户端。设备作为STA时,用于自动获取IP。
udhcpd是dhcp拨号的服务器端。设备作为AP时,用于自动分配IP。
其中,我们的往期博文如何实现程序开机自启动?中有用到udhcpc,本博文中我们用的是udhcpd。
下面我们来看hostapd及udhcpd的配置文件如何配置:
hostapd配置文件
hostapd的配置文件可参考hostapd源码下的hostapd.conf:
里面的内容很多,实际中我们可能用不到那么多配置,我们可以删减、修改,只保留我们所需的配置。
我们删减修改之后得到:
左右滑动查看全部代码>>>
#APnetdevicename interface=wlan0 #SSIDtobeusedinIEEE802.11managementframes ssid=LinuxZn_AP #Driverinterfacetype(hostap/wired/none/nl80211/bsd); #default:hostap).nl80211isusedwithallLinuxmac80211drivers. #Usedriver=noneifbuildinghostapdasastandaloneRADIUSserverthatdoes #notcontrolanywireless/wireddriver. driver=nl80211 #Interfaceforseparatecontrolprogram. #/var/run/hostapdistherecommendeddirectoryforsocketsandbydefault, #hostapd_cliwilluseitwhentryingtoconnectwithhostapd. ctrl_interface=/var/run/hostapd #Channelnumber(IEEE802.11) channel=5 #ieee80211n:WhetherIEEE802.11n(HT)isenabled #0=disabled(default) #1=enabled #Note:YouwillalsoneedtoenableWMMforfullHTfunctionality. #Note:hw_mode=g(2.4GHz)andhw_mode=a(5GHz)isusedtospecifytheband. ieee80211n=1 hw_mode=g #SendemptySSIDinbeaconsandignoreproberequestframesthatdonot #specifyfullSSID,i.e.,requirestationstoknowSSID. #default:disabled(0) #1=sendempty(length=0)SSIDinbeaconandignoreproberequestfor #broadcastSSID #2=clearSSID(ASCII0),butkeeptheoriginallength(thismayberequired #withsomeclientsthatdonotsupportemptySSID)andignoreprobe #requestsforbroadcastSSID ignore_broadcast_ssid=0 #WPA/IEEE802.11iconfiguration wpa=2 wpa_passphrase=12345678 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP
该文件主要配置了:
所用网卡:wlan0
AP名称:LinuxZn_AP
AP密码:12345678
加密:WPA2
频段:2.4GHz
我们把hostapd.conf配置文件我们放到板子上的/etc目录下备用:
udhcpd配置文件
udhcpd的配置文件可参考udhcpd源码下的udhcpd.conf:
同样的,我们只保留如下内容:
左右滑动查看全部代码>>>
#ThestartandendoftheIPleaseblock start192.168.3.2 end192.168.3.254 #Theinterfacethatudhcpdwilluse interfacewlan0 optdns114.114.114.114 optionsubnet255.255.255.0 optrouter192.168.3.1 optiondomainlocal optionlease864000#10daysofseconds
该文件主要配置了:
所能分配的IP地址的范围为:192.168.3.2~192.168.3.254
网卡接口:wlan0
网关地址:192.168.3.1
我们把udhcpd.conf配置文件放到板子上的/etc目录下备用:
开启热点
有了以上工具及相关配置文件之后,还需要进行一些操作,才可以开启我们的热点,我们把这些操作写成脚本:
start_ap.sh:
左右滑动查看全部代码>>>
#!/bin/bash #杀掉网卡操作相关的进程 killallwpa_supplicantudhcpcdhcpcddnsmasqudhcpdhostapd>/dev/null2>&1 #禁用网卡 ifconfigwlan0down #启用网卡 ifconfigwlan0up #给无线网卡设置IP地址(网关地址) ifconfigwlan0192.168.3.1 #启动DHCP udhcpd/etc/udhcpd.conf #启动热点 hostapd/etc/hostapd.conf-B
开启热点:
连接测试:
可见,手机分配到的IP为192.168.3.2,属于192.168.3.2~192.168.3.254的范围,我们的设备热点开启成功!我们的PC可以连接这个热点对设备进行调试。
审核编辑:陈陈
-
嵌入式
+关注
关注
5082文章
19109浏览量
304836 -
Linux
+关注
关注
87文章
11295浏览量
209348 -
无线AP
+关注
关注
0文章
54浏览量
19194
原文标题:嵌入式Linux设备开启无线接入点的方法步骤
文章出处:【微信号:Linux大陆,微信公众号:Linux大陆】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论