香橙派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/771https://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=gbm和ro.hardware.egl=mesa修改成
ro.hardware.gralloc=default ro.hardware.egl=swiftshader
好像重启wayroid服务,这个就会被改回来,使用的时候注意一下。
参考链接
https://github.com/waydroid/waydroid/issues/282https://github.com/waydroid/waydroid/issues/776https://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.img和system.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 hold让linux-image-5.10.0-1009-rockchip和 linux-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,请你反转链表,并返回反转后的链表。 2.代码实现: //3.反转链表 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <assert.h>typedef int …...
网桥与以太网交换机:功能与区别解析
在传统的共享式局域网中,所有站点共享一个公共的传输媒体。随着局域网规模的扩大、网络中站点数目的不断增加,这样的网络通信负载加重,网络效率急剧下降。随着技术的发展、交换技术的成熟和成本的降低,具有更高性能的交换式局域网…...
动态引用的艺术:在Postman中实现自动化的终极指南
🌀 动态引用的艺术:在Postman中实现自动化的终极指南 在API开发和测试中,Postman是一个强大的工具,它提供的动态引用功能可以帮助我们实现自动化和更高效的测试流程。本文将深入探讨如何在Postman中使用动态引用,通过…...
Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)
目录 一、QVBoxLayout-垂直布局: 1.1QVBoxLayout介绍: 1.2 属性介绍: 1.3细节理解: 二、QHBoxLayout-水平布局: 三、QGridLayout-网格布局: 3.1QGridLayout介绍: 3.2常用方法:…...
图论---无向图中国邮路的实现
开始编程前分析设计思路和程序的整体的框架,以及作为数学问题的性质: 程序流程图: 数学原理: 本质上是找到一条欧拉回路,考虑图中的边权重、顶点的度数以及如何通过添加最少的额外边来构造欧拉回路,涉及到欧…...
Rockchip RK3588 - Rockchip Linux SDK脚本分析
---------------------------------------------------------------------------------------------------------------------------- 开发板 :ArmSoM-Sige7开发板eMMC :64GBLPDDR4 :8GB 显示屏 :15.6英寸HDMI接口显示屏u-boot &a…...
【C++中resize和reserve的区别】
1. resize的用法 改变当前容器内含有元素的数量(size())比如: vector<int> vct;int num vct.size();//之前的元素个数为num vct.resize(len);//现在的元素个数为len如果num < len ,那么容器vct新增len - num个元素&am…...
计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设
本论文的主要研究内容如下: 了解基于Spark的TapTap游戏数据分析系统的基本架构,掌握系统的开发方法,包括系统开发基本流程、开发环境的搭建、测试与运行等。 主要功能如下: (1)用户管理模块:…...
Python面试题:如何在 Python 中进行正则表达式操作?
在 Python 中,正则表达式操作可以通过 re 模块来实现。以下是一些常用的正则表达式操作和示例: 1. 导入模块 import re2. 常见操作和示例 a. 匹配 使用 re.match() 来检查字符串的开头是否匹配某个模式。 pattern r\d # 匹配一个或多个数字 strin…...
C#面:简述什么是中间件(Middleware)?
中间件是组装到应⽤程序管道中以处理请求和响应的软件。 每个组件: 选择是否将请求传递给管道中的下⼀个组件。 可以在调⽤管道中的下⼀个组件之前和之后执⾏⼯作。 请求委托(Request delegates)⽤于构建请求管道,处理每个HTTP请…...
AWS Glue 与 Amazon Redshift 的安全通信配置
1. 引言 在 AWS 环境中,确保服务间的安全通信至关重要。本文将探讨 AWS Glue 与 Amazon Redshift 之间的安全通信配置,特别是为什么需要特定的安全组设置,以及如何正确实施这些配置。 2. 背景 AWS Glue:全托管的 ETL(提取、转换、加载)服务Amazon Redshift:快速、完全…...
nginx访问控制
最近部署consul服务,发现consul认证配置比较麻烦,于是上网查询发现nginx支持路由认证,在此做个记录。 1.Nginx访问控制模块类型 基于IP的访问控制:http_access_module基于用户的信任登录:http_auth_basic_module 2.…...
高效应对网络攻击,威胁检测响应(XDR)平台如何提升企业应急响应能力
在数字化时代,企业面临的网络攻击威胁持续增加,如恶意软件、勒索软件、钓鱼攻击、DDoS攻击等。这些威胁不仅危及企业数据安全、系统稳定,还损害了品牌形象和市场信任。随着云计算、大数据、物联网的广泛应用,企业网络攻击面扩大&a…...
多线程问题
什么是线程 线程是cpu调度和执行的单位,一个程序的运行伴随着的是一个进程的执行,而一个进程是由一个或多个线程来完成的,通过cpu调度资源在很短时间切换主线程和子线程并行,交替执行来做到看似多个线程同时进行的状态࿰…...
自动优化:SQL Server数据库自动收缩配置指南
自动优化:SQL Server数据库自动收缩配置指南 在数据库管理中,随着数据的增删,数据库文件的大小会不断变化,导致空间浪费和性能下降。SQL Server提供了自动收缩功能,帮助数据库文件保持最佳状态。本文将深入探讨如何在…...
华为机考真题 -- 密码解密
题目描述: 给定一段"密文"字符串 s, 其中字符都是经过"密码本"映射的,现需要将"密文"解密并且输出映射的规则 (a - i)分别用(1 - 9)表示;(j - z)分别用(10* - 26*)表示约束:映射始终唯…...
LFM2.5-1.2B-Thinking-GGUF多轮对话效果展示:复杂任务规划与分解
LFM2.5-1.2B-Thinking-GGUF多轮对话效果展示:复杂任务规划与分解 1. 开场亮点 当被问到"帮我策划一次团队建设活动"时,LFM2.5-1.2B-Thinking-GGUF模型展现出了令人惊喜的"思考"能力。不同于简单的一问一答,这个模型能够…...
3天刷完2026最新Java高频面试题(1000 道附答案解析)
2026年金三银四一半儿快要过去了,总结了上半年各类 Java 面试题,初中级和中高级都有,包括 Java 基础,JVM 知识面试题库,开源框架面试题库,操作系统面试题库,多线程面试题库,Tcp 面试…...
3个步骤,让OpenWRT路由器秒变智能应用中心:iStore完全指南
3个步骤,让OpenWRT路由器秒变智能应用中心:iStore完全指南 【免费下载链接】istore 一个 Openwrt 标准的软件中心,纯脚本实现,只依赖Openwrt标准组件。支持其它固件开发者集成到自己的固件里面。更方便入门用户搜索安装插件。The …...
ZeroOmega终极指南:3分钟掌握智能代理规则配置
ZeroOmega终极指南:3分钟掌握智能代理规则配置 【免费下载链接】ZeroOmega Manage and switch between multiple proxies quickly & easily. 项目地址: https://gitcode.com/gh_mirrors/ze/ZeroOmega 还在为网络代理切换而烦恼吗?每次访问不同…...
老旧电脑焕新:OpenClaw+GLM-4.7-Flash在4GB内存设备上的优化运行方案
老旧电脑焕新:OpenClawGLM-4.7-Flash在4GB内存设备上的优化运行方案 1. 为什么要在老旧电脑上部署AI助手? 去年整理书房时,我翻出一台2015年的MacBook Air,4GB内存的配置在当下连浏览器开几个标签页都卡顿。正当准备将它送进回收…...
构建高可用Chatbot UI完整模板:从架构设计到生产环境部署
痛点分析:Chatbot UI开发中的那些“坑” 在动手开发一个Chatbot UI之前,我们得先聊聊那些让开发者头疼的常见问题。如果你做过类似项目,下面这些场景一定不陌生: 状态管理失控:对话历史、用户输入、AI回复状态、连接…...
超长上下文20万字!internlm2-chat-1.8b在Ollama中的高效部署与调用详解
超长上下文20万字!internlm2-chat-1.8b在Ollama中的高效部署与调用详解 想体验一个能记住超长对话、处理20万字文档的AI助手吗?今天,我们就来聊聊如何在Ollama上快速部署和玩转InternLM2-Chat-1.8B这个“小身材、大能量”的模型。它不仅能进…...
Detectron2特征图热力可视化实战:从Faster R-CNN到自定义网络
1. 为什么需要特征图热力可视化 当你训练一个目标检测模型时,有没有遇到过这样的困惑:模型在某些场景下表现很好,但在另一些场景却频频出错?作为算法工程师,我们往往只能看到最终的检测结果,却不知道模型内…...
SEO_网站排名不上去?试试这几个SEO解决办法
SEO:网站排名不上去?试试这几个SEO解决办法 如果你发现自己的网站在百度上的排名一直不上去,你可能正面临着一场SEO战争。SEO,全称搜索引擎优化,是提高网站在搜索引擎结果中排名的关键技术。本文将为你详细探讨一些常见…...
Qwen3-0.6B-FP8效果展示:用‘把这篇技术博客改写成适合小学生理解的版本’实测简化能力
Qwen3-0.6B-FP8效果展示:用‘把这篇技术博客改写成适合小学生理解的版本’实测简化能力 1. 引言:当大模型遇上“小学生”挑战 想象一下,你面前有一篇满是专业术语、复杂逻辑的技术文章,现在需要把它讲给一个小学三年级的孩子听&…...
