快轉到主要內容

Waydroid + Weston + Scrcpy以headless模式執行Android APP

分類   資訊科技 虛擬機與容器技術
標籤   Raspberry Pi Waydroid Cloud Gaming Wayland
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

我一直想嘗試在Raspberry Pi 5跑雲手機的方案,並希望能跟Linux共存。

ARM版的ReDroid是值得考慮的方案之一,它對headless環境的適應性較強。

本篇要測試Waydroid在headless環境的執行效果。

之前寫過一篇在Raspberry Pi 5安裝Waydroid跑Android的操作,但那是接上實體螢幕才做到的。其實Waydroid不用接螢幕也能跑,只是設定就會變很複雜了。

它可以在headless模式執行,只要Wayland合成器支援虛擬輸出就行,這樣我們就能用Scrcpy遠端存取Waydroid的畫面。什麼合成器支援healdess模式?Weston、Kwin、Sway都有支援。

1. 環境
#

  • Raspberry Pi 5
  • Raspberry Pi OS Bookworm
  • Waydroid Android 11
  • Arch Linux GNOME Wayland 用於遠端操控

參見 這篇了解如何在Raspberry Pi 5安裝Waydroid,必須接實體螢幕設定好Waydroid,確認GPU加速一切正常後再往下。

2. 嘗試用Scrcpy連線到Waydroid畫面
#

  1. 此時的樹莓派是沒有接任何實體螢幕的

  2. 安裝Weston

sudo apt install weston
  1. 以headless後端啟動Weston
weston --backend=headless-backend.so --use-gl &

export WAYLAND_DISPLAY="wayland-1"
  1. 在Weston的DISPLAY啟動Waydroid
sudo systemctl start waydroid-container
waydroid show-full-ui
  1. 使用指令查看Waydroid IP
sudo waydroid shell
ip addr
  1. 在樹莓派開啟ADB連線,連接到同一個裝置的Waydroid
adb connect 192.168.1.240:5555
  1. 再啟動Scrcpy。因為Waydroid無法讓外網連接,我使用的是架設個網頁版 ws-scrcpy。ADB顯示有連線,理論上應該看得到Waydroid畫面。但…黑螢幕,可能是Scrcpy本身有問題?

3. 改用WayPipe存取Waydroid畫面
#

此時的樹莓派是沒有接任何實體螢幕的。不存取Android畫面,而是將整個Weston畫面拉過來。

這個比較技術性一點,因為要先取得Waydroid真正的畫面,所以我們得使用WayPipe。又WayPipe使用不是很友善,因其要求兩邊都得是Wayland,之後我們會把WayPipe的操作轉為X11 Forwarding。

  1. 設定 WayPipe,將遠端的Weston視窗拉到本機Linux
waypipe ssh -C user@樹莓派IP weston
  1. 這樣我們就可以存取Raspberry Pi的Weston,再從中啟動Waydroid畫面
waydroid show-full-ui
  1. 因為SSH加密,延遲有點高,不過GPU加速有成功!

  2. Weston本身可在X11環境使用,所以使用X11的用戶可擺脫WayPipe,改用X11 Forwarding了來開啟Waydroid視窗了。

ssh -X user@樹莓派IP weston

4. 結論
#

headless的設定還不如HDMI欺騙器要簡單高效。

參考資料
#

相關文章

樹莓派同時裝Linux與Android APP ~ Waydroid安裝教學
分類   資訊科技 虛擬機與容器技術
標籤   Raspberry Pi Waydroid Android Linux
如何在ARM架構樹莓派跑x86程式:Box86+Box64使用教學
分類   資訊科技 虛擬機與容器技術
標籤   Box86 Box64 Raspberry Pi
Windows 11用WSL跑Linux的Android容器「Waydroid」
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid Windows Subsystem for Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。