『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 17076|回复: 112

[技术探讨] 【23年7月更】Armbian 系统 RTL8761BTV 蓝牙的最正确食用方式

  [复制链接]

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

发表于 2022-10-29 08:34:00 | 显示全部楼层 |阅读模式
本帖最后由 XCray 于 2023-7-15 08:51 编辑

之前一通乱试,在M401A和CM311盒子上勉强把蓝牙用起来了,但是总觉得不是正规用法。最近学习有了一点点的收获:
之前在用户空间运行rtk_hciattach 确实是一种陈旧的做法!

更现代的做法是在dtb中增加bluetooth、内核就可以直接加载驱动,理想情况下rfkill还可以在重启时自动重置蓝牙电路。

ophub最新的镜像有了非常大的改进,安装和配置都比原来省事多了,为了避免看我帖子的朋友们走弯路,特意更新一下!
论坛里有没有活着的懂内核serdev驱动、rfkill的?能不能屈尊说说?

现在的做法(2023年7月15日):
0. 用近期的镜像启动安装,用armbian-config安装蓝牙;我用的Armbian_23.08.0_amlogic_s905l3a_bookworm_6.1.36_server_2023.07.01.img.gz,安装后内核等等全面升级到最新版;
1. 反编译dtb、修改dts、在serial@24000部分增加如下bluetooth内容并重新编译为dtb,替换掉原来的dtb:
       bluetooth {
                compatible = "realtek,rtl8723bs-bt";
        };
我知道蓝牙芯片是8761而不是8723,但这里我还是要告诉你不要自作聪明地写成8761...,后面有解释。
2. 将之前用的2m波特率的config文件复制到/lib/firmware/rtl_bt/rtl8761b_config.bin。系统自带的config文件不能用,之前在用户空间操作也有这个问题。

3. 在/lib/systemd/system/bluetooth.service的[Service]部分加一行:
ExecStopPost=/usr/bin/env gpioset 0 82=0
实测很管用,可以很好的解决重启时复位蓝牙电路的问题。

*.* 优势:这种内核直接驱动蓝牙的方式确实比原来的要好!简洁、启动快不说,稳定性也有明显提升——
用2m速率的config文件ha蓝牙集成连续多天运行也不再出现传感器停更的问题了!
而之前顶多能坚持几个小时。

附:我编译的cm311和m401a用的dtb文件以及2m速率的config文件
dtbs&config.zip (30.32 KB, 下载次数: 668) (注意:这个包里只有config文件是推荐的)
这是带着enable-gpios的,可以自己用dtc反编译、找到并删除enable-gpios那一行再重新用dtc编译后替换即可。

看有人犯晕,送佛送到西,我把去掉了无用行的dts和dtb也放上来吧:
cm311 u212.zip (56.05 KB, 下载次数: 600) (注意:这是很久以前编译的dtb,你可以测试,但推荐用系统中的dtb反编译修改后再编译回去)

评分

参与人数 6金钱 +57 HASS币 +10 收起 理由
zheng1112 + 8 膜拜大神!
huaxiu + 2
jjcs + 12 在下对你的景仰犹如滔滔长江之水,连绵不绝.
penguinmm + 5 膜拜大神!
liantianji + 10 论坛有你更精彩!
admin + 20 + 10 高手,这是高手!

查看全部评分

回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-10-29 09:40:01 | 显示全部楼层
ryanh7 发表于 2022-10-29 09:31
不懂。不过既然有enable-gpios,不妨重启后检查一下这个引脚有没有高电平和蓝牙模块的供电情况。 ...

从过程来看,电平一直为高、蓝牙模块也一直没有断电。

需要的是在reboot时这个引脚变为低电平、启动后再变成高电平——按说rfkill就是干这活的,可惜不行
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-10-29 10:29:07 | 显示全部楼层

看了,没啥有用的信息
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-10-29 11:46:35 | 显示全部楼层
本帖最后由 XCray 于 2022-11-1 18:46 编辑

附:dtc简单用法
反编译,即由二进制dtb得到dts源码:
dtc -I dtb -O dts -o target.dts source.dtb
反编译出来的dts删除无用行:
dts.png
编译,即把dts源码编译成二进制的dtb:
dtc -I dts -O dtb -o target.dtb source.dts
回复

使用道具 举报

0

主题

6

帖子

54

积分

注册会员

Rank: 2

积分
54
金钱
48
HASS币
0
发表于 2022-10-31 10:02:50 | 显示全部楼层
大佬 压缩包里两个 dtb U212和M311   M401A用那个
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-10-31 10:38:41 | 显示全部楼层
二高 发表于 2022-10-31 10:02
大佬 压缩包里两个 dtb U212和M311   M401A用那个

我手上的m401a只能用u212,m311那个你也可以试试,有人说能用
回复

使用道具 举报

3

主题

295

帖子

2863

积分

金牌会员

Rank: 6Rank: 6

积分
2863
金钱
2568
HASS币
0
发表于 2022-11-1 16:28:45 | 显示全部楼层
大佬,请教下是包里的config改名rtl8761b_config.bin然后替换/lib/firmware/rtl_bt/rtl8761b_config.bin吗?原来rtlbt里的2个文件动吗?
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-11-1 16:33:04 | 显示全部楼层
iamhyde 发表于 2022-11-1 16:28
大佬,请教下是包里的config改名rtl8761b_config.bin然后替换/lib/firmware/rtl_bt/rtl8761b_config.bin吗 ...

我在主贴里说的很清楚、没有歧义啊,为啥非要我再重复一遍呢?
回复

使用道具 举报

7

主题

1071

帖子

3365

积分

论坛元老

Rank: 8Rank: 8

积分
3365
金钱
2294
HASS币
0
发表于 2022-11-2 10:39:28 | 显示全部楼层
我的401a,用的是e900v22c的dtb,cm311的用不了,修改如下,目前测试正常,感谢大佬。

target.rar

12.57 KB, 下载次数: 169

回复

使用道具 举报

7

主题

1071

帖子

3365

积分

论坛元老

Rank: 8Rank: 8

积分
3365
金钱
2294
HASS币
0
发表于 2022-11-2 10:41:41 | 显示全部楼层
二高 发表于 2022-10-31 10:02
大佬 压缩包里两个 dtb U212和M311   M401A用那个

如果不好用,不妨试试我编译的那个。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-24 10:17 , Processed in 0.063447 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表