rtl8821ce 在 Ubuntu 中配置蓝牙

rtl8821ce 在 Ubuntu 中配置蓝牙

问题

又填一E480的大坑!
rtl8821ce集成蓝牙与wlan功能,Win10系统可以正常工作,Ubuntu蓝牙失效(一开始wifi也没有)。找不到蓝牙适配器。

解决

在forum上找到了大佬的解决方法。

1.下载内核源码,修改drivers/bluetooth/btrtl.c,覆盖掉8821A的相关代码:

line 30:

#define RTL_EPATCH_SIGNATURE	"Realtech"
#define RTL_ROM_LMP_3499	0x3499
#define RTL_ROM_LMP_8723A	0x1200
#define RTL_ROM_LMP_8723B	0x8723
#define RTL_ROM_LMP_8821A	0xFFFF //blocked for 8821c
#define RTL_ROM_LMP_8821C	0x8821
#define RTL_ROM_LMP_8761A	0x8761
#define RTL_ROM_LMP_8822B	0x8822

这里我添加了一个RTL_ROM_LMP_8821C的宏定义,因为8821A和8821C的LMP子版本号都是8821,所以为了能用C尾缀的需要把A尾缀的值改成别的。
然后把后面的代码分别添加上RTL_ROM_LMP_8821C的相关内容:

line 83:

//添加8821C的project_id = 10
static const struct {
	__u16 lmp_subver;
	__u8 id;
} 
project_id_to_lmp_subver[] = {
	{ RTL_ROM_LMP_8723A, 0 },
	{ RTL_ROM_LMP_8723B, 1 },
	{ RTL_ROM_LMP_8821A, 2 },
	{ RTL_ROM_LMP_8821C, 10 },
	{ RTL_ROM_LMP_8761A, 3 },
	{ RTL_ROM_LMP_8822B, 8 },
};

line 337:

//添加8821C的配置文件路径
switch (lmp_subver) {
	case RTL_ROM_LMP_8723B:
	cfg_name = "rtl_bt/rtl8723b_config.bin";
	break;
	case RTL_ROM_LMP_8821A:
	cfg_name = "rtl_bt/rtl8821a_config.bin";
	break;
	case RTL_ROM_LMP_8821C:
	cfg_name = "rtl_bt/rtl8821c_config.bin";
	break;
	case RTL_ROM_LMP_8761A:
	cfg_name = "rtl_bt/rtl8761a_config.bin";
	break;
	case RTL_ROM_LMP_8822B:
	cfg_name = "rtl_bt/rtl8822b_config.bin";
	config_needed = true;
	break;
	default:
	BT_ERR("%s: rtl: no config according to lmp_subver %04x",
	hdev->name, lmp_subver);
	break;
}

line 457:

//添加8821C的固件路径
switch (lmp_subver) {
	case RTL_ROM_LMP_8723A:
	case RTL_ROM_LMP_3499:
	return btrtl_setup_rtl8723a(hdev);
	case RTL_ROM_LMP_8723B:
	return btrtl_setup_rtl8723b(hdev, lmp_subver,
	"rtl_bt/rtl8723b_fw.bin");
	case RTL_ROM_LMP_8821A:
	return btrtl_setup_rtl8723b(hdev, lmp_subver,
	"rtl_bt/rtl8821a_fw.bin");
	case RTL_ROM_LMP_8821C:
	return btrtl_setup_rtl8723b(hdev, lmp_subver,
	"rtl_bt/rtl8821c_fw.bin");
	case RTL_ROM_LMP_8761A:
	return btrtl_setup_rtl8723b(hdev, lmp_subver,
	"rtl_bt/rtl8761a_fw.bin");
	case RTL_ROM_LMP_8822B:
	return btrtl_setup_rtl8723b(hdev, lmp_subver,
	"rtl_bt/rtl8822b_fw.bin");
	default:
	BT_INFO("rtl: assuming no firmware upload needed.");
	return 0;
}

2.编译为btrtl.ko,替换掉系统原模块(记得备份一下以免需要还原的时候找不到了~~);
3.把8821C的配置文件和固件放到/lib/firmware/rtl_bt下;
4.重启,enjoy it!

最后是已经配置好的驱动。
bt_8821ce.tar.bz2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值