香橙派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.mzph.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;如果剩余的油为负数…