首页 > Python资料 博客日记
香橙派5plus上跑云手机方案二 waydroid
2024-07-09 15:00:03Python资料围观180次
前言
上篇文章香橙派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=gbm
和ro.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.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_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 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
,一般哪一行停止了就是哪个错误日志引起的。
本文由博客一文多发平台 OpenWrite 发布!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程