Diagram showing RITY Yocto layer stack for MediaTek Genio with packagegroup breakdown
mediatekgeniorityyoctoembedded linuxbspaiot

What is RITY? MediaTek's Genio reference distribution explained

Andres Campos ·

RITY is the name MediaTek gives to their reference Yocto distribution for Genio AIoT boards. The name stands for Reference Implementation of Things in Yocto. It is not an RTOS, it is a standard Linux distribution that demonstrates how all of MediaTek’s hardware IP blocks (GPU, NPU, VPU, camera ISP, audio) integrate into a complete Yocto image. Understanding RITY is the fastest way to understand how a production Genio image should be structured.

Key Insights

  • RITY is not an RTOS: it is a Yocto-based Linux distribution; the name causes consistent confusion
  • Three useful distro variants: rity-bringup (minimal debug), rity-demo (full-featured), rity-skeleton (custom derivative template)
  • Packagegroup architecture keeps hardware IP isolated, each MediaTek feature is in its own packagegroup, which makes it easy to include or exclude
  • KAS is the build tool: kas build kas/rity-demo.yml is the single command that fetches all 8+ layer repos and builds the image
  • nda-mtk DISTRO_FEATURE is the gate for proprietary content, ISP, NeuroPilot, and hardware codecs require it
  • rity-skeleton is the right starting point for custom products, never modify meta-rity directly

What RITY actually is

RITY is a collection of Yocto layers hosted on MediaTek’s GitLab that demonstrate the full Genio software stack. It sits on top of:

  • poky, Yocto reference distribution
  • meta-openembedded, community package collection
  • meta-arm, ARM toolchain and firmware
  • meta-mediatek-bsp, MediaTek’s hardware drivers and firmware

RITY adds the integration layer on top: it knows which MediaTek firmware files belong together, which GStreamer plugins work with the VPU, and how to assemble a working Wayland display stack with the Mali GPU.

Layer structure

meta-rity/
├── kas/                    # KAS YAML build configurations
├── meta/                   # Base RITY layer (priority 8)
├── meta-rity-bringup/      # Minimal bringup variant (priority 9)
├── meta-rity-demo/         # Full demo variant (priority 9)
└── meta-rity-skeleton/     # Template for custom derivatives

Sublayers at priority 9 override the base layer at priority 8. LAYERSERIES_COMPAT is scarthgap, this is the Yocto release the current RITY version targets.

Distro variants

DistroImage nameSizeWhat it includes
rity-bringuprity-bringup-image~150MBSSH, debug tools, minimal rootfs
rity-demority-demo-image~1GBWeston, GStreamer, AI/ML, PipeWire, NetworkManager
rity-demo + browserrity-browser-image~2GBEverything in demo + Chromium
rity-skeleton-,Template only, not a buildable image

rity-bringup

The right image for first board bring-up. It boots, gives you SSH access, and includes debug utilities (strace, gdb, bpftrace, perf). Use this to verify the hardware works before adding complexity.

rity-demo

The full integration demonstration. Key components enabled:

DISTRO_FEATURES:append = " \
    pipewire        # PipeWire audio replaces PulseAudio
    demo            # Demo-specific packages
    pam             # PAM authentication
    fwupdate        # EFI capsule firmware updates
    expand-rootfs   # Auto-expand rootfs on first boot
    btf             # eBPF introspection
"

rity-skeleton

The right starting point for a custom product. Copy meta-rity-skeleton, rename it, and build your product-specific recipes on top. Never modify meta-rity directly, any upstream update will conflict.

cp -r meta-rity-skeleton meta-myproduct
cd meta-myproduct
# Edit conf/layer.conf, change collection name, update LAYERDEPENDS
# Add your recipes in recipes-*/

Packagegroup architecture

RITY isolates each hardware capability into its own packagegroup. This makes it straightforward to include only what your product needs:

PackagegroupKey contents
rity-multimediaGStreamer 1.0 + libcamera + V4L2 tools
rity-displayWeston (Wayland compositor) + kmscube + Vulkan tools
rity-audioPipeWire + ALSA utils + Bluetooth codecs (AAC, LC3)
rity-ai-mlTensorFlow Lite + ArmNN + ONNX Runtime + NNStreamer
rity-mtk-videoVCU/VCodec hardware drivers + mtk-vpud daemon
rity-mtk-camispCamera ISP driver (public) or prebuilts (NDA)
rity-mtk-neuropilotAPUSys firmware + NPU driver + NeuroPilot middleware
rity-netNetworkManager + iperf3
rity-debuggdb, strace, bpftrace, perfetto, bcc, iotop
rity-tsnlinuxptp + libopen62541 (OPC-UA) + real-time edge sysrepo

SoC-specific additions are gated by machine overrides:

IMAGE_INSTALL:append:mt8395 = " packagegroup-rity-mtk-camisp packagegroup-rity-mtk-neuropilot"
IMAGE_INSTALL:append:mt8391 = " packagegroup-rity-mtk-neuropilot packagegroup-rity-mtk-video"

DISTRO_FEATURES gating

Certain features require explicit opt-in via DISTRO_FEATURES:

Feature flagWhat it unlocks
nda-mtkRAW ISP (mtk-camisp-prebuilts), NDA firmware, proprietary codecs
secure-bootFIT image signing, U-Boot key provisioning
fwupdateEFI capsule OTA update infrastructure
pipewirePipeWire audio stack (replaces PulseAudio)
btfKernel BPF Type Format + eBPF introspection tools
expand-rootfsAuto-expand rootfs service on first boot

If nda-mtk is not set, camera ISP and hardware codec features silently fall back to software alternatives or are excluded entirely.

KAS build system

RITY uses KAS to manage the 8+ layer repos the full stack requires. Each kas/*.yml file pins all layers to specific git refspecs:

# kas/rity-demo.yml (simplified)
machine: i500-pumpkin
target: rity-demo-image
distro: rity-demo
includes:
  - kas/include/base.yml
  - kas/include/deps.yml

deps.yml pins:

  • poky, meta-openembedded, meta-arm
  • meta-rity, meta-mediatek-bsp
  • meta-mediatek-tsn, meta-mediatek-bluedroid
  • meta-nn, meta-tensorflow, meta-clang

Build with a single command:

kas build kas/rity-demo.yml

KAS clones all layers, generates bblayers.conf and local.conf, and runs BitBake. No manual setup.

To build for a specific board, substitute the kas file:

kas build kas/genio-720-evk-demo.yml

Notable implementation details

LLVM is the default toolchain. RITY uses meta-clang and sets LLVM as the preferred compiler. If you add recipes that assume ${CC} is GCC, they may need patches.

NetworkManager replaces systemd-networkd. systemd-networkd is explicitly disabled to prevent DHCP conflicts. All network configuration goes through NetworkManager or its CLI (nmcli).

Package format is .deb. PACKAGE_CLASSES = "package_deb" means the rootfs uses Debian-style packages. You can run apt on the target if you serve a package feed from your build output.

Debian package feed setup:

# Build the package index
bitbake package-index
# Serve from build directory
cd tmp/deploy/deb && python3 -m http.server 9876
# On local.conf, add:
# PACKAGE_FEED_URIS = "http://<host-ip>:9876"
# EXTRA_IMAGE_FEATURES:append = " package-management"
# On target:
apt-get update && apt-get install <package>

For the full Yocto build workflow including fetching the RITY manifest and flashing the result, see Yocto build guide for MediaTek Genio. For creating a custom layer on top of RITY, see building a custom Yocto meta layer for Genio.

FAQ

Is RITY an RTOS?

No. RITY is a full Linux distribution built on Yocto/Poky. It runs a standard Linux kernel with optional real-time patches. RITY stands for Reference Implementation of Things in Yocto, it is MediaTek’s reference AIoT image, not a real-time operating system.

What is the difference between rity-bringup, rity-demo, and rity-skeleton?

rity-bringup is a minimal debug image (~150MB) for initial hardware verification. rity-demo is the full-featured image (~1GB) with GStreamer, AI/ML, Chromium, PipeWire, and camera support. rity-skeleton is a template layer for creating a custom derivative distribution on top of RITY.

Do I need to use RITY for MediaTek Genio development?

No. RITY is a reference starting point. You can build a custom Yocto distro on top of the MediaTek BSP layer (meta-mediatek-bsp) without using RITY at all. RITY is most useful for understanding how MediaTek integrates their hardware IP, treat it as documentation you can run.

What is KAS and why does RITY use it?

KAS is a Python tool for orchestrating Yocto builds across multiple layer repositories. RITY uses KAS because the full stack requires 8+ layer repos at specific git refspecs. A single kas build kas/rity-demo.yml fetches all layers and builds the image without manual repo cloning or bblayers.conf editing.


MediaTek Genio Expert Support

Building on MediaTek Genio?

BSP bring-up, GStreamer pipelines, NeuroPilot integration, we've shipped it. Get unblocked fast. One call to scope it, fixed bid to deliver it.

Frequently Asked Questions

Is RITY an RTOS?

No. RITY is a full Linux distribution built on Yocto/Poky. It runs a standard Linux kernel with optional real-time patches. RITY stands for Reference Implementation of Things in Yocto, it is MediaTek's reference AIoT image, not a real-time operating system.

What is the difference between rity-bringup, rity-demo, and rity-skeleton?

rity-bringup is a minimal debug image (~150MB) for initial hardware verification. rity-demo is the full-featured image (~1GB) with GStreamer, AI/ML, Chromium, PipeWire, and camera support. rity-skeleton is a template layer for creating a custom derivative distribution on top of RITY.

Do I need to use RITY for MediaTek Genio development?

No. RITY is a reference starting point. You can build a custom Yocto distro on top of the MediaTek BSP layer (meta-mediatek-bsp) without using RITY at all. RITY is most useful for understanding how MediaTek integrates their hardware IP, treat it as documentation you can run.

What is KAS and why does RITY use it?

KAS is a Python tool for orchestrating Yocto builds across multiple layer repositories. RITY uses KAS because the full stack requires 8+ layer repos at specific git refspecs. A single kas build kas/rity-demo.yml fetches all layers and builds the image without manual repo cloning or bblayers.conf editing.

Andrés Campos, Co-Founder & CTO at ProventusNova

Written by

Andrés Campos

Co-Founder & CTO · ProventusNova

8 years deep in embedded systems, from underwater ROVs to edge AI. Andrés leads every technical delivery personally.

Connect on LinkedIn