NAS玩手游?还能满画质原神?绿联DH4300 Plus 安装云手机实测
ARM架构的RK3588,在安卓云手机上有调教过的驱动和版本,也是目前安卓云手机的重要载体,本文是我尝试在绿联DH4300 Plus上安装云手机的心得。
大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享自己的数码玩耍经验~
极空间之前出过一款便携式NAS——极空间T2S,其中有一个很吸引人的产品特色,就是支持云手机,而且是支持最多6个独立的虚拟安卓手机,根据官方显示农药60fps也是轻松拿捏的。

但是T2S又是一款独特定位的产品,并不适合入门级的新手玩家或者对机械存储有需求的用户,而且其定价对比同样4盘位的Q4并没有优势,所有单独为了云手机购买T2S,又显得有一些浮夸。
所以,我将目光瞄向了同样使用rk3588c处理器的绿联DH 4300 Plus,开始探索它是不是同样支持安卓云手机呢。毕竟千元不到拿下,如果再支持云手机,那真的爽大发了!
带着这个疑问,我开始了折腾之旅!
因此本文权当抛砖引玉,希望各位大佬可以共同开发出DH4300 Plus的云手机玩法,让这台设备含金量再增加,也希望绿联官方可以后续考虑增加云手机的业务,通过官方渠道增加应用~~

一、安卓云手机的几个解决方案
老粉丝应该都知道,之前我出过一期使用高性能NAS虚拟机安装安卓9 x86客户端的教程,那篇文章里最终我是成功跑起来《重返1999》这款游戏的。
但是问题也很多,比如wifi初次连接的难度极高、对arm类游戏不兼容、系统性能损耗高等,虽然一定程度上可以缓解云手机之急,但是长期看肯定不是好方法。
所以我预览了一些云手机的安装思路,大体可以分为以下几点:
1、使用虚拟机安装安卓系统。
2、使用AIC(Android in Container)安装安卓系统。
3、使用redroid容器安装安卓系统。
4、使用Waydroid。
其中,RK3588C主要使用2和3方案,可以获得一般的安卓手机容器化无法获得的高性能,并且直通显卡、处理器能力。
二、云手机的使用方法
虽然两者都是使用容器等虚拟化手段完成云手机的安装。
但是不同于我们常见的web控制,云手机开放的adb端口并不适合使用浏览器直接控制。我们需要使用scrcpy等远程工具投屏使用。
所以想在部署完云手机后,直接在办公室、手机上摸鱼玩耍的朋友,还是先别想了。

三、AIC 测试
🔻官方测试画面

AIC的部署其实很简单,官方有提供一个示例模板,使用了一个安卓12的固件包。大致结构如下所示。

在这里,重点是aic.sh这个脚本工具,里面包含了初始化环境、一键安装容器等指令。这个部署指令就两步,第一步初始化环境,第二步安装容器。
# 初始化环境
./aic.sh -i
# 安装AIC 容器
./aic.sh -r rk3588_固件包.tgz 容器数量
但是,初始化环境这一步里,涉及到了对docker的重新安装,以及iptables nat防火墙的配置。
一旦运行,会导致绿联DH4300 Plus的docker环境崩溃,并且只能通过重置设备来恢复(官方提供的恢复docker的reinstall.sh脚本无法成功)。

那如果跳过初始化这一步呢?没错,我直接尝试了创建安卓镜像,并且使用脚本里的docker run 指令成功创建了容器,正常运行无报错。
等等!无报错不代表正常运行,也有可能是启动失败无日志!虽然容器在运行,端口也透出了,但是adb无法连接,scrpy无法连接,失败。

四、redriod 测试
AIC的失败,让我在.sh脚本和日志中寻找到了一些蛛丝马迹,即rk3588c的内核编译问题,导致一些关键服务无法被容器直通,所以导致安卓云手机启动失败。
🔻redroid docker指令
docker run -d -p 5555:5555 -v ~/redroid-data:/data --restart unless-stopped --name redroid --privileged cnflysky/redroid-rk3588:lineage-20 androidboot.redroid_height=1920 androidboot.redroid_width=1080
回到github,我将目光移到了redroid-rk3588这个项目。作为3588中运行稳定的项目,其拥有envcheck.sh脚本,可以帮助我们快速定位内核问题。

🔻检测脚本结果,缺少核心内核binderfs、dma-buf。
root@DH4300PLUS-B1AB:/volume1/docker/redroid# ./envcheck.sh
========================================
redroid-rk3588 environment check script
========================================
checking kernel config location...
Kernel config: /proc/config.gz
========================================
checking mali gpu driver...
CONFIG_MALI_BIFROST=y
========================================
checking mali firmware...
Mali CSF Firmware exists.
========================================
checking kernel features...
CONFIG_ANDROID_BINDERFS is not enabled in your kernel.
CONFIG_PSI=y
CONFIG_ARM64_VA_BITS=39
========================================
checking binderfs...
binderfs not enabled.
========================================
checking required dma-heap devices...
dma-buf device is not exist.
========================================
Summary
FATAL: required dma-buf heap device missing
FATAL: CONFIG_ANDROID_BINDERFS is not enabled in your kernel
FATAL: At least one of those mandatory kernel features are not met. You must find another kernel built with those features or build a customized kernel by yourself.
首先是dma,经过查询,绿联DH4300 Plus内核中实际有编译了 DMA-BUF 堆支持,并且以非模块化直接编译进了内核,所以通过以下脚本可以解决dma调用的问题。
🔻软连接dma
sudo mkdir -p /dev/dma_heap
sudo ln -s /dev/dma_heap/system /dev/dma_heap/system-uncached-dma32
🔻软连接后的输出结果
zcat /proc/config.gz | grep CONFIG_DMABUF_HEAPS
CONFIG_DMABUF_HEAPS=y
CONFIG_DMABUF_HEAPS_SYSTEM=y
CONFIG_DMABUF_HEAPS_CMA=y
# CONFIG_DMABUF_HEAPS_SRAM is not set
# CONFIG_DMABUF_HEAPS_ROCKCHIP is not set
接着是binderfs,这个经过多次尝试,发现的的确确是缺少了内核模板,而且是安卓云手机运行的必备模块,尝试使用传统的binder也失败。通过咨询deepseek,唯有重新编译内核这一个方案解决。
此外,通过和该项目作者沟通,被告知自带的dma其实也是缺少模块的,虽然不报错,但是用不了,依旧需要在内核里增加rk专门针对3588的模块。

当然,万能的AI也提供了一系列动态加载,或者在目前内核上增加模块的方案。但是考虑到UGOS Pro系统的定制问题,其内核究竟多系统有多少影响就不是我能猜测的了,因此最终为了设备的安全,我没有按照AI提供的方案继续操作下去。

尾声
本文虽然最终以失败告终,但是却为我自己折腾安卓云手机厘清了思路和方案。
关键问题:内核缺少核心模块。
解决方案:祈祷绿联的产品经理大哥下个版本增加内核模块,官方云手机出慢点没事,用户可以先折腾起来。
虽然最终折腾失败了,但是也有可能是因为个人技术能力过弱导致的,毕竟我也不是专业的IT人,尤其是涉及内核这一块更是不敢动,所以可能有会改内核的大佬,可以在现有的系统内核上重新编译模块也不一定。
最后,当然也是希望绿联官方可以注意到对DH4300 Plus的安卓云手机需求~毕竟cpu摆着这里,不做这个云手机真的真的是浪费这块CPU的能力,也能打造出属于自己的型号特色!
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

值友4923354417
校验提示文案
猫仔仔
校验提示文案
猫仔仔
校验提示文案
值友4923354417
校验提示文案