【Rockchip android7.1 平台rtl8821cs wifi移植调试】

Rockchip 平台rtl8821cs wifi移植调试

  • 问题描述
  • 解决方法

郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的
转载请标明出处:攻城狮2015

Platform: Rockchip rk3128
OS:Android 7.1.2
Kernel: 3.10

问题描述

客户需要在现在的板子上调一款RTL8821cs wifi

解决方法

hal层修改

+++ b/hardware/libhardware_legacy/wifi/rk_wifi_ctrl.c
@@ -78,6 +78,7 @@ static wifi_device supported_wifi_devices[] = {
        {"RTL8723DS",   "024c:d723"},
        {"RTL8188FU",   "0bda:f179"},
        {"RTL8822BU",   "0bda:b82c"},
+       {"RTL8821CS",   "024c:c821"},
        {"RTL8189ES",   "024c:8179"},
        {"RTL8189FS",   "024c:f179"},
        {"RTL8192DU",   "0bda:8194"},
+++ b/hardware/libhardware_legacy/wifi/wifi.c
@@ -89,6 +89,7 @@ extern int ifc_down(const char *name);
 #define RTL8723DS_DRIVER_MODULE_PATH "/system/lib/modules/8723ds.ko"
 #define RTL8188FU_DRIVER_MODULE_PATH "/system/lib/modules/8188fu.ko"
 #define RTL8822BU_DRIVER_MODULE_PATH "/system/lib/modules/8822bu.ko"
+#define RTL8821CS_DRIVER_MODULE_PATH "/system/lib/modules/8821cs.ko"
 #define RTL8822BS_DRIVER_MODULE_PATH "/system/lib/modules/8822bs.ko"
 #define RTL8189ES_DRIVER_MODULE_PATH "/system/lib/modules/8189es.ko"
 #define RTL8189FS_DRIVER_MODULE_PATH "/system/lib/modules/8189fs.ko"
@@ -101,6 +102,7 @@ extern int ifc_down(const char *name);
 #define DRIVER_MODULE_PATH_UNKNOW    ""
 
 #define RTL8822BS_DRIVER_MODULE_NAME "8822bs"
+#define RTL8821CS_DRIVER_MODULE_NAME "8821cs"
 #define RTL8723CS_DRIVER_MODULE_NAME "8723cs"
 #define RTL8723DS_DRIVER_MODULE_NAME "8723ds"
 #define RTL8188EU_DRIVER_MODULE_NAME "8188eu"
@@ -202,6 +204,7 @@ wifi_ko_file_name module_list[] =
        {"RTL8192DU", RTL8192DU_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG},
        {"RTL8822BU", RTL8822BU_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG},
        {"RTL8822BS", RTL8822BS_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG},
+       {"RTL8821CS", RTL8821CS_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG},
        {"RTL8188FU", RTL8188FU_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG},
        {"RTL8189ES", RTL8189ES_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG},
        {"RTL8723BS", RTL8723BS_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG},
@@ -986,7 +989,8 @@ int wifi_change_fw_path(const char *fwpath)
 
     if (wifi_type[0] == 0)
         check_wifi_chip_type_string(wifi_type);
-    if (0 != strncmp(wifi_type, "AP", 2) || !strcmp(wifi_type, "AP6330")) {
+    //  if (0 != strncmp(wifi_type, "AP", 2) || !strcmp(wifi_type, "AP6330")) {
+        if (0 != strncmp(wifi_type, "AP", 2)) {
         return 0;
     }
+++ b/hardware/realtek/rtkbt/system/etc/bluetooth/rtkbt.conf
@@ -8,4 +8,4 @@ DevClassMajorClass=0x01
 DevClassMinorClass=0x1C
 
 #Indicate USB or UART driver bluetooth
-BtDeviceNode=/dev/rtk_btusb
+BtDeviceNode=/dev/ttyS0

kernel修改

+++ b/kernel/arch/arm/configs/rockchip_defconfig
@@ -303,10 +303,17 @@ CONFIG_USB_HSO=y
 CONFIG_USB_NET_INT51X1=y
 CONFIG_USB_IPHETH=y
 CONFIG_USB_SIERRA_NET=y
-CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y
-CONFIG_RTL8188EU=y
-CONFIG_ESP8089=y
-CONFIG_RKWIFI=y
+CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=n
+CONFIG_CFG80211=y
+CONFIG_MAC80211=y
+CONFIG_SSV6051=m
+CONFIG_SSV6051_P2P=y
+CONFIG_SSV6051_SDIO=y
+CONFIG_WIFI_BUILD_MODULE=y
+CONFIG_RTL8188EU=n
+CONFIG_ESP8089=n
+CONFIG_RKWIFI=m
+CONFIG_RTL8821CS=m
 CONFIG_AP6335=y
+++ b/kernel/drivers/net/wireless/Kconfig
@@ -58,6 +58,7 @@ source "drivers/net/wireless/rockchip_wlan/rtl8189fs/Kconfig"
 source "drivers/net/wireless/rockchip_wlan/rtl8188fu/Kconfig"
 source "drivers/net/wireless/rockchip_wlan/rtl8822bs/Kconfig"
 source "drivers/net/wireless/rockchip_wlan/rtl8822bu/Kconfig"
+source "drivers/net/wireless/rockchip_wlan/rtl8821cs/Kconfig"
+++ b/kernel/drivers/net/wireless/Makefile
@@ -20,4 +20,5 @@ obj-$(CONFIG_RTL8188FU)        += rockchip_wlan/rtl8188fu/
 obj-$(CONFIG_ESP8089)                 += rockchip_wlan/esp8089/
 obj-$(CONFIG_RTL8822BS)        += rockchip_wlan/rtl8822bs/
 obj-$(CONFIG_RTL8822BU)        += rockchip_wlan/rtl8822bu/
+obj-$(CONFIG_RTL8821CS)        += rockchip_wlan/rtl8821cs/
剩下的就是添加wifi对应的驱动
kernel/drivers/net/wireless/rockchip_wlan/rtl8821cs
然后配置下dts对应的wlan  bluetooth,相关的gpio电压

郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的
转载请标明出处:攻城狮2015
有需要可以加VX
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/452427.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端的数据标记协议

文章目录 数据标记协议是什么数据标记协议的作用常见的数据标记协议Open Graph protocol 开放图谱协议基本元数据协议可选元数据结构化属性 —— 元数据的属性多个相同的元数据标签类型元数据的使用方法全局类型使用自定义类型使用对象类型使用歌曲对象类型视频对象类型文章对象…

算法打卡day15|二叉树篇04|110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

算法题 Leetcode 110.平衡二叉树 题目链接:110.平衡二叉树 大佬视频讲解:平衡二叉树视频讲解 个人思路 可以用递归法,计算左右子树的高度差,当超过1时就不为平衡二叉树了; 解法 回顾一下二叉树节点的深度与高度; …

软件测试知识面试题:白盒测试、黑盒测试、测试用例

文章目录 白盒测试1、白盒测试分两类2、白盒测试的四个原则3、白盒测试常用的7类测试 黑盒测试1、黑盒测试的优缺点2、黑盒测试的方法3、黑盒测试的原则 测试用例1、测试用例包含2、设计测试用例所需的文档资料3、采用白盒测试技术设计用例的目的4、采用黑盒测试技术设计用例的…

网络编程套接字(3)——Java数据报套接字(UDP协议)

目录 一、Java数据报套接字通信模型 二、UDP数据报套接字编程 1、DatagramSocket (1)DatagramSocket构造方法 (2)DatagramSocket方法 2、DatagramPacket (1)DatagramPacket构造方法 (2&…

spring启动时如何自定义日志实现

一、现象 最近在编写传统的springmvc项目时,遇到了一个问题:虽然在项目的web.xml中指定了log4j的日志启动监听器Log4jServletContextListener,且开启了日志写入文件,但是日志文件中只记录业务代码中我们声明了日志记录器的日志&a…

HTML静态网页成品作业(HTML+CSS)——电影加勒比海盗介绍设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

数据结构从入门到精通——树和二叉树

树和二叉树 前言一、树概念及结构1.1树的概念1.2 树的相关概念(重要)1.3 树的表示1.4 树在实际中的运用(表示文件系统的目录树结构) 二、二叉树概念及结构2.1二叉树概念2.2现实中的二叉树2.3 特殊的二叉树2.4 二叉树的性质2.5 二叉…

PCB差分通孔的数值建模方法

目录 0 引言 1 基于CST的3D通孔模型 2 通孔模型的近似等效计算 3 利用ADS进行电路仿真分析 4 总结 0 引言 当数据速率超过10Gbps时,PCB上的通孔所带来的寄生参数会成为影响数据误码率的关键因素之一,虽然通过三维电磁场求解器提取过孔的行为模型&…

rust入门(1)创建项目

安装 vscode 安装插件 rust-analyzerNative Debug vscode 配置自动格式化代码 settings.json{"editor.defaultFoldingRangeProvider": null,"[rust]": {"editor.defaultFormatter": "rust-lang.rust-analyzer", // Makes the magi…

Python 井字棋游戏

井字棋是一种在3 * 3格子上进行的连珠游戏,又称井字游戏。井字棋的游戏有两名玩家,其中一个玩家画圈,另一个玩家画叉,轮流在3 * 3格子上画上自己的符号,最先在横向、纵向、或斜线方向连成一条线的人为胜利方。如图1所示…

静态时序分析:SDC约束命令set_output_delay详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 目录 指定延迟值 指定端口、引脚列表 指定参考时钟 简单使用 指定时钟下降沿 指定参考端口、引脚 包含源、网络延迟 指定电平敏感 指定上升、下降沿 指…

Redux Toolkit

本文作者为 360 奇舞团前端开发工程师 阅读本文章前,需要先了解下 redux 的基本概念与用法,Redux Toolkit 是建立在 Redux 基础之上的工具包,因此需要对 Redux 的基本概念有一定的了解,包括 Action、Reducer、Store、Middleware 等…

C#四部曲(知识补充)

Unity跨平台原理 .Net相关 只要编写的时候遵循.NET的这些规则,就能在.NET平台下通用 各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码 跨语言← 跨平台↓ Unity跨平台原理(Mono) c#脚本→MonoC#编…

低压线性恒流LED恒流驱动芯片SM15633EH:用于洗墙灯和线条灯

洗墙灯和线条灯是两种常见的LED照明产品,它们都需要使用LED恒流驱动芯片来确保稳定、可靠的电流供应,从而保证LED的使用寿命和亮度。 对于洗墙灯而言,由于其发出的光线需要覆盖较大的区域,因此需要使用较大功率的LED芯片&#xf…

Linux操作系统与Windows文件互传(FTP)

一、开启Ubuntu下的FTP服务 打开Ubuntu的终端窗口,然后执行如下命令来安装 FTP服务。 sudo apt-get install vsftpd等待软件安装完成后,用输入以下命令打开vsftpd.conf文件 sudo vim /etc/vsftpd.conf 找到下图的两个使能语句改成如图即可(记住保存后再…

新版哥白尼系统快速下载哨兵数据

在新版哥白尼系统下载数据,总是failed或者速度很慢,如何实现MB/s的下载速度,只需要四步就可以解决: 1 登录系统,找到想下载的数据,点开product info按扭,​​​​​​ 2. 找到数据的Product id和Name, #Product id:https://zipper.dataspace.copernicus.eu/odata/v1/P…

Selenium操作浏览器,弹出文件选择框,实现自动选定“目标文件”

前言 本文是该专栏的第20篇,后面会持续分享python爬虫干货知识,记得关注。 我们在使用selenium操作目标页面的时候,可能会遇到如下图所示的情景。 在用selenium操作并点击页面元素的时候,会弹出一个文件选择框,需要我们选择目标文件,并点击确认按钮,目标文件才能上传成…

Stream-JDK8

Stream概念 代码示例 package com.zz.stream;import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors;/*** 使用Stream流* 找出姓张并且是三个字的名字*/ public class Test {public static void main(Stri…

cesiumlab白模效果一

效果 步骤 1、准备shp面数据 2、打开cesiumlab软件转换 选择shp面数据 设置高度,如果shp面中有高度字段,可以用高度字段,如果没有,可以用固定高度 设置贴图,这边用的是第二张效果,当然也可以用自己的贴图…

‘UnityEngine.Application‘ does not contain a definition for isBatchMode

unity 2017.4.37f1. 解决办法: Try to replace Application.isBatchMode with UnityEditorInternal.InternalEditorUtility.inBatchMode