全志A133 Andorid10
适配BL-M8821CS
双模WIFI
模组
前言
BL-M8821CS
是必联公司出品的一款支持2.4G
、5G
和蓝牙的WIFI
模组,内部芯片是Realtek
的rtl8821cs
,我本人适配新驱动时都会先看一遍该芯片的数据手册,这次也不例外,虽然硬件选型已经分析了利弊,但还是建议大家了解一下数据手册,里面会有很多有用信息,BL-M8821CS
数据手册以及驱动文件已添加至附件。
BL-M8821CS
驱动适配流程总共分为以下几个步骤:
- 联系模组厂家(供应商)获取驱动文件,一般他们都会提供相对应的驱动,放到对应的目录即可;
- 检查驱动文件有没有被内核编译到并加载
- 修改系统层配置
WIFI篇
-
添加模组厂家给的驱动文件至对应的目录,我这里是:
longan/kernel/linux-4.9/drivers/net/wireless/rtl8821cs
,不同平台路径也许会不一样; -
修改
Kconfig
和Makefile
文件,让内核可以编译到刚刚添加的驱动文件,注意Kconfig
、Makefile
的路径,不是rtl8821cs
目录内部的,而是上一级目录的;diff --git a/longan/kernel/linux-4.9/drivers/net/wireless/Kconfig b/longan/kernel/linux-4.9/drivers/net/wireless/Kconfig index ab72e3bfb3..c2b8876d5f 100644 --- a/longan/kernel/linux-4.9/drivers/net/wireless/Kconfig +++ b/longan/kernel/linux-4.9/drivers/net/wireless/Kconfig @@ -113,6 +113,7 @@ source "drivers/net/wireless/bcmdhd/Kconfig" source "drivers/net/wireless/rtl8723cs/Kconfig" source "drivers/net/wireless/rtl8723ds/Kconfig" source "drivers/net/wireless/rtl8189fs/Kconfig" +source "drivers/net/wireless/rtl8821cs/Kconfig" source "drivers/net/wireless/rtl8723bs_vq0/Kconfig" source "drivers/net/wireless/uwe5622/Kconfig" source "drivers/net/wireless/rtl8822bs/Kconfig" diff --git a/longan/kernel/linux-4.9/drivers/net/wireless/Makefile b/longan/kernel/linux-4.9/drivers/net/wireless/Makefile index 7add633c09..c22ee18f1d 100644 --- a/longan/kernel/linux-4.9/drivers/net/wireless/Makefile +++ b/longan/kernel/linux-4.9/drivers/net/wireless/Makefile @@ -23,6 +23,7 @@ obj-$(CONFIG_RTL8723BS_VQ0) += rtl8723bs_vq0/ obj-$(CONFIG_RTL8822BS) += rtl8822bs/ obj-$(CONFIG_RTL8723DS) += rtl8723ds/ obj-$(CONFIG_RTL8189FS) += rtl8189fs/ +obj-$(CONFIG_RTL8821CS) += rtl8821cs/ obj-$(CONFIG_AIC_WLAN_SUPPORT) += aic8800/ # 16-bit wireless PCMCIA client drivers
3.开始单独编译内核,确认
8821CS
是否编译,以及是否生成8821cs.ko
文件;4.烧录后输入
lsmod
查看是否存在8821cs.ko
;若不存在的话,手动加载驱动即可,输入insmod 8821cs.ko
即可加载,打开WIFI
查看能否正常使用,若能正常使用,系统层无需修改,只需要添加默认加载库即可,若无法正常使用,需要修改系统层;5.默认加载库补丁,这里是写死的方法,也可以改为自动识别不同
WIFI
模组,实现自动加载不同的ko
驱动文件;diff --git a/android/device/softwinner/ceres-b6/BoardConfig.mk b/android/device/softwinner/ceres-b6/BoardConfig.mk index eaa10f4e13..c83cc01fb4 100644 --- a/android/device/softwinner/ceres-b6/BoardConfig.mk +++ b/android/device/softwinner/ceres-b6/BoardConfig.mk @@ -91,14 +91,14 @@ TARGET_USES_MKE2FS := true # wifi and bt configuration # 1. Wifi Configuration BOARD_WIFI_VENDOR := realtek -BOARD_USR_WIFI := 8189fs -WIFI_DRIVER_MODULE_PATH := "/vendor/modules/8189fs.ko" -WIFI_DRIVER_MODULE_NAME := "8189fs" +BOARD_USR_WIFI := 8821cs +WIFI_DRIVER_MODULE_PATH := "/vendor/modules/8821cs.ko" +WIFI_DRIVER_MODULE_NAME := "8821cs" WIFI_DRIVER_MODULE_ARG := "ifname=wlan0 if2name=p2p0" # 2. Bluetooth Configuration BOARD_BLUETOOTH_VENDOR := realtek -BOARD_HAVE_BLUETOOTH_NAME := rtl8723ds +BOARD_HAVE_BLUETOOTH_NAME := rtl8821cs # Must include after wifi/bt configuration include device/softwinner/common/config/wireless/wireless_config.mk
6.若加载了库,仍然不能正常使用,则需要修改系统层,补丁见附件,若
WIFI
正常,则跳过此步骤,接下来调试蓝牙;
蓝牙篇
串口蓝牙本身不需要怎么调试,只需要替换相对应的库(rtl8821cs_config
、rtl8821cs_fw
)即可,不同安卓版本的库无法直接替换,需要向模组厂获取,我这里是Android10
版本的;
android/hardware/realtek/bluetooth/firmware/rtl8821cs_fw b/android/hardware/realtek/bluetooth/firmware/rtl8821cs_fw
android/hardware/realtek/bluetooth/firmware/rtl8821cs_config b/android/hardware/realtek/bluetooth/firmware/rtl8821cs_config
路径如上,可以手动push
看下效果之后,没问题再内置;
PS
:文件已上传至gitee/github
,有什么问题留言即可;
git HTTP :https://gitee.com/isjeffray/adapt_drive.git
git SSH:git clone git@gitee.com:isjeffray/adapt_drive.git