close

今天給大家分享一個嵌入式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:

裡面的內容很多,實際中我們可能用不到那麼多配置,我們可以刪減、修改,只保留我們所需的配置。

我們刪減修改之後得到:

左右滑動查看全部代碼>>>

#APnetdevicenameinterface=wlan0#SSIDtobeusedinIEEE802.11managementframesssid=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=1hw_mode=g#SendemptySSIDinbeaconsandignoreproberequestframesthatdonot#specifyfullSSID,i.e.,requirestationstoknowSSID.#default:disabled(0)#1=sendempty(length=0)SSIDinbeaconandignoreproberequestfor#broadcastSSID#2=clearSSID(ASCII0),butkeeptheoriginallength(thismayberequired#withsomeclientsthatdonotsupportemptySSID)andignoreprobe#requestsforbroadcastSSIDignore_broadcast_ssid=0#WPA/IEEE802.11iconfigurationwpa=2wpa_passphrase=12345678wpa_key_mgmt=WPA-PSKrsn_pairwise=CCMP

該文件主要配置了:

所用網卡:wlan0
AP名稱:LinuxZn_AP
AP密碼:12345678
加密:WPA2
頻段:2.4GHz

我們把hostapd.conf配置文件我們放到板子上的/etc目錄下備用:

udhcpd配置文件

udhcpd的配置文件可參考udhcpd源碼下的udhcpd.conf:

同樣的,我們只保留如下內容:

左右滑動查看全部代碼>>>

#ThestartandendoftheIPleaseblockstart192.168.3.2end192.168.3.254#Theinterfacethatudhcpdwilluseinterfacewlan0optdns114.114.114.114optionsubnet255.255.255.0optrouter192.168.3.1optiondomainlocaloptionlease864000#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#啟動DHCPudhcpd/etc/udhcpd.conf#啟動熱點hostapd/etc/hostapd.conf-B

開啟熱點:

連接測試:

可見,手機分配到的IP為192.168.3.2,屬於192.168.3.2~192.168.3.254的範圍,我們的設備熱點開啟成功!我們的PC可以連接這個熱點對設備進行調試。

以上就是本次的分享,如果覺得文章有幫助,麻煩幫忙轉發,謝謝!


來源:嵌入式大雜燴
版權歸原作者所有,如有侵權,請聯繫刪除。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()