# RTL8723BU wifi模块适配
##linux驱动添加
安卓下使能外设驱动都需要先适配好linux下驱动,所以首先来编译linux驱动模块
1. 拷贝官方驱动(github的资源文件目录下下载)到lichee的linux驱动目录下
~~~
zp@ubuntu:~/develop/a13_android4.1_v1.2/lichee$ ls linux-3.0/drivers/net/wireless/rtl8723bu/
clean core hal ifcfg-wlan0 include Kconfig Makefile os_dep platform runwpa wlan0dhcp
~~~
2. 配置驱动Makefile以及Kconfig,然后在menuconfig里选中刚加入的驱动
`CONFIG_PLATFORM_ARM_SUNxI = y`
`obj-$(CONFIG_RTL8723BU) += rtl8723bu/`
`source "drivers/net/wireless/rtl8723bu/Kconfig"`
` <M> Realtek 8723B USB WiFi`
3. 重新编译lichee,获得内核模块
`./build.sh -p a13_nuclear -k 3.0`
~~~
zp@ubuntu:~/develop/a13_android4.1_v1.2/lichee$ ls out/android/lib/modules/3.0.8+/87*
out/android/lib/modules/3.0.8+/8723bu.ko
~~~
4. 修改wifi驱动,隐藏过多调试信息
前面这样生成的ko带有很多调试信息输出,以至于开启wifi模块时太慢,导致打开wifi超时,所以需要隐藏多余的信息。
编辑linux-3.0/drivers/net/wireless/rtl8723bu/include/autoconf.h,去掉DEBUG的相关宏定义。
##安卓配置文件
1. 修改板级配置文件device/softwinner/nuclear-evb/BoardConfig.mk
~~~
BOARD_WIFI_VENDOR := realtek
ifeq ($(BOARD_WIFI_VENDOR), realtek)
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl
SW_BOARD_USR_WIFI := rtl8723bu
BOARD_WLAN_DEVICE := rtl8723bu
endif
~~~
2. 修改init启动脚本init.sun5i.rc
~~~
# 1.1 realtek wifi sta service
service wpa_supplicant /system/bin/wpa_supplicant -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -e/data/misc/wifi/entropy.bin
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
# 1.2 realtek wifi sta p2p concurrent service
service p2p_supplicant /system/bin/wpa_supplicant \
-ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf -e/data/misc/wifi/entropy.bin -N \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
~~~
3.修改安卓板级mk文件nuclear_evb.mk(蓝牙需要,wifi不用改)
4. 修改安卓hardware相关代码hardware/libhardware_legacy/wifi/wifi.c
~~~
#elif defined RTL_8723BU_WIFI_USED
/* rtl8723bu usb wifi */
#ifndef WIFI_DRIVER_MODULE_PATH
#define WIFI_DRIVER_MODULE_PATH "/system/vendor/modules/8723bu.ko"
#endif
#ifndef WIFI_DRIVER_MODULE_NAME
#define WIFI_DRIVER_MODULE_NAME "8723bu"
#endif
#ifndef WIFI_DRIVER_MODULE_ARG
#define WIFI_DRIVER_MODULE_ARG "ifname=wlan0 if2name=p2p0"
~~~
5. wifi的安卓mk修改
~~~
hardware/libhardware_legacy/wifi/Android.mk
ifeq ($(SW_BOARD_USR_WIFI), rtl8723bu)
LOCAL_CFLAGS += -DRTL_8723BU_WIFI_USED
LOCAL_CFLAGS += -DRTL_WIFI_VENDOR
endif
~~~
6. wpa的安卓mk修改
~~~
external/wpa_supplicant_8/wpa_supplicant/Android.mk
ifeq ($(SW_BOARD_USR_WIFI), rtl8188eu)
L_CFLAGS += -DCONFIG_WFD
endif
~~~
5. 重新编译安卓
实际需要更新的就只有libhardware_legacy.so和8723bu.ko,当然也可以打包整个镜像重新烧写。
以局部更新为例,挂载tf卡的第7分区,拷贝so到lib/libhardware_legacy.so
拷贝ko到vendor/modules
sync后启动即可
- 荔枝派概览
- 合作编辑留言墙
- 荔枝派资源汇总
- 开箱清单
- 开箱指南
- 常见开箱问题
- 开箱经历
- FAQ
- TODO List
- 硬件设计全解析
- 主控芯片概览
- PCB基础知识
- PCB参数确认
- 电源电路设计
- DDR电路设计
- DDR原理图设计
- DDR_PCB_Layout
- DDR测试
- 存储电路设计
- Nand_Flash电路设计
- eMMC电路设计
- TF卡电路设计
- 显示接口设计
- RGB_LCD电路设计
- VGA电路设计
- CVBS电路设计
- LVDS_LCD电路设计
- CPU_LCD电路设计
- MIPI电路设计
- HDMI电路设计
- 摄像头接口设计
- 并行CSI摄像头接口设计
- MIPI摄像头接口设计
- 音频接口设计
- 内置CODEC接口设计
- I2S接口设计
- S/PDIF接口设计
- USB电路设计
- 射频部分设计
- 其它外设接口电路设计
- 生产测试全解析
- PCB生产解析
- 元器件采购解析
- SMT及后焊解析
- 可制造性分析
- PCBA测试解析
- 品控解析
- 包装及物流解析
- linux系统适配全解析
- 启动流程概览
- boot0
- boot1
- uboot
- kernel
- rootfs
- uboot编译指南
- 内核编译指南
- 主要外设适配解析
- DDR
- eMMC
- LCD
- VGA
- USB
- CSI
- WIFI
- BT
- codec
- tv-out
- 根文件系统构建指南
- busybox
- buildroot
- bootstrap
- debian
- ubuntu
- 安卓系统适配全解析
- 安卓编译系统解析
- 安卓系统架构解析
- 安卓下外设适配及其系统解析
- codec适配及Audio系统解析
- wifi适配
- usb适配
- pm解析
- uart适配
- 安卓ROM深度定制
- Zero Linux系统适配过程记录
- camdriod 走读
- linux下app应用举例
- opencv
- 讯飞SDK
- mxnet
- 安卓下app应用举例
- smali简介及反编译应用