RTL8723BU-WiFi-BT模块移植(WiFi部分)

发布时间:   来源:文档文库   
字号:

本次修改基于厂商提供的
RTL8723BU_WiFi_linux_v4.3.16_14189.20150519_BTCOEX2015119-5844
下载链接:http://download.csdn.net/detail/bhj1119/9761769一修改记录:
1.配置linux内核
(1Networkingsupport--->Wireless下增加802.11协议栈的支持---
Wireless
cfg80211-wirelessconfigurationAPI[*]nl80211testmodecommand[*]enabledeveloperwarnings[*]cfg80211regulatorydebugging[*]enablepowersavebydefault[]cfg80211DebugFSentries
[]usestaticallycompiledregulatoryrulesdatabase[*]cfg80211wirelessextensionscompatibility[*]Wirelessextensionssysfsfiles
-*-CommonroutinesforIEEE802.11drivers[]lib80211debuggingmessages
[*]Allowreconnectwhilealreadyconnected
GenericIEEE802.11NetworkingStack(mac80211[]PIDcontrollerbasedratecontrolalgorithm[*]Minstrel
[*]Minstrel802.11nsupport
Defaultratecontrolalgorithm(Minstrel--->
[*]Enablemac80211meshnetworking(pre-802.11ssupport[*]EnableLEDtriggers
[]Exportmac80211internalsinDebugFS[]Selectmac80211debuggingfeatures--->
(2配置DeviceDrivers--->USBsupport---><*>USBWirelessDeviceManagementsupport支持WIFI
2.RTL8723BU_WiFi_linux_v4.3.16_14189.20150519_BTCOEX2015119-5844/driver下的压缩包拷贝到ANDROID_SDK/kernel_imx/drivers/net/wireless下,解压,修改其Makefile,编译wifi驱动模块,修改内容如下:
CONFIG_PLATFORM_IMX6Q=y
ifeq($(CONFIG_PLATFORM_IMX6Q,y
EXTRA_CFLAGS+=-DCONFIG_LITTLE_ENDIAN

EXTRA_CFLAGS+=-DCONFIG_IOCTL_CFG80211-DRTW_USE_CFG80211_STA_EVENT-DCONFIG_PLATFORM_ANDROID-DCONFIG_ANDROID-DCONFIG_CONCURRENT_MODEARCH:=arm
CROSS_COMPILE:=XXX/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-KSRC:=XXX/kernel_imx//MODULE_NAME:=8723buendif
如果(1)中选项没有选上,会导致加载wifi模块时报如下错误:rtl8723bu:nosymbolversionforcfg80211_ready_on_channelrtl8723bu:Unknownsymbolcfg80211_ready_on_channel(err-22rtl8723bu:Unknownsymbolodm_SwAntDetectInit(err0rtl8723bu:nosymbolversionfor__ieee80211_get_channelrtl8723bu:Unknownsymbol__ieee80211_get_channel(err-22rtl8723bu:nosymbolversionforcfg80211_roamedrtl8723bu:Unknownsymbolcfg80211_roamed(err-22rtl8723bu:nosymbolversionforwiphy_register
rtl8723bu:Unknownsymbolwiphy_register(err-22
原因就是:编译WiFi模块时会去KSRC所指的路径下找相应的库,若果相关的编译选项没有选上会导致某些库缺失,从而导致编出来的WiFi模块不完整。上述是由于编译内核时内有勾选80211协议栈导致。
3.用厂商提供的hardware/realtek替换hardware/realtek4.wpa_supplicant_8_kk_4.4_rtw_r12456.20141003ANDROID_SDK/extern/wpa_supplicant_8,并修改文件夹的名字为wpa_supplicant_85.hardware/libhardware_legacy/wifi/Android.mk修改内容如下:
---Android.mk(版本170+++Android.mk(工作副本@@-49,15+49,21@@LOCAL_CFLAGS+=-DWIFI_DRIVER_FW_PATH_PARAM=\"$(WIFI_DRIVER_FW_PATH_PARAM\"endif
-ifeq($(BOARD_WLAN_DEVICE,UNITE-LOCAL_C_INCLUDES+=$(LOCAL_PATH/../../external/wpa_supplicant_ath/wpa_supplicant/src/common-LOCAL_SRC_FILES+=wifi/wifi_unite.c
-elseifeq($(BOARD_WLAN_VENDOR,INTEL-LOCAL_SRC_FILES+=wifi/wifi_intel.c
-LOCAL_C_INCLUDES+=$(LOCAL_PATH/../../external/wpa_supplicant_8/src/common+#ifeq($(BOARD_WLAN_DEVICE,UNITE+#LOCAL_C_INCLUDES+=$(LOCAL_PATH/../../external/wpa_supplicant_ath/wpa_supplicant/src/common

+#LOCAL_SRC_FILES+=wifi/wifi_unite.c
+#elseifeq($(BOARD_WLAN_VENDOR,INTEL+#LOCAL_SRC_FILES+=wifi/wifi_intel.c
+#LOCAL_C_INCLUDES+=$(LOCAL_PATH/../../external/wpa_supplicant_8/src/common+#else
+#LOCAL_SRC_FILES+=wifi/wifi.c
+#LOCAL_C_INCLUDES+=$(LOCAL_PATH/../../external/wpa_supplicant_8/src/common+#endif+
+ifeq($(BOARD_WIFI_VENDOR,realtek
+LOCAL_SRC_FILES+=../realtek/wlan/libhardware_legacy/wifi/wifi_realtek.celse
-LOCAL_SRC_FILES+=wifi/wifi.c
-LOCAL_C_INCLUDES+=$(LOCAL_PATH/../../external/wpa_supplicant_8/src/common+LOCAL_SRC_FILES+=wifi/wifi.cendif
6.修改device/fsl/sabresd_6dq/BoardConfig.mk修改内容如下:
---BoardConfig.mk(版本170+++BoardConfig.mk(工作副本@@-26,6+26,33@@
TARGET_BOOTLOADER_BOARD_NAME:=SABRESDPRODUCT_MODEL:=SABRESD-MX6DQ+
+BOARD_WIFI_VENDOR:=realtek
+ifeq($(BOARD_WIFI_VENDOR,realtek
+WPA_SUPPLICANT_VERSION:=VER_0_8_X+BOARD_WPA_SUPPLICANT_DRIVER:=NL80211+CONFIG_DRIVER_WEXT:=y
+BOARD_WPA_SUPPLICANT_PRIVATE_LIB:=lib_driver_cmd_rtl+BOARD_HOSTAPD_DRIVER:=NL80211
+BOARD_HOSTAPD_PRIVATE_LIB:=lib_driver_cmd_rtl+#BOARD_WLAN_DEVICE:=rtl8192cu+#BOARD_WLAN_DEVICE:=rtl8192du+#BOARD_WLAN_DEVICE:=rtl8192ce+#BOARD_WLAN_DEVICE:=rtl8192de+#BOARD_WLAN_DEVICE:=rtl8723as+#BOARD_WLAN_DEVICE:=rtl8723au+#BOARD_WLAN_DEVICE:=rtl8189es+#BOARD_WLAN_DEVICE:=rtl8723bs

+BOARD_WLAN_DEVICE:=rtl8723bu
+WIFI_DRIVER_MODULE_NAME:="8723bu"
+WIFI_DRIVER_MODULE_PATH:="/system/lib/modules/8723bu.ko"+WIFI_DRIVER_MODULE_ARG:="ifname=wlan0if2name=p2p0"+WIFI_FIRMWARE_LOADER:=""+WIFI_DRIVER_FW_PATH_STA:=""+WIFI_DRIVER_FW_PATH_AP:=""+WIFI_DRIVER_FW_PATH_P2P:=""+WIFI_DRIVER_FW_PATH_PARAM:=""+else
#UNITEisavirtualdevicesupportbothatherosandrealtekwifi(ar6103andrtl8723asBOARD_WLAN_DEVICE:=UNITE
WPA_SUPPLICANT_VERSION:=VER_0_8_UNITE@@-39,6+66,7@@
BOARD_WPA_SUPPLICANT_PRIVATE_LIB_QCOM:=lib_driver_cmd_qcwcnBOARD_HOSTAPD_PRIVATE_LIB_RTL:=lib_driver_cmd_rtlBOARD_WPA_SUPPLICANT_PRIVATE_LIB_RTL:=lib_driver_cmd_rtl+endif
#forintelvendor
ifeq($(BOARD_WLAN_VENDOR,INTEL
BOARD_HOSTAPD_PRIVATE_LIB:=private_lib_driver_cmd@@-118,3+146,4@@fs_use\
untrusted_app.te\genfs_contexts
上述步骤完成后,到根目录下执行make编译整个系统。二测试
1.安装cfg80211.ko8723bu.ko依赖此模块,缺省会报如下错误:
8723bu:Unknownsymbolcfg80211_ready_on_channel(err08723bu:Unknownsymbol__ieee80211_get_channel(err08723bu:Unknownsymbolcfg80211_roamed(err08723bu:Unknownsymbolwiphy_register(err0
8723bu:Unknownsymbolcfg80211_disconnected(err08723bu:Unknownsymbolcfg80211_new_sta(err0
8723bu:Unknownsymbolcfg80211_connect_result(err08723bu:Unknownsymbolcfg80211_inform_bss_frame(err0
2.安装8723bu.ko模块,两个模块都安装好之后,执行netcfg,会看到多出wlan0p2p0设备节点,他们是8723bu驱动创建出来的,放到sys/class/net/下。

loUP127.0.0.1/80x0000004900:00:00:00:00:00can0DOWN0.0.0.0/00x0000008000:00:00:00:00:00can1DOWN0.0.0.0/00x0000008000:00:00:00:00:00eth0UP0.0.0.0/00x000010431e:ed:19:27:1a:b3wlan0DOWN0.0.0.0/00x000010027c:c7:09:30:c5:4dp2p0DOWN0.0.0.0/00x000010027e:c7:09:30:c5:4d
3.执行ifconfigwlan0up,打开wlan0
4.system/bin/wpa_supplicant-Dnl80211-iwlan0-c/etc/wifi/wpa_supplicant.confwpa_supplicant进程。启动过程报如下错误:
E/wpa_supplicant(3251:mkdir[ctrl_interface=wlan0]:PermissiondeniedE/wpa_supplicant(3251:Failedtoinitializecontrolinterface'wlan0'.
E/wpa_supplicant(3251:Youmayhaveanotherwpa_supplicantprocessalreadyrunningorthefilewas
E/wpa_supplicant(3251:leftbyanuncleanterminationofwpa_supplicantinwhichcaseyouwillneed
E/wpa_supplicant(3251:tomanuallyremovethisfilebeforestartingwpa_supplicantagain.
错误原因:wpa_supplicant进程运行时的配置文件wpa_supplicant.conf文件中的ctrl_interface路径不对,没有匹配成功,导致进程启动失败。原来ctrl_interface的路径是/var/run/wpa_supplicantctrl_interface改成/data/misc/wifi/wpa_supplicant就可以了。ctrl_interfaceexternal/wpa_supplicant_8/wpa_supplicant/wpa_supplicant.conf中。深入分析:
wpa_supplicant_init_iface函数分析
init_ifacewpa_s->confname“/data/misc/wifi/wpa_supplicant.conf”,解析函数是wpa_config_readwpa_s->ctrl_iface=wpa_supplicant_ctrl_iface_init(wpa_s;if(wpa_s->ctrl_iface==NULL{wpa_printf(MSG_ERROR,
"Failedtoinitializecontrolinterface'%s'.\n"
"Youmayhaveanotherwpa_supplicantprocess""alreadyrunningorthefilewas\n"
"leftbyanuncleanterminationofwpa_supplicant""inwhichcaseyouwillneed\n"
"tomanuallyremovethisfilebeforestarting""wpa_supplicantagain.\n",wpa_s->conf->ctrl_interface;return-1;

}
如果是linux系统,可能没有wpa_supplicant工具,可参考wpa_supplicant-2.6交叉编译移植此工具。
5.执行system/bin/wpa_cli-p/data/misc/wifi/wpa_supplicant,配置并连接wifi热点。Couldnotconnecttowpa_supplicant:wlan0-re-trying
wpa_cliv2.0-devel-4.4.2_rtw_r12456.20141003
Copyright(c2004-2013,JouniMalinenandcontributors
ThissoftwaremaybedistributedunderthetermsoftheBSDlicense.SeeREADMEformoredetails.
Selectedinterface'wlan0'
Interactivemode
1>scanOK
<3>CTRL-EVENT-STATE-CHANGEid=-1state=3BSSID=00:00:00:00:00:00SSID=<3>CTRL-EVENT-SCAN-RESULTS<3>WPS-AP-AVAILABLE
<3>CTRL-EVENT-STATE-CHANGEid=-1state=2BSSID=00:00:00:00:00:00SSID=2>scan_results
bssid/frequency/signallevel/flags/ssid
78:eb:14:bd:f6:9e2412-58[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]B1412bc:67:1c:41:29:4d2437-65[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]systec-cisco
e0:05:c5:23:fc:522452-71[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]
30:fc:68:0b:c9:f62437-71[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]gsdqec:26:ca:53:ea:f12462-72[WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS]TP-LINK_EAF1
00:1f:f3:bf:d0:6f2462-73[WPA2-PSK-CCMP][ESS]tcsapple
d4:ee:07:29:9b:4a2442-73[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]Cherry&Filippo
24:69:68:16:a9:1e2462-74[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]\xe6\xb2\x83\xe7\x95\x89
fc:d7:33:8d:0a:362412-74[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]dangyu

anweixin
b0:c0:90:3a:24:a32422-74[WPA2-PSK-CCMP][ESS]360\xe8\xa1\x8c\xe8\xbd\xa6\xe8\xae\xb0\xe5\xbd\x95\xe4\xbb\xaa-A3
c8:3a:35:1f:5f:882422-80[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]wangzihao
c8:3a:35:06:a9:b02452-82[WPA-PSK-CCMP][ESS]Tenda_06A9B000:3a:99:9b:9b:402417-45[WEP][ESS]systec-AP00:0c:43:30:50:a02437-51[ESS]Wii-Link_3050A008:10:78:e1:27:a52412-74[ESS]NETCORE_27A53>add_network0
4>set_network0ssid"systec-cisco"OK
5>set_network0psk"XXX"OK
6>select_network0OK
<3>CTRL-EVENT-STATE-CHANGEid=0state=3BSSID=00:00:00:00:00:00SSID=systec-cisco<3>CTRL-EVENT-SCAN-RESULTS<3>WPS-AP-AVAILABLE
<3>Tryingtoassociatewithbc:67:1c:41:29:4d(SSID='systec-cisco'freq=2437MHz
<3>CTRL-EVENT-STATE-CHANGEid=0state=5BSSID=00:00:00:00:00:00SSID=systec-cisco<3>CTRL-EVENT-STATE-CHANGEid=0state=6BSSID=00:00:00:00:00:00SSID=systec-cisco<3>Associatedwithbc:67:1c:41:29:4d
<3>CTRL-EVENT-STATE-CHANGEid=0state=7BSSID=bc:67:1c:41:29:4dSSID=systec-cisco<3>CTRL-EVENT-STATE-CHANGEid=0state=8BSSID=bc:67:1c:41:29:4dSSID=systec-cisco<3>WPA:Keynegotiationcompletedwithbc:67:1c:41:29:4d[PTK=CCMPGTK=TKIP]
<3>CTRL-EVENT-CONNECTED-Connectiontobc:67:1c:41:29:4dcompleted(auth[id=0id_str=]
<3>CTRL-EVENT-STATE-CHANGEid=0state=9BSSID=bc:67:1c:41:29:4dSSID=systec-cisco7enable_network0OK
查看链接状态:>status
bssid=bc:67:1c:41:29:4dssid=systec-ciscoid=0
mode=station
pairwise_cipher=CCMPgroup_cipher=TKIPkey_mgmt=WPA2-PSKwpa_state=COMPLETED
p2p_device_address=7c:c7:09:30:c5:4d

address=7c:c7:09:30:c5:4d
<3>CTRL-EVENT-STATE-CHANGEid=0state=9BSSID=bc:67:1c:41:29:4dSSID=systec-cisco<3>CTRL-EVENT-CONNECTED-connectiontobc:67:1c:41:29:4dcompleted(auth[id=0id_str=]
执行dhcpcdwlan0分配IP,此时再netcfg查看,wlan0deip已经变成10.0.0.118root@sabresd_6dq:/#netcfg
loUP127.0.0.1/80x0000004900:00:00:00:00:00can0DOWN0.0.0.0/00x0000008000:00:00:00:00:00can1DOWN0.0.0.0/00x0000008000:00:00:00:00:00eth0UP0.0.0.0/00x000010431e:ed:19:27:1a:b3wlan0UP10.0.0.118/240x000010437c:c7:09:30:c5:4dp2p0DOWN0.0.0.0/00x000010027e:c7:09:30:c5:4d
ping一下看看通不通
root@sabresd_6dq:/#ping192.168.1.1
PING192.168.1.1(192.168.1.156(84bytesofdata.
64bytesfrom192.168.1.1:icmp_seq=1ttl=63time=29.1ms64bytesfrom192.168.1.1:icmp_seq=2ttl=63time=15.9ms64bytesfrom192.168.1.1:icmp_seq=3ttl=63time=16.4ms64bytesfrom192.168.1.1:icmp_seq=4ttl=63time=14.3ms64bytesfrom192.168.1.1:icmp_seq=5ttl=63time=14.0ms^C
---192.168.1.1pingstatistics---
5packetstransmitted,5received,0%packetloss,time4006msrttmin/avg/max/mdev=14.034/17.991/29.183/5.672ms
至此wifi模块移植完毕,可以实现扫描,链接,分配IP

本文来源:https://www.2haoxitong.net/k/doc/5a98432eeef9aef8941ea76e58fafab069dc4486.html

《RTL8723BU-WiFi-BT模块移植(WiFi部分).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式