Terminal showing a Yocto build for MediaTek Genio 720 with meta-mediatek-bsp layer bitbake output
mediatekgenioyoctometa-mediatek-bspbspembedded linux

Yocto for MediaTek Genio: meta-mediatek-bsp setup guide

Andres Campos ·

MediaTek’s official Yocto BSP for Genio is meta-mediatek-bsp, hosted on GitLab and tracking the scarthgap branch. It ships with the RITY reference distribution, 27 machine configurations, and support for both public and NDA-gated camera stacks. Knowing which parts require NDA access and which don’t is the first thing to sort out before starting a Genio Yocto project.

Key Insights

  • The BSP layer is at gitlab.com/mediatek/aiot/bsp/meta-mediatek-bsp.git, scarthgap branch. RITY reference distro is at gitlab.com/mediatek/aiot/rity/meta-rity.git.
  • Start with rity-bringup (minimal, no audio server), move to rity-demo for development, use rity-skeleton as your production starting point.
  • NDA_BUILD = "1" unlocks the proprietary camera ISP stack on Genio 510, 700, and 1200 only — Genio 520 and 720 use V4L2 exclusively, no NDA camera path exists for those platforms.
  • MALI_SOC = "mt8189" for Genio 720 — the GPU hardware inside MT8391 is identified as mt8189 internally. Custom GPU recipes must use this name, not mt8391.
  • Genio 520 and 720 are the only Genio platforms with ONNX Runtime NPU acceleration (MDLA) on by default. Other platforms require ENABLE_NEURON_EP = "1" in local.conf.

Layer setup and dependencies

The meta-mediatek-bsp layer identity:

BBFILE_COLLECTIONS = "mediatek-bsp"
BBFILE_PRIORITY    = 7
LAYERVERSION       = 1
LAYERSERIES_COMPAT = "scarthgap"
LAYERDEPENDS       = "core openembedded-layer meta-python meta-arm"

Optional multimedia integration via dynamic layers:

BBFILES_DYNAMIC += "multimedia-layer:${LAYERDIR}/dynamic-layers/multimedia-layer/*/*/*.bbappend"

Key URIs:

AIOT_URI     = "git://git@gitlab.com/mediatek/aiot"
AIOT_BSP_URI = "${AIOT_URI}/bsp"
AIOT_NDA_URI = "${AIOT_URI}/nda"   # NDA access required
NDA_BUILD    = "0"                  # Set to "1" to unlock NDA recipes

Setting NDA_BUILD = "1" auto-enables the NDA distro feature and unlocks the proprietary camera stack for supported platforms.

Machine configurations

The BSP ships 27 machine configurations:

conf/machine/
├── genio-360-evk.conf     (mt8366)
├── genio-510-evk.conf     (mt8370)
├── genio-700-evk.conf     (mt8390)
├── genio-720-evk.conf     (mt8391)
├── genio-1200-evk.conf    (mt8395)
├── *-norboot.conf         (SPI NOR flash boot variants)
└── include/
    ├── mediatek-common.inc
    ├── gpu-provider.inc   (Mali vs Panfrost selection)
    ├── mt8391.inc         (Genio 720 SoC include)
    ├── mt8395.inc         (Genio 1200 SoC include)
    ├── mt7921.inc         (WiFi 6 module)
    └── mt7925.inc         (WiFi 7 module)

Each SoC include defines the critical platform variables:

# genio-720-evk (MT8391) example
SOC_FAMILY      = "mt8391"
SOC_SRAM_ADDR   = "0x2001000"
TFA_PLATFORM    = "mt8391"
OPTEE_TARGET    = "mediatek-mt8391"
OPTEE_DRAM_SIZE = "0x200000000"
MALI_SOC        = "mt8189"     # GPU internal name — not mt8391
LK_PROJECT      = "genio_720_evk"

Note MALI_SOC = "mt8189" for Genio 720. The Mali GPU hardware inside MT8391 is identified as mt8189 internally. Custom recipes targeting GPU support must use mt8189, not mt8391. This is the naming trap explained in the Genio hardware design gotchas post.

RITY OS — the reference distro

RITY is MediaTek’s reference AIoT distribution. Source: gitlab.com/mediatek/aiot/rity/meta-rity.git.

Distro variantPurposeKey additions
rity-bringupMinimal dev/debugbringup fwupdate features, no audio
rity-demoFull-featured developmentPipeWire, Chromium, AI/ML, TSN, Wayland
rity-demo-panfrostOpen GPU variantPanfrost Mesa driver, OpenCL via Mesa
rity-skeletonCustom derivative templateMinimal, meant to be copied and modified

Start with rity-bringup — fastest path to a bootable console image. Move to rity-demo for development. Use rity-skeleton as your production starting point.

rity-demo-panfrost substitutes the open-source Panfrost driver for the proprietary Mali binary. Performance is lower, but the licensing is clean for products that can’t ship the Mali userspace.

Kernel development workflow

# Build kernel for a specific board
MACHINE=genio-720-evk bitbake linux-mtk

# Flash kernel partition
genio-flash kernel

# Flash kernel + modules when modimg is enabled
genio-flash kernel modules

Kernel config fragments live in src/meta-mediatek-bsp/recipes-kernel/linux/linux-mtk/, one per SoC and one per board. To enable a config option:

# Enable USB FunctionFS in mt8365.cfg
CONFIG_USB_FUNCTIONFS=m
CONFIG_USB_FUNCTIONFS_GENERIC=y

For larger kernel changes, use devtool modify linux-mtk — it creates a local checkout linked to the build system.

Camera: V4L2 vs NDA ImgSensor

PlatformV4L2NDA ImgSensor (camd.service)
Genio 350YesNo
Genio 510 / 700YesYes (NDA required)
Genio 520 / 720Yes (only)No path available
Genio 1200YesYes (NDA required)

V4L2 through the SENINF/CAMSV pipeline works on all platforms. The NDA ImgSensor stack gives access to MediaTek’s proprietary ISP tuning on G510/G700/G1200 — but requires an active NDA with MediaTek.

One important caveat for Genio 520/720 (added to Yocto BSP in v25.1, December 2025): the ISP hardware pipeline is not yet functional. MIPI-CSI transfers sensor data but full ISP processing is pending. Raw V4L2 capture works; ISP-processed frames do not. Check the current BSP release notes before designing a product around ISP on these platforms.

AI inference on Yocto

PlatformTFLite CPU/GPUTFLite Neuron Stable DelegateONNX NeuronEP (NPU)
Genio 350YesNoNo
Genio 510/700YesYesOpt-in
Genio 1200YesYesOpt-in
Genio 520/720YesYesYes (default)

For Genio 510/700/1200, enable NeuronExecutionProvider with ENABLE_NEURON_EP = "1" in local.conf. For Genio 520/720, it’s on by default — they’re the only Genio platforms with ONNX Runtime NPU acceleration out of the box.

Generative AI (LLM inference via TFLite/LiteRT) on Yocto: available now on Genio 720, expected Q2 2026 on Genio 520. On Android, it runs on both today.

We handle Genio Yocto BSP bring-up as part of engagements at ProventusNova — from initial layer setup through camera drivers and AI inference integration.

Frequently Asked Questions

Where can I find the MediaTek Genio Yocto BSP layer?

At gitlab.com/mediatek/aiot/bsp/meta-mediatek-bsp.git. Requires scarthgap. The RITY reference distro is at gitlab.com/mediatek/aiot/rity/meta-rity.git.

What does NDA_BUILD do in the MediaTek Genio BSP?

Setting NDA_BUILD = "1" unlocks proprietary camera ISP and other NDA-only components, only functional on Genio 510, 700, and 1200. Genio 520/720 use V4L2 only.

Which Yocto image should I start with for MediaTek Genio?

rity-bringup for initial bring-up. rity-demo for full development. rity-skeleton as your production template.

How do I build and flash just the kernel on MediaTek Genio?

MACHINE=genio-720-evk bitbake linux-mtk to build, genio-flash kernel to flash. Add modules if you have a separate module partition.

Does the ISP hardware pipeline work on Genio 520 and 720?

Not in the current public BSP (v25.1.x). MIPI-CSI sensor data transfer works; full ISP processing is pending a future release.

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

Where can I find the MediaTek Genio Yocto BSP layer?

The meta-mediatek-bsp layer is at gitlab.com/mediatek/aiot/bsp/meta-mediatek-bsp.git. It requires scarthgap and depends on core, openembedded-layer, meta-python, and meta-arm. The RITY reference distro (meta-rity) is at gitlab.com/mediatek/aiot/rity/meta-rity.git.

What does NDA_BUILD do in the MediaTek Genio BSP?

Setting NDA_BUILD = '1' in local.conf unlocks MediaTek's proprietary camera ISP stack (camd.service) and other closed-source components, available only under NDA. Only functional on Genio 510, 700, and 1200. Genio 520 and 720 use V4L2 only — no NDA camera path exists for those platforms.

Which Yocto image should I start with for MediaTek Genio?

Start with rity-bringup for initial bring-up (minimal, no audio server). Move to rity-demo for a full-featured development image (PipeWire, Chromium, AI/ML, Wayland, TSN). Use rity-skeleton as your production template.

How do I build and flash just the kernel on MediaTek Genio?

Run MACHINE=genio-720-evk bitbake linux-mtk to build the kernel. Flash with genio-flash kernel. If your image has a separate module partition (modimg enabled), use genio-flash kernel modules.

Does the ISP hardware pipeline work on Genio 520 and 720?

Not in the current public BSP (v25.1.x). MIPI-CSI sensor data transfer works, but full ISP hardware processing is not yet supported on Genio 520 and 720. V4L2 raw capture works today; ISP-processed frames are pending a future release.

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