Making CIX Sky1 boards actually usable on mainline Linux.
CIX Sky1 (CD8180) boards pack impressive hardware—a 12-core ARM CPU, Mali-G720 GPU, 30 TOPS NPU, hardware video codec—but mainline Linux doesn't support most of it. CIX Technology has begun upstreaming foundational SoC support (pinctrl, mailbox, PCIe, base DTS) in v6.19, but critical subsystems remain out-of-tree:
| Subsystem | Mainline v6.19 Status | Our Patches |
|---|---|---|
| Display (DP/HDMI) | Not submitted | ~27,000 lines |
| Audio (HDA + DSP) | Stalled | ~8,000 lines |
| USB-C (PD + DP Alt Mode) | Not submitted | ~5,000 lines |
| GPU init + DVFS | Not submitted | ~500 lines |
| NPU (AI accelerator) | Not submitted | ~12,000 lines |
| VPU (video codec) | Not submitted | ~39,000 lines |
| Ethernet (5GbE / 2.5GbE) | Not submitted | ~53,000 lines |
Result: Unpatched mainline Linux 6.19 boots to a serial console with NVMe and basic PCIe. No display, no audio, no GPU, no networking.
Sky1 Linux maintains patched kernels across multiple tracks:
| Track | Kernel | Patches | Status |
|---|---|---|---|
| LTS | Linux 6.18.x | 117 patches | Stable, recommended |
| Latest | Linux 6.19.x | 118 patches | Stable |
| RC | — | — | Dormant (awaiting v7.0-rc1) |
| Next | Linux 7.0 merge window | 22 patches | Active development |
Early patches were consolidated by subsystem — the LTS track was reorganized from the original 78 granular patches (preserved in the original-patches branch) into 13 subsystem-grouped patches. The next track carries a clean 22-patch series for the 7.0 merge window. We fully replace the minimal upstream CIX drivers (PCIe, pinctrl, DTS) with production-quality, board-tested versions and add all subsystems not yet submitted upstream.
Users opt into tracks via APT components:
# LTS only (default, recommended)
deb https://sky1-linux.github.io/apt sid main
# LTS + Latest stable
deb https://sky1-linux.github.io/apt sid main latest
# All tracks including RC testing
deb https://sky1-linux.github.io/apt sid main latest rc| Feature | Status |
|---|---|
| Display output (4K@60 DP/HDMI) | Working |
| GPU acceleration (Vulkan 1.4 / OpenGL 4.6) | Working — dual-stack: Panthor + PanVK or vendor Mali + Zink |
| GPU compute (Vulkan) | Working — llama.cpp tested at 5.2 t/s |
| Audio (HDA speakers + headphones + HDMI) | Working |
| USB-C Power Delivery (up to 100W) | Working |
| USB-C DisplayPort Alt Mode | Working |
| WiFi 6 (RTL8852BE) | Working |
| Dual 5GbE (RTL8126) / 2.5GbE (RTL8125) | Working |
| PCIe (NVMe, GPU, WiFi) | Working, no kernel params needed |
| Hardware video decode (H.264/HEVC/AV1/VP9) | Working via VPU |
| AI accelerator (30 TOPS) | Working via NPU |
| ACPI boot | Working (all drivers, both DT and ACPI) |
The ARM Linlon MVE v8 VPU provides hardware-accelerated video encode/decode. We maintain patched applications that use the V4L2 stateful (M2M) API directly:
| Component | What We Added |
|---|---|
| Firefox | V4L2-M2M decode for H.264, HEVC, VP9, AV1 |
| Chromium | V4L2-M2M config package (uses unmodified Debian Chromium) |
| FFmpeg | V4L2 M2M support for AV1, VP9, HEVC, H.264 decode/encode |
| GStreamer | v4l2av1dec element for AV1 hardware decode |
Supported codecs:
- Decode: H.264, HEVC, VP8, VP9, AV1, MPEG-2, MPEG-4
- Encode: H.264, HEVC, VP8, VP9
# Add repository (downloads signing key and configures APT source)
wget -qO- https://sky1-linux.github.io/apt/key.gpg | sudo tee /usr/share/keyrings/sky1-linux.asc > /dev/null
echo "deb [signed-by=/usr/share/keyrings/sky1-linux.asc] https://sky1-linux.github.io/apt sid main non-free-firmware" | sudo tee /etc/apt/sources.list.d/sky1-linux.list
sudo apt update
# Full desktop (kernel, firmware, Mesa Vulkan, hardware video in Firefox/Chromium/FFmpeg/GStreamer)
sudo apt install sky1-desktop
# Or minimal (kernel + firmware only)
sudo apt install sky1-minimalThe sky1-apt-config package (pulled in by both meta packages) manages the APT source, signing key, and pin priority — future installs from our ISOs won't need the manual setup above.
| Repository | Description |
|---|---|
| apt | APT repository with installation guide |
| linux-sky1 | Kernel patches, configs, and build metadata (LTS/Latest/RC/Next tracks) |
| linux | Full kernel source (mainline + patches) |
| sky1-firmware | GPU, DSP, VPU, WiFi firmware |
| sky1-linux-build | Kernel package build scripts and development tools |
| mesa | Mesa 3D with PanVK fixes and Zink GL 4.6 enablement for Mali-G720 |
| Repository | Description |
|---|---|
| sky1-image-build | Disk image and live ISO build system |
| calamares-settings-sky1 | Installer branding and config |
| plasma-setup | KDE Plasma first-boot user creation wizard |
| Repository | Description |
|---|---|
| firefox-sky1 | Firefox with V4L2-M2M hardware decode |
| chromium-sky1-config | Chromium V4L2-M2M config for Debian package |
| ffmpeg-sky1 | FFmpeg 8.0 with V4L2 M2M codec patches |
| gstreamer-sky1 | GStreamer with v4l2av1dec element |
The Mali-G720 supports two GPU stacks, selectable at boot via sky1.gpu=vendor on the kernel cmdline:
| Stack | Vulkan | OpenGL | Performance | Use Case |
|---|---|---|---|---|
| Open-source (default) | PanVK (1.4) | Zink (GL 3.2) | Slower (open-source compiler) | General desktop, compute |
| Vendor Mali | Mali (1.4.305) | Zink (GL 4.6) | Full speed (vendor-optimized compiler) | GL apps, gaming, CAD |
Both stacks use Mesa Zink for OpenGL (translating GL to Vulkan). The vendor stack achieves GL 4.6 and significantly higher performance thanks to ARM's optimized shader compiler. A Vulkan WSI layer provides X11 presentation via Xwayland bypass (direct Wayland DMA-BUF) for Zink/GL apps and DRI3 zero-copy for native Vulkan apps. A compatibility layer shims unsupported Vulkan features (fillModeNonSolid, clip/cull distances).
| Repository | Description |
|---|---|
| sky1-gpu-support | GPU stack switcher, Mali UMD (r54p1), and Vulkan compat layer |
| cix-gpu-kmd | Mali kernel driver (mali_kbase) with DKMS, ported to 6.18–7.0 |
| vulkan-wsi-layer | Vulkan WSI layer with DRI3, Xwayland bypass, and SHM presenters |
| Repository | Description |
|---|---|
| acpi-to-dts-tools | ACPI to Device Tree conversion tools for board bringup |
Our patchset includes drivers and fixes not available upstream:
- linlon-dp / trilin-dpsub — Display processor and DP transmitter (4K@60 HDMI/DP)
- Panthor GPU init, DVFS + ACE-Lite coherency — Sky1-specific power sequence, SCMI-based frequency/voltage scaling (72–1000 MHz), ACE-Lite bus coherency enabling GPU L2 write-back caching with SLC visibility for the non-snooping DPU (fixes upstream PROT_BIT register bug)
- Mesa PanVK fixes + Zink GL 4.6 — 40-bit VA space expansion, WLS dispatch serialization fix, and Zink feature gate relaxation for full OpenGL 4.6 on Mali-G720
- CIX IPBLOQ HDA + SOF DSP — Audio controller and DSP firmware loading
- RTS5453 — USB-C PD controller for power negotiation and DP Alt Mode
- ARM Linlon VPU — Hardware video encode/decode (H.264, HEVC, AV1, VP9)
- ArmChina Zhouyi NPU — AI accelerator driver (30 TOPS, 3-core X2_1204MP3)
- Realtek RTL8126/RTL8125 — 5GbE and 2.5GbE ethernet (in-tree, no DKMS)
- DRM bridge chain — Proper DP-to-HDMI bridge for PS185 converter (Orange Pi 6 Plus)
- PCIe power supply GPIOs — Corrected NVMe, WiFi, and GBE regulator assignments on O6/O6N
- WiFi RFKill — Corrected GPIO assignment for WLAN radio disable on O6/O6N
- GPIO LEDs — Power, status, and SSD activity LEDs on O6/O6N
- ACPI boot — Full SCMI/mailbox/clock/reset/power domain support under ACPI firmware, enabling all drivers on both DT and ACPI boot paths
- Fan controller — PWM-based fan speed control and tachometer RPM monitoring
- GPT timer — 64-bit clocksource and clock event device for Sky1
We maintain the Sky1 patch set across two repositories:
- linux — Full kernel source with patches applied as commits on top of upstream tags. This is where development happens.
- linux-sky1 — Exported patches and kernel configs. This is what the build system and users consume.
Each kernel track is a branch in the linux repo, rebased onto its upstream base:
| Branch | Base | Description |
|---|---|---|
main |
6.18.x stable | LTS production kernel |
latest |
6.19.x stable | Latest stable |
rc |
7.0-rcN | Release candidate testing (dormant) |
next |
7.0 merge window | Bleeding edge (22 patches) |
All branches carry the same consolidated patch set — one commit per subsystem (device trees, PCIe, display, GPU, audio, etc.). When a new upstream tag is released, we rebase the branch forward and re-export patches to linux-sky1.
The initial board bringup was developed as 78 granular commits, which were squashed into 13 subsystem-grouped patches (DTS, PCIe, USB/PHY, display, GPU, audio, networking, etc.) to simplify rebasing and review. Patches added after that consolidation (bug fixes, new board support, driver improvements) are kept as individual commits. The original pre-consolidation history is preserved in the original-patches branch.
| Component | Specification |
|---|---|
| SoC | CIX CD8180 (Sky1) — ARMv9 |
| CPU | 4x Cortex-A720 + 4x Cortex-A720 + 4x Cortex-A520 |
| GPU | Mali-G720-Immortalis MC10 |
| VPU | ARM Linlon MVE v8 (5 AEU cores) |
| NPU | ARM Zhouyi V3 (30 TOPS) |
| Memory | Up to 64GB LPDDR5 |
Currently tested and supported:
- Radxa Orion O6 — Full support
- Radxa Orion O6N — Supported
- OrangePi 6 Plus — Initial support
Other Sky1 boards we aim to support:
- Minisforum MS-R1
- MetaComputing ARM AI PC
Most of our work is at the SoC level and should work across all Sky1 boards:
| Component | Portability |
|---|---|
| GPU, VPU, NPU, Audio, USB-C PD | Universal (SoC drivers) |
| Display, PCIe, Ethernet, WiFi | Mostly universal (may need DT tweaks) |
| GPIO, regulators, board ID | Board-specific (device tree) |
If you have a Sky1 board and want to help add support, contributions are welcome.
- Usable today — Full hardware support on current mainline LTS
- Track upstream — Four kernel tracks (LTS, Latest, RC, Next) follow mainline releases
- Complete stack — Kernel, firmware, drivers, and multimedia tools
- Enable upstreaming — Clean patches organized by subsystem, ready for submission
- Multi-board — SoC-level support works across all Sky1 boards; only device trees differ
- Kernel patches: GPL-2.0
- Mali kernel driver (mali_kbase): GPL-2.0
- Mali userspace driver (libmali.so): ARM Mali EULA (redistributable per clause 1.1(ii))
- Firmware: Redistributable per vendor terms
- Userspace packages: Various open source licenses