前言
本篇博文我們來分享嵌入式Linux設(shè)備開啟無線AP/無線接入點(diǎn)(Wireless Access Point)的方法。
什么情況下會(huì)用到無線AP?
我最近的工作中有如下兩種情況需要用到:
(1)AP配網(wǎng)。設(shè)備熱點(diǎn)配網(wǎng),智能硬件處于AP模式,手機(jī)作為STA連接到處于AP模式的智能硬件后組成局域網(wǎng)。此時(shí),手機(jī)就可以通過局域網(wǎng)把設(shè)備即將連接的路由的ssid和pwd信息至智能硬件,智能硬件接收后,連接路由器,完成配網(wǎng)。
(2)把廢舊不用的板子作為開啟無線AP組建各設(shè)備的局域網(wǎng)通信。對(duì)于移動(dòng)機(jī)器人的開發(fā)來說,設(shè)備實(shí)際工作過程中,無線調(diào)試無疑是最方便的。
因?yàn)樵O(shè)備一直處于運(yùn)動(dòng)狀態(tài),如果接著有線,電腦需要跟著設(shè)備跑,很不方便。因?yàn)槲覀冋{(diào)試時(shí),對(duì)路由器的需求比較大,而路由器比較有限,所以我把廢舊不用的板子配成了無線AP模式。
經(jīng)過實(shí)測,相同距離,舊板子局域網(wǎng)通信速度略低于我們路由器,但不影響我們作為調(diào)試時(shí)使用。
嵌入式Linux設(shè)備,要開啟無線接入點(diǎn)需要準(zhǔn)備如下四個(gè)文件:
hostapd:一個(gè)用戶態(tài)用于AP和認(rèn)證服務(wù)器的守護(hù)進(jìn)程。
hostapd.conf:hostapd配置文件,包含無線AP的名稱、密碼等信息。
udhcpd:dhcp撥號(hào)的服務(wù)器端。
udhcpd.conf:udhcpd配置文件,配置網(wǎng)關(guān)地址及IP地址的范圍。
其中,hostapd、udhcpd工具busybox中包含有。當(dāng)然,也可以自己下載源碼進(jìn)行編譯,方法可參照我們往期的博文:
遠(yuǎn)程登陸開發(fā)板:RTL8723驅(qū)動(dòng)移植+wpa_supplicant移植+SSH移植,編譯方法都是大同小異的。
注意區(qū)分:udhcpc、udhcpd工具。
udhcpc是dhcp撥號(hào)的客戶端。設(shè)備作為STA時(shí),用于自動(dòng)獲取IP。
udhcpd是dhcp撥號(hào)的服務(wù)器端。設(shè)備作為AP時(shí),用于自動(dòng)分配IP。
其中,我們的往期博文如何實(shí)現(xiàn)程序開機(jī)自啟動(dòng)?中有用到udhcpc,本博文中我們用的是udhcpd。
下面我們來看hostapd及udhcpd的配置文件如何配置:
hostapd配置文件
hostapd的配置文件可參考hostapd源碼下的hostapd.conf:
里面的內(nèi)容很多,實(shí)際中我們可能用不到那么多配置,我們可以刪減、修改,只保留我們所需的配置。
我們刪減修改之后得到:
左右滑動(dòng)查看全部代碼>>>
#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
該文件主要配置了:
所用網(wǎng)卡:wlan0
AP名稱:LinuxZn_AP
AP密碼:12345678
加密:WPA2
頻段:2.4GHz
我們把hostapd.conf配置文件我們放到板子上的/etc目錄下備用:
udhcpd配置文件
udhcpd的配置文件可參考udhcpd源碼下的udhcpd.conf:
同樣的,我們只保留如下內(nèi)容:
左右滑動(dòng)查看全部代碼>>>
#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
網(wǎng)卡接口:wlan0
網(wǎng)關(guān)地址:192.168.3.1
我們把udhcpd.conf配置文件放到板子上的/etc目錄下備用:
開啟熱點(diǎn)
有了以上工具及相關(guān)配置文件之后,還需要進(jìn)行一些操作,才可以開啟我們的熱點(diǎn),我們把這些操作寫成腳本:
start_ap.sh:
左右滑動(dòng)查看全部代碼>>>
#!/bin/bash #殺掉網(wǎng)卡操作相關(guān)的進(jìn)程 killallwpa_supplicantudhcpcdhcpcddnsmasqudhcpdhostapd>/dev/null2>&1 #禁用網(wǎng)卡 ifconfigwlan0down #啟用網(wǎng)卡 ifconfigwlan0up #給無線網(wǎng)卡設(shè)置IP地址(網(wǎng)關(guān)地址) ifconfigwlan0192.168.3.1 #啟動(dòng)DHCP udhcpd/etc/udhcpd.conf #啟動(dòng)熱點(diǎn) hostapd/etc/hostapd.conf-B
開啟熱點(diǎn):
連接測試:
可見,手機(jī)分配到的IP為192.168.3.2,屬于192.168.3.2~192.168.3.254的范圍,我們的設(shè)備熱點(diǎn)開啟成功!我們的PC可以連接這個(gè)熱點(diǎn)對(duì)設(shè)備進(jìn)行調(diào)試。
審核編輯:陳陳
-
嵌入式
+關(guān)注
關(guān)注
5087文章
19147瀏覽量
306155 -
Linux
+關(guān)注
關(guān)注
87文章
11322瀏覽量
209857 -
無線AP
+關(guān)注
關(guān)注
0文章
54瀏覽量
19225
原文標(biāo)題:嵌入式Linux設(shè)備開啟無線接入點(diǎn)的方法步驟
文章出處:【微信號(hào):Linux大陸,微信公眾號(hào):Linux大陸】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論