Fact-checked by Grok 2 weeks ago

Yocto Project

The Yocto Project is an open-source collaboration project that provides a flexible set of tools, templates, and processes to help developers create custom -based systems designed for embedded products, including devices across various hardware architectures. Announced by the in November 2010, it evolved from the project, integrating a stabilized of known as OpenEmbedded-Core (OE-Core) to ensure quality and consistency in builds. The project focuses on enabling the sharing of technologies, software stacks, and best practices among developers, making it the industry standard toolkit for embedded development. At its core, the Yocto Project employs the OpenEmbedded build system, which uses BitBake—a task execution engine inspired by Gentoo's Portage—to process recipes, classes, and configuration files for assembling tailored images. The reference distribution, Poky, combines BitBake with OE-Core and additional metadata to serve as a starting point for custom builds, supporting everything from minimal images to full-featured environments like the GNOME Mobile-based Sato reference . Key to its flexibility is the layer model, which allows modular organization of metadata into independent layers for hardware support, user applications, or distributions, facilitating easy customization and extension without altering the core system. The project supports a wide range of architectures, including , x86/, MIPS, PowerPC, and others, with built-in board support packages (BSPs), software (SBOM) generation, and emulation for hardware-agnostic development and testing. It emphasizes binary reproducibility—achieving up to 99.8% for standard images like core-image-minimal—and follows a biannual release cycle in and October to incorporate updates and maintain stability. The latest major release as of 2025, Walnascar 5.2, continues this tradition by enhancing support for modern embedded and use cases. Governed under the with a hierarchical structure including a Technical Steering Committee and member tiers (Platinum, Gold, Silver), the Yocto Project is backed by industry leaders such as , , , and Wind River, ensuring broad adoption in validating new system-on-chip () designs and powering initiatives like the Automotive Grade (AGL) and Reference Design Kit (RDK). This collaborative ecosystem has made it indispensable for developers worldwide, promoting scalable, efficient, and reproducible distributions tailored to specific hardware and software requirements.

Overview and History

Project Introduction

The Yocto Project is an open-source collaboration hosted by the that provides templates, tools, and methods to help developers create custom -based systems for devices. Its primary purpose is to enable the construction of tailored distributions that are independent of specific hardware architectures, with a strong emphasis on , , and to support diverse applications. Key features of the Yocto Project include primary support for processor architectures such as , (64-bit), x86, and ; secondary support for PowerPC (32-bit); and community-maintained layers for others including and (32-bit), allowing developers to build systems for a wide range of hardware targets. It offers essential resources like cross-compilation toolchains, software development kits (SDKs), and mechanisms for generating customizable images, while promoting shared technologies to ensure interoperability across different projects and vendors. The project's , Poky, serves as a baseline distribution that integrates the metadata framework with the BitBake build engine to facilitate initial setup and testing. Official resources for the Yocto Project include its primary website at yoctoproject.org, which provides overviews, development guides, and community information, as well as the comprehensive documentation site at docs.yoctoproject.org, offering detailed manuals, best practices, and reference materials for users.

Development History

The Yocto Project originated from the project, a community-driven framework for building embedded Linux systems established in 2003. Early development began as a proof-of-concept within the , with initial releases such as "" in December 2009, "Green" in June 2010, and "Laverne" (version 0.9) in October 2010, laying the groundwork for a standardized build environment. These efforts addressed the fragmentation in embedded Linux tools by leveraging OpenEmbedded's metadata and recipe system to create customizable distributions. In March 2011, the Linux Foundation officially launched the Yocto Project as a collaborative workgroup, backed by 22 founding organizations including , Wind River, , , and , with the goal of providing high-quality, open-source tools to streamline embedded Linux development. From its start, the project integrated the build system, utilizing BitBake as the task executor and Poky as the reference distribution to enable across architectures. Richard Purdie, who joined as a Linux Foundation Fellow in December 2010, has served as the primary architect, leading the technical direction and maintenance of core components like OpenEmbedded-Core and BitBake since inception. Key milestones include the 2018 addition of as a platinum member alongside and others, which facilitated code sharing, optimization for diverse , and broader adoption in embedded ecosystems. By 2020, the project extended support to modern architectures like through dedicated layers such as meta-riscv, enabling developers to target emerging open-standard processors. Post-2020, the Yocto Project evolved from basic build tools into a comprehensive , incorporating security hardening techniques like attack surface reduction and integration, as well as container image generation for embedded deployments. In 2023, Exein joined as a platinum member, and as of 2025, the project released version 5.2 Walnascar, continuing to enhance features for and applications.

Technical Architecture

Core Components

The Yocto Project's build environment is built upon several interconnected core components that enable the creation of custom distributions for embedded systems. At its foundation, BitBake serves as the task execution engine, while provides the metadata framework, and Poky acts as the reference distribution integrating these elements. Additional tools such as , devtool, and extend functionality for emulation, development, and monitoring, respectively. These components work together to parse , resolve dependencies, execute builds, and support iterative development processes. BitBake is a Python-based task executor that forms the heart of the Yocto Project's Build System. It parses metadata files to generate a of tasks, such as fetching , configuring, compiling, installing, and packaging software components, and then executes them in an efficient manner. BitBake supports parallel task execution to accelerate builds and handles complex dependency resolution, ensuring that prerequisites like cross-compilers are built before dependent components, such as desktop s. It operates within a controlled using tools like Fakeroot and to simulate privileges without requiring actual elevated access. OpenEmbedded, often referred to as OE-Core in its foundational form, is the metadata framework that defines the structure for building software in the Yocto Project. It supplies a collection of recipes—instruction sets for building individual software packages—along with classes that encapsulate common build logic and configuration files that set project-wide parameters. These elements allow developers to describe dependencies, such as runtime requirements via RDEPENDS or build-time needs via DEPENDS, enabling reproducible and modular builds across diverse hardware targets. 's design emphasizes extensibility, providing the data structures that BitBake processes to orchestrate the entire build pipeline. Poky is the reference provided by the Yocto Project, serving as a complete, ready-to-use starting point for developers. It combines the BitBake engine with the OpenEmbedded-Core metadata and includes a curated set of meta-layers tailored for common embedded scenarios, such as minimal images or graphical interfaces. By cloning the Poky and sourcing its initialization (oe-init-build-env), users establish a build directory configured with default settings, from which custom distributions can be derived. Poky ensures compatibility and stability, making it the baseline for most Yocto-based projects. Beyond these primary elements, the Yocto Project integrates supporting tools to enhance usability. provides hardware emulation capabilities, allowing built images to run on host machines without physical target devices; it leverages BitBake-generated artifacts like kernels and root filesystems via the runqemu command for rapid testing and QA validation across architectures. Devtool facilitates modification and recipe development by extracting upstream sources into a workspace, supporting commands like add, modify, and upgrade to streamline patching and integration with the extensible SDK (eSDK). offers a web-based for build , execution, and monitoring, capturing detailed data on tasks, dependencies, and performance metrics while integrating with BitBake to track command-line and project-based builds. The interdependencies among these components create a cohesive : BitBake relies on 's recipes, classes, and configurations to define and execute tasks, while Poky aggregates them into a functional distribution that incorporates for emulation, devtool for iterative enhancements, and for oversight. This architecture allows BitBake to drive the build process by interpreting metadata, ensuring efficient dependency handling and parallelization across the .

Metadata and Layers

The Yocto Project employs a modular to define and extend build for embedded distributions, enabling developers to specify software components, dependencies, and customizations in a structured, reusable manner. This primarily consists of recipes, classes, and files, which collectively instruct the build on how to fetch, compile, package, and install software. By organizing these elements into layers, the project facilitates collaboration and isolation of changes, preventing conflicts across different hardware or distribution requirements. Recipes, stored as .bb files, serve as the core units of , each defining the instructions for building a specific software package. A typical recipe includes the source location via the SRC_URI variable, dependencies such as requirements (RDEPENDS) and build-time needs (DEPENDS), applied patches for modifications, and task definitions like do_fetch, do_compile, and do_install to orchestrate the build process. For instance, a recipe for a might specify downloading from a , applying security patches, and installing headers and binaries into designated directories. This structure allows precise control over package versions and behaviors, ensuring reproducibility across builds. Classes, implemented as .bbclass files, provide reusable abstractions for common operations, reducing redundancy in recipes by encapsulating shared logic. These files define variables, functions, and task overrides that can be inherited by multiple recipes using the inherit directive. Examples include the package class, which handles the generation of output packages in formats like RPM or DEB, and the autotools class, which automates configuration and compilation for software using GNU Autotools. Installation-related classes, such as systemd, manage the placement of service files and enablement scripts, allowing recipes to focus on package-specific details while leveraging proven, standardized procedures. Configuration files, with a .conf extension, establish global or targeted settings that influence recipe behavior and build parameters. These include machine-specific files in conf/machine/ directories to define hardware features like the MACHINE variable for target architecture, distro-specific files in conf/distro/ to set policies such as the DISTRO variable for distribution features, and local configurations like local.conf for user overrides. Such files allow fine-grained adjustments, for example, enabling debug symbols or selecting compiler optimizations, without altering individual recipes. Layers represent directories that group related metadata into self-contained repositories, promoting modularity by separating concerns like board support packages (BSPs) or software stacks. Each layer includes a mandatory conf/layer.conf file to declare its name, priority via BBFILE_PRIORITY, and dependencies with LAYERDEPENDS, alongside subdirectories for recipes (recipes-*), classes (classes/), and configurations (conf/). Prominent examples are meta-openembedded, which extends the core with additional recipes for multimedia and networking, and meta-raspberrypi, a BSP layer providing hardware-specific configurations for Raspberry Pi boards. The bitbake-layers tool aids management by allowing commands to add, remove, or inspect layers, such as bitbake-layers show-layers to display priorities and paths. To maintain build integrity, best practices emphasize declaring layer dependencies in layer.conf to enforce loading order and using overrides—such as :append or :remove suffixes on variables (e.g., DEPENDS:append = " custom-lib")—to extend functionality without modifying upstream recipes. Append files (.bbappend) enable targeted patches or overrides within a layer, while prioritizing layers appropriately resolves parsing conflicts by favoring higher-priority metadata. These techniques ensure extensibility while minimizing integration issues in multi-layer setups.

Development Workflow

Building Process

The building process in the Yocto Project begins with initializing the development environment. Developers typically start by cloning the Poky repository, which serves as the reference distribution for Yocto, and then source the oe-init-build-env script to set up the build directory (defaulting to build/). This script configures essential environment variables, such as BBPATH and BUILDDIR, and creates configuration files like conf/local.conf for machine selection (e.g., MACHINE ?= "qemux86") and conf/bblayers.conf to include core layers. Prior to sourcing, the host system must meet requirements including at least 90 GB of free disk space, 32 GB of RAM, and specific packages like build-essential, chrpath, and git version 1.8.3.1 or later. Once the environment is initialized, the build proceeds through a series of task phases managed by BitBake, the task executor at the core of the build system. These phases include fetching from upstream repositories or mirrors, unpacking the archives into the work directory, applying patches defined in recipes, configuring the build environment (often using autotools or ), compiling the source into binaries, installing the compiled files into a , packaging the results into formats like RPM or IPK, constructing the root filesystem by installing selected packages, and finally generating deployable images such as tarballs or flashable formats. Each phase corresponds to a BitBake task (e.g., do_fetch, do_compile), executed in dependency order to ensure reproducibility and efficiency. To initiate a build, developers use the bitbake command followed by a target image recipe, such as bitbake core-image-minimal for a basic console-based image or bitbake core-image-sato for one with a graphical . BitBake parses from recipes and layers to resolve dependencies and execute tasks, leveraging the shared () cache to skip unchanged steps in incremental builds, which significantly reduces build times on subsequent runs. The sstate cache stores task outputs hashed by inputs, allowing from local or remote mirrors like those provided by the Yocto Project. The primary output artifacts from a successful build reside in the tmp/deploy/images/<machine>/ directory and include root filesystem images (e.g., core-image-minimal-<machine>.tar.bz2), kernel modules, bootloaders, and tarballs for cross-compilation. Additionally, the process can generate software development kits (SDKs) via targets like bitbake meta-toolchain, providing a self-contained environment with compilers, libraries, and debuggers tailored for the target architecture. These artifacts enable direct deployment to hardware or emulation in . Error handling during builds often involves addressing common issues like failed dependency resolution, network fetch problems, or configuration mismatches. For dependency issues, tools such as bitbake -g <recipename> generate dot files visualizing task dependencies, which can be rendered with to identify missing components. To variable expansions or states, bitbake -e [<recipename>] outputs the parsed , revealing values and their sources. Task-specific logs, found in ${WORKDIR}/temp/log.do_<taskname>, provide detailed failure traces, while the graphical dependency explorer (bitbake -u taskexp -g <recipename>) aids in interactive of build graphs. Network-related errors, such as interference during fetches, can be resolved by configuring local.conf with appropriate HTTP settings.

Customization Techniques

The Yocto Project provides flexible mechanisms for customizing embedded Linux builds to accommodate specific , , or needs without altering core components. These techniques leverage the build system's layer model, allowing developers to extend or override metadata in a modular way. Customization is typically performed by creating append files, configuration files, or new recipes within dedicated layers, ensuring and . Recipe modifications in the Yocto Project are achieved primarily through BitBake append files, known as .bbappend files, which allow users to extend or override existing recipes without copying the original source. A .bbappend file must share the same root name as the corresponding .bb recipe file and is placed in a custom layer to apply changes, such as adding patches via the SRC_URI variable or setting custom variables like EXTRA_OECONF for compilation options. For example, to patch a recipe like busybox, a developer creates a busybox.bbappend file containing FILESEXTRAPATHS:prepend := "${THISDIR}/files:" and places patch files in a subdirectory, enabling targeted updates like security fixes. This approach preserves the original recipe's integrity while facilitating version-specific overrides. Distribution configuration enables the definition of project-wide policies through custom .conf files in a dedicated distribution layer. To create a distribution, developers first generate a layer using the bitbake-layers create-layer command, then add a distro-specific file like mydistro.conf in the conf/distro directory, which sets variables such as PACKAGE_CLASSES for formats (e.g., "package_rpm" or "package_ipk") or DISTRO_FEATURES to include security enhancements like selinux. The DISTRO variable in local.conf is then set to "mydistro" to activate these policies, allowing centralized control over defaults like compiler optimizations or filesystem choices across builds. Include files in conf/distro/include can further modularize for different revisions. Machine configuration tailors builds to specific by defining settings in MACHINE-specific .conf files located in a BSP layer's conf/machine directory. These files specify variables like PREFERRED_PROVIDER_virtual/bootloader to select bootloaders (e.g., u-boot) and KERNEL_IMAGETYPE for formats, ensuring compatibility with target architectures such as or x86. For customization, a machine .conf might append to SRC_URI with hardware-specific defconfig files or patches, while setting COMPATIBLE_MACHINE in recipes to match the target (e.g., "qemuarm"). Additional details, like resolutions, are handled via formfactor machconfig files in recipes-bsp/formfactor/files. Image customization focuses on tailoring the final root filesystem by extending base image classes or recipes. Developers inherit the core-image class in a custom .bb file (e.g., myimage.bb) and define IMAGE_INSTALL to include packages via lists like "packagegroup-core-boot package1 package2", or use IMAGE_INSTALL:append in local.conf for quick additions. Features such as debugging tools or network servers are enabled through IMAGE_FEATURES (e.g., "debug-tweaks ssh-server-openssh") or EXTRA_IMAGE_FEATURES in local.conf, which propagate to supported core-image variants like core-image-minimal. For more complex needs, custom packagegroup recipes define RDEPENDS and RRECOMMENDS to bundle related components, which are then added to the image recipe. Advanced tools streamline customization workflows, with devtool providing commands for source editing and automated recipe generation. The devtool add command creates a new from existing by analyzing the workspace layer, setting up fetch and build logic similar to recipetool create, and integrating it into the build environment. For modifications, devtool modify extracts and edits source for an existing , allowing changes in a workspace directory before generating updates via devtool update-recipe, which produces or amends .bbappend files. Runtime package management supports post-build adjustments using tools like opkg for IPK packages or the Dandified Packaging (DNF) system for RPM, enabled by setting PACKAGE_CLASSES and including package-management features in the image. These tools, such as opkg install on the target device, allow dynamic updates without rebuilding the entire image.

Governance and Community

Organizational Structure

The Yocto Project operates as a non-profit collaborative initiative hosted under the since its announcement in 2010. This oversight ensures neutral governance, resource management, and compliance with principles, with the Linux Foundation applying administrative fees on project funds to support operations. The project's technical direction is guided by the Technical Steering Committee (TSC), composed of elected representatives such as Ross Burton, Khem Raj, Mark Hatle, and Denys Dmytriyenko, who oversee repositories, release planning, infrastructure, and architectural decisions through a meritocracy-based model. Richard Purdie serves as the lead architect, responsible for core development oversight, compatibility enforcement, and acting as the default maintainer for key components. Strategic input is provided by the Governing Board, which includes representatives from member organizations such as silicon vendors (e.g., , NXP, ), OEMs (e.g., Group, , ), and other stakeholders, focusing on budget approval, policy setting, and high-level roadmap alignment. An , established by the Governing Board, offers additional counsel from selected participants, including emeritus members and community representatives, to advance the project's mission. Participation is structured through membership tiers that determine financial contributions and representation rights: Platinum members (e.g., , , ) contribute $100,000 annually and appoint board representatives with two votes each; Gold members (e.g., Renesas, ) contribute $45,000 and receive one vote; Silver members (e.g., Microchip, ) contribute on a sliding scale of $5,000–$20,000 based on organization size and elect a shared representative; Associate members, including non-profits and government entities, join at no cost with Governing Board approval. Decisions within these bodies emphasize , supplemented by majority voting (requiring at least 51% approval) for formal actions.

Community Engagement

The Yocto Project encourages community engagement through multiple avenues to support collaboration and contributions. Developers participate via mailing lists for technical discussions and user support, IRC channels for real-time interaction, and regular virtual meetings covering topics like and . Contributions are welcomed in forms such as bug reporting, patch submission, testing, and feature development, guided by community values emphasizing inclusivity and merit. The project hosts including the annual Yocto Project Developer Day, local meetups, and participation in conferences like Embedded Linux Conference. Additionally, the Ambassador Program promotes adoption by creating educational resources, while initiatives like Outreachy provide internships to enhance in open-source participation.

Releases and Support

Release Schedule

The Yocto Project follows a bi-annual release cadence for major versions, with releases typically timed for spring () and fall () each year. Planning for each release begins 6 to 9 months in advance, involving feature identification, announcement of the release codename, and coordination among contributors. This process includes defined milestones with feature freezes toward the end, followed by intensive () cycles to ensure stability. The release process is overseen by the Technical Steering Committee (TSC), which conducts a Release Readiness Review to evaluate feature completeness, defect status, and overall quality before approval. Development proceeds through alpha and beta milestone releases from the master branch for community testing, culminating in release candidates that undergo final QA testing. Upon release, stable branches are created for maintenance, focusing exclusively on bug fixes and security updates without introducing new features. Every two years, the project designates a (LTS) release, which receives extended maintenance for four years, including security updates, critical bug fixes, and backports aligned with upstream stable series. In contrast, standard (non-LTS) releases receive support for seven months under a strict backport-only policy. To facilitate upgrades, the Yocto Project provides migration guides detailing changes and considerations between versions. Releases are named using codenames inspired by geographic features, such as for version , to promote easy and tracking across the .

Version History

The Yocto Project has evolved through a series of releases since its inception, with major versions introducing foundational tools, layer management enhancements, and support for modern hardware and languages. Releases follow a predictable , typically every six months, with (LTS) versions providing extended maintenance for production use. Early releases established the project's core framework, integrating BitBake as the build engine and focusing on recipe validation and multi-architecture support. The 1.0 release (Bernard) in April 2011 marked the first stable version, based on 2.6.37, and introduced a standardized process for recipe selection and validation alongside basic layer management capabilities. Subsequent early versions, such as 1.4 () in April 2013, improved layer handling and dependency resolution, enabling more modular customizations for systems. Mid-period releases expanded compatibility and build efficiency. Version 2.0 (Jethro), released in November 2015, added initial support for Python 3 in recipes and enhanced multiconfiguration builds for parallel processing across architectures. By 3.1 (Dunfell) in April 2020, an LTS release, key advancements included full removal of Python 2 support, integration of 5.4, and improved security scanning through better and vulnerability checks in the metadata. Recent releases emphasize performance, new language integrations, and emerging architectures. Version 4.0 (Kirkstone), an LTS release from April 2022, introduced language support for safer and optimizations for initramfs handling in multiconfig environments. The 5.0 LTS (Scarthgap) in April 2024 focused on performance optimizations, upgrading to 6.6, 2.39, and 18.1, while enhancing build reproducibility and security fixes across over 300 recipes. Version 5.1 (Styhead), released in October 2024, upgraded to 6.10 and included further recipe updates. Version 5.2 (Walnascar), released in April 2025, added enhancements, 6.12, 14.2, and 2.41, along with LZMA compression support for kernels. As of November 2025, the latest point release is 5.2.4 (September 2025), nearing end-of-life in November 2025, while 5.3 (Whinlatter) is in active development.
VersionCodenameRelease DateEnd-of-LifeMajor Changes
1.0BernardApril 2011March 2012Integration of BitBake build system; recipe validation process; support for x86, ARM, and MIPS architectures; Linux kernel 2.6.37.
1.4DylanApril 2013October 2014Improved layer management and dependency tracking; enhanced recipe parsing for better modularity.
2.0JethroNovember 2015April 2017Python 3 compatibility in recipes; multiconfig support for parallel builds; sstate cache optimizations.
3.1DunfellApril 2020April 2024Removal of Python 2; Linux kernel 5.4; enhanced security scanning and reproducible builds.
4.0KirkstoneApril 2022April 2026Initial Rust support; initramfs multiconfig builds; kernel image recommendations over dependencies.
5.0ScarthgapApril 2024April 2028Linux kernel 6.6; glibc 2.39; LLVM 18.1; performance optimizations in build tools; over 300 recipe upgrades.
5.1StyheadOctober 2024May 2025Linux kernel 6.10; additional recipe upgrades and stability improvements.
5.2WalnascarApril 2025November 2025Linux kernel 6.12; GCC 14.2; glibc 2.41; RISC-V enhancements; LZMA compression for kernels.
Upgrading between versions often requires attention to breaking changes, such as syntax updates, deprecated variables, and shifts in handling (e.g., Python 2 to 3 in 3.1 or minimum Python 3.9 requirement in 5.2). Users should review migration guides for each step, testing layers for , as major releases may bump versions or alter support.

Compatibility and Branding

Branding Program

The Yocto Project Branding Program is an initiative designed to recognize and promote organizations and products that contribute to or utilize the project, fostering ecosystem growth through formal affiliation and marketing support. Launched under the Linux Foundation's oversight, the program includes tiered memberships for participating organizations and separate compatibility designations for products, layers, and distributions, ensuring consistent branding that highlights collaborative efforts in embedded Linux development. Participant status is available to organizations that actively contribute code, funding, or resources to the Yocto Project, such as projects, non-profits, small companies with up to 80 employees, or larger entities meeting contribution guidelines. Benefits include the right to use Yocto Project logos in marketing materials, eligibility for advisory board seats on the Governing Board, and access to promotional support like featuring in event booths and advertisements. For higher tiers—Platinum ($100,000 annual fee), [Gold](/page/Gold) (45,000 annual fee), and Silver (sliding scale of $5,000–$20,000 based on employee count)—additional perks encompass priority access to development resources and specific compatibility badges that denote premium involvement. Associate status, free for qualifying non-profits, governments, and entities, offers basic recognition without financial commitment or advanced branding rights. The application process for organizational membership involves submitting a form through the Linux Foundation's platform, where applicants detail their contributions and employee count for tier determination; approvals are handled by the Governing Board to ensure alignment with project goals. For product-related branding, separate registration for "Yocto Project Compatible" status requires demonstrating compliance via checklists, including error-free builds and adherence to standards, with submissions reviewed for eligibility. All branding usage must follow the Yocto Project Brand Guidelines and Trademark Policy, prohibiting logo modifications and requiring contact with [email protected] for approvals. Founding participants include and Wind River, which helped establish the program in its early years to drive initial adoption. As of November 2025, the program has 41 members across tiers, with Platinum members including , , , BMW Group, , and ; Gold members including , Linaro, , Renesas, and ; and Silver members including , Microchip, NXP, and . These affiliations underscore the program's role in building a diverse coalition. Promotion through the branding program extends to Yocto Project events, documentation, and press releases, where member logos and compatible badges are displayed to showcase successful collaborations and encourage broader participation. This visibility ties into structures by amplifying member influence on project direction.

Compatibility Standards

The Yocto Project Compatibility Standards define the requirements for products and components to achieve "Yocto Project Compatible" status, ensuring , , and adherence to best practices in embedded development. These standards apply to layers, board support packages (BSPs), distributions, toolchains, SDKs, and end-user images built using Yocto Project tools, emphasizing build , proper , and testing to facilitate seamless across the . Key criteria for certification include adherence to the latest Yocto Project , of layers and via the OpenEmbedded Layer Index, and the inclusion of comprehensive documentation such as README files detailing origins, maintainers, dependencies, and security policies. Products must also pass conformance tests, including the yocto-check-layer script, to verify build reproducibility, image generation without errors, and exclusive use of BitBake fetcher APIs while avoiding invasive changes to core components. is ensured by separating hardware-specific, , and , following the BSP Developers Guide, and contributing upstream patches for any modifications. The certification process involves self-assessment through a checklist of prerequisites, submission of test results (ideally in resulttool format), and optional formal review by the Yocto Project team. Applicants, typically Yocto Project members or sponsored open-source projects, register via the official form, after which approved entities may license the Compatible logo for marketing compliant distributions, toolchains, or SDKs under the Linux Foundation Trademark Policy. This process promotes transparency by encouraging publication of automated CI test results and alignment with release versions detailed in the project's version history. The "Yocto Project Compatible Layer" designation applies to reusable software components such as BSPs or meta-layers, which must be maintained and listed in the Layer Index. Examples of certified components include those from vendors such as NXP (e.g., i.MX series BSPs) and Toradex (e.g., and Apalis modules), which demonstrate compliance through in-house maintained layers. Enforcement is overseen by the Technical Steering Committee (TSC), which conducts audits to verify ongoing compliance, with provisions for badge revocation in cases of non-adherence, such as failure to update to supported releases or unresolved interoperability issues. This rigorous approach, tied to branding participation, upholds the standards' integrity across the community.

References

  1. [1]
    2 Introducing the Yocto Project
    The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems that are designed for embedded products.
  2. [2]
    The Architecture of Open Source Applications (Volume 2)The Yocto ...
    Sponsored by the Linux Foundation, the Yocto Project is more than a build system. It provides tools, processes, templates and methods so developers can rapidly ...
  3. [3]
    The Yocto Project
    ### Summary of the Yocto Project
  4. [4]
    Project Overview - The Yocto Project
    The Yocto Project is an open source collaboration project that provides templates, tools and methods to help you create custom Linux-based systems.Missing: history | Show results with:history
  5. [5]
    Export Compliance - The Yocto Project
    The Yocto Project is a collaborative project from the Linux Foundation. At The Linux Foundation, the source code for all of the projects, including encryption ...
  6. [6]
    Technical Overview - The Yocto Project
    The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems for embedded products and other targeted ...
  7. [7]
    2 Yocto Project Supported Architectures And Features
    2 Yocto Project Supported Architectures And Features · 2.1 Primary Supported · 2.2 Secondary Supported · 2.3 Untested . “Untested” means that whilst the ...
  8. [8]
    Releases - Yocto Project
    ¹ The 3.1 series and 4.0 were originally planned for two years but extended to four.
  9. [9]
    OpenEmbedded and The Yocto Project
    Mar 18, 2024 · The Yocto Project is a Linux Foundation project which primarily provides resources to help encourage and sustain development of Embedded systems ...
  10. [10]
    Yocto Project Aligns Technology with OpenEmbedded and Gains ...
    Mar 2, 2011 · The Yocto Project is a Linux Foundation workgroup announced late last year to help develop open source, high-quality technology that helps ...Missing: launch | Show results with:launch
  11. [11]
    Linux Foundation's Yocto Project To Join Forces With ... - TechCrunch
    Mar 2, 2011 · Companies contributing to the project today now include Cavium Networks, Dell, Freescale Semiconductor, Intel, LSI, Mentor Graphics, Mindspeed, ...
  12. [12]
    Linux Foundation Appoints New Fellow
    Dec 13, 2010 · As a Linux Foundation Fellow, Purdie will work full-time on the Yocto Project, OpenEmbedded, the Poky Project and other embedded Linux ...
  13. [13]
    Yocto Project Welcomes New Members, Advances Open Source ...
    Aug 28, 2018 · The Yocto Project launched in 2011 and currently has over 22 active members. ... Yocto Project as Project Architect and Linux Foundation Fellow.Missing: founding | Show results with:founding
  14. [14]
    riscv/meta-riscv: OpenEmbedded/Yocto layer for RISC-V Architecture
    This is the general hardware-specific BSP overlay for the RISC-V based devices. More information can be found at: https://riscv.org/ (Official Site)Missing: 2020 | Show results with:2020
  15. [15]
    Open Source Summit + ELC North America 2020: Go RISC-V Go
    Additionally, we will discuss the state of tools on the RV32 ecosystem, progress on the glibc port for RV32, and Yocto Project support for RV32 in its core, ...
  16. [16]
    4 Yocto Project Concepts
    ... OpenEmbedded Build System, which is the build system specific to the Yocto Project. At the heart of the build system is BitBake, the task executor. The ...Missing: milestones | Show results with:milestones
  17. [17]
  18. [18]
  19. [19]
    Yocto Project Overview and Concepts Manual
    The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems that are designed for embedded products ...What is the Yocto Project? · Yocto Project Source... · Git Workflows and the Yocto...
  20. [20]
    Using the Quick EMUlator (QEMU) - the Yocto Project Documentation
    For official information and documentation on QEMU in general, see the following references: QEMU Website: The official website for the QEMU Open Source project ...
  21. [21]
  22. [22]
    1 Introduction — The Yocto Project ® 5.2.999 documentation
    Toaster is a web interface to the Yocto Project's OpenEmbedded Build System. The interface enables you to configure and run your builds.
  23. [23]
  24. [24]
    3 Understanding and Creating Layers
    The OpenEmbedded build system supports organizing Metadata into multiple layers. Layers allow you to isolate different types of customizations from each other.3.3. 1 Yocto Project... · 3.6 Prioritizing Your Layer · 3.6. 1 Providing...
  25. [25]
  26. [26]
  27. [27]
  28. [28]
    Yocto Project Quick Build
    This short document steps you through the process for a typical image build using the Yocto Project. The document also introduces how to configure a build for ...Overview and Concepts Manual · 2 Setting Up to Use the Yocto... · BitBake
  29. [29]
    12 Building — The Yocto Project ® 5.2.999 documentation
    This section describes various build procedures, such as the steps needed for a simple build, building a target for multiple configurations, generating an image ...
  30. [30]
    34 Debugging Tools and Techniques
    The Yocto Project provides several logging functions for producing debugging output and reporting errors and warnings. For Python functions, the following ...Missing: resolution | Show results with:resolution
  31. [31]
  32. [32]
    24 Creating Your Own Distribution - the Yocto Project Documentation
    Poky is explicitly a reference distribution for testing and development purposes. It enables most hardware and software features so that they can be tested, but ...
  33. [33]
    6 Adding a New Machine - the Yocto Project Documentation
    However, if customization is necessary, you need to create a machconfig file in the meta/recipes-bsp/formfactor/files directory. This directory contains ...
  34. [34]
    4 Customizing Images — The Yocto Project ® dev documentation
    For complex custom images, the best approach for customizing an image is to create a custom package group recipe that is used to build the image or images. A ...
  35. [35]
    29 Working with Packages — The Yocto Project ® dev documentation
    The Dandified Packaging (DNF) performs runtime package management of RPM packages. ... The opkg application performs runtime package management of IPK packages.
  36. [36]
    The Linux Foundation Announces Yocto Project Steering Group and ...
    Apr 6, 2011 · The Linux Foundation today is also announcing the Yocto Project Steering Group, which includes representatives from Dell, Intel Corporation, ...Missing: launch | Show results with:launch
  37. [37]
    [PDF] Yocto Project 2.0 Participation Agreement and Funding Charter 01 ...
    The Directed Fund operates under the guidance of the Governing Board of the Directed Fund (the “Governing Board”) and. The Linux Foundation (the “LF”) as may be ...Missing: governance structure
  38. [38]
    Leadership - The Yocto Project
    Project Leadership · Andrew Wafaa · Chuck Wolber · Megan Knight · David Reyna · Michael Halstead · Josef Holzmayr · Michelle Favalora.
  39. [39]
    Members - The Yocto Project
    ### Summary of Yocto Project Members
  40. [40]
    3 Yocto Project Releases and the Stable Release Process
    The Yocto Project delivers major releases (eg 5.2.999) using a six month cadence roughly timed each April and October of the year.
  41. [41]
    Yocto Project Release Process
    The Yocto release process includes milestone and point releases, a readiness review, and a final QA-tested release. The process involves branching, build, and ...
  42. [42]
    Stable Release and LTS - Yocto Project
    ### Summary of Long-Term Support (LTS) Information from Yocto Project Wiki
  43. [43]
    Release Information — The Yocto Project ® 5.2.999 documentation
    Each document in this chapter provides release notes and information about how to move to one release of the Yocto Project from the previous one.
  44. [44]
    Releases - The Yocto Project
    Previous Release Series ; Krogoth, 2.1, April 2016, 2.1.3 / June 2017, EOL ; Jethro, 2.0, November 2015, 2.0.3 / December 2016, EOL ...
  45. [45]
    Yocto Project | endoflife.date
    Oct 31, 2025 · Yocto stable releases (e.g. 3.0, 3.1, 3.2, 3.3…) are made about every 6 months, usually in April and October. Stable releases are maintained ...Missing: history codenames
  46. [46]
    Release 2.0 (jethro) — The Yocto Project ® 5.2.999 documentation
    This section provides migration information for moving to the Yocto Project 2.0 Release (codename “jethro”) from the prior release.Missing: key features
  47. [47]
    Release 3.1 (dunfell) — The Yocto Project ® 5.2.999 documentation
    This section provides migration information for moving to the Yocto Project 3.1 Release (codename “dunfell”) from the prior release.
  48. [48]
    Yocto Project 3.1 LTS (Dunfell 23.0.0) - LWN.net
    Apr 21, 2020 · Changes include a 5.4 kernel, the removal of all Python 2 code, improvements in the build equivalence mechanism (described in this article), and ...
  49. [49]
    Release notes for 4.0 (kirkstone) - the Yocto Project Documentation
    New Features / Enhancements in 4.0 · Allow Initramfs to be built from a separate multiconfig · Make kernel-base recommend kernel-image, not depend (allowing ...New Features / Enhancements... · Recipe Upgrades In 4.0 · Contributors To 4.0
  50. [50]
    Release 4.0 (kirkstone) — The Yocto Project ® 5.2.999 documentation
    This section provides migration information for moving to the Yocto Project 4.0 Release (codename “kirkstone”) from the prior release.Missing: key | Show results with:key
  51. [51]
    Release 5.0 (scarthgap) - the Yocto Project Documentation
    Release notes for 5.0 (scarthgap) · New Features / Enhancements in 5.0 · Known Issues in 5.0 · Recipe License changes in 5.0 · Security Fixes in 5.0 · Recipe ...
  52. [52]
    Yocto Project 5.0 "Scarthgap" released with Linux 6.6 and plenty of ...
    May 1, 2024 · The Yocto Project 5.0 codenamed “Scarthgap” has just been released with Linux 6.6, glibc 2.39, LLVM 18.1, and over 300 other recipe upgrades.
  53. [53]
    [ANNOUNCEMENT] Yocto Project 5.2 (walnascar-5.2) is Released
    May 7, 2025 · - The kern-tools recipe is now able to recognize files ending with .config for kernel-yocto-based Kernel recipes. - Support the LZMA compression ...
  54. [54]
    Logos and Guidelines - The Yocto Project
    For all other questions or requests on the use of the Yocto Project trademark, please contact the Yocto Project at trademarks@yoctoproject.org. Brand Guidelines.
  55. [55]
    Join - The Yocto Project
    ### Summary of Yocto Project Membership
  56. [56]
    Join the Yocto Project
    May 28, 2020 · Join the Yocto Project with Platinum, Gold, Silver, or Associate memberships. Fees vary, with Silver having a sliding scale. Benefits include ...
  57. [57]
  58. [58]
    Project Users - Yocto Project
    Aug 18, 2025 · This list is here to informally collate the companies, projects and products that use the Yocto Project in some way.
  59. [59]
    7 Yocto Project Compatible
    The official form to submit compatibility requests with is at https://www.yoctoproject.org/ecosystem/branding/compatible-registration/. Applicants can ...
  60. [60]
    Yocto Project Compatible Layers
    Yocto Project Compatible Layers ; meta-agl-core, master, kirkstone, scarthgap, This is the core layer with essential recipes and the distro. ; meta-arm, master, ...
  61. [61]
    Yocto Project Compatible Layer Registration - The Yocto Project
    ### Summary of Yocto Project Compatible Branding Program