Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
前言
在树莓派 4B 刚发布的时候,我买了一个打算折腾着玩,后来不小心溅上水,当时就开不了机了,我以为坏掉了又买了个新的,结果新的到手后发现旧的树莓派有奇迹般的故事自己好了,于是我就有了两个吃灰的树莓派 4B 🤣。
这段时间在家,发现家里运营商送的电视盒子变得非常卡,而且除了官方商店少数的几个应用,也无法安装第三方应用,盒子自带的一个 USB 接口似乎也被屏蔽了,插 USB 设备没有任何反应,所以几乎没办法折腾刷机什么的。
于是我想到了吃灰的树莓派,虽然性能也不算太强,但比家里的电视盒子应该还是好很多的,于是我就打算将一个树莓派改造成一个电视盒子,用来替代运营商送的电视盒子。
系统选择
一开始我是打算安装 LibreELEC 这个系统的,这是一个使用 kodi 作为前端界面的 Linux 系统,但是尝试了一下之后我就放弃了,主要是它基于 Linux,额外软件的安装比较麻烦,而且操作对于家里人来说学习门槛也有点高了。
最后我决定安装 Android TV 系统,操作更简单,而且软件安装也比较方便。经过一番搜索,我找到了 KonstaKANG 构建的非官方的 LineageOS 系统,这个网站提供了 LineageOS 16-22 多个版本,分别对应了 Android 的 9-15,有普通的 Android 系统,也有 Android TV 系统。我最后选择了 LineageOS 20 版本的 Android TV,因为 21 和 22 版本经我测试发现因为版本太新导致一些国内电视 APP 安装不上(比如当贝市场),更老的版本我没测试,有兴趣的可以试试看。从这里可以下载到对应的系统镜像。
安装与首次启动
系统的安装还是比较简单的,使用刷写工具将镜像写入到 SD 卡内,树莓派插入 SD 卡,连接键鼠,接上电视插电开机就行。
首次启动速度可能比较慢,开机后会进入引导界面,第一步就是要连接蓝牙遥控器,在我之前测试 LineageOS 21 和 22 时,这个界面都可以很简单地跳过,但在 LineageOS 20 这里,似乎不能直接跳过了,据说等待足够久的话还是可以自动跳过的,不过我没试过,而是直接随便找了个蓝牙键盘配对连接一下,就能继续了。
之后便是常规的语言选择、连接网络等操作了,这个界面可能比较卡顿,不用担心,进入系统后会流畅很多,默认的系统主界面十分简洁。左上角的语音和搜索功似乎不能用,不过倒也问题不大。
进一步配置
adb 和 ssh 连接
接下来就要对系统进行一些额外配置了,首先配置 adb 和 ssh 连接,以方便后续的操作:
- 首先进入设置 - 系统 - 关于,拉到最下面,连续点击 Android TV 操作系统版本,直到提示开发者选项已经打开;

- 之后进入设置 - 系统 - 开发者选项,打开 USB 调试、Rooted Debugging 以及 ADB over network;
- 在电脑上安装必要的 adb 工具,之后之后运行
adb connect 192.168.0.7
,记得把 ip 改成树莓派的 ip,第一次连接可能会失败,在电视屏幕上会弹窗询问是否允许 USB 调试,允许以后在电脑上再次尝试连接就能正常连接上了,之后就可以使用各种 adb 命令了,比如adb install package.apk
可以把本地的软件安装包传输到树莓派上并安装;

- 接着配置 ssh 连接,进入设置 - 系统 - Raspberry Pi settings,找到 ssh,打开开关,启用 ssh 服务;

- 连接到 adb 后,运行
adb root
,获取到 root 权限,然后运行adb pull /data/ssh/ssh_host_ed25519_key my_private_key
,来获取到 ssh 私钥,私钥会保存到当前目录,名为my_private_key
,如果直接用这个私钥文件连接树莓派的 ssh 服务,会提示私钥权限太开放,导致无法连接,在 Linux 系统上,要收紧权限,需要运行chmod 600 my_private_key
,表示只有文件所有者才能查看和修改,之后运行ssh -i my_private_key root@192.168.0.7
,就可以连接到 ssh 服务了。
声音输出
这个 LineageOS 系统默认设置的是从 3.5mm 耳机孔输出声音,但是也支持从 HDMI 输出声音,同样进入 之前的 Raspberry Pi settings 界面,找到 Audio devices,便可以选择声音输出设备了,HDMI0 是靠近 TypeC 接口的那个,而 HDMI1 是远离 TypeC 接口的那个。更改输出设备后需要重启系统才能生效。

不过不知是我家电视的问题,还是树莓派的问题,当设置了声音从 HDMI 输出后,如果只关闭电视而不关机树莓派,下一次电视打开后就会没有声音,需要将树莓派系统整个重启一下才行,不过我家的旧电视本来声音就挺差劲的,借着这个机会我直接买了对 3.5mm 接口的小音箱,用来当声音输出,虽然也不是多贵的音箱,但音质还是比老电视自带的好不少的。
遥控器
作为电视盒子,遥控器肯定是必不可少的,如果没有遥控器,其实也可以用键盘操作,一些常用的遥控器操作可以用键盘的 F 键代替:F1 = 主页,F2 = 返回,F3 = 多任务,F4 = 菜单,F5 = 电源,F11 = 音量减,F12 = 音量加。
我在很久之前买过一个便携小键盘,大概是下图这样,打算给 我的 ROG 掌机用,不过后来吃灰了,拿出来用 2.4G 接收器连接到树莓派上,竟然还挺好用,小键盘上方的电视按键基本上都能被正常识别。唯一有问题的按键是左上方的电源键,只能控制关机,不能控制开机,不过电源键下方的 TV 键倒是能正常作为电源键使用,既可以开机又可以关机,当然用这种遥控器控制开关机并不是真正的开关机,只是进入到了待机模式,如果树莓派是处于完全关机的状态下,就只能手动插拔电源才能开机了。

在购物平台上通过关键词「2.4G 遥控器」可以搜到很多类似功能的遥控器,不一定非要按着我的买,不过听说有些遥控器的按键识别可能有问题,这个就需要自己买来测试了。另外这类 2.4G 连接的遥控器在树莓派完全关机的状态下都不能直接开机,这是硬件限制,没有办法。
另外这个 Android TV 也支持 HDMI CEC,可以用一个遥控器同时控制电视和树莓派,不过我家的电视比较老,不支持 HDMI CEC,就没办法演示了。
如果想要用红外遥控器,其实也有办法,可以通过将红外接收器连接到树莓派的 GPIO 接口上,从而使用红外遥控器。这个我没折腾过,这篇博客里有相关的配置过程,感兴趣的可以参考下。
空间扩容
安装完系统后,在设置 - 系统 - 存储空间中可以看到总共可用的存储空间只有大约 7G,这是因为系统的镜像默认只分配了 7G 的大小。我用的 SD 卡是 32G 的,要想使用全部空间,就要进行空间扩容。
- 在这里下载扩容包,复制到树莓派的系统存储内;
- 打开设置 - 系统 - Buttons,打开 Advanced restart,之后打开设置 - 系统 - 重新启动,重启到 Recovery,等待重启进入到 TWRP 界面。这里比较推荐连接鼠标操作,如果遇到鼠标断联等问题,可以试试重新插拔鼠标,实在不行就换一个鼠标。


- 点击 Install,找到刚刚下载的扩容包,选择刷入即可。刷写完成,重启进入 Android TV 系统,就可以看到所有 SD 卡的空间都已经被分配了。
网络连接受限(并未完全解决)
因为网络原因,一些类原生的安卓系统会提示网络连接受限,在此状态下,其实大部分软件也可以正常使用,国内的 APP 也都能正常连接网络,但是会导致 WIFI 无法自动连接,每次重启后都要手动连接。参照这篇博客,连接到 adb 后:
adb shell settings put global ntp_server ntp1.aliyun.com
adb shell settings put global captive_portal_detection_enabled 1
adb shell settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204
之后重启,理论上就可以解决连接受限的问题了,但不知是我操作有误还是其他原因,试了好几次都还是会报连接受限。因为我家的路由器就放在电视旁边,最后我就懒得折腾了,直接用网线连接,一劳永逸解决问题,有线连接网络还更稳定一些,树莓派 4B 自带的无线网卡速度真挺一般的,再加上用的是一个金属外壳,让 WIFI 信号雪上加霜了。
界面缩放
LineageOS 20 版本我遇到了一个界面缩放的 bug,默认是最小缩放比例,而且在设置 - 显示和声音 - 文字缩放这里无法调整,一点开就直接闪退,在 LineageOS 21 和 22 版本上我没有发现有这个 bug。由于我家的电视本身尺寸就不大,最小的缩放比例看着还有有点费劲的,为了解决这个问题,就需要用 adb 命令了。
按照前面的内容,通过 adb 连接到树莓派,之后运行 adb shell wm density 320
,最后面的数字 320 是代表缩放的大小,数值越大说明缩放比例越大,320 是在我家电视上观感比较合适的大小,根据电视的分辨率和尺寸不同,需要按需调整。
不过诡异的是,在我用 adb 调整过缩放大小后,本来会直接闪退的文字缩放设置奇迹般地自己好了,之后就可以直接在这里调整缩放大小了,不需要再用 adb 命令调整缩放了。

时间同步
树莓派 4B 没有自带主板时钟,这会导致每次彻底断电再开机后系统会忘记当前时间,如果系统时间不对的话,我发现有些应用虽然可以正常联网,但有时会无法加载图片和视频之类的资源。虽然可以通过 ntp 服务联网自动同步时间,但我发现开机后往往需要等上好几分钟才能成功同步时间。
为了解决这个问题,我买了个树莓派主板时钟模块,大概是下图这样,也就十几块钱,需要注意的是,模块的型号必须是 DS3231,因为这个型号的模块是这个版本的 LineageOS 明确说明支持的,其他型号的模块可能不支持。

至于安装方式,我找了个树莓派 GPIO 定义图,商家的图片看的不太清楚,开始我还以为是要接到 2 4 6 8 10 引脚上的,结果发现不对,实际上是要接到 1 3 5 7 9 引脚上,也就是我在图中圈出的那几个引脚。


安装好开机后,进入设置 - 系统 - Raspberry Pi settings,找到 Real time clock,选择 DS3231 on I2C,然后重启,系统应该就能从时钟模块上自动读取时间了。如果发现时间还是不对,那可能是时钟模块的时间没有同步,需要手动同步时钟模块的时间:

- 按照前文的方法连接到 ssh;
- 运行
ls /dev/rtc0
查看设备是否被成功识别; - 如果
/dev/rtc0
存在,说明时钟模块已经被成功识别了,接着运行hwclock -w -f /dev/rtc0
来将当前系统时间同步到时钟模块。
如果用的是树莓派 5,应该就不用这么麻烦了,因为树莓派 5 自带了有主板时钟,不过没有主板电池,要想使用树莓派 5 自带的主板时钟,只需安装一个主板电池即可。
日常体验
因为主要打算给家里人用,所以一些更进阶的东西,比如 google play 服务、magisk 之类的,我就不折腾了,大概率也用不到。
一段时间用下来,用树莓派 4B 当电视盒子,体验比运营商送的盒子要好一些,但还算不上完美。
视频解码能力方面,树莓派 4B 是可以比较流畅地播放 1080p 视频的,4K 视频就有些吃力了。相比之下,运营商送的盒子,用同样的软件播放同样的 1080p 视频,经常卡到动不了。考虑到我家的电视比较老,分辨率也只有 1080p,所以这样的视频播放能力完全够用。听说树莓派 5 的视频解码能力要强很多,可以流畅播放 4K 视频,因为我手上没有,是真是假就不得而知了。
另外这个树莓派电视盒子,对一些软件的兼容性似乎还有些问题。比如我想播放存放在阿里云盘里的视频,因为我有阿里云盘的第三方权益包,我开始尝试了一些支持阿里云盘第三方权益的电视端软件,比如网易爆米花和小白云盘,结果发现这些软件在树莓派电视盒子上都特别的卡,相比之下体积更臃肿,界面更复杂的阿里云盘官方电视端运行反而十分流畅。
我还尝试过 B 站的客户端,官方的客户端有一点卡,但还没到完全没法用的地步,并且视频播放还是比较流畅的,比较难受的是相比手机端缺失了一些功能,我又尝试了一下一个第三方的 B 站电视端软件 BBLL,这个软件实现了大部分手机端常用的功能,还是比较好用的,并且界面也流畅很多,但是在视频播放方面我遇到了一些问题,有一部分视频播放比较流畅,但另一部分却很卡,关于什么样的视频播放起来会卡,暂时还没发现规律,我在设置中把解码相关的选项每个都试了下,好像也没效果,而且同一个视频,在 BBLL 播放会卡,在官方客户端播放就很流畅,具体原因就不清楚了(另外,今年的春晚我就是用树莓派电视盒子在 BBLL 上看的,运气比较好,直播十分流畅)。
总的来说,我个人觉得,除非是像我一样在手里吃灰,否则我是不太推荐用树莓派当作电视盒子的,因为树莓派并不是专门设计用来当电视盒子的,所以会存在一些小问题,而且在相同价位,完全可以买到性价比更高的替代品,也可以买回来自己刷机。不过对于我家目前的情况来说,用树莓派当电视盒子还是比较够用的。
> 关注 少数派小红书,感受精彩数字生活 🍃
> 实用、好用的 正版软件,少数派为你呈现 🚀