全志A133适配BL-MS8821CS

全志A133 Andorid10适配BL-M8821CS双模WIFI模组
前言

BL-M8821CS是必联公司出品的一款支持2.4G5G和蓝牙的WIFI模组,内部芯片是Realtekrtl8821cs,我本人适配新驱动时都会先看一遍该芯片的数据手册,这次也不例外,虽然硬件选型已经分析了利弊,但还是建议大家了解一下数据手册,里面会有很多有用信息,BL-M8821CS数据手册以及驱动文件已添加至附件。

BL-M8821CS驱动适配流程总共分为以下几个步骤:

  1. 联系模组厂家(供应商)获取驱动文件,一般他们都会提供相对应的驱动,放到对应的目录即可;
  2. 检查驱动文件有没有被内核编译到并加载
  3. 修改系统层配置
WIFI篇
  1. 添加模组厂家给的驱动文件至对应的目录,我这里是:longan/kernel/linux-4.9/drivers/net/wireless/rtl8821cs,不同平台路径也许会不一样;

  2. 修改KconfigMakefile文件,让内核可以编译到刚刚添加的驱动文件,注意KconfigMakefile的路径,不是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_configrtl8821cs_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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值