加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • hostapd配置文件
    • udhcpd配置文件
    • 開啟熱點(diǎn)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

Linux | 廢舊板子再利用:搭建無線調(diào)試環(huán)境!

2022/07/06
1199
閱讀需 12 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大家好,我是雜燴君。本篇博文我們來分享嵌入式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)通信。對于移動(dòng)機(jī)器人的開發(fā)來說,設(shè)備實(shí)際工作過程中,無線調(diào)試無疑是最方便的。

因?yàn)樵O(shè)備一直處于運(yùn)動(dòng)狀態(tài),如果接著有線,電腦需要跟著設(shè)備跑,很不方便。因?yàn)槲覀冋{(diào)試時(shí),對路由器的需求比較大,而路由器比較有限,所以我把廢舊不用的板子配成了無線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撥號的服務(wù)器端。
  • udhcpd.conf:udhcpd配置文件,配置網(wǎng)關(guān)地址及IP地址的范圍。

其中,hostapd、udhcpd工具busybox中包含有。當(dāng)然,也可以自己下載源碼進(jìn)行編譯,方法可參照我們往期的博文:RTL8723驅(qū)動(dòng)移植+wpa_supplicant移植+SSH移植,編譯方法都是大同小異的。

注意區(qū)分:udhcpc、udhcpd工具。

udhcpc是dhcp撥號的客戶端。設(shè)備作為STA時(shí),用于自動(dòng)獲取IP。

udhcpd是dhcp撥號的服務(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í)際中我們可能用不到那么多配置,我們可以刪減、修改,只保留我們所需的配置。

我們刪減修改之后得到:

# AP netdevice name
interface=wlan0

# SSID to be used in IEEE 802.11 management frames
ssid=LinuxZn_AP

# Driver interface type (hostap/wired/none/nl80211/bsd);
# default: hostap). nl80211 is used with all Linux mac80211 drivers.
# Use driver=none if building hostapd as a standalone RADIUS server that does
# not control any wireless/wired driver.
driver=nl80211

# Interface for separate control program.
# /var/run/hostapd is the recommended directory for sockets and by default,
# hostapd_cli will use it when trying to connect with hostapd.
ctrl_interface=/var/run/hostapd

# Channel number (IEEE 802.11)
channel=5

# ieee80211n: Whether IEEE 802.11n (HT) is enabled
# 0 = disabled (default)
# 1 = enabled
# Note: You will also need to enable WMM for full HT functionality.
# Note: hw_mode=g (2.4 GHz) and hw_mode=a (5 GHz) is used to specify the band.
ieee80211n=1
hw_mode=g

# Send empty SSID in beacons and ignore probe request frames that do not
# specify full SSID, i.e., require stations to know SSID.
# default: disabled (0)
# 1 = send empty (length=0) SSID in beacon and ignore probe request for
#     broadcast SSID
# 2 = clear SSID (ASCII 0), but keep the original length (this may be required
#     with some clients that do not support empty SSID) and ignore probe
#     requests for broadcast SSID
ignore_broadcast_ssid=0

# WPA/IEEE 802.11i configuration
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

該文件主要配置了:

  • 所用網(wǎng)卡:wlan0AP名稱:LinuxZn_APAP密碼:12345678加密:WPA2頻段:2.4GHz

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

 

udhcpd配置文件

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

同樣的,我們只保留如下內(nèi)容:

# The start and end of the IP lease block
start           192.168.3.2
end             192.168.3.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.3.1
option  domain  local
option  lease   864000     # 10 days of seconds

該文件主要配置了:

  • 所能分配的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:

#!/bin/bash

# 殺掉網(wǎng)卡操作相關(guān)的進(jìn)程
killall wpa_supplicant udhcpc dhcpcd dnsmasq udhcpd hostapd > /dev/null 2>&1

# 禁用網(wǎng)卡
ifconfig wlan0 down

# 啟用網(wǎng)卡
ifconfig wlan0 up

# 給無線網(wǎng)卡設(shè)置IP地址(網(wǎng)關(guān)地址)
ifconfig wlan0 192.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)對設(shè)備進(jìn)行調(diào)試。

以上就是本次的分享,如果覺得文章有幫助,麻煩幫忙轉(zhuǎn)發(fā),謝謝!

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

本公眾號專注于嵌入式技術(shù),包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學(xué)習(xí)筆記,同時(shí),公眾號內(nèi)包含大量的學(xué)習(xí)資源。歡迎關(guān)注,一同交流學(xué)習(xí),共同進(jìn)步!