焊接
換個粗點的風槍嘴,讓熱風覆蓋 RTL8823BS 整體模塊,最終實現(xiàn)自動歸位
焊接 SDIO 接口的上拉電阻以及復位引腳上拉電阻
硬件部分就這么多比較簡單,接下來是軟件部分
打開內(nèi)核編譯選項
搜索 RTL8723BS
RTL8723BS 默認關閉,不過要使能該驅(qū)動之前,需要先使能 WLAN
和 CFG80211
搜索 WLAN
使能 WLAN
搜索 CFG80211
已經(jīng)被打開了,應該是使能 WLAN 時,將其聯(lián)動打開了
使能 RTL8723BS
發(fā)現(xiàn)只能選擇為 [M] 無法選擇成 [*],有了解的小伙伴可以告知下原因。我的猜測是,WiFi 接口 up 時需要將 fw 文件加載到 WiFi Chip,如果將驅(qū)動編譯成內(nèi)核靜態(tài)模塊的話,驅(qū)動初始化在文件系統(tǒng)掛載前,那時候還無法從文件系統(tǒng)中讀取 fw 文件,所以索性就只讓該驅(qū)動編譯成動態(tài)模塊,等操作系統(tǒng)啟動完畢后由應用層手動加載,這時候就可以方便地從文件目錄中讀取 fw 文件發(fā)送給 WiFi Chip 了。
重新編譯內(nèi)核
make O=DIY_V3S/ linux-rebuild
make O=DIY_V3S/
cp DIY_V3S/images/sdcard.img ~/share/
sync
燒錄 && 運行 && 測試
SD 卡燒錄 sdcard.img 鏡像
上電啟動
安裝驅(qū)動
# insmod /lib/modules/5.3.5/kernel/drivers/staging/rtl8723bs/r8723bs.ko
[ 60.289175] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
[ 60.320409] RTL8723BS: module init start
[ 60.326135] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
[ 60.335108] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
[ 60.386496] pnetdev = de099689
[ 60.448836] RTL8723BS: rtw_ndev_init(wlan0)
[ 60.456286] RTL8723BS: module init ret =0
#
驅(qū)動安裝后,就會產(chǎn)生 wlan0 接口,但是沒有 up,需要手動將其 up
# ifconfig wlan0 up
[ 167.848205] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
#
初次 up 時,會加載 firmware 到 WiFi Chip,fw 文件存放在 /lib/firmware/rtlwifi/
# ls /lib/firmware/rtlwifi/
rtl8712u.bin rtl8723bs_ap_wowlan.bin rtl8723bu_nic.bin
rtl8723aufw_A.bin rtl8723bs_bt.bin rtl8723bu_wowlan.bin
rtl8723aufw_B.bin rtl8723bs_nic.bin rtl8723fw.bin
rtl8723aufw_B_NoBT.bin rtl8723bs_wowlan.bin rtl8723fw_B.bin
rtl8723befw.bin rtl8723bu_ap_wowlan.bin
查看接口
# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 34:C3:D2:BD:F8:81
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
#
發(fā)現(xiàn)已經(jīng) up 了,接下來就讓它連接家里 WiFi,
配置 wpa_supplicant.conf
# cat /etc/wpa_supplicant.conf
ap_scan=1
network={
ssid="your SSID"
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=TKIP CCMP
psk="your SSID password"
priority=5
}
#
連接
# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device
# [ 1060.759388] RTL8723BS: rtw_set_802_11_connect(wlan0) fw_state = 0x00000008
[ 1061.055922] RTL8723BS: start auth
[ 1061.366001] RTL8723BS: auth success, start assoc
[ 1061.378898] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
[ 1061.387965] RTL8723BS: assoc success
[ 1061.398201] RTL8723BS: send eapol packet
[ 1061.428154] RTL8723BS: send eapol packet
[ 1061.442062] RTL8723BS: set pairwise key camid:4, addr:80:ea:07:c9:d6:4a, kid:0, type:AES
[ 1061.476357] RTL8723BS: set group key camid:5, addr:80:ea:07:c9:d6:4a, kid:1, type:AES
# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 34:C3:D2:BD:F8:81
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:70 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14450 (14.1 KiB) TX bytes:288 (288.0 B)
#
連接成功,不過沒有分配 IP 地址,手動觸發(fā) DHCP 獲取 IP
# udhcpc -i wlan0
udhcpc: started, v1.36.1
udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.31.29, server 192.168.31.1
udhcpc: lease of 192.168.31.29 obtained from 192.168.31.1, lease time 43200
deleting routers
adding dns 192.168.31.1
#
ping 外網(wǎng)測試
# ping baidu.com
PING baidu.com (39.156.66.10): 56 data bytes
64 bytes from 39.156.66.10: seq=0 ttl=49 time=76.509 ms
64 bytes from 39.156.66.10: seq=1 ttl=49 time=37.077 ms
64 bytes from 39.156.66.10: seq=2 ttl=49 time=41.511 ms
64 bytes from 39.156.66.10: seq=3 ttl=49 time=45.283 ms
64 bytes from 39.156.66.10: seq=4 ttl=49 time=37.318 ms
64 bytes from 39.156.66.10: seq=5 ttl=49 time=39.462 ms
^C
--- baidu.com ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 37.077/46.193/76.509 ms
#
網(wǎng)絡已通
完善腳本
列舉上述操作
- 安裝驅(qū)動
- up interface
- 使用 wpa_supplicant 連接
- 執(zhí)行 dhcp 獲取 IP
如果板子每次重啟后都需要手動執(zhí)行上述操作,那就太麻煩了,遂將上述操作添加到啟動腳本中
# cat /etc/inittab
# /etc/inittab
。。。
# now run any rc scripts
::sysinit:/etc/init.d/rcS
::sysinit:/etc/init.d/rc.local // 添加這行
。。。
#
創(chuàng)建 rc.local 文件,并賦予可執(zhí)行權限
# cat /etc/init.d/rc.local
#!/bin/sh
/etc/init.d/wifi_insmod_connect.sh
#
創(chuàng)建 wifi_insmod_connect.sh 文件,并賦予可執(zhí)行權限
# cat /etc/init.d/wifi_insmod_connect.sh
#!/bin/sh
insmod /lib/modules/5.3.5/kernel/drivers/staging/rtl8723bs/r8723bs.ko
ifconfig wlan0 up
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
sleep 3s
udhcpc -i wlan0
#
重啟
[ 1.826283] Run /sbin/init as init process
[ 1.977033] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ 2.471812] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
[ 2.523731] RTL8723BS: module init start
[ 2.529315] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
[ 2.538281] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
[ 2.568836] pnetdev = 24ff44ca
[ 2.631249] RTL8723BS: rtw_ndev_init(wlan0)
[ 2.638718] RTL8723BS: module init ret =0
[ 2.676561] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
[ 5.959413] RTL8723BS: rtw_set_802_11_connect(wlan0) fw_state = 0x00000008
[ 6.247413] RTL8723BS: start auth
[ 6.254599] RTL8723BS: auth success, start assoc
[ 6.266249] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
[ 6.275381] RTL8723BS: assoc success
[ 6.285938] RTL8723BS: send eapol packet
[ 6.311315] RTL8723BS: send eapol packet
[ 6.325445] RTL8723BS: set pairwise key camid:4, addr:80:ea:07:c9:d6:4a, kid:0, type:AES
[ 6.358530] RTL8723BS: set group key camid:5, addr:80:ea:07:c9:d6:4a, kid:1, type:AES
Welcome to Buildroot for the LicheePi Zero
licheepi-zero login: [ 31.843505] vcc5v0: disabling
Welcome to Buildroot for the LicheePi Zero
licheepi-zero login: root
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 34:C3:D2:BD:F8:81
inet addr:192.168.31.29 Bcast:192.168.31.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:107 errors:0 dropped:119 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20760 (20.2 KiB) TX bytes:1098 (1.0 KiB)
# ping baidu.com
PING baidu.com (39.156.66.10): 56 data bytes
64 bytes from 39.156.66.10: seq=0 ttl=49 time=61.308 ms
64 bytes from 39.156.66.10: seq=1 ttl=49 time=44.674 ms
64 bytes from 39.156.66.10: seq=2 ttl=49 time=73.668 ms
64 bytes from 39.156.66.10: seq=3 ttl=49 time=40.631 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 40.631/55.070/73.668 ms
#
可以看到,板子啟動后,WiFi 已工作,網(wǎng)絡已通。
測速
編譯 iperf 測試一下網(wǎng)速
# iperf3 -s
warning: this system does not seem to support IPv6 - trying IPv4
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.31.211, port 2642
[ 5] local 192.168.31.29 port 5201 connected to 192.168.31.211 port 2643
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 88.4 KBytes 724 Kbits/sec
[ 5] 1.00-2.00 sec 82.7 KBytes 677 Kbits/sec
[ 5] 2.00-3.00 sec 168 KBytes 1.38 Mbits/sec
[ 5] 3.00-4.00 sec 111 KBytes 911 Kbits/sec
[ 5] 4.00-5.00 sec 111 KBytes 911 Kbits/sec
[ 5] 5.00-6.00 sec 79.8 KBytes 654 Kbits/sec
[ 5] 6.00-7.00 sec 92.7 KBytes 759 Kbits/sec
[ 5] 7.00-8.00 sec 89.8 KBytes 736 Kbits/sec
[ 5] 8.00-9.00 sec 82.7 KBytes 677 Kbits/sec
[ 5] 9.00-10.00 sec 37.1 KBytes 304 Kbits/sec
[ 5] 10.00-11.00 sec 104 KBytes 855 Kbits/sec
[ 5] 11.00-11.41 sec 58.5 KBytes 1.16 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-11.41 sec 1.08 MBytes 794 Kbits/sec receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
只有 1Mbps 。。。
哦,對了,沒接天線,應該是信號不好,看下信號強度,
但是板子中并沒有 wpa_cli 命令,交叉編譯了一個,
又提示 CONFIG_CTRL_IFACE not defined - wpa_cli disabled
,
而 wpa_supplicant.conf 中添加 ctrl_interface=/var/run/wpa_supplicant 后 wpa_supplicant 又運行不起來。。。
索性不用系統(tǒng)自帶的 wpa_supplicant 了(應該是有點問題)。
按照之前寫的一篇文章《hostapd、wpa_supplicant 交叉編譯》,重新編譯 wpa_supplicant
,并在 wpa_supplicant.conf 中添加
ctrl_interface=/var/run/wpa_supplicant
系統(tǒng)重啟后查看 RSSI
# wpa_cli -i wlan0 signal_poll
RSSI=-65
LINKSPEED=150
NOISE=9999
FREQUENCY=2437
RSSI=-65
確實是信號太弱了,
買的 IPEX 座子還沒到,怎么辦呢?
手搓天線
那就先手擼一根天線焊上試試吧
# wpa_cli -i wlan0 signal_poll
RSSI=-45
LINKSPEED=150
NOISE=9999
FREQUENCY=2437
哇,RSSI 直接增強到 -45,NB
測一下速
# iperf3 -s
warning: this system does not seem to support IPv6 - trying IPv4
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.31.211, port 14988
[ 5] local 192.168.31.29 port 5201 connected to 192.168.31.211 port 14989
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 6.10 MBytes 51.1 Mbits/sec
[ 5] 1.00-2.00 sec 5.56 MBytes 46.7 Mbits/sec
[ 5] 2.00-3.00 sec 6.44 MBytes 54.0 Mbits/sec
[ 5] 3.00-4.00 sec 6.33 MBytes 53.1 Mbits/sec
[ 5] 4.00-5.00 sec 6.28 MBytes 52.7 Mbits/sec
[ 5] 5.00-6.00 sec 6.05 MBytes 50.7 Mbits/sec
[ 5] 6.00-7.00 sec 4.56 MBytes 38.2 Mbits/sec
[ 5] 7.00-8.00 sec 7.06 MBytes 59.3 Mbits/sec
[ 5] 8.00-9.00 sec 6.34 MBytes 53.2 Mbits/sec
[ 5] 9.00-10.00 sec 6.53 MBytes 54.7 Mbits/sec
[ 5] 10.00-10.89 sec 5.87 MBytes 55.7 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.89 sec 67.1 MBytes 51.7 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
51Mbps,鼓掌??????
正式天線
等了兩天,IPEX 座子到了,焊接,插天線
查看信號強度
# wpa_cli -i wlan0 signal_poll
RSSI=-45
LINKSPEED=150
NOISE=9999
FREQUENCY=2437
和我手搓的天線一樣啊,也沒高多少,抑或是軟件最強只能顯示 -45 ???
再測下速
# iperf3 -s
warning: this system does not seem to support IPv6 - trying IPv4
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.31.211, port 1148
[ 5] local 192.168.31.29 port 5201 connected to 192.168.31.211 port 1149
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 5.35 MBytes 44.9 Mbits/sec
[ 5] 1.00-2.00 sec 6.11 MBytes 51.3 Mbits/sec
[ 5] 2.00-3.00 sec 6.46 MBytes 54.2 Mbits/sec
[ 5] 3.00-4.00 sec 6.38 MBytes 53.5 Mbits/sec
[ 5] 4.00-5.00 sec 5.64 MBytes 47.4 Mbits/sec
[ 5] 5.00-6.00 sec 5.86 MBytes 49.2 Mbits/sec
[ 5] 6.00-7.00 sec 6.26 MBytes 52.4 Mbits/sec
[ 5] 7.00-8.00 sec 5.18 MBytes 43.5 Mbits/sec
[ 5] 8.00-9.00 sec 5.96 MBytes 50.0 Mbits/sec
[ 5] 9.00-10.00 sec 5.97 MBytes 50.1 Mbits/sec
[ 5] 10.00-10.86 sec 5.70 MBytes 56.0 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.86 sec 64.9 MBytes 50.1 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
也是 50Mbps 左右嘛。。。說明我手搓的天線性能還是挺好的。文章來源:http://www.zghlxwxcb.cn/news/detail-727632.html
至此,WiFi 調(diào)試 OK文章來源地址http://www.zghlxwxcb.cn/news/detail-727632.html
到了這里,關于ARM Linux DIY(四)WiFi 調(diào)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!