yocto project bitbake openembedded

The Yocto Project® – A thorough Overview

4-day class

The course content could be tailored to better suit your needs and objectives. If time permits consulting during the training can be included. Please click the public tab to see the public sessions.

Private online
Onsite at your premises
We'll never share your email with anyone else.
Pick Quarter Quarter Status Access Delivery Location Language Timezone Book Until
1st quarter 2024 private remote virtual German/English (to be defined) UTC+2 (to be defined) Apr 01, 2024
2nd quarter 2024 private remote virtual German/English (to be defined) UTC+2 (to be defined) Jul 01, 2024
3rd quarter 2024 private remote virtual German/English (to be defined) UTC+2 (to be defined) Oct 01, 2024
4th quarter 2024 private remote virtual German/English (to be defined) UTC+2 (to be defined) Jan 01, 2025

Content as described below. Starting from three attendees from the same company please check our private sessions.

Public online
Public workshop in classroom
We'll never share your email with anyone else.
Pick Date Date Status Access Delivery Location Language Timezone Book Until
Jun 11, 2024 public remote virtual German/English (to be defined) UTC+2 May 31, 2024
Jul 09, 2024 public remote virtual German/English (to be defined) UTC+2 Jun 28, 2024
Aug 06, 2024 public remote virtual German/English (to be defined) UTC+2 Jul 26, 2024
Sep 03, 2024 public remote virtual German/English (to be defined) UTC+2 Aug 23, 2024
Sep 10, 2024 public classroom Munich German/English (to be defined) UTC+2 Aug 16, 2024
Oct 08, 2024 public classroom Essen German/English (to be defined) UTC+2 Sep 06, 2024
Oct 15, 2024 public remote virtual German/English (to be defined) UTC+2 Oct 04, 2024
Nov 12, 2024 public remote virtual German/English (to be defined) UTC+2 Nov 01, 2024
Nov 19, 2024 public classroom Munich German/English (to be defined) UTC+2 Oct 25, 2024
Dec 10, 2024 public classroom Mainz German UTC+2 Nov 29, 2024

You’ll get a much better understanding of the Yocto Project® and how to use it.

Course Objectives

  • We’ll give and thorough overview of the of the Yocto Project® and try to show it’s capabilities as well as how the puzzle pieces fit together.
  • We’ll see, among other things how a BSP/framework maintainer would make use of the Yocto Project® as well as developers who might not even want/need to know that it’s Yocto Project® they operate underneath.
  • Some hints about how a “professional grade” setup can be achieved will be given.


This four-day training combines theory with hands-on exercises to introduce the Yocto Project®.

It answers frequently asked questions like:

  • What is the Yocto Project® and what is the OpenEmbedded/Yocto Project® workflow?
  • What is BitBake?
  • What are Layers?
  • Is it really necessary to use another version of the toolchain/libraries/packages for each Embedded Linux project and on top of that to follow a different workflow?
  • Can you ensure that the development environment is identical for all developers/suppliers and that you can still produce identical builds like today in 10+ years from now?
  • Can the Yocto Project® help find out under what software licenses the packages you use are licensed?
  • … and much more

Hands-on sessions are performed on the host, in a docker container, and on target hardware (e.g. i.mx6). The docker container is based on Ubuntu with all dependencies the Yocto Project® needs pre-installed. After the workshop, you will be able to download the docker container plus examples to work with the course material on your own. Please note that this is not an introductory course to Embedded Linux like the one we offer here. You should already know how Embedded Linux works and how to configure/build the Linux kernel and kernel drivers in order to follow certain advanced chapters.


  • Basic familiarity with using a Linux system (e.g. Ubuntu) as an end-user in user space
  • Basic familiarity with a command-line shell
  • Basic knowledge of user/kernel space programming with Linux
  • Intermediate C programming knowledge
  • Ideally, you have basic experience with Embedded Linux (kernel, userspace, root file-system, tools) to follow this workshop. You should have attended ”Embedded Linux – From System Architecture to Real-Time (5 days)” or ”Introduction to Embedded Linux in Theory and Practice – a Crash Course (3 days)”. (highly recommended)
  • except if you are already familiar with the material presented in those courses.
  • It might be helpful if you attended ”Embedded Linux Kernel Internals and Device Drivers (5 days)”, but that’s not a prerequisite. It’s sufficient to know how to build the Linux kernel, in/out of tree kernel drivers, and the flattened device tree (fdt) to follow the board support package (BSP) and kernel chapters of this workshop.
  • The sessions mentioned above can be delivered on-site and online. Feel free to ask for dates and pricing here.

Course Roadmap

Who should attend?

You already use Linux for your projects and have probably heard about the Yocto Project®, but did not dare to have a closer look into it, or had difficulties using it. You don’t know whether and how your daily workflow can be accommodated in the Yocto Project® and generally find the Yocto Project® rather complicated. Why do we need all this since up to now everything was (supposedly) much easier? After the class, you should be able to decide whether you need the Yocto Project® or not. The workshop is aimed at software-, development-, system engineers, testers, administrators, engineers, and other parties interested in the Yocto Project®, with a solid knowledge of Embedded Linux.

Course Outline

Day 1


  • History of Unix/Linux | Licensing | Standards | Unix Philosophy

Embedded Specifics

  • Linux on the desktop compared to Linux in an embedded system | cross-/native toolchains | pre-built toolchains | build systems | C libraries |

Eval Board

  • How does Linux boot on a PC and on the evaluation board? | See it booting

Yocto Introduction

  • What is Linux? | What is a Linux distro? | What is Yocto? | What is the Yocto Project®? (features/challenges) | Some tools hosted/used by the Yocto Project® (Poky | BitBake | OpenEmbedded-Core | Metadata) | Why would you use the Yocto Project®?

How to become part of our Yocto Project® Community (optional)

  • First steps | How to get in touch | Participate | Contribute | Social Media | Events

Development Environment

  • What is needed for a Yocto Project® build? | Layer versions/dependencies | host dependencies | config files | host/kernel dependencies

The Yocto Project® Workflow

  • Intro
  • Workflow | OpenEmbedded architecture
  • Configuration (User) | Metadata (Recipes) | Machine (BSP) | Distribution (Policy)
  • Features | Recipe Versioning | Layers
  • Sources
  • Source fetching | Patching | Configure/Compile/Staging | SSTATE | Pseudo | recipetool | Examples of Recipes | PACKAGECONFIG | Packages and their contents | Output analysis/Packaging | How to generate Images | SDK Generation | Tasks
  • Customization of Images (Intro | local.conf | IMAGE_FEATURES | custom image recipes (.bb files) | custom packagegroups)
Day 2


  • History
  • Syntax (Variable Expansion | Variable Assignment | Prepend/Append | Remove | Variable Flags | Conditional Syntax – OVERRIDES)
  • BitBake Debugging (debug level | find recipes/images/packagegroups | BitBake environment/tasks/logging | force build/force building a specific task | cleansstate | How to invalidate the stamp | devshell | dependencies | packages | kill all BitBake instances | BitBake graphical wrapper)
  • Cleaning (gain disk space | rebuild)


  • Intro | bitbake-layers tool | dynamic layers

Board Support Package (BSP)

  • Intro | System Development Workflow | BSP Developer’s Guide (bsp-tool – ported to recent Poky versions) | BSP creation | non-mainline kernel patches


  • Intro | System Development Workflow | Kernel Development Manual (defconfig | defconfig + configuration fragment | in tree kmod | out of tree kmod | fdt classic | fdt with devicetree.bbclass | …)
Day 3

Software Development Kit

  • Intro | cross-development Toolchain | Sysroot | BBCLASSEXTEND | Multilib | The QEMU Emulator | SDK-Eclipse Yocto Project® Plug-in (deprecated) | User Space Tools | Installing SDKs & toolchains
  • Cross-Toolchains/Software Development Kits
    • Building a Cross-Toolchain installer
    • Using the Standard Software Development Kit (Cross-Toolchain + Makefile/Autotools/Autotools lib + App | recipes)
    • Building/Using the Extensible Software Development Kit


  • .so naming convention | What goes where (root file system/Software Development Kit)? | How to use an static library (autotools)(.a) with poky?

Eclipse (deprecated/optional)

  • Intro | Application Development Workflow
  • Working with Eclipse (root file system features | kernel + flattened device tree | root file system | install the Java Development Kit | install Eclipse | configure Eclipse | install Yocto Project® Plugin | Configure the Yocto Project® Plugin | Create “Autotooled Project” | Configuring the Cross-Toolchains | Build the Project)
Day 4

User Space Debugging

  • Intro | gdb | gdb remote debugging | (gdb remote) Debugging with Eclipse | (remote) Run from Eclipse


  • Intro | perf | gprof | gcov | strace | ftrace | systemtap | LTTng + Eclipse (data visualization) | top | powertop | powerdebug

Package Management

  • SW update vs. Package Management | Working with Packages | ipk | creating a package feed | installing a package with opkg on the target system


  • Intro | Add custom license | Add commercial license | Firmware License | Open Source License Compliance


  • Intro | Add recipe/Build/Deploy | Create/Add layer | Finish | Modify/Update-Recipe | Build/Run | Build: Image

Course Brochure (pdf)

What customers are saying