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

 找回密码
 立即注册
楼主: XCray

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

  [复制链接]

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-11-14 09:29:01 | 显示全部楼层
本帖最后由 XCray 于 2022-11-14 09:44 编辑
隔壁的王叔叔 发表于 2022-11-14 09:22
还是不行,蓝牙又死了,bluetoothctl后,输入命令scan on,回复No default controller available ...

展开说说你具体的做法?你经常问题都说的不清不楚的。
这个提示意味着蓝牙芯片没有复位。至于复位的方法,早就是明确的了。

我手上的两个盒子,m401a和cm311-1a目前蓝牙都用着毫无问题

回复

使用道具 举报

10

主题

1328

帖子

4238

积分

论坛元老

Rank: 8Rank: 8

积分
4238
金钱
2910
HASS币
0
发表于 2022-11-14 10:07:53 | 显示全部楼层
XCray 发表于 2022-11-14 09:29
展开说说你具体的做法?你经常问题都说的不清不楚的。
这个提示意味着蓝牙芯片没有复位。至于复位的方法, ...

根据本帖的方法,修改了dtb,配置文件还是2m的,其他操作参考您的其他帖子,现在机器运行11天。刚重启的时候,蓝牙是好的,现在出现了这个这个提示,我去找一下复位方法,看看不重启能否复位成功。
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-11-14 18:08:51 | 显示全部楼层
隔壁的王叔叔 发表于 2022-11-14 10:07
根据本帖的方法,修改了dtb,配置文件还是2m的,其他操作参考您的其他帖子,现在机器运行11天。刚重启的 ...

莫非2m速率还是不够稳定?
回复

使用道具 举报

10

主题

1328

帖子

4238

积分

论坛元老

Rank: 8Rank: 8

积分
4238
金钱
2910
HASS币
0
发表于 2022-11-14 23:46:00 | 显示全部楼层
XCray 发表于 2022-11-14 18:08
莫非2m速率还是不够稳定?

对的.2m的还是死,要么直接用命令行指定速率试试。
回复

使用道具 举报

0

主题

3

帖子

30

积分

新手上路

Rank: 1

积分
30
金钱
27
HASS币
0
发表于 2022-11-16 14:34:21 | 显示全部楼层
compatible = "realtek,rtl8723bs-bt";
小白问个问题为啥加这一行就行了。用的不是RTL8761B芯片吗?
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-11-16 17:39:22 | 显示全部楼层
raise 发表于 2022-11-16 14:34
compatible = "realtek,rtl8723bs-bt";
小白问个问题为啥加这一行就行了。用的不是RTL8761B芯片吗? ...

准确的说,这款芯片的型号是RTL8761BTV,是RTL8761B系列当中的之一。另一个之一是RTL8761BUV。二者的区别是前者是串口UART的、后者是USB的。USB虽然也是串行接口,和原来串口的区别不用说大家都已经足够了解。
RTL8723BS是一款WiFi+BT二合一芯片,其中WiFi部分使用的是SDIO接口、BT部分使用的是UART接口。
~~~~~~~~~
以上是背景。
至于为什么在dtb里用"realtek,rtl8723bs-bt"而不用"realtek,rtl8761b...",把内核与dtb的关系以及各自的作用搞清楚就能明白了。

内核源码中已经有了部分串口蓝牙芯片的驱动,其中realtek的包括realtek,rtl8822cs-bt, realtek,rtl8723bs-bt, realtek,rtl8723ds-bt(对应的compatible字符串)。
https://github.com/unifreq/linux ... ooth/hci_h5.c#L1101

如果dtb里声明了硬件有这3款芯片当中的一款,则相应的驱动就会被加载。

如果在dtb里声明"realtek,rtl8761b...",内核是不认识的,声明了也是白费。

为啥冒名顶替把"realtek,rtl8761b..."说成"realtek,rtl8723bs-bt"能够工作呢?相信略有计算机基础的同学都知道“兼容”这个词儿,没错,就是这款芯片可以兼容内核里"realtek,rtl8723bs-bt"的驱动。

当然,这个兼容可能是不太完善(我猜测这很可能也是34楼反映的不够稳定的原因)。
~~~~~~~~~~~
那么问题来了:如果追求完美的话该怎么办?
把RTL8761BTV完美兼容的驱动程序源码加到内核源码里重新编译、然后就可以在dtb里声明和源码要求匹配的幸好字符串了——这只是纸上谈兵哈,我其实并不会,也没有尝试过。
回复

使用道具 举报

0

主题

3

帖子

30

积分

新手上路

Rank: 1

积分
30
金钱
27
HASS币
0
发表于 2022-11-16 19:41:42 | 显示全部楼层
XCray 发表于 2022-11-16 17:39
准确的说,这款芯片的型号是RTL8761BTV,是RTL8761B系列当中的之一。另一个之一是RTL8761BUV。二者的区别 ...

谢谢,这下搞明白了。其实就是相当于一个驱动能兼容多款蓝牙芯片。我只要反编译dtb在uart_A下面加上
bluetooth {
                                        compatible = "realtek,rtl8723bs-bt";
                                };
这一段然后重新编译,不出意外就能启动蓝牙了。
回复

使用道具 举报

0

主题

3

帖子

30

积分

新手上路

Rank: 1

积分
30
金钱
27
HASS币
0
发表于 2022-11-17 19:08:13 | 显示全部楼层
昨天在emuelec dtb里面加了这一段 似乎不起作用。
serial@ffd24000 {
                compatible = "amlogic, meson-uart";
                reg = <0x0 0xffd24000 0x0 0x18>;
                interrupts = <0x0 0x1a 0x1>;
                status = "okay";
                clocks = <0x15 0x2 0x2f>;
                clock-names = "clk_uart", "clk_gate";
                fifosize = <0x80>;
                pinctrl-names = "default";
                pinctrl-0 = <0x25>;
                phandle = <0xbd>;
                
                bluetooth {
            compatible = "realtek,rtl8723bs-bt";
        };
        };

是否需要把这一段删除?抑或是linux 4.9.269 不支持这个驱动?
bt-dev {
                compatible = "amlogic, bt-dev";
                dev_name = "bt-dev";
                status = "okay";
                gpio_reset = <0x28 0x53 0x0>;
                gpio_hostwake = <0x28 0x55 0x0>;
        };


最后还是改回用启动脚本的方式了。
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-11-17 20:02:31 | 显示全部楼层
raise 发表于 2022-11-17 19:08
昨天在emuelec dtb里面加了这一段 似乎不起作用。

是否需要把这一段删除?抑或是linux 4.9.269 不支持这个 ...

你得先研究明白emuelec所用的内核源码!
回复

使用道具 举报

0

主题

9

帖子

157

积分

注册会员

Rank: 2

积分
157
金钱
148
HASS币
0
发表于 2022-11-20 09:02:16 | 显示全部楼层
XCray 发表于 2022-11-14 18:08
莫非2m速率还是不够稳定?

2m的我用着很稳定,开机十几天了蓝牙还好好的,放音乐什么的都没有问题,这芯片理论支持4m,但4m的配置就算改成81bit的版本,dtb里面波特率也改4m也会在播放几分钟后开始收到乱序包,再过几分钟可能机器就直接卡死了必须强制断电,前面几分钟是完全没问题的,我估摸着要么是芯片需要散热,要么电路硬件有什么缺陷。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-22 06:05 , Processed in 0.341081 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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