当前位置: 首页 > news >正文

香橙派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,一般哪一行停止了就是哪个错误日志引起的。

相关文章:

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

前言 上篇文章香橙派5plus上跑云手机方案一 redroid(带硬件加速)说了怎么跑带GPU加速的redroid方案,这篇说下怎么在香橙派下使用Waydroid。 温馨提示 虽然能运行,但是体验下来只能用软件加速,无法使用GPU加速,所有会很卡。而且…...

600Kg大载重起飞重量多旋翼无人机技术详解

600Kg大载重起飞重量的多旋翼无人机是一种高性能的无人驾驶旋翼飞行器,具有出色的载重能力和稳定的飞行特性。该无人机采用先进的飞行控制系统和高效的动力系统,能够满足各种复杂任务的需求,广泛应用于物资运输、应急救援、森林防火等领域。 …...

LlamaFactory可视化微调大模型 - 参数详解

LlamaFactory 前言 LLaMA Factory 是一个用于微调大型语言模型的强大工具,特别是针对 LLaMA 系列模型。 可以适应不同的模型架构和大小。 支持多种微调技术,如全参数微调、LoRA( Low-Rank Adaptation )、QLoRA( Quantized LoRA )等。 还给我们提供了简单实用的命令行…...

最新 Kubernetes 集群部署 + flannel 网络插件(保姆级教程,最新 K8S 版本)

资源列表 操作系统配置主机名IP所需插件CentOS 7.92C4Gk8s-master192.168.60.143flannel-cni-plugin、flannel、coredns、etcd、kube-apiserver、kube-controller-manager、kube-proxy、 kube-scheduler 、containerd、pause 、crictlCentOS 7.92C4Gk8s-node01192.168.60.144f…...

C语言笔记31 •单链表经典算法OJ题-3.反转链表•

反转链表 1.问题 给你单链表的头节点 head&#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 2.代码实现&#xff1a; //3.反转链表 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <assert.h>typedef int …...

网桥与以太网交换机:功能与区别解析

在传统的共享式局域网中&#xff0c;所有站点共享一个公共的传输媒体。随着局域网规模的扩大、网络中站点数目的不断增加&#xff0c;这样的网络通信负载加重&#xff0c;网络效率急剧下降。随着技术的发展、交换技术的成熟和成本的降低&#xff0c;具有更高性能的交换式局域网…...

动态引用的艺术:在Postman中实现自动化的终极指南

&#x1f300; 动态引用的艺术&#xff1a;在Postman中实现自动化的终极指南 在API开发和测试中&#xff0c;Postman是一个强大的工具&#xff0c;它提供的动态引用功能可以帮助我们实现自动化和更高效的测试流程。本文将深入探讨如何在Postman中使用动态引用&#xff0c;通过…...

Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)

目录 一、QVBoxLayout-垂直布局&#xff1a; 1.1QVBoxLayout介绍&#xff1a; 1.2 属性介绍&#xff1a; 1.3细节理解&#xff1a; 二、QHBoxLayout-水平布局&#xff1a; 三、QGridLayout-网格布局&#xff1a; 3.1QGridLayout介绍&#xff1a; 3.2常用方法&#xff1a…...

图论---无向图中国邮路的实现

开始编程前分析设计思路和程序的整体的框架&#xff0c;以及作为数学问题的性质&#xff1a; 程序流程图&#xff1a; 数学原理&#xff1a; 本质上是找到一条欧拉回路&#xff0c;考虑图中的边权重、顶点的度数以及如何通过添加最少的额外边来构造欧拉回路&#xff0c;涉及到欧…...

Rockchip RK3588 - Rockchip Linux SDK脚本分析

---------------------------------------------------------------------------------------------------------------------------- 开发板 &#xff1a;ArmSoM-Sige7开发板eMMC &#xff1a;64GBLPDDR4 &#xff1a;8GB 显示屏 &#xff1a;15.6英寸HDMI接口显示屏u-boot &a…...

【C++中resize和reserve的区别】

1. resize的用法 改变当前容器内含有元素的数量&#xff08;size()&#xff09;比如&#xff1a; vector<int> vct;int num vct.size();//之前的元素个数为num vct.resize(len);//现在的元素个数为len如果num < len &#xff0c;那么容器vct新增len - num个元素&am…...

计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设

本论文的主要研究内容如下&#xff1a; 了解基于Spark的TapTap游戏数据分析系统的基本架构&#xff0c;掌握系统的开发方法&#xff0c;包括系统开发基本流程、开发环境的搭建、测试与运行等。 主要功能如下&#xff1a; &#xff08;1&#xff09;用户管理模块&#xff1a…...

Python面试题:如何在 Python 中进行正则表达式操作?

在 Python 中&#xff0c;正则表达式操作可以通过 re 模块来实现。以下是一些常用的正则表达式操作和示例&#xff1a; 1. 导入模块 import re2. 常见操作和示例 a. 匹配 使用 re.match() 来检查字符串的开头是否匹配某个模式。 pattern r\d # 匹配一个或多个数字 strin…...

C#面:简述什么是中间件(Middleware)?

中间件是组装到应⽤程序管道中以处理请求和响应的软件。 每个组件&#xff1a; 选择是否将请求传递给管道中的下⼀个组件。 可以在调⽤管道中的下⼀个组件之前和之后执⾏⼯作。 请求委托&#xff08;Request delegates&#xff09;⽤于构建请求管道&#xff0c;处理每个HTTP请…...

AWS Glue 与 Amazon Redshift 的安全通信配置

1. 引言 在 AWS 环境中,确保服务间的安全通信至关重要。本文将探讨 AWS Glue 与 Amazon Redshift 之间的安全通信配置,特别是为什么需要特定的安全组设置,以及如何正确实施这些配置。 2. 背景 AWS Glue:全托管的 ETL(提取、转换、加载)服务Amazon Redshift:快速、完全…...

nginx访问控制

最近部署consul服务&#xff0c;发现consul认证配置比较麻烦&#xff0c;于是上网查询发现nginx支持路由认证&#xff0c;在此做个记录。 1.Nginx访问控制模块类型 基于IP的访问控制&#xff1a;http_access_module基于用户的信任登录&#xff1a;http_auth_basic_module 2.…...

高效应对网络攻击,威胁检测响应(XDR)平台如何提升企业应急响应能力

在数字化时代&#xff0c;企业面临的网络攻击威胁持续增加&#xff0c;如恶意软件、勒索软件、钓鱼攻击、DDoS攻击等。这些威胁不仅危及企业数据安全、系统稳定&#xff0c;还损害了品牌形象和市场信任。随着云计算、大数据、物联网的广泛应用&#xff0c;企业网络攻击面扩大&a…...

多线程问题

什么是线程 线程是cpu调度和执行的单位&#xff0c;一个程序的运行伴随着的是一个进程的执行&#xff0c;而一个进程是由一个或多个线程来完成的&#xff0c;通过cpu调度资源在很短时间切换主线程和子线程并行&#xff0c;交替执行来做到看似多个线程同时进行的状态&#xff0…...

自动优化:SQL Server数据库自动收缩配置指南

自动优化&#xff1a;SQL Server数据库自动收缩配置指南 在数据库管理中&#xff0c;随着数据的增删&#xff0c;数据库文件的大小会不断变化&#xff0c;导致空间浪费和性能下降。SQL Server提供了自动收缩功能&#xff0c;帮助数据库文件保持最佳状态。本文将深入探讨如何在…...

华为机考真题 -- 密码解密

题目描述&#xff1a; 给定一段"密文"字符串 s, 其中字符都是经过"密码本"映射的&#xff0c;现需要将"密文"解密并且输出映射的规则 &#xff08;a - i)分别用(1 - 9)表示&#xff1b;(j - z)分别用(10* - 26*)表示约束&#xff1a;映射始终唯…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...