当前位置:   article > 正文

RK3588系列适配RTL8852BE驱动指南

rtl8852be

前言

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

环境准备

PC系统:Windows10

虚拟机:VMware-17

虚拟机系统:Ubuntu-20.04

主控开发板: 飞凌的RK3588

内核: 5.10

系统: ubuntu20.04

无线模组:RTL8852BE

蓝牙协议栈:bluez5.53

模组简介

datasheet里贴的模组简介

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接口

原理图连接

下图是WiFi部分连接图

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

下图是Bluetooth部分连接图


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

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

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

WiFi适配工作

设备树

将pcie2x110添加进来

&pcie2x1l0 {
         reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
         vpcie3v3-supply = <&vcc3v3_pcie20>;
         status = "okay";
};
  • 1
  • 2
  • 3
  • 4
  • 5

驱动

将厂家提供的驱动放在driver/net/wireless/rockchip/目录下

修改Makefile

修改Kconfig

修改defconfig

编译内核得到8852be.ko

WiFi功能验证

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

然后进行驱动加载

insmod 8852be.ko
  • 1

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

其次ifconfig下可以看到wlan0节点


通过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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

ping百度正常

BT 适配工作

设备树

将usb2.0添加进来

&usb_host0_ehci {
         status = "okay";                        
};                                      
                                 
&usb_host0_ohci {
         status = "okay";        
};      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

驱动

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

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

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

修改Makefile

修改defconfig

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

Bluetooth功能验证

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

其次查看hciconfig有出来

用bluetoothctl工具进行连接

bluetoothctl
agent on
scan on
pair xx:xx:xx:xx:xx:xx
connect xx:xx:xx:xx:xx:xx
  • 1
  • 2
  • 3
  • 4
  • 5

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

总结遇到的问题点

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

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

本文由mdnice多平台发布

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/830245
推荐阅读
相关标签
  

闽ICP备14008679号