瑞芯微 RK356x 基于Android11移植usb接口rtl8723du wifi和蓝牙一体化

news/2025/1/11 14:24:17/

开发环境

平台: 瑞芯微RK356x
操作系统:Android11
WiFi、蓝牙芯片:RTL8723DU
通讯类型:USB协议

RTL8723du介绍

Realtek RTL8723DU是一个高度集成的单片机802.11b/g/n 1T1R WLAN,和一个集成的蓝牙2.1/4.2单片机,USB 2.0多功能。它将一个WLAN MAC、一个支持1T1R的WLAN基带、BT协议栈(LM、LL和LE)、BT基带、调制解调器和WLAN/BT RF结合在单个芯片中。RTL8723DU为一个高性能集成的无线局域网和蓝牙控制器提供了一个完整的解决方案。RTL8723DU WLAN基带实现了1发射和1接收路径的正交频分多路复用(OFDM),并与802.11n规范兼容。其特征包括一个空间流传输,400ns的短保护间隔(GI),空间扩展,以及超过20MHz和40MHz带宽的传输。
在这里插入图片描述
简单来说就是这个芯片是用USB进行通信的,里面集合了wifi和蓝牙这两个功能。RTL8723DU该芯片的wifi或者bt都需要驱动程序才能运行,两者的驱动程序都是分开的,互不干扰。接下来分为wifi移植和蓝牙移植两个部分进行说明。

WiFi部分的移植

内核的配置:

1、配置支持USB设备
在这里插入图片描述

在这里插入图片描述
2、支持WIFI设备

CONFIG_HOSTAP=y
CONFIG_HOSTAP_FIRMWARE=y
CONFIG_HOSTAP_FIRMWARE_NVRAM=y

在这里插入图片描述

3、支持IEEE 802.11

CONFIG_CFG80211_WEXT=y
CONFIG_MAC80211=y

在这里插入图片描述

4、将wifi的驱动程序移植到kernel上并且加载。将驱动包拷贝到kernel/drivers/net/wireless/realtek/路径上
在这里插入图片描述
5、修改当前目录下的Makefile和Kconfig文件

##Makefile
obj-$(CONFIG_RTLWIFI)		+= rtlwifi/
obj-$(CONFIG_RTL8XXXU)		+= rtl8xxxu/
obj-y		+= rtl8723du/
##Kconfig
source "drivers/net/wireless/realtek/rtl8723du/Kconfig"

6、重新编译即可
7、如果在Android系统的终端输入ifconfig -a ,看到有wlan0的wifi节点,证明wifi是成功加载上的了,但是在Android系统的界面上点击打开wifi却没有反应,这个有可能是没有把当前型号wifi的vid和pid添加到系统上。可以如下:

## frameworks\opt\net\wifi\libwifi_hal\rt_wifi_ctrl.cpp
static wifi_device supported_wifi_devices[] = {{"RTL8188EU",	"0bda:8179"},{"RTL8188EU",	"0bda:0179"},{"RTL8723BU",	"0bda:b720"},{"RTL8723BS",	"024c:b723"},{"RTL8822BS",	"024c:b822"},{"RTL8723CS",	"024c:b703"},{"RTL8723DU",	"0bda:d723"},/*添加RTL8723DU的id号进去*/{"RTL8723DS",	"024c:d723"},{"RTL8188FU",	"0bda:f179"},{"RTL8822BU",	"0bda:b82c"},{"RTL8189ES",	"024c:8179"},{"RTL8189FS",	"024c:f179"},{"RTL8192DU",	"0bda:8194"},{"RTL8812AU",	"0bda:8812"},{"RTL8821CS",	"024c:c821"},{"RTL8822CU",   "0bda:c82c"},{"RTL8822CS",   "024c:c822"},{"SSV6051",	"3030:3030"},{"ESP8089",	"6666:1111"},{"AP6354",	"02d0:4354"},{"AP6330",	"02d0:4330"},{"AP6356S",	"02d0:4356"},{"AP6335",	"02d0:4335"},{"AP6255",      "02d0:a9bf"},{"RTL8822BE",	"10ec:b822"},{"MVL88W8977",	"02df:9145"},{"SPRDWL",	"0000:0000"},
};

8、如果没有什么意外的话,应该能像手机一样正常连接wifi了。

蓝牙移植

蓝牙移植貌似比wifi移植难多了,好多文件都需要配置。

首先如果是使用RTL系列的蓝牙模块,他有特定的USB 驱动程序rtk_btusb.c进行与 Realtek 蓝牙芯片通信。

1、将rtk_btusb.c、rtk_btusb.h驱动文件放在kernel/driver/bluetooth路径下。
2、修改Makefile文件

obj-$(CONFIG_BT_RTKBTUSB)       += rtk_btusb.o

3、修改Kconfig

config BT_RTKBTUSBtristate "RTK HCI USB driver"depends on USBhelpRTK Bluetooth HCI USB driver

4、kernel中menuconfig选中该选项
在这里插入图片描述

在这里插入图片描述
内核配置方面就到这里为止,接下来是Android系统方面的配置

1、Android系统对Bluetooth的权限

##Android源码\device\rockchip\rk356x\sepolicy\sepolicy_ebook\bluetooth.te
allow bluetooth mstar_device:chr_file rw_file_perms;
##Android源码\device\rockchip\rk356x\sepolicy_ebook\file_contexts\file_contexts
/dev/rtk_btusb    u:object_r:mstar_device:s0
##Android源码\handware\realtek\rtkbt\vendor\etc\bluetooth\rtkbt.conf#Indicate USB or UART driver bluetooth
BtDeviceNode=/dev/rtkbt_dev
#BtDeviceNode=?/dev/ttyS1:H5

2、重新编译整个SDK包即可。

结论

因为上述的移植过程是基于我的SDK包移植的,有可能在其他的源码包上移植会有点问题。如果可以的话,尽量找原厂或者供应商支持。
而且上述的wifi移植是可以在linux端通用的,亲测有效。但是蓝牙在linux端不行,不知道是不是驱动程序的问题。

驱动资源

WIFI驱动:wifi驱动资源,linux,android通用
蓝牙驱动:蓝牙驱动资源,只有在android下的kernel调通过


http://www.ppmy.cn/news/819821.html

相关文章

Markdown语法

Markdown语法 目录 Markdown语法简介(不需要的朋友可以跳过)Markdown是什么举个例子更为官方的定义Markdown的背景 Markdown可以用来做什么呢? 标题篇效果 这是一级标题这是二级标题这是三级标题这是四级标题这是五级标题这是六级标题 语法另…

HTML 教程(一文彻底搞懂HTML)

目录 HTML 教程- (HTML5 标准) HTML 简介 什么是HTML? HTML 标签 HTML 元素 Web 浏览器 HTML 网页结构 HTML版本 声明 通用声明 中文编码 HTML 编辑器 HTML 编辑器推荐 VS Code HTML 基础- 4个实例 HTML 标题 HTML 段落 HTML 链接 HTML 图像 HTML 元素 HTML …

打印系统开发(56)——打印机驱动程序设计指南

一、打印机驱动程序设计指南(微软) https://docs.microsoft.com/zh-cn/windows-hardware/drivers/print/ 1、GPD 文件简介 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/print/introduction-to-gpd-files 2、PPD 文件 https://docs.…

计算机执行某种操作的命令被称为___,计算机应用基础作业一-答案

《计算机应用基础作业一-答案》由会员分享,可在线阅读,更多相关《计算机应用基础作业一-答案(4页珍藏版)》请在人人文库网上搜索。 1、作业一一、单选题( 40 1分)1、一般认为,世界上第一台电子数字计算机诞生于 。A : 1946年 B :1952年 C : 1959年 D : 1962年 答案: A2…

个人电脑数据的安全防护之------《硬盘的日常保养》

写在前面的话 从去年离职回家到现在也有一段时间了,曾经到昨天为止问过我有关这个问题的朋友有很多,索性今天写篇文档记录一下.省得下次还有朋友问题这样的问题.或者避免还有朋友可能会出现这样的问题.让朋友做到提前预防的目的.从而做到减少重要文件(数据)丢失的损失.现在就索…

个人电脑数据的安全防护之------硬盘的日常保养

写在前面的话 从去年离职回家到现在也有一段时间了,曾经到昨天为止问过我有关这个问题的朋友有很多,索性今天写篇文档记录一下.省得下次还有朋友问题这样的问题.或者避免还有朋友可能会出现这样的问题.让朋友做到提前预防的目的.从而做到减少重要文件(数据)丢失的损失.现在就索…

绘制微型计算机系统组成结构图手绘,目前用电脑绘制卡通漫画大致有两种方法.doc...

目前用电脑绘制卡通漫画大致有两种方法 目前用电脑绘制卡通漫画大致有两种方法。 一种方法是先用传统工具手绘,然后用扫描仪扫描到足够的精度之后再在图像处理软件中进行上色和处理。 另外一种方法就是直接在电脑软件中用鼠标或数位板绘制。如果资金允许&#xff0c…

Qt开发3--Qt5的文件和目录

在这部分Qt5 C编程教程中,我们使用文件和目录。 QFile,QDir和QFileInfo是用于处理Qt5中文件的基本类。QFile提供了一个用于从文件读取和写入文件的接口。QDir提供了对目录结构和它们内容的访问。QFileInfo提供了系统无关的文件信息,包含在文…