香橙派5plus上跑云手機方案二 waydroid

前言

上篇文章香橙派5plus上跑云手機方案一 redroid(帶硬件加速)說了怎么跑帶GPU加速的redroid方案,這篇說下怎么在香橙派下使用Waydroid。

溫馨提示

雖然能運行,但是體驗下來只能用軟件加速,無法使用GPU加速,所有會很卡。而且Waydroid還依賴于桌面環境wayland,要么插上顯示器使用,要么利用遠程桌面使用。測試adb雖然能連接,但無法使用scrcpy這種遠程工具,看錯誤提示是無法使用硬件解碼。

所以這個方案只做了解吧,我更傾向于使用redroid。不過x86下的Waydroid體驗應該會好很多,支持的GPU也多,用來日常體驗的話可以推薦,但我是用來做逆向,需要arm下的so就無法滿足要求了。

帶GPU加速的鏡像

有人提到可以在rk3588的環境下使用Waydroid并調用GPU渲染,看視頻里操作非常流暢(比redroid流暢的多),aida64顯示的刷新率是144hz。不過可惜的是我在Ubuntu22,5.10的內核下沒測試成功,應該是需要升級6.8的內核,github還提供了對應的armbian的鏡像刷機包,但是我刷到固態硬盤無法正常啟動(有時候有成功啟動了),大家如果有興趣的自己測試一下

參考鏈接

  • https://www.bilibili.com/video/BV1TH4y1T723/
  • https://forum.armbian.com/topic/38184-waydroid-for-rk3588-with-armbian-edge-panthor-kernel-68/
  • https://github.com/WillzenZou/armbian_fork_build/releases

準備工作

安裝pyclip

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

sudo python3 get-pip.py

sudo pip install pyclip --break-system-packages

切換到wayland

不切換的話會出現下面的錯誤

[15:45:37] WAYLAND_DISPLAY is not set, defaulting to "wayland-0"
[15:45:37] Wayland socket '/run/user/1000/wayland-0' doesn't exist; are you running a Wayland compositor?

sudo vim /etc/gdm3/custom.conf修改WaylandEnable=true,

sudo systemctl restart gdm3 然后注銷重新進入

echo $XDG_SESSION_TYPE如果顯示是wayland就可以

如果想在x11里運行也可以,需要使用weston,使用的步驟看:https://github.com/waydroid/waydroid/issues/195,具體我就不測試了,我使用wayland也沒啥問題。

參考鏈接:

  • https://github.com/waydroid/waydroid/issues/771
  • https://linuxconfig.org/how-to-enable-disable-wayland-on-ubuntu-22-04-desktop
啟用psi

這個不確定是否是必須的,不過看到有其他文章(Linux最強安卓模擬器Waydroid最新版!Magisk+Xposed折騰教程)也提到了要開啟,所以建議開啟。

注意內核參數CONFIG_PSI=y需要開啟,如果刷的跟我一樣的Ubuntu22系統,這個參數是已經開啟的:

sudo vim /boot/extlinux/extlinux.conf 在啟用的label的參數后面加一個psi=1

接著重啟后查看sudo cat /proc/cmdline 文件內容,可以看到內核啟動參數多了psi=1

參考鏈接

  • https://github.com/waydroid/waydroid/issues/136
禁用GPU渲染

Waydroid的issue里提到mesa并不支持rk3588的GPU,所以需要修改配置強制使用軟件渲染。

sudo vim /var/lib/waydroid/waydroid_base.prop

將這個文件里的ro.hardware.gralloc=gbmro.hardware.egl=mesa修改成

ro.hardware.gralloc=default ro.hardware.egl=swiftshader

好像重啟wayroid服務,這個就會被改回來,使用的時候注意一下。

參考鏈接

  • https://github.com/waydroid/waydroid/issues/282
  • https://github.com/waydroid/waydroid/issues/776
  • https://github.com/waydroid/waydroid/issues/760

安裝

根據官方文檔,安裝倒是不麻煩,只需要下面幾行命令:

sudo apt install curl ca-certificates -y

curl https://repo.waydro.id | sudo bash

sudo apt install waydroid -y

參考鏈接

  • 官方安裝文檔 https://docs.waydro.id/usage/install-on-desktops
初始化

安裝完成后會提示先讓你用waydroid init初始化鏡像,我測試鏡像下載不下來,還是得自己去網站下載鏡像放到指定目錄下再進行初始化。

先去sourceforge下載需要的system和vendor鏡像,選最新的即可

下載完成后解壓會得到vendor.imgsystem.img兩個文件,一起放到/usr/share/waydroid-extra/images目錄下,在執行sudo waydroid init -f初始化一下

參考鏈接

  • https://sourceforge.net/projects/waydroid/files/images/
遠程桌面

正常安裝完Waydroid服務是已經啟動的,如果沒有啟動可以手動啟動一下。

sudo systemctl status waydroid-container.service

然后就得在桌面環境下操作了,先用echo $XDG_SESSION_TYPE確認一下當前桌面是否使用的wayland,如果顯示的x11請按上面的說明切換到wayland。

這里也可以在遠程桌面的環境下操作,可以先在界面設置里開啟遠程桌面

然后就能在Windows的遠程桌面連接用ip連接到香橙派的Ubuntu,這里有些小問題,比如香橙派鎖屏就會斷開連接,可以看下面參考鏈接里的那篇文章,有提到怎么避免這個問題。

啟動session

然后使用waydroid session start啟動,注意這里不需要加sudo,如果出現Android with user - is ready說明啟動成功。

新打開一個控制臺窗口,用waydroid show-full-ui就能看到桌面環境了,分辨率有點問題,懶得修改了。測試體驗下來確實卡,而且cpu占用很高。

參考鏈接

  • https://losst.pro/en/how-to-enable-remote-desktop-in-ubuntu-22-04-23-10#toc-3-install-the-allow-locked-remote-desktop-extension
開啟adb

adb連接的ip就是waydroid session start啟動時提示的ip,也可以去設置-》關于里查看,端口是5555。

adb connect 192.168.240.112:5555,scrcpy確實是連不上,錯誤如下:

參考鏈接

  • https://docs.waydro.id/faq/using-adb-with-waydroid

錯誤

錯誤信息1

RuntimeError: Command failed: % /usr/lib/waydroid/data/scripts/waydroid-net.sh start

查看錯誤日志waydroid log

(024569) [18:03:09] RuntimeError: Command failed: % /usr/lib/waydroid/data/scripts/waydroid-net.sh start
(027247) [18:10:48] % tail -n 60 -F /var/lib/waydroid/waydroid.log
(027247) [18:10:48] *** output passed to waydroid stdout, not to this log ***
(027672) [18:12:07] % tail -n 60 -F /var/lib/waydroid/waydroid.log
(027672) [18:12:07] *** output passed to waydroid stdout, not to this log ***
(044863) [18:17:38] % /usr/lib/waydroid/data/scripts/waydroid-net.sh start
vnic is waydroid0
iptables v1.8.7 (legacy): can't initialize iptables table `mangle': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
Failed to setup waydroid-net.
iptables v1.8.7 (legacy): can't initialize iptables table `mangle': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
(044863) [18:17:39] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(044863) [18:17:39] NOTE: The failed command's output is above the ^^^ line in the log file: /var/lib/waydroid/waydroid.log
(029602) [18:17:39] org.freedesktop.DBus.Python.RuntimeError: Traceback (most recent call last):File "/usr/lib/python3/dist-packages/dbus/service.py", line 715, in _message_cbretval = candidate_method(self, *args, **keywords)File "/usr/lib/waydroid/tools/actions/container_manager.py", line 34, in Startdo_start(self.args, session)File "/usr/lib/waydroid/tools/actions/container_manager.py", line 138, in do_starttools.helpers.run.user(args, command)File "/usr/lib/waydroid/tools/helpers/run.py", line 58, in userreturn tools.helpers.run_core.core(args, msg, cmd, working_dir, output,File "/usr/lib/waydroid/tools/helpers/run_core.py", line 343, in corecheck_return_code(args, code, log_message)File "/usr/lib/waydroid/tools/helpers/run_core.py", line 219, in check_return_coderaise RuntimeError("Command failed: " + log_message)
RuntimeError: Command failed: % /usr/lib/waydroid/data/scripts/waydroid-net.sh start(029602) [18:17:39] RuntimeError: Command failed: % /usr/lib/waydroid/data/scripts/waydroid-net.sh start
(029666) [18:17:42] % tail -n 60 -F /var/lib/waydroid/waydroid.log
(029666) [18:17:42] *** output passed to waydroid stdout, not to this log ***
(029848) [18:18:00] % tail -n 60 -F /var/lib/waydroid/waydroid.log
(029848) [18:18:00] *** output passed to waydroid stdout, not to this log ***

這個錯誤是由于我用apt-mark holdlinux-image-5.10.0-1009-rockchiplinux-headers-5.10.0-1009-rockchip不要被apt更新,但是linux-modules-5.10.0-1009-rockchip確被更新了,所以不匹配。

只需要重新安裝一遍內核,然后全部設置不更新重啟即可。

sudo apt-mark hold linux-image-5.10.0-1009-rockchip linux-headers-5.10.0-1009-rockchip linux-modules-5.10.0-1009-rockchip linux-rockchip-headers-5.10.0-1009

錯誤信息2

如果在運行waydroid session start的時候一直卡在下面這行,可能就是你沒有修改為軟件渲染, 具體方法見上面的禁用GPU渲染

排查啟動失敗

如果啟動失敗可以看報錯信息,沒有具體的報錯,就看日志信息waydroid log,一般哪一行停止了就是哪個錯誤日志引起的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42882.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pat乙級題解

文章目錄 1~2021 ~ 4041~6061~8081~100101~125 1~20 1001 害死人不償命的(3n1)猜想 B1002 寫出這個數 (20 分) B1003 我要通過! B1004 成績排名 1005 繼續(3n1)猜想 B1006 換個格式輸出整數 B1007 素數對猜想 1008 數組元素循環右移問題 B1009 說反話 1010 一元多項…

linux磁盤分區管理

首先關機狀態下,先配置硬盤 硬盤分區管理 識別硬盤 》分區規劃 》 格式化 》 掛載使用 [rootlocalhost ~]# lsblk 查看硬盤 分區劃分(m幫助, p 查看分區, n 創建分區, d 刪除分區, q 退出, w 保存, g gpt分區) [roo…

絕區陸--大語言模型的幻覺問題是如何推動科學創新

介紹 大型語言模型 (LLM)(例如 GPT-4、LLaMA-2、PaLM-2、Claude-2 等)已展示出為各種應用生成類似人類文本的出色能力。然而,LLM 的一個鮮為人知的方面是它們傾向于“產生幻覺”或生成不正確或沒有根據的事實陳述。我不認為這僅僅是一個限制…

快速排序算法Python實現

快速排序原理和步驟 快速排序是一種高效的排序算法,基于分治法(Divide and Conquer)來實現。其基本思想是通過一次排序將數組分成兩部分,其中一部分的所有元素都小于另一部分,然后遞歸地對這兩部分進行排序。以下是快…

前端構建工具(webpackvite)

這里寫目錄標題 構建工具webpack介紹配置文件簡介entryoutputloaderbabel插件開發服務器(webpack-dev-server)soureMap vite 構建工具 當我們習慣了在node中編寫代碼的方式后,在回到前端編寫html、css、js這些東西會感覺到各種的不便。比如:…

夏季戶外綜合征怎么預防

以下是一些預防夏季戶外綜合征的有效方法: 做好防曬措施: 涂抹高倍數的防曬霜,每隔 2 - 3 小時重新涂抹一次。比如選擇 SPF50、PA 的防曬霜。佩戴寬邊帽子、太陽鏡和遮陽傘,減少陽光直射面部和眼睛。像漁夫帽、大檐帽能有效遮擋陽…

12-阿里云單細胞處理-PBMC(by-jmzeng)

scRNA_10X/seurat-v2/sup-patient1-PBMC.Rmd at master jmzeng1314/scRNA_10X (github.com) s04-運行seurat流程處理一萬個單細胞轉錄組數據并自動化出報告_嗶哩嗶哩_bilibili #section 3已更新#「生信技能樹」單細胞公開課2021_嗶哩嗶哩_bilibili 上傳讀取數據 可以配置租…

模擬型題目

題目類型: 給定操作,允許操作任意次 思路收集: 1.暴力遍歷:如Problem - B - Codeforces 直接讓每一個不同的進行操作 2.歸納:根據模擬來發現規律

RTK_ROS_導航(4):ROS中空地圖的生成與加載

1. 地圖加載 構建空白 Map 如下,以下為python代碼,生成了output_image.pgm 文件 一般你在什么地方運行該代碼,這個文件就生成在什么地方 import numpy as np size = 100 # 單位:m resulition = 0.05 # 單位:mw = round(size / resulition) IMAGE_DATA = np.zeros((w

ChatGPT:Swagger 的疑問

ChatGPT:Swagger 的疑問 這段代碼是做什么的,為什么每個微服務的寫法都一樣 springdoc:api-docs:enabled: true # 1. 是否開啟 Swagger 接文檔的元數據path: /v3/api-docsswagger-ui:enabled: true # 2.1 是否開啟 Swagger 文檔的官方 UI 界面path: /sw…

音視頻解封裝demo:使用libmp4v2解封裝(demux)出mp4文件中的h264視頻數據和aac語音數據

1、README 前言 本demo是使用的mp4v2來將mp4文件解封裝得到h264、aac的,目前demo提供的.a靜態庫文件是在x86_64架構的Ubuntu16.04編譯得到的,如果想在其他環境下測試demo,可以自行編譯mp4v2并替換相應的庫文件(libmp4v2.a&#…

HTTP 范圍Range請求

HTTP 的 Range 請求使客戶端能夠要求服務器僅向其回傳 HTTP 消息的一部分 HTTP 的 Range 請求頭是 HTTP/1.1 協議的一個特性。它允許客戶端請求僅傳輸資源的某個特定部分,而不是整個資源。 適用場景 支持隨機訪問的媒體播放器明確只需大型文件某部分的數據處理工具…

2022 RoboCom 世界機器人開發者大賽-高職組(國賽):智能管家

人上了年紀,記性就會變差,時常不得不翻箱倒柜找東西。智能照護中心現在請你做一個簡單的智能管家程序,把老人家里的東西逐一編號,放進若干個收納箱里。當然收納箱也是有編號的,你的程序要記錄下哪個東西放在哪個收納箱…

R包: phyloseq擴增子統計分析利器

介紹 phyloseq包對多類型數據的綜合軟件,并其對這些數據提供統計分析和可視化方法。 微生物數據分析的主要挑戰之一是如何整合不同類型的數據,從而對其進行生態學、遺傳學、系統發育學、多元統計、可視化和檢驗等分析。同時,由于同行之間需要…

QT學習日記一

創建QT文件步驟 這是創建之后widget.cpp和widget.h文件的具體代碼解釋,也是主要操作的文件,其中main.cpp不用操作,ui則是圖形化操作界面,綜合使用時,添加一個元件要注意重編名和編譯一下,才能在widget這類…

生產者消費者模型和線程同步問題

文章目錄 線程同步概念生產者消費者模型條件變量使用條件變量喚醒條件變量 阻塞隊列 線程同步概念 互斥能保證安全,但是僅有安全不夠,同步可以更高效的使用資源 生產者消費者模型 下面就基于生產者消費者來深入線程同步等概念: 如何理解生產消費者模型: 以函數調用為例: 兩…

[高頻 SQL 50 題(基礎版)]第一千七百五十七題,可回收且低脂產品

題目: 表:Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | low_fats | enum | | recyclable | enum | ---------------------- product_id 是該表的主鍵(具有唯…

SQLite 命令行客戶端 + HTA 實現簡易UI

SQLite 命令行客戶端 HTA 實現簡易UI SQLite 客戶端.hta目錄結構參考資料 僅用于探索可行性&#xff0c;就只實現了 SELECT。 SQLite 客戶端.hta <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; cha…

C語言 | Leetcode C語言題解之第226題翻轉二叉樹

題目&#xff1a; 題解&#xff1a; struct TreeNode* invertTree(struct TreeNode* root) {if (root NULL) {return NULL;}struct TreeNode* left invertTree(root->left);struct TreeNode* right invertTree(root->right);root->left right;root->right le…

LeetCode加油站(貪心算法/暴力,分析其時間和空間復雜度)

題目描述 一.原本暴力算法 最初的想法是&#xff1a;先比較gas數組和cost數組的大小&#xff0c;找到可以作為起始點的站點(因為如果你起始點的油還不能到達下一個站點&#xff0c;就不能作為起始點)。當找到過后&#xff0c;再去依次順序跑一圈&#xff0c;如果剩余的油為負數…