真切需要在树莓派上运行ReDroid的简洁方法总结
今天我尝试在Raspberry Pi 4B (4GB)上运行ReDroid,分别尝试的系统环境:
Raspberry OS (debian 13 bookworm) - 缺少内核模块,从Redroid-module仓库编译以及dkms的尝试均报错失败,完全无法使用。
Ubuntu 22.04.3 LTS aarch64 - 按照指引成功配置并运行了Redroid。但是有显著问题:图形性能极低,连系统界面都会频繁崩溃,同样属于“完全无法使用”的范畴。
- 尝试在运行容器时添加".....gpu_mode=host"参数:可以启动容器,并能通过docker attach进入安卓的终端,但无法通过adb连接。很显然是不支持。
我通过在ubuntu中运行top发现,应用崩溃的原因纯粹是因为cpu占用满了(每一次打开应用时,崩溃之前能运行多久是随机的;崩溃之前一切看上去除了慢都是正常的)
树莓派4B是绝对拥有流畅运行安卓的性能的,但我今天从3pm到3am连续折腾了12小时,仍无法在ReDroid中成功登录qq,感到非常失望。
阅读了之前有关相同主题的issue,这个问题似乎存在自行编译linux内核等解决方案;然而本人技术和理解能力有限,并且我的机器还要用来运行除了安卓之外的其他东西,十分需要有人为我总结一下需要做的事。
问题的迫切性:树莓派可谓是最为知名常用的小型个人服务器,并且处理器原生就是arm64,完全无需考虑转译、兼容性之类的问题。然而,经过我大半周时间的检索,无法找到任何一个适用于树莓派的安卓模拟器方案。
虽然与本项目毫无关系,但我仍然希望您能够简单看一眼这个:https://github.com/Mrs4s/go-cqhttp/issues/2471 希望您能理解我作为低技术力用户像无头苍蝇一样四处寻找解决方案,却处处碰壁的无奈。
总之:大佬,怎么解决树莓派跑redroid的性能问题啊!(指具体解决方法)
如果只是运行QQ,那么我曾经在11版本的redroid中成功运行QQ,不知这个版本的你是否有尝试。
如果只是运行QQ,那么我曾经在11版本的redroid中成功运行QQ,不知这个版本的你是否有尝试。
分别尝试过了11与9版本,均因为同样原因失败
发现一个workaround:redroid_fps=1 不过更好的方案似乎是让安卓在卡顿时不关闭应用
复议!!或者有没有大神能不能解释一下为什么都是原生的ARM64框架,却不能流畅运行安卓?
没有调用gpu 用cpu渲染 树莓派的cpu 并不算很强,可以直接刷如安卓系统不是更好吗, 换一句话很多人在用rk3588 适配g610 价格差不多
我在Raspberry Pi 5 (Raspberry Pi OS Debian 12) 成功執行了Android 11的映像,並且GPU加速有起來。

從zcat /proc/config.gz指令的輸出來看,Raspberry Pi 5的kernel已經啟用BINDER設定了,所以不用安裝binder module。
Waydroid運行需要4K Page和PSI:
# 檢查4K Page與PSI狀態
getconf PAGESIZE
ls /proc/pressure
# 啟用4k Page
echo '# 4k pages
kernel=kernel8.img
'| sudo tee -a /boot/firmware/config.txt
sudo sed --follow-symlinks -i 's/quiet/psi=1 quiet/g' /boot/firmware/cmdline.txt
sudo reboot
# 安裝Waydroid
sudo apt install curl ca-certificates -y
curl https://repo.waydro.id | sudo bash
sudo apt install waydroid
# 測試Waydroid能否使用
但是不能讓Waydroid開機運行:
sudo systemctl disable waydroid-container
sudo reboot
最後再部署ReDroid,docker-compose如下:
version: "3"
services:
redroid:
image: redroid/redroid:11.0.0-latest
stdin_open: true
tty: true
privileged: true
ports:
- "5555:5555"
volumes:
- ./redroid-11-data:/data
command:
- androidboot.redroid_gpu_mode=host
OS Debian 12) 成功執行了Android 11的映像,並且GPU加速有起來。
你好,请问您是如何让gpu工作的,我按照您的教程操作 最后使用scrcpy连接会黑屏(或者根本不出现窗体)。如果将gpu模式从host改成guest就可以正常运行了,但是性能较差。
OS Debian 12) 成功執行了Android 11的映像,並且GPU加速有起來。
你好,请问您是如何让gpu工作的,我按照您的教程操作 最后使用scrcpy连接会黑屏(或者根本不出现窗体)。如果将gpu模式从host改成guest就可以正常运行了,但是性能较差。
需要先確保樹莓派有啟用V3D驅動。我使用Raspberry Pi OS,在RPI5上應該是開箱即用的。
https://forums.raspberrypi.com/viewtopic.php?t=365534
再用vulkaninfo --summary確認V3D驅動有工作,ReDroid才能使用GPU。
OS Debian 12) 成功執行了Android 11的映像,並且GPU加速有起來。
你好,请问您是如何让gpu工作的,我按照您的教程操作 最后使用scrcpy连接会黑屏(或者根本不出现窗体)。如果将gpu模式从host改成guest就可以正常运行了,但是性能较差。
需要先確保樹莓派有啟用V3D驅動。我使用Raspberry Pi OS,在RPI5上應該是開箱即用的。
https://forums.raspberrypi.com/viewtopic.php?t=365534
再用
vulkaninfo --summary確認V3D驅動有工作,ReDroid才能使用GPU。
感谢您的回复 我也使用的是Raspberry Pi OS
vulkaninfo --summary有输出
但是我用scrcpy连上来就很奇怪,只有一大坨粉色
还有一些android后端的截图
感谢您的回复 我也使用的是Raspberry Pi OS vulkaninfo --summary有输出
vulkaninfo輸出的內容顯示你並沒有開啟V3D,裡面只有llvmpipe,代表軟解碼。
正常輸出應該包含以下內容:
GPU0:
apiVersion = 1.2.255
driverVersion = 23.2.1
vendorID = 0x14e4
deviceID = 0x55701c33
deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
deviceName = V3D 7.1.7
driverID = DRIVER_ID_MESA_V3DV
driverName = V3DV Mesa
driverInfo = Mesa 23.2.1-1~bpo12+rpt3
conformanceVersion = 1.3.6.1
每個開發板設定不一樣,RPI5可以透過在/boot/firmware/config.txt添加dtoverlay=vc4-kms-v3d,啟用V3D。
V3DV Mesa
你好,谢谢您的回复,虽然听起来很奇怪,但是我检查了config.txt发现它实际上是有这一行的。 config.txt见下
# For more options and information see
# http://rptl.io/configtxt
# Some settings may impact device functionality. See link above for details
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
# Additional overlays and parameters are documented
# /boot/firmware/overlays/README
# Automatically load overlays for detected cameras
camera_auto_detect=1
# Automatically load overlays for detected DSI displays
display_auto_detect=1
# Automatically load initramfs files, if found
auto_initramfs=1
# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2
# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
disable_fw_kms_setup=1
# Run in 64-bit mode
arm_64bit=1
# Disable compensation for displays with overscan
disable_overscan=1
# Run as fast as firmware / board allows
arm_boost=1
[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1
[cm5]
dtoverlay=vc4-kms-v3d,dr_mode=host
[all]
dtoverlay=vc4-kms-v3d
在我完整重装系统后,vulkaninfo --summary仍然只有llvmpipe,无法识别内置GPU,请问这个GPU还需要装一些其他的驱动才能使用吗
vulkaninfo --summary
更新 在安装这些包后 我的vulkaninfo似乎正常了 具体部署还需要再次测试。 对于驱动不正常的人 可以尝试
sudo apt install vulkan-tools mesa-vulkan-drivers -y
sudo apt install libvulkan-dev -y
sudo apt install glslang-tools glslang-dev glslc -y