Glossary · 5 · Hardware SDKs and devices
Device tree
Also known as: Devicetree, Flattened device tree (FDT)
In embedded systems, a device tree is a hierarchical data structure and source language for describing the hardware of a system, such as processors, memory, buses and peripherals, so that an operating system can configure itself for that hardware without hard-coding it; it is written as source files (.dts, .dtsi) and usually compiled into a binary blob (.dtb).
- Hardware SDK
- Embedded systems
- Standards
In one sentence
A device tree is a hierarchical description of a system's hardware that an operating system reads instead of hard-coding the board's details.
Example
A board's .dts file lists its I2C bus and the temperature sensor at address 0x48, so the Linux kernel loads the right driver without a board-specific code change.
How it applies
- Hardware SDKs: The device tree is the hardware description inside many embedded kits and board support packages. The Linux kernel documentation calls it a data structure and language for describing hardware, readable by an operating system so that it does not need to hard-code details of the machine.
- Linux and Zephyr: Linux reads a compiled device tree blob passed by the bootloader at start-up. Zephyr uses devicetree at build time: board .dts files include .dtsi files for the system-on-chip, overlays adjust them and YAML bindings define the allowed properties, and the build turns the result into configuration for the device drivers.
- Specification: The format is specified by the Devicetree Specification, maintained at devicetree.org; as of October 11, 2026 the current release is v0.4 (June 28, 2023). Bindings for individual device types are maintained by the operating system projects.
- Origin: The device tree comes from Open Firmware. A flattened form (FDT) was later created so that bootloaders could pass the description to the operating-system kernel as a binary blob without an Open Firmware implementation.
- Documentation: Board documentation should name the device tree files, the overlays a user may need and the bindings they rely on. A changed device tree changes how the system sees its hardware and belongs in release notes like a driver change.
Device tree vs. ACPI
A device tree describes hardware as data. ACPI, the firmware interface of PC and many server platforms, also carries byte code (AML) with which the platform encodes hardware behavior, and defines a power management model. The Linux kernel documentation on ACPI for arm64 gives these points, with the established server bindings, as the rationale for using ACPI on Arm server systems; boards described in board support packages for Linux and Zephyr typically use device trees.
External references
- Devicetree.org: Devicetree Specification
- Linux kernel documentation: Linux and the Devicetree
- Linux kernel documentation: ACPI on Arm systems
- Zephyr Project: Devicetree and Input and output files