When Samsung discontinued the official Linux on DeX project years ago, running a real Linux desktop on Android mostly became an exercise in compromises: sluggish VNC sessions, software-rendered UIs, broken audio, or background processes silently killed by Android's memory management.
I wanted to see how far modern flagship ARM64 hardware can push a completely rootless, user-space Debian 13 (Trixie) workstation—keeping Samsung Knox (0x0) intact while delivering hardware-accelerated graphics, native audio, and multi-hour desktop stability.
Over the past few weeks, I built and open-sourced dex-linux-workstation, a modular 2-step installer that turns Termux, PRoot, and Termux:X11 into a low-latency XFCE4 desktop. More importantly, instead of just posting a neofetch screenshot, I ran empirical stress tests and logged 4.26 hours of continuous telemetry.
Here is what actually happens to thermals, battery health, RAM, and compiler throughput when you dock a smartphone to a 32-inch monitor and treat it like a Linux workstation.
The Architecture (No Root, No VNC)
Most legacy Termux desktop guides bottleneck on display transport and IPC overhead. To make the desktop feel native at high resolutions on external monitors, the stack eliminates network-loopback display protocols entirely:
- OS & Desktop: Debian 13 (
Trixie) running viaproot-distrowith a stripped-down XFCE4 session (window compositing disabled viaxfconf-queryfor tear-free 60/120Hz external output). - Zero-Copy Display Transport: Termux:X11 communicating over local UNIX domain sockets (
$TMPDIR/.X11-unix) instead of TCP/VNC. - Hardware-Agnostic 3D Acceleration: Instead of relying solely on Qualcomm-specific Turnip/Zink drivers, the stack uses an Android EGL / VirGL (
virglrenderer+ Mesavirpipe) bridge. This enables hardware-accelerated OpenGL across both Qualcomm Adreno and ARM Mali/Immortalis GPUs. - Audio: PulseAudio running over local loopback TCP (
127.0.0.1) with low-latency buffering. - LMK-Safe Browser Tuning: Wrapper scripts for Chromium (
--renderer-process-limit=1,--js-flags="--max-old-space-size=512",--disable-dev-shm-usage) to prevent multi-process memory spikes from triggering Android's Low Memory Killer.
You can see the desktop workflow in action in this YouTube Proof of Concept.
Benchmark 1: 4.26-Hour Docked Soak Test (Thermals & USB-C PD Bypass)
A common concern with running sustained workloads on a docked phone is heat buildup and battery degradation from continuous trickle charging.
To test this, I connected a Samsung Galaxy S26 Ultra (16 GB RAM) via USB-C to a 32" monitor with an integrated 65W Power Delivery dock, enabled Samsung's Light Performance Profile (70%) and 80% Maximum Battery Protection (USB-C PD Bypass), and ran a continuous 4-core stress-ng (matrixprod) workload inside Debian 13 PRoot for 4 hours and 16 minutes (255.9 minutes / 473 samples).
Key Findings (473 Telemetry Samples)
| Metric | Result | Verified Details |
|---|---|---|
| Test Duration | 4.26 hours (15,353 s) | 473 telemetry points logged at ~32s intervals |
| SoC Temperature (Median / Mean) | 36.0 °C / 37.6 °C | 40–55 °C during active 4-core desktop use; 36 °C steady plateau (31–75 °C range) |
| Battery Temperature (Median / Mean) | 26.7 °C / 27.2 °C | 25.0–30.3 °C range — cooler than ambient under continuous load |
| Battery Level Drift | 0.0 % (80% → 80%) | 100% USB-C Power Delivery bypass confirmed across all valid readings |
| RAM Footprint / LMK Events | ~10.1 GB / 0 Kills | Median 10,319 MB (9,436–11,542 MB), zero Android LMK terminations |
Two details stand out in the telemetry curve:
- True Power Delivery Bypass: Across all 374 valid battery readings over 256 minutes, the charge level stayed locked at 80% (
0.0%standard deviation), and battery temperature actually dropped from30.3 °Cat boot down to a26.7 °Cmedian. Power went straight to the board without cycling the cell. - OneUI Background Scheduling: During the first 20 minutes of active desktop interaction, the SoC averaged
50.5 °C. Once the display went idle during an unattended stretch, OneUI throttled three background threads while keeping onestress-ngworker pinned at ~97%, settling the passively cooled chassis into a rock-solid 33–36 °C thermal equilibrium.
(Raw CSV dataset: snapdragon_s26u_4core_4h_docked_light70.csv)
Benchmark 2: 32-Minute Unplugged Compiler Workload (9/9 Redis Builds)
Synthetic CPU loops don't test filesystem I/O, dynamic linking, or process spawning. On Android 12+, spawning hundreds of short-lived compiler processes is the fastest way to trigger Android's Phantom Process Killer (PPK).
To test real developer workloads on battery power (unplugged), the system ran a continuous loop compiling Redis from source (make -j$(nproc) MALLOC=libc) back-to-back for 31.8 minutes:
- Build Success Rate: 9 / 9 complete builds (
Exit Code 0, zero failures or PPK kills) - Mean Build Time: 3m 30s (
210.22 swall clock; fastest182.24 s, slowest219.38 s) - Thermal Variance: Only 8.3% slowdown between Build 1 and Build 9 on passive cooling
- PRoot Syscall Overhead: ~
13%(3m 21.9sreal vs.0m 52.3ssys on a clean single build, passing--test-memory 256) - Unplugged Power Draw: ~
2.2 Waverage with battery temperatures between30.0 °Cand34.3 °C
Cross-SoC GPU Validation (Snapdragon vs. MediaTek)
Because the VirGL/EGL pipeline targets Android's native graphics layer rather than vendor-specific Vulkan extensions, it works across both major ARM64 flagship platforms:
| Metric | Qualcomm Snapdragon 8 Elite | MediaTek Dimensity 9300+ |
|---|---|---|
| GPU Architecture | Adreno 840 | ARM Immortalis-G720 MC12 |
| Validated Device | Samsung Galaxy S25/S26 Ultra | Samsung Galaxy Tab S10 Ultra |
| glmark2 Score | 186 FPS (Uncapped) | 112 FPS (120Hz Surface Sync) |
| Average Frame Time | ~5.0 ms | ~8.3 ms |
Try It Yourself (2-Step Modular Setup)
If you have a modern Snapdragon or MediaTek device (12 GB+ RAM recommended) with the official GitHub releases of Termux and Termux:X11 installed (and Android's child-process restrictions disabled in Developer Options):
1. Install Base Debian 13 + XFCE4 + Termux:X11
pkg update -y && pkg install curl -y && curl -sSL [https://raw.githubusercontent.com/thecbr600/dex-linux-workstation/main/setup.sh](https://raw.githubusercontent.com/thecbr600/dex-linux-workstation/main/setup.sh) | bash 2. Enable Hardware GPU Acceleration (VirGL/EGL)
curl -sSL [https://raw.githubusercontent.com/thecbr600/dex-linux-workstation/main/addon/install-gpu.sh](https://raw.githubusercontent.com/thecbr600/dex-linux-workstation/main/addon/install-gpu.sh) | bash Optional add-ons for VS Code Server (code-server), Super-key menu mapping, Termux:Widget home-screen shortcuts, and auto-closing X11 on logout are also included in the repository.
- GitHub Repository: github.com/thecbr600/dex-linux-workstation
- Full Architecture & Benchmark Wiki: Project Wiki
Have you tried replacing a travel laptop with a DeX or Android tablet Linux setup? I'd love to hear what bottlenecks you ran into—especially around browser memory limits, virglrenderer tuning, or external display scaling.



