用树莓派4B打造纯ATV 10代替电视盒子

家里的电视买的比较早,“创*“什么的牌子,开机有广告。而且用了几年了,速度比较卡。无法接受的是不让装第三方软件,下定决心要搞一个性能比较猛的盒子了。但是看了一圈,普遍都不再预算范围内。

恰巧工作上用到树莓派4,当然用3也是可以的。理论上两个设备的固件是一样的。那决定用这个设备来尝试一下搭建一台用着还算比较爽的 ATV。

本文大部分参考原文翻译:

https://konstakang.com/devices/rpi4/

首先购买一片树莓派4B,现在买一片低配的版本就可以了,2G的大概在270元左右,还有要买一片红外接收头,100欧的电阻一只(建议安装)。参考网上的接图。

图片来自:

用红外遥控器遥控树莓派(XBMC)

图片中使用了 GPIO18 脚,Raspberry Pi OS 默认定义的引脚是 GPIO17,如果你想要调试 Raspberry Pi OS 环境,那需要注意这一点;我建议你在VCC串接一只R100的电阻并在5V取电,测试效果也不错。如果你没有R100,作为测试你可以在3.3V取电。

遥控接收管有很多型号,他们推荐的TSOP4838或者我推荐的VS1838B都可以,甚至价格更加便宜。

烧录ATV镜像到SD卡;使用 Raspberry PI Imager 就可以了。

https://konstakang.com/devices/rpi3/LineageOS17.1/

以下基本上是对原文 FAQ 的翻译;

Q: 怎样开启开发者模式(Root,终端窗口前提条件)?

A: 设置 -> 关于 -> 点击 ‘Build number’ 若干次。

Q: 开启root权限?

A: 开发者选项 -> Root 权限;不建议开启,你懂的。

Q: 开启终端应用?

A: 开发者选项 -> 本地终端。

Q: 高级重启?

A: 开发者选项 -> 高级重启。

Q: 只看到启动画面,不进入主屏幕?

A: 估计是屏幕不支持适配,试着在Windows下修改 /boot/resolution.txt 里面的分辨率设置. 删除 /boot/resolution.txt 这个文件的话,系统也会尝试多次适配。

Q: 存储空间和SD卡大小不一致?

A: 启动到recovery,参考开启高级重启;重启到TWRP,刷入我们的扩容包。

扩容包下载地址:

https://www.androidfilehost.com/?fid=8889791610682901036

需要你自行复制到U盘或者SD存储。

Q: 没有物理按键?

A: 插键盘

F1 = Home,

F2 = Back,

F3 = Multi-tasking,

F4 = Menu,

F5 = Power,

F11 = Volume down,

F12 = Volume up.

Q: 自己弄一个物理电源按键?

A: GPIO21 和 GND之 间加一个按钮。在设置中开启相关选项即可(需重启生效)。居然这个按钮还支持启动到Recovery(长按有效)。

Q: 在HDMI和3.5之间切换音频?

A: 设置中找到Raspi相关选项,可以切换。并且支持DAC(我没有测试)。

Q: 启用适配红外遥控》

A: 在设置中找到树莓派相关选项,打开相关设置。原文中指定了一个配置文件的页面:

https://github.com/lineage-rpi/android_external_ir-keytable/tree/lineage-17.1/rc_keymaps

其实没啥大用,本文会稍微详细讲解一下:

首先在/boot/下rc_keymap建立一个rc_keymap,注意没有扩展名。文件的格式注意设置为Unix(LF)+UTF-8。Notepad++默认的Windows格式是不会生效的。这一点官方文档上没有强调,困扰了很久。

接下来第一行

type: nec 这里是小写的,很多文档写成了大写,测试下来会报错,但是启动的时候又不会显示这些报错。

最后是键值获取和定义,ATV嘛,肯定有一些普遍的键值,上下左右什么的。

开启root权限,还有本地终端应用,开启IR Remote(这三步必须)。

打开终端,输入:

su ir-keytable -p nec #这步非必须,将遥控协议转为nec,注意是小写。如果你的遥控不能回显,可以试着执行这步。 #Protocols changed to nec 表示成功; Ir-keytable -t #键值检测,非常有用,按ctrl+c退出。

这个时候系统会给出一个提示符,要求你按遥控上的按键。我建议你只安装我们给出的列表顺序按键就可以了。基本上满足ATV的要求了。

首先是方向键上,记录下scancode=后面的值(就是键值)。逐个替换下面的键值,最后保存到 /boot/rc_keymap 这个文件即可。如果你用Windows,可以在移动磁盘里用notepad+新建一个文件,格式要求见上文。

# table lg akb7291, type: nec 0x408 KEY_POWER 0x443 KEY_MENU 0x45b KEY_HOMEPAGE 0x440 KEY_UP 0x406 KEY_RIGHT 0x407 KEY_LEFT 0x428 KEY_BACK 0x441 KEY_DOWN 0x444 KEY_ENTER 0x4aa KEY_ENTER 0x403 KEY_VOLUMEDOWN 0x402 KEY_VOLUMEUP

注意:

1、首先确认你的遥控器是红外遥控,方法是用手机摄像头拍摄一下,如果有光的就是红外遥控。如果是蓝牙的,可以直接用设置-遥控器和配件进行配对,效果也很好。非广告插入,敏感体质请绕行。

2、米家的遥控器使用了自有的协议,解码存在问题;在获取键值过程中通常无效。

3、原文中的KEY_OK没有测试成功,换KEY_ENTER后测试有效。 文中用到了AKB7291这个遥控器,如果你没有把握可以直接买这个。

本文来自 @最爱肉松 的投稿:

https://make.quwj.com/project/358