Understanding about the MACHINE_FEATURES and DISTRO_FEATURES in the Yocto Project

Yocto Project is used to create the build for a specific machine (target board). In the Yocto project, we need to provide the machine name in the configuration file and each machine refers to a development board or hardware platform.
Most common machine name :
Raspberry Pi


  • MACHINE_FEATURES is a variable that defined hardware-specific features supported on the board.
  • MACHINE_FEATURES variable helps to control the software would be included or excluded.
  • MACHINE_FEATURES is present in the machine configuration file.


Suppose if a board supporting Bluetooth and wifi both then machine feature include the Bluetooth and wifi to built the software stack.

MACHINE_FEATURES = " bluethooth wifi"
For raspberry pi board default machine feature in rbi-base.inc MACHINE_FEATURES += "apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio ${@bb.utils.contains('DISABLE_VC4GRAPHICS', '1', '', 'vc4graphics', d)}" For beaglebone black board default machine feature in beaglebone-yocto.conf MACHINE_FEATURES = "usbgadget usbhost vfat salsa"

You can remove and add the machine feature based on your board without modifying the default list.

To add wifi as the machine feature:
MACHINE_FEATURES:append = " wifi"    # syntax for "Honister" or newer releases
MACHINE_FEATURES_append = " wifi"    # syntax for older version 

To remove wifi feature:
MACHINE_FEATURES:remove = " wifi"    # syntax for "Honister" or newer releases   
MACHINE_FEATURES_remove = " wifi"    # syntax for older version


  • It is a variable defined in the configuration file which lists the software features you want to distribute or shipped with the custom Linux Image.
  • Each distribution contains many packages and utilities like graphical interface packages, package management systems, OpenGL, etc.

Default distro feature on poky thud version:

DISTRO_FEATURES ?= " largefile opengl ptest multiarch wayland vulkan"

Suppose You want to remove the wayland distro feature then:
DISTRO_FEATURES:remove = " wayland"     # syntax for "Honister" or newer releases
DISTRO_FEATURES_remove = " wayland"     # syntax for older version
To add x11 distro feature:
DISTRO_FEATURES:append = " x11"         # syntax for "Honister" or newer releases
DISTRO_FEATURES_append = " x11"         # syntax for older version

Add comment

Security code