聪聪搞机 发表于 2024-8-7 17:45

S905l3b芯片刷armbian系统修复Homeassistant教程

在探索将晶晨S905L3B芯片的机顶盒运行Armbian系统,并成功部署智能家居控制中心Homeassistant的过程中,不少用户遇到了蓝牙连接不稳定的难题。本文旨在针对这一常见问题,详细阐述如何通过一系列步骤修复机顶盒上的蓝牙功能,确保Homeassistant能够顺畅地与各类蓝牙设备通信,实现智能家居的无缝集成与控制。

声明:

由于固件、软件、镜像等持续更新,本文仅代表当前所使用版本的流畅安装记录。行文略长,关键代码处会配以截图展示,请自行对比是否存在差异导致安装失败!如有疏忽之处,还请见谅!刷机有风险,请慎重选择,一切源于本文造成的后果自负,笔者概不负责!

Linux反编译

根据XCray大佬文章需要换用启用了串口uart_A的dtb,网上找或自己编译(我是没有找到只能自己编译);原来的dtb默认都是禁用了这个串口。换dtb后ls /dev/tty*确认串口已出现在系统里。比如ttyAML1;
经过这几天的研究反编译修改meson-gxl-s905l3b-m302a.dtb,串口已经出现ttyAML6



感觉貌似是修复成功了!!!!我需要再测试看看有什么BUG。

操作步骤

首先了解自己是机顶盒用的是那款芯片,我的是螃蟹rtl8761btv。



1.更新系统内核及软件

我是重新安装 的armbian系统,第一步更新系统内核及软件(国外源我没有注释掉,我也没有测试国内镜像源是否会影响蓝牙修复)
命令处输入apt update && apt upgrade -y



2.安装蓝牙软件

在命令行输入armbian-config回车



下面选择箭头所指的选项按回车



等待一下



选择箭头所指的选项按回车



安装完毕



看到这个界面退出即可



3.上传meson-gxl-s905l3b-m302a.dtb文件

将编译好的meson-gxl-s905l3b-m302a.dtb文件上传到以下目录

/boot/dtb/amlogic目录下,原始文件自己备份后,就可以删除上传自己编译的meson-gxl-s905l3b-m302a.dtb文件



4.上传rtl8761b_config文件

将2m波特率的config文件复制到/lib/firmware/rtl_bt/rtl8761b_config.bin,系统自带的config文件备份后删除。



5.查询蓝牙状态

命令处输入systemctl status bluetooth



图示为蓝牙未启动,命令处输入systemctl start bluetooth启动蓝牙,再次查询systemctl status bluetooth



手动按机顶盒开关机键,重启后命令处输入systemctl status bluetooth



命令处输入hciconfig,用于配置和管理蓝牙适配器参数。可以使用hciconfig命令来查看蓝牙适配器的状态



查看蓝牙日志是否正常

正常的如下



下图是不正常的



下图是检查蓝牙是否正常命令



提取Android盒子中兴ZXV10 B860AV3.2-M dtb文件,查询GPIO编号

将668-中兴B860AV3.2-M_S905L3_9.0_EmotnUI艾蒙顿线刷固件包(内有教程及短接点)【亲测】.zip这个文件进行解压,得到中兴B860AV3.2-M_S905L3_9.0线刷包.img文件



提取boot.img

1.将中兴B860AV3.2-M_S905L3_9.0线刷包.img用解包工具进行解包,得到以下文件



2.解压boot.img,使用解包工具对boot.img进行解包得到以下文件



3.boot.img-second文件是gzip压缩后的dt.img,也就是dtb文件



4.将解压后的boot文件修改重命名为dt.img



提取独立的dtb文件

1.Linux系统下,由于包含了当前设备所有的dtb文件,故解压后需要利用extract-dtb提取独立的dtb文件

pip install extract-dtb       #安装extract-dtb
extract-dtb dt.img            #提取dtb文件

命令执行完毕,在执行路径会创建名字为dtb的目录,目录下的文件列表如下



2.转成dts文件

dtc -I dtb -O dts -o 01_dtbdump_Amlogic.dts 01_dtbdump_Amlogic.dtb

就会得到以下文件



3.查询01_dtbdump_Amlogic.dts文件中GPIO编号



XCray大佬原文如下:



其中<0x19>是bank@ff6346c0的phandle,0x53我就猜测是一个引脚编号。

(仿照这个放到armbian的dtb里,没有什么效果。)

然后armbian里用gpioinfo查看,这个bank里有85个引脚,编号0-84,0x53转换成10进制是83,感觉应该是它,于是就各种折腾它,没任何收获。

都快要放弃的时候,忽然注意到之前记录的安卓的/sys/kernel/debug/gpio显示为gpiochip1: GPIOs 410-495,这是86个呀,比armbian里的85多了一个,于是抱着试一下的想法试了试82,果真就是它!

按照大佬的思路,<0x15>是bank@4b0的phandle



然后armbian里用gpioinfo查看,这个bank里有100个引脚,编号0-99,0x63转换成10进制是99



这里500-401也是100



在开心电视助手中连接机顶盒安卓系统,使用ADB Shell中输入 cat /sys/kernel/debug/gpio



安卓的/sys/kernel/debug/gpio显示为gpiochip1: GPIOs 398-500,这是103个呀,比armbian里的100多了三个!



按照大佬说的方法多次测试,各种折腾无果。这是我参照大佬的帖子,目前无法测试出reboot命令重启机顶盒正常使用蓝牙的方法。

https://github.com/ophub/amlogic-s9xxx-armbian/issues/639
https://bbs.hassbian.com/thread-17392-1-1.html
https://bbs.hassbian.com/thread-18366-1-1.html

已知BUG,XCray大佬文章中说的问题,我目前无法解决。

系统不断电reboot后蓝牙无法操作,根据文档,应该在reboot过程中“拉低 BT_RST pin,1s 后,BT controller 才能真正进入 power down 模式”,这样系统重启后才可以继续操控蓝牙。

可是我不知道怎么去“拉低”这个引脚(根据安卓dts判断好像是gpiochip0的83号)。 gpiod装了,试过gpioset,不行(原来没用过这个)。

经过苦苦思索和搜索,搜索和思索,外加尝试,终于搞定了。具体方法见65楼。这样直接reboot重启蓝牙也可以继续工作了。

(以上是大佬原文中问题的解决办法)

1.我目前测试蓝牙存在的问题

1.无法通过reboot命令实现重启时复位蓝牙电路的问题,手动按开关机键可以复位蓝牙电路,实现重启后才可以继续操控蓝牙。

reboot蓝牙用不了



手动按开关机键后蓝牙正常



查询了半天资料,没有公开的资料,感觉只能靠猜测试GPIO的编号!!我提取盒子内的安卓系统dtb,目前GPIO编号已获得还未开展测试。(测试了一段时间我解决不了)



2.以下是我安装Home Assistant Supervised截图

已安装Home Assistant Supervised测试蓝牙正常。



https://www.znds.com/static/image/hrline/2.gif
相关阅读:
电视怎么看2024乒乓球男团体育直播 奥运会奖牌榜及今日看点

s905l3b芯片刷armbian系统设置Homeassistant保姆级教程

月下桥 发表于 2024-8-7 17:45

你好,请问如何更新homeassistant版本

聪聪搞机 发表于 2024-8-7 17:45

月下桥 发表于 2024-8-7 17:45
你好,请问如何更新homeassistant版本

提示有更新了,点一下立即更新就行了

xuqiucheng1111 发表于 2024-8-10 15:38

纯正技术贴大佬级别顶起来!

体检完成都安 发表于 2025-3-18 16:45

因ty1608的armbian系统HDMI不能工作,我提取ty160的安卓dtb文件https://www.znds.com/tv-1258869-1-1.html移植meson-gxl-s905l3b-m302a.dts失败 ,按照deepseek方法把hdmi节点修改后不是语法错误就是编译时错误提示一箩筐,想请教楼主该怎么修改啊?

nisnake 发表于 2025-4-26 16:05

楼主你好,我自己编译meson-gxl-s905l3b-m302a.dts文件始终提示语法错误,就算反编译出来,一字不改在编译也是这样,能否发一份你编译好的meson-gxl-s905l3b-m302a.dtb文件,不胜感激!nisnake@qq.com
页: [1]
查看完整版本: S905l3b芯片刷armbian系统修复Homeassistant教程