打造一個永遠在線上的低功耗雲手機,使用Android或iOS手機隨時隨地遠端存取。
根據Geekbench跑分資料,Raspberry Pi 4代以後的處理器性能,已經接近一些Android低階機,用來玩不吃3D效能的手機遊戲是可行的。
如果要在Raspberry Pi裝Android,可以利用開發者KonstaKANG維護的LineageOS系統。
論建置雲手機,之前討論過 Linux x86電腦架設雲手機的作法。那這裡為什麼不用Linux + Android模擬器的方案呢?因為那些都是虛擬機,要不然就是容器。
這裡LineageOS的優勢在於是在實體機上執行的,而且系統是ARM架構,沒有x86電腦靠libhoudini轉譯造成的不相容問題,且LineageOS預設狀態下沒有Root。這樣玩遊戲就沒理由說我用模擬器不給玩了吧?除非那些遊戲認為「隨時處在充電狀態」的Android裝置很可疑。
最後的一點是,如果你真的需要特定感測器零件,樹莓派什麼都能買配件來外掛,相機?麥克風?喇叭?GPS?甚至4G模組都有貨!所有元件裝一裝就變成 Pine64 PinePhone了吧。當然,什麼硬體都不裝,作為單純的Android系統載體也行。
1. 材料#
- 樹莓派 x1,需為4代以後,RAM在4GB以上。
- 64GB SD卡x1或是SSD外接盒。LineageOS系統是預設安裝到SD卡,嫌慢的可以將系統寫入到SSD,使用硬碟外接盒,然後再調整cmdline設定USB優先開機。
- KonstaKANG維護的LineageOS映像檔,目前對應Android 14
- 上傳速度在40Mbps(5MB/s)以上的網路,這是720p串流的最低要求。
- HDMI欺騙器x1 + micro HDMI轉HDMI x1。為什麼要有HDMI欺騙器?Android需要有螢幕才能輸出畫面,如果不想接實體螢幕佔空間,那麼HDMI欺騙器是好選擇。
- 鍵盤、滑鼠、螢幕(僅初次設定會用到)
- 內網穿透軟體,例如ZerotTier或TailScale
- 遠端控制軟體,例如Rustdesk、Scrcpy、VNC
2. 安裝LineageOS和Play商店#
樹莓派刷Android參考 這篇文章。
在設定好遠端控制連線之前,先不要拔掉螢幕與鍵盤。
3. 從外網存取樹莓派#
設定 內網穿透軟體,在樹莓派安裝VPN APP。
Android 14應該可以在系統設定 → 網路,設定開機後自動連線到特定VPN。
4. 遠端控制樹莓派Android系統#
要流暢遠端控制,使用Scrcpy或者Rustdesk。Rustdesk需要每次開機後手動啟動,參見 透過RustDesk實現手機遠端控制另一部手機
KonstaKANG的LineageOS系統設定還有一個常駐的VNC服務,雖然圖形效能很爛但可以作為備用遠端存取方案。VNC客戶端可以使用RealVNC Viewer或者Remmina。
Scrcpy需要靠ADB over TCP連線。Scrcpy電腦版客戶端請到 Github下載。手機版的話Android下載「甲殼蟲ADB助手」,iOS下載 Scrcpy Remote。
在LineageOS的系統設定 → 關於平板連按5下,開啟開發人員選項
在開發人員選項啟用ADB偵錯
到系統 → Raspberry Pi Settings,啟用ADB偵錯。這裡會顯示裝置的IP和通訊埠(注意連上VPN後IP可能會變化)
於電腦端開啟終端機,使用adb指令與樹莓派連線,並手動同意
adb connect 樹莓派IP:5555
- 啟動Scrcpy。欲改善無線延遲,降低位元率(bitrate),或是在Android系統設定調低自身解析度到720p以下。
adb devices
scrcpy
- 在確認好樹莓派可以用手機遠端控制後,就可以拔出螢幕,改用HDMI欺騙器替代樹莓派螢幕了。
實測如果用LineageOS 21的內建設定修改螢幕解析度的話,Scrcpy 2.1就連不上了!可能得改用 SecondScreen修改解析度。
LineageOS的螢幕方向可以在系統設定 → 系統 → Raspberry Pi Settings強制修改
LineageOS的軟體鍵盤需要到系統 → 鍵盤 → 實體鍵盤啟用
Scrcpy音效應該不會傳送過來。如果硬要音效,可以用閉源軟體 AudioRelay。