里的电视买的比较早,“创*“什么的牌子,开机有广告;而且用了几年了,速度比较卡。最可恶的是不让装第三方软件;下定决心要搞一个性能比较猛的盒子了。但是看了一圈,普遍都不再预算范围内;
恰巧工作上用到树莓派4,当然用3也是可以的。理论上两个设备的固件是一样的。那决定用这个设备来尝试一下搭建一台用着还算比较爽的ATV;
https://konstakang.com/devices/rpi4/ 本文大部分参考原文翻译;
首先购买一片RPi4,现在买一片低配的版本就可以了,2G的大概在270元左右;还有要买一片红外接收头,100欧的电阻一只(建议安装);参考网上的接图;
图片来自https://shumeipai.nxez.com/2016/01/17/infrared-remote-control-remote-raspberry-pi.html
图片中使用了GPIO18脚, RaspberryOS默认定义的引脚是GPIO17,如果你想要调试RaspberryOS环境,那需要注意这一点;
我建议你在VCC串接一只R100的电阻并在5V取电,测试效果也不错;如果你没有R100,作为测试你可以在3.3V取电;
遥控接收管有很多型号,他们推荐的TSOP4838或者我推荐的VS1838B都可以,甚至价格更加便宜;
烧录ATV镜像到SD卡;使用RaspberryPI 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: I have official 7” LCD display and touchscreen. What should I do?
A: Official 7” touchscreen is only supported using SwiftShader software renderer. See below how to switch between different graphics drivers. You will also need to change display size under Settings -> Display -> Display size (or change ro.sf.lcd_density to 120 in /vendor/build.prop) to adapt to the smaller resolution.
Q: I need to use SwiftShader software renderer to use the official 7” display or I want to boot without any display connected. What should I do?
A: Warning, SwiftShader is a software renderer and using it affects graphics performance. You can switch between MESA and SwiftShader graphics drivers using a settings option found in Settings -> System -> Advanced settings -> Graphics drivers.
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: 在设置中找到Raspi相关选项,打开相关设置;.原文中指定了一个配置文件的页面
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
注意:首先确认你的遥控器是红外遥控,方法是用手机摄像头拍摄一下,如果有光的就是红外遥控;如果是蓝牙的,可以直接用设置-遥控器和配件进行配对,效果也很好;非广告插入,敏感体质请绕行;
注意:米家的遥控器使用了自有的协议,解码存在问题;在获取键值过程中通常无效;
注意:原文中的KEY_OK没有测试成功,换KEY_ENTER后测试有效; 文中用到了AKB7291这个遥控器,如果你没有把握可以直接买这个;