基于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