前言
本篇博文我們來分享嵌入式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可以連接這個熱點對設備進行調試。
審核編輯:陳陳
-
嵌入式
+關注
關注
5143文章
19561瀏覽量
315444 -
Linux
+關注
關注
87文章
11469瀏覽量
212913 -
無線AP
+關注
關注
0文章
56瀏覽量
19436
原文標題:嵌入式Linux設備開啟無線接入點的方法步驟
文章出處:【微信號:Linux大陸,微信公眾號:Linux大陸】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
如何部署無線接入點原則
為什么這么多人將無線路由器當做無線接入點?
如何使用無線網卡連接WIFI接入點呢
嵌入式Linux無線接入點的設計與實現
針對用戶需求的無線接入點關聯策略

評論