香橙派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_cb
    retval = candidate_method(self, *args, **keywords)
  File "/usr/lib/waydroid/tools/actions/container_manager.py", line 34, in Start
    do_start(self.args, session)
  File "/usr/lib/waydroid/tools/actions/container_manager.py", line 138, in do_start
    tools.helpers.run.user(args, command)
  File "/usr/lib/waydroid/tools/helpers/run.py", line 58, in user
    return tools.helpers.run_core.core(args, msg, cmd, working_dir, output,
  File "/usr/lib/waydroid/tools/helpers/run_core.py", line 343, in core
    check_return_code(args, code, log_message)
  File "/usr/lib/waydroid/tools/helpers/run_core.py", line 219, in check_return_code
    raise 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,一般哪一行停止了就是哪个错误日志引起的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/788964.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloudAlibaba Nacos配置中心与服务发现

目录 1.配置 1.1配置的特点 只读 伴随应用的整个生命周期 多种加载方式 配置需要治理 1.2配置中心 2.Nacos简介 2.1特性 服务发现与服务健康检查 动态配置管理 动态DNS服务 服务和元数据管理 3.服务发现 1.配置 应用程序在启动和运行的时候往往需要读取一些配置信…

AI古风插画视频:成都亚恒丰创教育科技有限公司

AI古风插画视频:科技与传统美学的诗意交融 在数字技术的浪潮中,人工智能(AI)以其惊人的学习能力与创造力,正逐步渗透并重塑着艺术的边界。成都亚恒丰创教育科技有限公司其中,AI古风插画视频作为一股清流&a…

Windows 黑暗模式是什么意思?如何开启它?

随着计算机和移动设备的普及,长时间盯着屏幕已经成为现代人生活和工作的常态。为了减轻眼睛疲劳,并在低光环境中提供更舒适的视觉体验,许多操作系统和应用程序都引入了黑暗模式(Dark Mode)。 Windows 黑暗模式就是其中…

Xubuntu24.04之图形界面挂载硬盘(二百六十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

双端队列,双指针

思路: 其实很容易想到是双指针或者双端队列。 我们设置一个type表示当前区间已经有了多少种厨师,同时还需要记录区间中每个元素出现的次数,然后比较棘手的是移动问题了,什么时候移动呢? 我们可以发现当区间当队头元…

静脉分割YOLOV8-SEG

静脉分割,YOLOV8*SEG资源-CSDN文库 首先使用YOLOV8-SEG训练,得到PT模型,然后转换成ONNX,OPENCV的DNN调用,从而摆脱PYTORCH依赖,支持C,PYTHON,ANDROID调用

STM32G474使用HRTIM触发多路ADC采样,通过DMA传输,通过串口打印显示,实现PWM中间时刻采样,避免开关噪声

本工程使用CUBEIDE进行配置以及编译调试,使用的硬件为STM32G474官方开发板NUCLEO-G474RE CUBEIDE配置 HRTIM配置 本章工程使用HRTIM定时器进行ADC的触发,打开主定时器,子定时器A,B,C。(本工程未使用到A与C定时器,配置…

项目进度计划、软件部署、调试方案

项目进度计划 项目计划工期:合计3000日历天完成整体项目交付。 软件部署 办公管理系统是一项复杂、长期的系统工程,为保证业务系统能够顺利地进行实施,必须要制定科学、合理、切实可行的实施计划。一方面要从组织上进行落实,成立强有力的项目领导小组和经验丰富的项目实…

【中台建设-Word资料】企业数字化转型之数据中台架构、大数据支撑平台、资源库建设方案

通过中台建设实现企业能力复用,包括能力整合、业务创新、业务和数据闭环、组织模式演进等。 数字能力整合 企业的数字能力一般包括数字化营销、数字化产品、数字化供应链、数字化生产、数字化运营等。企业的数字化能力的充分利用,从而达到可持续发展。数…

2024年上海市安全员C3证证考试题库及上海市安全员C3证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年上海市安全员C3证证考试题库及上海市安全员C3证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试…

一键式创建GTest TDD测试平台

适用于C GTest测试平台搭建。直接上python脚本。 #!/usr/bin/env python3 # -*- coding: utf-8 -*-import argparse import os import platform import subprocess from xml.etree import ElementTree as ETdefault_root_path "d:\\test\\UTtest"class DeveloperTe…

江苏职教高考 计算机 C语言 复习资料

江苏职教高考计算机专业考试内容为 文化课专业课 其中专业课包含: 计算机原理45分 计算机组维45分 计算机网络60分 C语言 6080分 电子电工90分 具体资料可查看链接 链接:https://pan.baidu.com/s/1OXD-zK4V3NsLLDMwfXcTlA?pwd2822 提取码&…

Matlab|基于改进鲸鱼优化算法的微网系统能量优化管理matlab-源码

目录 一、主要内容 二、部分代码 三、运行结果 四、下载链接 一、主要内容 该程序为《基于改进鲸鱼优化算法的微网系统能量优化管理》源码,主要内容如下: 针对包含多种可再生能源的冷热电联供型微网系统的能量优化问题,为了优化其运行过程…

24小时悬停系留照明无人机技术详解

24小时悬停系留照明无人机是一款专门设计用于提供长时间、高效能照明服务的无人机系统。该系统结合了无人机技术与先进的照明设备,通过系留技术实现无人机的稳定悬停,从而提供连续不断的照明服务。该无人机能够在各种环境条件下进行24小时不间断工作&…

请编写函数,判断一字符串是否是回文,若是回文函数返回值为1,否则返回值为0,回文是顺读和倒读都一样的字符串

int gets_arr(char* p) {int i 0;int j strlen(p) - 1;while (i < j && p[i] p[j]){i;j--;}if (i<j){return 0;}else {return 1;}} int main() {printf("请输入一串字符串\n");char arr[100];gets(arr);int ret gets_arr(arr);if (ret 1){printf(…

Linux文件编程(打开/创建写入读取移动光标)

目录 一、如何在Linux下做开发 1.vi编辑器 2.gcc编译工具 3.常用指令 二、文件打开及创建 三、写入文件 四、读取文件 五、文件“光标”位置 一、如何在Linux下做开发 所谓文件编程&#xff0c;就是对文件进行操作&#xff0c;Linux的文件和Windows系统的文件大差不差…

2024浙江外国语学院汉语桥线上项目 “在杭州,看见更好的中国”开班

7月9日上午&#xff0c;由教育部中外语言交流合作中心主办、浙江外国语学院国际商学院承办的2024汉语桥“在杭州&#xff0c;看见更好的中国”线上项目正式启动。项目负责人何骅老师及汉语桥教师团队&#xff0c;与来自越南、缅甸、日本、俄罗斯的100名学员相聚云端&#xff0c…

无法找到模块“@wangeditor/editor-for-vue”的声明文件

vue3项目中使用wangeditor/editor遇到的问题 开发环境不管红线报错正常使用 打包的时候就会报错了 1.安装依赖 pnpm install --save wangeditor/editor wangeditor/editor-for-vuenext 2.遇到的问题 3.解决方法 在src目录下面创建 wangeditor-types.d.ts 文件 代码如下 de…

高速电吹风方案介绍,多档温度风速调节,转速可达105000RPM

高速电吹风是这几年很火的一种电动小家电&#xff0c;能够在较短时间内完成头发干燥&#xff0c;减少对头发的热损伤。可以通过高速电机和风扇来产生高速风流&#xff0c;迅速将头发表面的水分吹干。高速电吹风通常配有多种档位风速和温度可以设置&#xff0c;用户可以根据需要…

【Python进阶】拷贝、闭包、装饰器,函数分类

目录 一、对象属性和类属性 1、对象属性 2、类属性 二、类方法和静态方法 1、类方法 2、静态方法 3、扩展综合案例 三、深拷贝和浅拷贝 1、浅拷贝 2、深拷贝 3、浅拷贝和深拷贝的区别 四、函数知识 1、函数的定义与调用 2、函数名记录的是引用 3、函数名当作参数…