RK3588系列适配RTL8852BE驱动指南

前言

前不久适配了RTL8852BE模组,趁热记录下验证WIFI/BT功能以及遇到的问题。别急往下看喜欢我的文章可以在公众号右上角设置为星标

环境准备

PC系统:Windows10

虚拟机:VMware-17

虚拟机系统:Ubuntu-20.04

主控开发板: 飞凌的RK3588

内核: 5.10

系统: ubuntu20.04

无线模组:RTL8852BE

蓝牙协议栈:bluez5.53

模组简介

datasheet里贴的模组简介 alt

RTL8852BE是一款双频WiFi6 WLAN+BTv5.2 Combo的M.2卡

  • 支持20/40/80Mhz带宽的双频2T2R模式PCI
  • 支持802.11ax与OFDMA和MU-MIMO
  • 双模蓝牙支持:同时LE 和BR/EDR
  • 蓝牙支持bluetooth v5.2
  • WiFi是PCIE接口,Bluetooth是USB接口
alt

原理图连接

下图是WiFi部分连接图 alt

alt

可以看到WiFi是3.3v供电,用的是PCIE2.0x1_2

下图是Bluetooth部分连接图

alt 由于飞凌开发板原先板载的是AW9098是UART蓝牙,但是RTL8852BE模组用的是USB蓝牙所以我们要飞线到主控的USB2.0控制器网络上,不然蓝牙无法识别

下图是我将原先开发板底板的原理图进行修改,这么修改的话会将原先USB2.0控制器的USB2.0device将无法正常工作,我们只是验证功能

alt
alt

硬件原理图连接已经很清楚,接下来就是刺激紧张的驱动适配上的工作

WiFi适配工作

设备树

将pcie2x110添加进来

&pcie2x1l0 {
         reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
         vpcie3v3-supply = <&vcc3v3_pcie20>;
         status = "okay";
};

驱动

将厂家提供的驱动放在driver/net/wireless/rockchip/目录下 alt 修改Makefile alt 修改Kconfig alt 修改defconfig alt

编译内核得到8852be.ko alt

WiFi功能验证

首先查看lspci无线网卡是否认到

alt

然后进行驱动加载

insmod 8852be.ko

lsmod可以看到加载成功的8852be.ko

alt

其次ifconfig下可以看到wlan0节点

alt 通过wpa_cli方式进行连接WiFi

/sbin/wpa_supplicant -d -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B
wpa_cli -i wlan0 add_network
wpa_cli -i wlan0 set_network 0 ssid '"WPA2_PSK_TEST"'
wpa_cli -i wlan0 set_network 0 key_mgmt WPA2-PSK
wpa_cli -i wlan0 set_network 0 psk '"11111111"'
wpa_cli -i wlan0 enable_network 0

ping百度正常

alt

BT 适配工作

设备树

将usb2.0添加进来

&usb_host0_ehci {
         status = "okay";                        
};                                      
                                 
&usb_host0_ohci {
         status = "okay";        
};      

驱动

需要注意的是Realtek的模块,不能使用内核自带的驱动btusb.c,需要使用**Realtek自己的驱动 **rtk_bt.c

如果用内核自带的btusb驱动报的错误日志信息,未识别8852的IC,会导致扫描周边的蓝牙设备扫描不出来 alt

接下来我们使用Realtek的驱动步骤

修改Makefile alt

修改defconfig alt

将bluetooth需要加载的固件放在rootfs的/lib/firmware目录下面 alt

Bluetooth功能验证

首先查看lsusb要能识别USB蓝牙 alt

其次查看hciconfig有出来 alt 用bluetoothctl工具进行连接

bluetoothctl
agent on
scan on
pair xx:xx:xx:xx:xx:xx
connect xx:xx:xx:xx:xx:xx

查看连接情况,我连的是我的手机是正常的

alt

总结遇到的问题点

  • 1、使用 内核自带的驱动会出现bluetoothctl扫描不出周边的蓝牙设备,需要使用 Realtek自己的驱动
  • 2、使用Realtek自己的驱动编译进内核使用bluetoothctl工具会出现No default controller available日志,后来改用编译进模块方式进行调试的
  • 3、第一次烧录大包镜像使用bluetoothctl工具会出现No default controller available日志,第一次在脚本里卸载模块在加载模块

作者潘小帅, 是一名Linux底层爱好者,平时写写技术原创文章,徒步,旅游,看电影的爱好,喜欢我的文章可以点赞收藏+关注,感谢你的支持,微信公众号【Linux随笔录】

本文由 mdnice 多平台发布

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值