Skip to content

Repository files navigation

Waydroid A17 NVIDIA

Android 17 on your Linux desktop, accelerated by your NVIDIA GPU. 在 Linux 桌面上跑 Android 17,用 NVIDIA 显卡硬件加速。

Release AUR Android 17 NVIDIA KDE Plasma KernelSU License Built with Claude Opus 5.5 Built with GPT 6.1 Sol

English · 中文 · Blog: English / 中文

Android apps as KDE windows


English

LineageOS 24.0 (Android 17) in Waydroid, with the GPU, the video engines, root and the desktop all working together: Vulkan and GLES on NVIDIA through NVK, hardware video decode and encode, KernelSU, and every Android app as its own KDE window.

✨ Highlights

Feature
🎮 GPU acceleration ANGLE → NVK → NVIDIA kernel driver; HWUI renders with Vulkan. WebGL and WebGPU work in Chrome.
🎬 Hardware video decode H.264, HEVC, VP9 and AV1 on NVDEC — YouTube, Chrome and players use it automatically.
📡 Hardware video encode H.264, HEVC and AV1 on NVENC. Chrome WebCodecs and WebRTC (video calls) encode on the GPU.
🪟 Apps as desktop windows Each Android app gets its own KDE window; KWin moves, resizes and closes it. Positions are remembered.
⌨️ Host input method Type in Android with fcitx5 or ibus; the candidate window follows the cursor.
📋 Clipboard and files Two-way clipboard. ~/Downloads shows up in Android as Download/Host.
🖱️ Mouse as touch Drags become finger swipes in apps that ignore the mouse (Play Store and other Compose UIs).
🔓 Root KernelSU on the host kernel, with modules (Zygisk Next, LSPosed and friends).
🛒 Google apps Use ATV's GAPPS system image; Play Store is certified.

The maintenance build updates Mesa to 26.2.6, retains the local graphics/compute queue support, and pairs the current Rust RM encoding-parameter/RGB fixes with its Codec2 service. Codec2 decoding is also Rust: VP9 packets with multiple displayed frames deliver every frame, CSD is capped at 2 MiB, and gralloc handles/layouts are validated. The Codec2 sandbox permits its logging socket, including cold starts.

KernelSU 32713 keeps the container adaptations and the existing signing certificate, with targeted shell-escaping, profile/template-path and file-reference fixes; see kernelsu/. The ATV system image is unchanged (SPL 2026-10-01). Saved system-security source patches are not a deployed system update or a complete November ASB. The performance tables below are earlier measurements; this maintenance update has no new FPS, CPU-use or latency A/B result.

📸 Screenshots

Chrome: everything hardware accelerated YouTube on NVDEC
chrome://gpu YouTube
KernelSU working
KernelSU

🚀 Performance

Benchmark (4K, Vulkan) Host, NVIDIA driver Waydroid
Basemark GPU, Medium, offscreen 35657 29369 82 %
3DMark Wild Life Extreme — 12300–13100 (≈ 74 FPS)
Encode, 1080p, RTX 4060 Laptop H.264 HEVC AV1
GPU time per frame 1.7–2.4 ms 2.0 ms 1.4 ms

Basemark on Android only ships ETC2 textures, which NVK has to emulate, while the host uses BC7, so the comparison favours the host. Details in reports/.

📦 Install (Arch Linux)

yay -S waydroid-a17-nvidia-bin

Then add the system image (WayDroid-ATV 20261017, GAPPS or VANILLA) and set up:

sudo mkdir -p /etc/waydroid-extra/images
sudo bsdtar -xf lineage-24.0-20261017-GAPPS-waydroid_x86_64-system.zip -C /etc/waydroid-extra/images system.img
sudo bsdtar -xf /usr/lib/waydroid-nvidia/vendor/waydroid-nvidia-vendor-x86_64-*.zip -C /etc/waydroid-extra/images vendor.img
sudo waydroid init -f
sudo waydroid-nvidia-setup      # tests the vendor image on your GPU, then installs it
waydroid prop set persist.waydroid.multi_windows true
waydroid session start

Needs the NVIDIA open kernel modules and binder (binderfs). Run sudo waydroid-nvidia-setup again after an NVIDIA driver update. Root: kernelsu/.

Other distributions

From Releases, take the vendor image (in parts) and the native driver bundle of the same version:

cat vendor.img.zst.part* > vendor.img.zst && zstd -d vendor.img.zst
sha256sum -c vendor.img.zst.sha256

Install the host side of waydroid-nvidia with patches/waydroid-nvidia/ applied, extract the bundle into /usr/lib/waydroid-nvidia/native/release/, put system.img and vendor.img into /etc/waydroid-extra/images/ and run waydroid-nvidia-setup. The PKGBUILD shows the exact layout.

Handy switches
Command Effect
waydroid prop set persist.waydroid.multi_windows true One KDE window per app
waydroid show-full-ui The whole Android desktop in one window
waydroid prop set persist.waydroid.fake_touch "com.android.vending" Mouse drags as touch in these apps (* = all)
waydroid prop set persist.waydroid.nvidia_video_decode off Software video decoding
waydroid prop set persist.waydroid.nvidia_video_encode off Software video encoding

Folders shared into Android: shared_folders in the [waydroid] section of /var/lib/waydroid/waydroid.cfg, one host folder:storage path per line. The KWin script that remembers window positions: System Settings → Window Management → KWin Scripts → "Waydroid card placement".

Note

A personal project, tested on one machine: RTX 4060 Laptop, NVIDIA open driver 615.78.08, KDE Plasma 6 Wayland, Arch Linux. Widevine is L3, so streaming apps usually play SD. Issues and PRs are welcome; replies are not guaranteed. Developed together with Claude Opus 5.5 and GPT 6.1 Sol.

🙏 Acknowledgements

Original code here is MIT. The patches under patches/ keep their upstream licenses (Apache-2.0, BSD-3-Clause, MIT/HPND, GPL-3.0 as appropriate) and nvidia-product/ keeps waydroid-nvidia's; the vendor image contains these projects under their own licenses.


中文

Waydroid 里的 LineageOS 24.0(Android 17),显卡、视频引擎、root 和桌面都打通:Vulkan 和 GLES 经 NVK 跑在 NVIDIA 上, 视频硬解和硬编,KernelSU,每个安卓应用都是一个独立的 KDE 窗口。

✨ 亮点

功能
🎮 GPU 加速 ANGLE → NVK → NVIDIA 内核驱动,HWUI 用 Vulkan 渲染。Chrome 里 WebGL、WebGPU 都能用。
🎬 视频硬解 H.264、HEVC、VP9、AV1 走 NVDEC,YouTube、Chrome 和播放器自动使用。
📡 视频硬编 H.264、HEVC、AV1 走 NVENC。Chrome 的 WebCodecs 和 WebRTC(视频通话)用显卡编码。
🪟 应用即桌面窗口 每个安卓应用一个 KDE 窗口,由 KWin 移动、缩放、关闭,记住上次的位置。
⌨️ 宿主输入法 用 fcitx5、ibus 直接在安卓里打字,候选框跟随光标。
📋 剪贴板与文件 剪贴板双向同步;~/Downloads 在安卓里就是 Download/Host。
🖱️ 鼠标当触摸 在不认鼠标拖动的应用(Play 商店等 Compose 界面)里,拖动变成手指滑动。
🔓 Root 宿主内核上的 KernelSU,支持模块(Zygisk Next、LSPosed 等)。
🛒 Google 应用 用 ATV 的 GAPPS system 镜像,Play 商店已认证。

本轮维护更新 Mesa 到 26.2.6,保留本地图形/计算队列支持,将共享 Rust RM 的编码参数处理和 RGB 通道修复 与匹配的 Codec2 服务一同交付。Codec2 解码也使用 Rust:VP9 单输入含多张显示帧时逐帧输出,CSD 上限 2 MiB, 使用前校验 gralloc 句柄与平面布局;沙箱允许日志套接字,覆盖冷启动。

KernelSU 32713 保留容器适配与原签名,定向修复 shell 参数转义、profile/template 路径验证和文件引用平衡, 见 kernelsu/。ATV system 保持不变,SPL 仍为 2026-10-01;保存的系统安全源码补丁并未部署, 不代表完整的 11 月 ASB。下方性能表来自此前版本,本轮没有新的 FPS、CPU 占用或延迟 A/B 结果。

📸 截图

Chrome:全部硬件加速 YouTube 走 NVDEC
chrome://gpu YouTube
KernelSU 工作中
KernelSU

🚀 性能

测试(4K,Vulkan) 宿主 NVIDIA 官方驱动 Waydroid
Basemark GPU,Medium,离屏 35657 29369 82 %
3DMark Wild Life Extreme — 12300–13100(约 74 FPS)
编码,1080p,RTX 4060 Laptop H.264 HEVC AV1
每帧 GPU 耗时 1.7–2.4 ms 2.0 ms 1.4 ms

安卓版 Basemark 只带 ETC2 纹理,NVK 要模拟,宿主用的是 BC7,所以这项对比对宿主有利。详见 reports/。

📦 安装(Arch Linux)

yay -S waydroid-a17-nvidia-bin

再放入 system 镜像(WayDroid-ATV 20261017,GAPPS 或 VANILLA)并初始化:

sudo mkdir -p /etc/waydroid-extra/images
sudo bsdtar -xf lineage-24.0-20261017-GAPPS-waydroid_x86_64-system.zip -C /etc/waydroid-extra/images system.img
sudo bsdtar -xf /usr/lib/waydroid-nvidia/vendor/waydroid-nvidia-vendor-x86_64-*.zip -C /etc/waydroid-extra/images vendor.img
sudo waydroid init -f
sudo waydroid-nvidia-setup      # 先在你的显卡上测试 vendor 镜像,通过后再装上
waydroid prop set persist.waydroid.multi_windows true
waydroid session start

需要 NVIDIA open 内核模块和 binder(binderfs)。NVIDIA 驱动更新后再跑一次 sudo waydroid-nvidia-setup。 Root 见 kernelsu/。

其他发行版

从 Releases 下载同一版的 vendor 镜像(分块)和 native 驱动包:

cat vendor.img.zst.part* > vendor.img.zst && zstd -d vendor.img.zst
sha256sum -c vendor.img.zst.sha256

安装打上 patches/waydroid-nvidia/ 的 waydroid-nvidia 主机部分,把驱动包解压到 /usr/lib/waydroid-nvidia/native/release/,system.img 和 vendor.img 放进 /etc/waydroid-extra/images/,运行 waydroid-nvidia-setup。文件布局以 PKGBUILD 为准。

常用开关
命令 作用
waydroid prop set persist.waydroid.multi_windows true 每个应用一个 KDE 窗口
waydroid show-full-ui 在一个窗口里打开整个安卓桌面
waydroid prop set persist.waydroid.fake_touch "com.android.vending" 这些应用里鼠标拖动当触摸(* 为全部)
waydroid prop set persist.waydroid.nvidia_video_decode off 视频改用软解
waydroid prop set persist.waydroid.nvidia_video_encode off 视频改用软编

共享给安卓的目录:/var/lib/waydroid/waydroid.cfg 的 [waydroid] 里配 shared_folders,每行一个 主机目录:存储路径。 记住窗口位置的 KWin 脚本:系统设置 → 窗口管理 → KWin 脚本 →「Waydroid card placement」。

Note

个人项目,只在一台机器上测过:RTX 4060 Laptop、NVIDIA open 驱动 615.78.08、KDE Plasma 6 Wayland、Arch Linux。 Widevine 是 L3,流媒体应用一般只给标清。欢迎 issue 和 PR,但不保证回复。 本项目由 Claude Opus 5.5 和 GPT 6.1 Sol 共同参与开发。

🙏 致谢

本仓库的原创代码按 MIT 提供。patches/ 下的补丁沿用各上游许可证(Apache-2.0、BSD-3-Clause、MIT/HPND、GPL-3.0), nvidia-product/ 沿用 waydroid-nvidia 的许可证;vendor 镜像中的各项目遵循各自的许可证。

Releases

Packages

Contributors

Languages