正基WiFi模塊STA模式基本操作示例(2)

接上一篇文章!
4. STA 模式基本操作示例
4-1 加載驅動
步驟 1. 加載驅動。
ap6181/ap6212/ap6212a/ap6214a/ap6255
himm 0x100d0004 0x1
himm 0x12098034 0x10101070
insmod cfg80211.ko
insmod bcmdhd.ko firmware_path=/etc/firmware/fw_bcm40181a2.bin
nvram_path=/etc/firmware/nvram.txt dhd_oob_gpio_base=0x1214d000
dhd_oob_gpio_num=0 dhd_oob_irq_num=76 sdio_slot=1
himm 0x12098034 0x10101050
himm 0x12098034 0x10101070

第一行命令是給 SDIO 控制器上電,地址爲 WiFi 模塊對接的 SDIO 端口所對應的控制器地址;第二行是將 WL_REG_ON 拉高給 WiFi 上電,WL_REG_ON 連接的GPIO 不同,地址和值也不同,上例 WL_REG_ON 連接在 PER_EN1 上,請根據用戶指南修改;第四行命令是加載 WiFi 驅動,其中:
− dhd_oob_gpio_base 和 dhd_oob_gpio_num 是配置 OOB 管腳,上例爲
GPIO13_0,oob_gpio_base=0x1214d000 設置 GPIO13 的基地址,基地址從用戶指南中查找,dhd_oob_gpio_num 設置偏移爲 0;
− dhd_oob_irq_num 爲 OOB GPIO 的中斷號,請從用戶指南中查找;
− sdio_slot 是 WiFi 對接的 SDIO 端口號。
第五、六行是將 WL_REG_ON 拉底再拉高,復位 WiFi。
步驟 2. 查看驅動是否加載成功。
執行 shell 命令:
iwconfig
如果看到有一個 wlan0 網口,那說明驅動已經初始化成功,WiFi 設備可用。
圖3-1 iwconfig 執行結果
在這裏插入圖片描述
步驟 3. 啓動 WiFi 網口。
執行 shell 命令:
ifconfig wlan0 up
執行完後,WiFi 是可用狀態,可以進行掃描和連接操作了。
----結束
3.2 掃描 AP
執行 shell 命令:
iwlist wlan0 scan
圖3-2 掃描 AP 執行結果
在這裏插入圖片描述
掃描到的 AP 會以“Cell xx”的形式顯示,一個 AP 對應一個“Cell xx”。
每個 AP 的信息包括:
Address:MAC 地址。
ESSID:AP 的名稱,即 SSID。
Protocol:IEEE80211 協議,11b/g/n。
Frequency:信道。
認證加密信息:WEP、WPA-PSK、WPA2-PSK、WPA、WPA2。 Quality:信號質量,該數據有些 WiFi 顯示得不準確,可以忽略。 Signal Level:信號強度,數字越大,信號強度越高,WiFi 芯片不同,顯示的方式有些區別,有的是以 xx/100 類型顯示,有的是以 xx dBm 顯示。
上述信息並不是所有 WiFi 都是以這種格式顯示,WiFi 不同顯示的格式也不一樣。

注意
使用 iwlist 進行掃描時,iwlist 不會等驅動掃描完所有信道才返回掃描結果,所以經常會出現有些 AP 沒有搜出來的情況,尤其是MT7601U,由於在每個信道上停留的時間較長,所以第一次掃描時,只能搜到 1~2 個信道里的 AP。

3.3 連接 AP
連接 AP 是通過 wpa_supplicant 進程進行的。wpa_supplicant 是開源代碼,Linux、Android 都是採用它負責 WiFi 的連接過程,它包含了 WEP、WPA/WPA2、WPAPSK/WPA2-PSK、WAPI、WPS、P2P、EAP 等協議。
步驟 1. 啓動 wpa_supplicant 進程。
執行 shell 命令:
wpa_supplicant –iwlan0 –Dnl80211 –c/etc/Wireless/wpa_supplicant.conf&
iwlan0 表示使用 wlan0 網口;
Dnl80211 表示使用 cfg80211 接口(用戶態的接口是 libnl,內核中是 cfg80211), 另外一個可選的是-Dwext,表示使用 wext 接口,mt7601u 需要使用-Dwext;
c/etc/Wireless/wpa_supplicant.conf 是 wpa_supplicant 的配置文件,要保證該文件已經存在。
執行完後,用 ps 命令查看一下 wpa_supplicant 進程是否存在,存在表示工作正常。如果沒有 wpa_supplicant 進程,可以增加wpa_supplicant 的打印級別,從 log 看出現什麼問題,如:
wpa_supplicant –iwlan0 –Dnl80211 c/etc/Wireless/wpa_supplicant.conf –ddd &
步驟 2. 啓動 wpa_cli 進程。
執行 shell 命令:
wpa_cli –iwlan0 –p/var/wpa_supplicant
執行成功會出現“>”符號。
如果出現“Could not connect to wpa_supplicant - re-trying”,那表示 wpa_cli 不能和wpa_supplicant 建立 socket 連接,這時要檢查 wpa_supplicant 進程是否還在,再看是否有/var/wpa_supplicant/wlan0,然後檢查 wpa_supplicant.conf 文件中是否是
ctrl_interface=/var/wpa_supplicant。
步驟 3. 掃描。
在“>”後執行“scan”命令,收到“CTRL-EVENT-SCAN-RESULTS”後再執行 “scan_results”,會獲得掃描結果。
圖3-3 wpa_cli 掃描 AP 結果
在這裏插入圖片描述
步驟 4. 連接。
連接 OPEN 方式的 AP:
a. 在“>”後執行 add_network,假如返回網絡 ID 爲 0。
b. 配置網絡的 SSID,執行 set_network 0 ssid“AP 的 SSID”。
c. 配置網絡的加密方式,執行 set_network 0 key_mgmt NONE。
d. 啓動網絡,執行 select_network 0。
e. 收到 CTRL-EVENT-CONNECTED 表示連接成功。
圖3-4 連接 AP
在這裏插入圖片描述
連接 WPA-PSK/WPA2-PSK 方式的 AP:
在“>”後執行 add_network,假如返回網絡 ID 爲 0。
配置網絡的 SSID,執行 set_network 0 ssid“AP 的 SSID”。
配置網絡的加密方式,執行 set_network 0 psk“AP 的密碼”。 啓動網絡,執行 select_network 0。
收到 CTRL-EVENT-CONNECTED 表示連接成功。
Broadcom 的 WiFi 還可以通過 wl 工具進行掃描和連接,連接方法請參考 sample 和wl 的 help 信息。
步驟 5. 獲取 IP 地址。
輸入 q 退出 wpa_cli,執行 shell 命令:
udhcpc –i wlan0
配置了 IP 地址後,可以 ping 網關看是否能 ping 通。
----結束
3.4 卸載驅動
ap6181/ap6212/ap6212a/ap6214a/ap6255
ifconfig wlan0 down
rmmod bcmdhd.ko
rmmod cfg80211.ko

4 .SoftAP 模式基本操作示例
4.1 檢查 WiFi 設備、加載驅動
ap6181/ap6212/ap6212a/ap6214a/ap6255 用的 firmware 和 STA 模式不一樣,如下:
himm 0x100d0004 0x1
himm 0x12098034 0x10101070
insmod cfg80211.ko
insmod bcmdhd.ko firmware_path=/etc/firmware/fw_bcm40181a2_apsta.bin
nvram_path=/etc/firmware/nvram.txt dhd_oob_gpio_base=0x1214d000
dhd_oob_gpio_num=0 dhd_oob_irq_num=76 sdio_slot=1
himm 0x12098034 0x10101050
himm 0x12098034 0x10101070
4.2 hostapd 配置和啓動 SoftAP
配置 SoftAP 是通過 hostapd 進行的。hostapd 和 wpa_supplicant 類似,它包含了 AP 端的各種認證協議、連接流程,wpa_supplicant 是 STA 端的。
步驟 1. 修改 hostapd.conf 文件。
hostapd 進程需要使用 hostapd.conf 配置文件,在配置文件裏設置 SSID、信道、加密方式等。配置文件的內容舉例如下:
OPEN
interface=wlan0
driver=nl80211
ctrl_interface=/var/hostapd
ssid=HisiAP
channel=6
hw_mode=g
ieee80211n=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40-]
WPA2-PSK
interface=wlan0
driver=nl80211
ctrl_interface=/var/hostapd
ssid=HisiAP
channel=6
hw_mode=g
ieee80211n=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40-]
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
wpa_passphrase=12345678
hostapd 是開源代碼,配置文件中的參數可以參考網絡資源。
ht_capab 可以配置是否支持 40M 帶寬,帶有[SHORT-GI-40][HT40-]或者[SHORT-GI-
40][HT40+]即支持 40M 帶寬。當 channel 小於 6 時,用[SHORT-GI-40][HT40+],當
channel 大於等於 6 時,用[SHORT-GI-40][HT40-]。
mt7601u、ap6181、ap6212、ap6212a、ap6214a、ap6255 的 SoftAP 模式不支持 40M 帶 寬,所以 ht_capab 設置如下:
ht_capab=[SHORT-GI-20]
步驟 2. 啓動 hostapd 進程。
執行 Shell 命令:
hostapd -e /etc/Wireless/entropy.bin /etc/Wireless/hostapd.conf &
執行完後,用 ps 命令查看一下 hostapd 進程是否存在,存在表示工作正常,用 STA 設 備可以搜索到 SoftAP。如果沒有,可以增加 hostapd 的打印級別,從 log 看出現什麼問題,如:
hostapd -e /etc/Wireless/entropy.bin –ddd /etc/Wireless/hostapd.conf &
----結束
Broadcom 的 WiFi 還可以通過 wl 工具進行配置,配置方法請參考 sample 和 wl 的 help信息。
4.3 開啓 udhcpd
執行 Shell 命令:
ifconfig wlan0 192.168.1.1
busybox udhcpd –fS /etc/Wireless/udhcpd.conf
請確保/etc/Wireless/udhcpd.conf 文件存在,並且配置的網段爲 192.168.1.x。執行完後, 用 STA 設備可以掃描和連接該 SoftAP,如果能成功連接且 ping 通網關表示此 AP 配置成功。
4.4 卸載驅動
卸載驅動的方法和 STA 模式一樣。
4.5適配國家或區域
不同的國家或區域,採用的頻率範圍有些不同,比如 2.4GHz 頻段,美國支持 1~11 信 道,中國和歐洲支持 1~13 信道,日本支持 1~14 信道。5GHz 頻段也類似。WiFi 需要根據產品上市的國家或區域做相應的配置,以適用於該國家的頻率範圍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章