Armbian build for Torder Tablet (RK3566) with desktop and optimizations
- SoC: Rockchip RK3566 (Cortex-A55 quad-core, up to 1.8GHz)
- GPU: Mali-G52 (Panfrost driver)
- RAM: 4GB LPDDR4x
- Display: 800x1280 DSI panel @60Hz
- Kernel: 6.1.115-vendor-rk35xx
- OS: Ubuntu Noble 24.04 (Armbian 26.02.0-trunk)
- DTB:
rockchip/rk3566-torder-tablet.dtb
- Desktop: GNOME on Wayland (full desktop)
- GPU: Panfrost open-source driver with hardware acceleration
- Video codec: Rockchip MPP H.264/H.265 hardware encode and decode
- NPU: RK3566 RKNPU with RKNN Runtime 2.3.2 and model smoke test
- Browser: Bundled ARM64 Chromium Snap with offline first-boot installation
- App stores: GNOME Software with Snap support and the Snap Store desktop app
- Audio: RK817 internal speaker route restored after the desktop audio server starts
- Performance: CPU/GPU locked at max frequency
- Display: 60Hz refresh rate (overclocked from 53.39Hz)
- Optimized: Disabled Tracker, animations, heavy services
- Wireless: UWE5621DS 2.4/5GHz WiFi, Bluetooth, and WPA2 hotspot support
- Power key: Lock screen, backlight off, and touch-safe wake
- Push to this repository
- Go to Actions tab
- Run "Build Armbian" workflow
- Download the artifact when complete
# The reference module is built on Ubuntu 22.04 with GCC 11.
sudo apt-get update
sudo apt-get install -y gcc-11 g++-11 gcc-11-aarch64-linux-gnu \
g++-11-aarch64-linux-gnu binutils-aarch64-linux-gnu cmake ninja-build
# Check out the same Armbian revision as the working reference image
git init build
cd build
git remote add origin https://github.com/armbian/build.git
git fetch --depth=1 origin 676832645ddde2e463b689e55fdd7ac81590f1ff
git checkout --detach FETCH_HEAD
# Copy userpatches and the complete working kernel configuration
cp -r /path/to/TorderTable-Armbian/userpatches/* userpatches/
cp /path/to/TorderTable-Armbian/config-6.1.115-vendor-rk35xx \
config/kernel/linux-rk35xx-vendor.config
# Build desktop image
./compile.sh BOARD=torder-tablet BRANCH=vendor RELEASE=noble \
KERNELBRANCH=commit:41da3e69e16b9de57eca897215e8b0adc6efdc8b \
BUILD_DESKTOP=yes DESKTOP_ENVIRONMENT=gnome \
DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base KERNEL_CONFIGURE=no \
PREFER_DOCKER=no- Problem: PARTLABEL discovery can fail in initramfs after first-boot resize
- Fix: Writes the root filesystem UUID to both
armbianEnv.txtand DTB bootargs
- Problem: Armbian's generated generic UWE5622 branch enabled
OTT_UWEand scan random-MAC support. NetworkManager then sentWIFI_CMD_RND_MAC;wlan0existed, but scans returned no APs and hotspot creation failed. - Fix: Replaces
unisocwifiwith the Rockchip Linux 6.1 UWE5621DS implementation from source commit4c63dfb. It enablesUWE5621_FTR, uses device-tree platform registration, and disablesOTT_UWE, random scan MAC, IBSS, NAN, and RTT. The working built-in WCN BSP and Bluetooth paths are left intact. - MAC: Generates a stable address from each device before module probing. The driver reads it with bounded parsing and falls back safely without shipping a captured factory MAC.
- Calibration: Stores the known-good 2-antenna and 3-antenna INI files byte-for-byte with CRLF endings protected by
.gitattributes. - CI check: Builds on Ubuntu 22.04/GCC 11 and rejects a module with
unisoc_wlan_init,random_mac_set, a modular WCN BSP dependency, wrong symbols, firmware hashes, calibration hashes, vermagic, or DTB properties.uwe5621ds-diagnostics.txtis included with every successful image. - Files:
0001-uwe5621ds-rockchip-driver.patch,0002-uwe5621ds-load-device-mac.patch,torder-wifi-mac.service,90-torder-wifi.conf, and UWE5621DS firmware assets
- Problem: Panfrost GPU page fault causing software rendering fallback
- Fix: X11 configuration with DRI2, disabled PageFlip
- Files:
/etc/X11/xorg.conf.d/20-panfrost.conf
- Problem: The kernel contained Rockchip MPP drivers, but every codec and IOMMU node was disabled in the board DTB, so
/dev/mpp_servicedid not exist. - Fix: Enables RKVENC, RKVDEC, VDPU, VEPU, JPEG, IEP, and their IOMMUs. CI builds pinned Rockchip MPP userspace libraries and test tools, while udev grants the desktop
rendergroup access to MPP, RGA, and DMA heaps. - Validation: H.264 and H.265 hardware encode/decode round trips pass as the unprivileged desktop user.
- Problem: The RKNPU driver was built into the kernel, but the NPU, NPU bus, and IOMMU were disabled in the board DTB and the RKNN userspace runtime was absent.
- Fix: Enables the RK3566 RKNPU at its fuse-qualified 900MHz maximum, supplies the NPU and bus from the board's shared regulators, and installs pinned RKNN Runtime 2.3.2 assets from the official
airockchip/rknn-toolkit2repository. - Validation: The included
rknn-smoke-testruns a real RK3566 MobileNet model as the unprivileged desktop user.
- Problem: System laggy with default ondemand governor
- Fix: CPU locked at1800MHz, GPU at800MHz (performance mode)
- Files:
max-performance.service
- Problem: Factory timing runs at only 53.39Hz
- Fix: Pixel clock set from 60MHz to 67.43184MHz (60Hz)
- Files: Device tree
rk3566-torder-tablet.dts
- Problem: GNOME too heavy for RK3566
- Fix:
- Disabled Tracker file indexing
- Disabled animations
- Disabled CUPS, unattended-upgrades
- ZRAM swap (1GB LZ4)
- Files:
99-torder-optimize.sh,zram-swap.service
- Problem: Power key did not reliably lock/wake the tablet desktop
- Fix: Installs
powerkey-backlight-toggle.service- Service reads the RK805 power-key input device without taking exclusive control
- Service starts with the graphical target, after
systemd-logind - Power key locks the user session and dims backlight to
0 - Second press restores the previous brightness
- Problem: Firefox and Chromium failed before startup because the final image lost the file capabilities required by
snap-confine; Chromium's Ubuntu package also did not include the Snap payload. - Fix: Reapplies and verifies the complete Noble
snap-confinecapability set after image processing. The image contains pinned ARM64 Chromium 151, Snap Store, and all required base/content snaps, which are installed locally before the first desktop starts. GNOME Software and its Snap plugin are installed as native packages. - Validation: CI checks the browser launchers, both app stores, offline Snap payload, installer ordering, and final ext4 capability metadata.
- Problem: The codec was detected and PulseAudio was running, but the generic mixer restore selected
Playback Path=HP, leaving the internal speaker silent. - Fix: A per-user service runs after the desktop audio server and selects
Playback Path=SPKwith the speaker output enabled. RK817 DAPM continues to control the low-level amplifier switch between streams. - Validation: Playback through the default PulseAudio sink was verified on the device with the ALSA
Front_Center.wavsample.- Keeps
bl_power=0and avoids synthetic input so the touch controller remains responsive
- Keeps
- Files:
/usr/local/sbin/powerkey-backlight-toggle.py,powerkey-backlight-toggle.service
- Problem: GNOME reported Night Light as active on X11 without changing the panel color
- Fix: A user service mirrors the GNOME target color temperature to the DSI output through RandR
- Writes the gamma LUT only when Night Light or its target temperature changes
- Avoids repeated LUT updates and visible display flicker
- Files:
/usr/local/bin/torder-night-light,torder-night-light.service
assets/uwe5621ds/
|-- torder-wifi-mac # Per-device MAC provisioning
|-- torder-wifi-mac.service # Runs before module and udev probing
`-- 90-torder-wifi.conf # UWE5621DS hotspot compatibility
assets/display/
|-- torder-night-light.py # X11 Night Light RandR fallback
`-- torder-night-light.service # GNOME user-session service
scripts/
`-- post-build.sh # Installs and verifies device fixes
userpatches/
|-- config/boards/
| `-- torder-tablet.csc # Board config and image packages
|-- customize/images/
| `-- torder-tablet-gpu-perf-fix.sh
|-- kernel/rk35xx-vendor-6.1/
| |-- 0001-uwe5621ds-rockchip-driver.patch # Rockchip 6.1 driver branch
| `-- 0002-uwe5621ds-load-device-mac.patch # Safe per-device WiFi MAC load
`-- patch/kernel/rk35xx-vendor-6.1/dt/
`-- rk3566-torder-tablet.dts # Generic device tree
Reference files from working device:
armbian-release- Armbian release infoconfig-6.1.115-vendor-rk35xx- Kernel configurationboot/- Boot files (armbianEnv.txt, boot.cmd, boot.scr)dtb/rockchip/rk3566-torder-tablet.dtb- Compiled DTBkernel-packages.txt- Kernel packagesarmbian-packages.txt- Armbian packagesinstalled-packages.txt- Full package listkernel-modules.txt- Kernel modulespartition-info.txt- Partition layout
| Parameter | Value |
|---|---|
| Resolution | 800x1280 |
| Pixel Clock | 67.43184 MHz |
| DSI Bandwidth | 405 Mbps/lane |
| Refresh Rate | 60 Hz |
| DSI Lanes | 4 |
| Component | Frequency | Governor |
|---|---|---|
| CPU (A55 x4) | 1800 MHz | performance |
| GPU (Mali-G52) | 800 MHz | performance |
- The UWE5621DS firmware does not support WPA3-SAE. WPA3-only access points must enable WPA2/WPA3 transition mode with WPA2-PSK clients permitted.
- No camera hardware detected
- The 60Hz panel timing is an overclock over the factory 53.39Hz mode