rkdebian — Debian 12 for Doogee U10 (RK3562)
Download Pre-release Image
Current public build (pre-release, May 14, 2026):
Release page: tech4bot/rk3562deb prerelease-14052026 Direct image download: rk3562-debian.img.xz Video demo: YouTube
Current public build (pre-release, May 14, 2026):
Release page: tech4bot/rk3562deb prerelease-14052026
Direct image download: rk3562-debian.img.xz
Video demo: YouTube
Run full Debian 12 Bookworm on your Doogee U10 tablet — no bootloader unlock required. Boot from SD card, remove it to return to stock Android. No changes to internal storage.
Run full Debian 12 Bookworm on your Doogee U10 tablet — no bootloader unlock required. Boot from SD card, remove it to return to stock Android. No changes to internal storage.
Reverse engineered from scratch — no BSP, no vendor documentation, no official support. Built with the help of Claude, Codex, and Antigravity (Google Gemini), using Firefly RK3562 open-source repositories as a starting point.
Reverse engineered from scratch — no BSP, no vendor documentation, no official support. Built with the help of Claude, Codex, and Antigravity (Google Gemini), using Firefly RK3562 open-source repositories as a starting point.
Overview
rkdebian is a build system that produces a complete, bootable Debian 12 Bookworm image for the Doogee U10 Android tablet, powered by the Rockchip RK3562 SoC.
The resulting image is written to an SD card. Insert it and power on — the tablet boots Debian. Remove the SD card and it boots Android from internal eMMC as normal.
Hardware: Doogee U10
What Works
Default Installed Apps
NPU LLM (RK3562)
This tablet image supports local LLM inference on the RK3562 NPU using Rockchip’s RKLLM stack.
NPU software used
airockchip/rknn-llm — runtime, RKLLM toolkit, demo app (llm_demo)
airockchip/rknn-toolkit2 — RKNN conversion/toolchain dependency used by RKLLM workflows
Model conversion setup used
Target platform: rk3562
Quantization: W8A8
NPU cores: num_npu_core=1 (RK3562 supports one NPU core)
Optimization level: 0 (chosen for compatibility/stability on this board)
Example conversion command (host PC):
python3 convert_qwen_rk3562.py \ –model-dir ./models/Qwen3 – 0.6B \ –target-platform rk3562 \ –quantized-dtype W8A8 \ –optimization-level 0 \ –num-npu-core 1 \ –output ./out/Qwen3 – 0.6B_W8A8_RK3562_opt0.rkllm
Benchmark (on tablet, NPU path)
Measured on April 6, 2026 on <tablet-ip> with:
prompt: Output exactly 300 English words about arithmetic speed testing do not include punctuation and do not stop early
MAX_NEW_TOKENS=64, MAX_CONTEXT_LEN=1024
runner: ~/npu-test/xcompile/demo_Linux_aarch64/run_llm_rk3562.sh
Commands used:
# Qwen3 – 0.6B (first run includes fix_freq) USE_FIX_FREQ=1 RKLLM_LOG_LEVEL=1 PROMPT=“Output exactly 300 English words about arithmetic speed testing do not include punctuation and do not stop early” \ ./run_llm_rk3562.sh ~/npu-test/models/Qwen3 – 0.6B_W8A8_RK3562_opt0.rkllm 64 1024
# Qwen2.5 – 1.5B USE_FIX_FREQ=0 RKLLM_LOG_LEVEL=1 PROMPT=“Output exactly 300 English words about arithmetic speed testing do not include punctuation and do not stop early” \ ./run_llm_rk3562.sh ~/npu-test/models/Qwen2.5 – 1.5B-Instruct_W8A8_RK3562.rkllm 64 1024
Warm-run average (runs 2 – 3):
Result: Qwen3 – 0.6B is significantly faster on this RK3562 tablet for local NPU inference.
Known Issues
Battery may report 0% after the tablet has been powered off for a couple of hours.
rk-battery-gauge-fix.service fixes this on boot.
If the tablet did not fully power off, reboot once; on the next boot the battery level should be corrected.
Front (s5k5e8) and rear (s5k4h5yb) camera preview/capture are functional, but colors are still slightly off and require additional ISP calibration.
Requirements
Host machine: x86 – 64 Linux (Debian/Ubuntu recommended)
Install all build dependencies with:
sudo apt-get install \ git make gcc-aarch64-linux-gnu \ bc bison flex device-tree-compiler \ genimage wget tar mtools \ xz-utils \ debootstrap qemu-user-static \ e2fsprogs
Building
Full build (recommended)
Builds U-Boot, kernel, Debian rootfs, and produces a ready-to-flash SD card image:
./build.sh all
With full logging to file (tee) while preserving the real build exit status:
set -o pipefail ./build.sh all 2>&1 | tee build.log
./build.sh with no target defaults to all.
The final image is written to:
out/rk3562-debian.img.xz — compressed final image (recommended)
output/update/update.img.xz — compressed Firefly-compatible path
Compatibility/raw images are also kept:
out/rk3562-debian.img
output/update/update.img
CLI usage and options
./build.sh [options] {check|lunch|uboot|extboot|updateimg|updatepkg|compile|rootfs|image|all}
Individual build targets
image and updatepkg require existing build artifacts (out/rootfs, kernel/DTB, and boot config files).
Environment Variables
These variables can be set before running build.sh to control build behaviour:
Rootfs
Kernel
Examples
# Force a clean rootfs rebuild RKDEBIAN_FORCE_CLEAN_ROOTFS=1 ./build.sh all
# Same using CLI flags ./build.sh all –force-clean-rootfs
# Force clean rootfs rebuild with a fixed 4 GB rootfs partition RKDEBIAN_FORCE_CLEAN_ROOTFS=1 ROOTFS_IMAGE_SIZE=4G ./build.sh all
# Build only the rootfs, force clean RKDEBIAN_FORCE_CLEAN_ROOTFS=1 ./build.sh rootfs
# Rebuild image only (U-Boot and kernel already built) ./build.sh image
# Build kernel only ./build.sh extboot
# Keep overlay PMIC patches during kernel build RKDEBIAN_KEEP_OVERLAY_PMIC_PATCHES=1 ./build.sh extboot
# Force a Wayland desktop image for testing ./build.sh all –display-server=wayland
# Explicitly disable force-clean (useful in scripted runs) ./build.sh all –no-force-clean-rootfs
# Override baseline governor used for Phosh balanced mode mapping RKDEBIAN_CPU_GOVERNOR=schedutil ./build.sh all
# Show CLI usage and target list ./build.sh –help
# Build a Phosh image on Mesa/Panfrost (clean rootfs strongly advised) ./build.sh all –ui-session=phosh –gpu-stack=panfrost –force-clean-rootfs
# Mali stack with Debian libgbm override (only for compatibility testing) RKDEBIAN_MALI_GBM_PROVIDER=debian ./build.sh all –ui-session=phosh –gpu-stack=mali –force-clean-rootfs
# Size-focused build for easier GitHub uploads RKDEBIAN_FORCE_CLEAN_ROOTFS=1 RKDEBIAN_MINIMIZE_IMAGE=1 RKDEBIAN_PREINSTALL_FREETUBE=0 ./build.sh all
# Size-focused build while keeping default FreeTube preinstall enabled RKDEBIAN_FORCE_CLEAN_ROOTFS=1 RKDEBIAN_MINIMIZE_IMAGE=1 RKDEBIAN_PREINSTALL_FREETUBE=1 ./build.sh all
When changing RKDEBIAN_UI_SESSION or RKDEBIAN_GPU_STACK, use –force-clean-rootfs to avoid stale package carry-over.
Phosh Power Mode Mapping
Images include rk-power-profile-sync.service, which maps Phosh power modes (power-profiles-daemon) to cpufreq policy on-device:
balanced -> governor from RKDEBIAN_CPU_GOVERNOR (default performance), max freq cap 100%
power-saver -> governor powersave, max freq cap 65%
performance (if exposed by hardware) -> governor performance, max freq cap 100%
Tune mapping on-device in /etc/default/rk-power-profile-map.
Phosh UX Integrations
Rear camera flashlight is exposed as LED camera:flash, so Phosh shows the native top-menu torch icon.
rk-flashlightctl supports both toggle and intensity control (set 0..100) for the rear LED.
rk-powerkey-longpress.service owns hardware power-key policy:
short press (<3s) -> suspend on key release long press (>=3s) -> standard GNOME shutdown dialog logind/GNOME press-triggered defaults are disabled to avoid immediate sleep on key-down
short press (<3s) -> suspend on key release
long press (>=3s) -> standard GNOME shutdown dialog