WIFI 蓝牙驱动

场景需求:适配 rk3568 wifi蓝牙模块,模块型号为rtl8733bu
目前在ubuntu20.04,测试成功

驱动代码

驱动代码分2部分,一部分是wifi,一部分是蓝牙代码

驱动放入 kernel/linux-5.10/drivers/net/wireless/rockchip_wlan ,同时该目录下
MakeFile 增加:

1
2
obj-$(CONFIG_RTL8733BU)	+= rtl8733bu/

Kconfig添加:

1
2
source "drivers/net/wireless/rockchip_wlan/rtl8733bu/Kconfig"

在 Linux_deconfig 中添加:

1
CONFIG_RTL8733BU=y

如果没有deconfig文件,则需要make menuconfig,选择对应配置,然后保存。

  • Bluetooth 代码
    源码地址:

驱动代码放入: kernel/linux-5.10/drivers/bluetooth
MakeFile 增加:

1
2
3
4
obj-$(CONFIG_BT_RTKBT)	+= rtk_bt.o
obj-$(CONFIG_BT_RTKBTCOEX) += rtk_btcoex.o
obj-$(CONFIG_BT_RTKBTMISC) += rtk_misc.o
obj-$(CONFIG_BT_RTKCOEX) += rtk_coex.o

Kconfig添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

config BT_HCISMD
tristate "HCI SMD driver"
help
Bluetooth HCI SMD driver.
This driver is required if you want to use Bluetoth device with
SMD interface.

Say Y here to compile support for Bluetooth USB devices into the
kernel or say M to compile is as a module (hci_smd).

config BT_RTKBTUSB
tristate "RTK HCI USB driver"
depends on USB
help
RTK Bluetooth HCI USB driver

config BT_RTKBT
tristate "RTK HCI USB driver"
depends on USB
help
RTK Bluetooth HCI USB driver

config BT_RTKCOEX
tristate "RTK HCI USB driver"
depends on USB
help
RTK Bluetooth HCI USB driver

config BT_RTKBTMISC
tristate "RTK HCI USB driver"
depends on USB
help
RTK Bluetooth HCI USB driver

同时在 Linux_deconfig 中添加:

1
2
3
4
5
6
7
8
9
10
11
CONFIG_BT_RTKBT=y
CONFIG_BT_RTKCOEX=y
CONFIG_BT_RTKBTMISC=y

# 如果原先使用旧的,需要注释
CONFIG_BT_RTKBTUSB=n
CONFIG_BT_RTL=n

# 关闭原先的内核自带蓝牙驱动
CONFIG_BT_HCIBTUSB=n
CONFIG_BT_HCIUART=n

系统配置

蓝牙驱动包:链接: https://pan.baidu.com/s/1JiLJsildKojJGAVbMZ5kGg
通过和厂商沟通吗,拿到最新的驱动文件包。
固件路径:/lib/firmware/rtl8733bu.bin

测试

ubuntu 可以使用blueman 工具,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看蓝牙设备 硬件地址
hciconfig
# 激活前蓝牙
sudo hciconfig hci0 up

# 扫描蓝牙设备
hcitool scan
hcitool lescan

# bluez工具

sudo bluetoothctl
搜索设备
scan on


遇到问题

  • 编译问题
    驱动目前在内核版本需要5.10以上,如果其他可能得需要老的驱动代码
  • bin 文件无法找到
    需要把驱动代码中“rtl8733bu_config”和“rtl8733bu_fw”放入 /lib/firmware/中
  • 蓝牙加载失败
    蓝牙模块需要手动上电,否则无法正常加载。