編注:我們會不定期挑選 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 上看的,運氣比較好,直播十分流暢)。
總的來說,我個人覺得,除非是像我一樣在手里吃灰,否則我是不太推薦用樹莓派當作電視盒子的,因為樹莓派并不是專門設計用來當電視盒子的,所以會存在一些小問題,而且在相同價位,完全可以買到性價比更高的替代品,也可以買回來自己刷機。不過對于我家目前的情況來說,用樹莓派當電視盒子還是比較夠用的。
https://sspai.com/post/96764?utm_source=wechat&utm_medium=social
作者:so1ar
責編:廣陵止息
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.