NDA vs public Yocto build on MediaTek Genio: what's the difference
MediaTek publishes a public IoT Yocto BSP for Genio, but hardware acceleration — video, AI, camera — requires a second private layer distributed under NDA. Understanding exactly what each build includes determines whether you need to start the NDA process before your first prototype or whether you can defer it to production readiness.
Key Insights
- The public build is functional for application development — it runs Linux, GStreamer, and AI models on CPU
- Hardware video (mtkvdec, mtkh265enc), NPU/MDLA (NeuroPilot), and Mali GPU firmware all require the NDA build
- Camera ISP bring-up (libcamera IPA, tuning files) requires the NDA build
- The NDA restricts redistribution of the private layer source — it does not restrict shipping products built with it
- Start the NDA process early — the approval process takes 1-2 weeks and is a blocker for hardware validation
What exactly is in each build?
| Component | Public build (NDA_BUILD=0) | NDA build (NDA_BUILD=1) |
|---|---|---|
| Linux kernel | Yes — full open source | Yes — same kernel + private driver patches |
| U-Boot bootloader | Yes | Yes |
| Weston compositor | Yes | Yes |
| GStreamer framework | Yes | Yes |
| Hardware video decode | No — software fallback (avdec_h264) | Yes — mtkvdec |
| Hardware video encode | No — software fallback (x264enc) | Yes — mtkh265enc |
| NeuroPilot SDK | No | Yes |
| NPU / MDLA inference | No — CPU fallback only | Yes |
| Mali GPU firmware | No — software Mesa | Yes — closed-source firmware |
| OpenCL on Mali | No | Yes |
| OpenGL ES (full) | No — Mesa software | Yes — closed-source drivers |
| Camera ISP (libcamera) | Partial — open source IPA | Full — MTK IPA + tuning support |
| Chromium (hw-accel) | No | Yes — with V4L2 decode |
What can you actually do with the public build?
More than you might expect. The public build is suitable for:
- Application development — Any software that does not depend on hardware acceleration works identically
- GStreamer pipeline structure — Pipeline logic, demuxing, muxing, and software encode/decode all work
- AI model development — Run inference on CPU using TFLite or ONNX Runtime. Performance is slow but the API is identical to NeuroPilot
- Yocto customization — Adding packages, building custom meta-layers, configuring the init system
- Connectivity and peripheral work — Wi-Fi, BT, SPI, I2C, USB — all of this is in the public layer
- Weston and display output — waylandsink works with the public build using Mesa’s software renderer
What does not work:
- Video processing at useful framerates (software H.264 decode on Cortex-A55 at 1080p is too slow for real use)
- NPU inference (the NeuroPilot runtime is entirely in the private layer)
- Camera ISP quality tuning (the open-source IPA produces functional but untuned output)
- OpenCL compute on Mali
When does NDA access become a blocker?
Plan to have NDA access in place before these milestones:
Hardware performance validation — You cannot validate video throughput or NPU inference speed without the NDA build. If your product spec depends on hardware acceleration performance, you need NDA access before your first hardware prototype.
Camera bring-up — The camera ISP tuning process requires the MTK IPA binary. Without it, you have a camera that captures raw frames but without noise reduction, lens shading correction, or 3A convergence.
Production build — Any production image that ships with hardware-accelerated features requires the NDA build. The compiled binary (your firmware image) can ship in products — only the source layer is protected.
How do you add the NDA layer to your build?
Once you have the private layer repo from MediaTek (the full build workflow is covered in the Yocto build guide for Genio):
- Clone it alongside your other layers:
git clone <private-repo-url> layers/meta-mediatek-bsp-private
- Add it to your kas configuration file:
layers:
meta-mediatek-bsp-private:
path: layers/meta-mediatek-bsp-private
branch: genio-yocto-<version>
- Set the build flag:
NDA_BUILD=1 kas build kas/genio-720-evk.yml
The private layer uses bbappend files to extend or replace recipes from the public layer. No changes to the public layer are needed — the two coexist cleanly.
What does the NDA actually restrict?
The NDA restricts:
- Sharing the
meta-mediatek-bsp-privatesource with parties not covered by the agreement - Publishing the private layer (or derived works) publicly, including open source
- Reverse engineering the closed-source binaries
The NDA does not restrict:
- Shipping products that include firmware images built with the NDA layer
- Production volume or markets
- Building multiple product lines using the same NDA
- Having contractors or employees build with the layer (they are covered by your organization’s NDA)
Need help navigating the MediaTek Genio NDA process or getting your BSP set up for hardware acceleration? ProventusNova has existing NDA access and experience with both public and private BSP layers. See our custom board bringup service or get in touch.
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
What does the NDA build add that the public build does not have?
The NDA build (NDA_BUILD=1) adds: hardware video encode/decode GStreamer elements (mtkvdec, mtkh265enc), NeuroPilot SDK for NPU and MDLA inference, Mali GPU firmware and closed-source OpenCL/OpenGL ES drivers, camera ISP pipeline (libcamera IPA and tuning), and certain board-specific drivers that MediaTek cannot distribute publicly. Without the NDA build, all of these fall back to software or are unavailable.
Can I develop and prototype with the public build, then switch to NDA for production?
Yes, and this is the recommended approach. The public build is sufficient for application logic, GStreamer pipeline structure, AI model development (using CPU inference), and Yocto layer customization. When you need to validate real hardware performance — video throughput, NPU inference speed, camera quality — switch to the NDA build. The switch only requires adding the private layer and setting NDA_BUILD=1.
How do I get access to the NDA build?
Contact your MediaTek FAE (Field Application Engineer) or go through the Genio partner program. MediaTek requires a signed NDA before providing access to the meta-mediatek-bsp-private layer. The process typically takes 1-2 weeks. If you are working through a distributor like Arrow or Avnet, they can facilitate the NDA introduction.
Does the NDA restrict what I can do with my product?
The NDA primarily restricts redistribution of the closed-source binaries — you cannot publish the NDA layer publicly or share it with third parties outside of the agreement. Your compiled firmware image can be deployed in your product without restriction. The NDA does not limit product features, production volume, or markets.
Is the public build ever sufficient for a production product?
For products with no AI inference, no hardware video codec, and no camera ISP requirements, yes. A Genio 350 running a display-only HMI application, for example, can ship with the public build. But any product that uses the NPU, needs hardware video acceleration, or uses the built-in camera ISP will require the NDA build for production.
Written by
Andrés CamposCo-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