RTL8723BU wifi 及 熱點移植和測試
基於realtek RTL8723DU/RTL8723BU “RTL8723BU_WiFi_linux_v4.4.2_18635_BTCOEX20151228-664a.20161006” 官方驅動包,見附件。
1. 將driver文件拷貝到 /home/public/project/android/freescaleandroid5.1/kernel_imx/drivers/net/wireless/rtlwifi目錄,並修改Makefile文件
在 “Platform Related”中添加如下內容
CONFIG_PLATFORM_IMX6Q = y
並disable其他平臺
在 ARM ToolChain 配置部分添加如下內容
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_MODE -DCONFIG_RADIO_WORK
ARCH := arm
CROSS_COMPILE := $(KVER)//prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
KSRC := $(KERNEL_BUILD_PATH)
MODULE_NAME := 8723bu
endif
在rtlwifi/Makefile文件中添加
obj-$(CONFIG_RTL8723BU) += rtl8723bu/
在rtlwifi/Kconfig文件中添加
config RTL8723BU
tristate "Realtek RTL8723B USB Wireless Network Adapter"
select RTLWIFI
select RTLWIFI_USB
---help---
This is the driver for Realtek RTL8723BU 802.11n USB
wireless network adapters.
If you choose to build it as a module, it will be called rtl8723bu
menuconfig 配置RTL8723BU爲M
make 編譯內核生成8723bu.ko文件
2. 參考文件“Realtek_Wi-Fi_SDK_for_Android_L_5.x.pdf”移植wifi hal層及相應配置。
3. 拷貝wpa_supplicant_hostapd/wpa_supplicant_8_L_5.x_rtw_r16058.20151204目錄下的文件到freescaleandroid5.1/external目錄(備份系統自帶的此文件)。
編譯此文件,將會生成hostapd在system/bin/目錄下。
4. 拷貝“rtl_hostapd_2G.conf”文件到OUT目錄中的system/etc目錄下,並更名爲hostapd.conf。修改此文件如下幾處:
ctrl_interface=/data/misc/wifi/hostapd
driver=nl80211
具體修改方法可參考驅動包中的document/Quick_Start_Guide_for_SoftAP.pdf文件
5.啓動系統後,運行hostapd -d etc/hostapd.conf,可測試配置文件以及hostapd驅動是否可用。
運行hostapd -B etc/hostapd.conf,即可啓動進程。
6.修改freescaleandroid5.1/system/netd/server/SoftapController.cpp以適應系統設置中的“打開便攜式WLAN熱點”功能。
根據“static const char DRIVER_VENDOR_NAME[] = "wlan.vendor";”此語句,需配置wlan.vendor屬性以適應不同的WIFI 模塊。
在freescaleandroid5.1/device/fsl/sabresd_6dq/init.rc文件中添加setprop wlan.vendor "realtek"
在SoftapController.cpp文件中的int SoftapController::startSoftap()函數中,由於始終無法進入到
if ((strcmp(driver_vendor, "realtek") == 0)) {
ret = execl(HOSTAPD_BIN_FILE_RTL, HOSTAPD_BIN_FILE,
"-e", WIFI_ENTROPY_FILE,
HOSTAPD_CONF_FILE, (char *) NULL);
}
中,所以在之前添加打印信息:ALOGE("DRIVER_VENDOR_NAME is %s ", driver_vendor);//added by lqy for debug
並開啓硬啓動:
else if (1){ //this part is added by lqy for rtk softap
ret = execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE,
"-e", WIFI_ENTROPY_FILE,
HOSTAPD_CONF_FILE, (char *) NULL);
ALOGE("---lqy---");
}
此方法不推薦使用。
2017.9.15 改善之前的問題和不足
1. 刪除之前在freescaleandroid5.1/device/fsl/sabresd_6dq/init.rc文件中添加的setprop wlan.vendor "realtek"信息
2. 在freescaleandroid5.1/device/fsl/imx6/imx6.mk文件中添加 wlan.vendor=realtek
添加位置如下:
# for property
PRODUCT_DEFAULT_PROPERTY_OVERRIDES := \
persist.sys.usb.config=mtp \
wifi.interface=wlan0 \
ro.boot.btdev=realtek \
wlan.vendor=realtek
3. 刪除之前在freescaleandroid5.1/system/netd/server/SoftapController.cpp文件中添加的
else if (1){ //this part is added by lqy for rtk softap
ret = execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE,
"-e", WIFI_ENTROPY_FILE,
HOSTAPD_CONF_FILE, (char *) NULL);
ALOGE("---lqy---");
}
4. 將上文中的49行修改爲
static const char HOSTAPD_BIN_FILE_RTL[] = "/system/bin/hostapd";//lqy fixed static const char HOSTAPD_BIN_FILE_RTL[] = "/system/bin/rtl_hostapd";
5. 可cd 進入freescaleandroid5.1/system/netd/server/目錄單獨“mm”編譯SoftapController.cpp
也可在根目錄下make
6. 更新系統卡中system/bin/netd文件和boot/uramdisk.img
1. 將driver文件拷貝到 /home/public/project/android/freescaleandroid5.1/kernel_imx/drivers/net/wireless/rtlwifi目錄,並修改Makefile文件
在 “Platform Related”中添加如下內容
CONFIG_PLATFORM_IMX6Q = y
並disable其他平臺
在 ARM ToolChain 配置部分添加如下內容
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_MODE -DCONFIG_RADIO_WORK
ARCH := arm
CROSS_COMPILE := $(KVER)//prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
KSRC := $(KERNEL_BUILD_PATH)
MODULE_NAME := 8723bu
endif
在rtlwifi/Makefile文件中添加
obj-$(CONFIG_RTL8723BU) += rtl8723bu/
在rtlwifi/Kconfig文件中添加
config RTL8723BU
tristate "Realtek RTL8723B USB Wireless Network Adapter"
select RTLWIFI
select RTLWIFI_USB
---help---
This is the driver for Realtek RTL8723BU 802.11n USB
wireless network adapters.
If you choose to build it as a module, it will be called rtl8723bu
menuconfig 配置RTL8723BU爲M
make 編譯內核生成8723bu.ko文件
2. 參考文件“Realtek_Wi-Fi_SDK_for_Android_L_5.x.pdf”移植wifi hal層及相應配置。
3. 拷貝wpa_supplicant_hostapd/wpa_supplicant_8_L_5.x_rtw_r16058.20151204目錄下的文件到freescaleandroid5.1/external目錄(備份系統自帶的此文件)。
編譯此文件,將會生成hostapd在system/bin/目錄下。
4. 拷貝“rtl_hostapd_2G.conf”文件到OUT目錄中的system/etc目錄下,並更名爲hostapd.conf。修改此文件如下幾處:
ctrl_interface=/data/misc/wifi/hostapd
driver=nl80211
具體修改方法可參考驅動包中的document/Quick_Start_Guide_for_SoftAP.pdf文件
5.啓動系統後,運行hostapd -d etc/hostapd.conf,可測試配置文件以及hostapd驅動是否可用。
運行hostapd -B etc/hostapd.conf,即可啓動進程。
6.修改freescaleandroid5.1/system/netd/server/SoftapController.cpp以適應系統設置中的“打開便攜式WLAN熱點”功能。
根據“static const char DRIVER_VENDOR_NAME[] = "wlan.vendor";”此語句,需配置wlan.vendor屬性以適應不同的WIFI 模塊。
在freescaleandroid5.1/device/fsl/sabresd_6dq/init.rc文件中添加setprop wlan.vendor "realtek"
在SoftapController.cpp文件中的int SoftapController::startSoftap()函數中,由於始終無法進入到
if ((strcmp(driver_vendor, "realtek") == 0)) {
ret = execl(HOSTAPD_BIN_FILE_RTL, HOSTAPD_BIN_FILE,
"-e", WIFI_ENTROPY_FILE,
HOSTAPD_CONF_FILE, (char *) NULL);
}
中,所以在之前添加打印信息:ALOGE("DRIVER_VENDOR_NAME is %s ", driver_vendor);//added by lqy for debug
並開啓硬啓動:
else if (1){ //this part is added by lqy for rtk softap
ret = execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE,
"-e", WIFI_ENTROPY_FILE,
HOSTAPD_CONF_FILE, (char *) NULL);
ALOGE("---lqy---");
}
此方法不推薦使用。
2017.9.15 改善之前的問題和不足
1. 刪除之前在freescaleandroid5.1/device/fsl/sabresd_6dq/init.rc文件中添加的setprop wlan.vendor "realtek"信息
2. 在freescaleandroid5.1/device/fsl/imx6/imx6.mk文件中添加 wlan.vendor=realtek
添加位置如下:
# for property
PRODUCT_DEFAULT_PROPERTY_OVERRIDES := \
persist.sys.usb.config=mtp \
wifi.interface=wlan0 \
ro.boot.btdev=realtek \
wlan.vendor=realtek
3. 刪除之前在freescaleandroid5.1/system/netd/server/SoftapController.cpp文件中添加的
else if (1){ //this part is added by lqy for rtk softap
ret = execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE,
"-e", WIFI_ENTROPY_FILE,
HOSTAPD_CONF_FILE, (char *) NULL);
ALOGE("---lqy---");
}
4. 將上文中的49行修改爲
static const char HOSTAPD_BIN_FILE_RTL[] = "/system/bin/hostapd";//lqy fixed static const char HOSTAPD_BIN_FILE_RTL[] = "/system/bin/rtl_hostapd";
5. 可cd 進入freescaleandroid5.1/system/netd/server/目錄單獨“mm”編譯SoftapController.cpp
也可在根目錄下make
6. 更新系統卡中system/bin/netd文件和boot/uramdisk.img
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.