The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Device Tree is a structured hardware description that Linux and related firmware use to identify a particular platform. Developers normally write a readable Device Tree Source (DTS) file, compile it into a Device Tree Blob (DTB), and have the bootloader provide that binary to the kernel. The approach keeps board-specific hardware data out of machine-specific kernel code, but it is not a general-purpose file for every runtime preference.
What is a device tree in Linux?
A device tree describes the hardware layout of a system and the relationships between its components: buses, interrupt lines, GPIO connections, clocks and peripheral devices. Linux can then discover and configure that platform using data that is separate from the kernel’s generic code.
Thomas Petazzoni’s Device Tree for Dummies presentation calls it “a hardware description language” and says it should describe “the hardware layout, and how it works.” That distinction matters: a tree describes what hardware exists and how it is connected, rather than which optional, user-selected operating mode should be enabled. See the presentation copies from Linux Foundation events and Bootlin.
DTS and DTB: the two forms you encounter
| Form | What it is | Typical role |
|---|---|---|
| DTS | Human-readable Device Tree Source text | Edited by developers to describe a board or platform |
| DTB | Compiled Device Tree Blob binary | Loaded by the bootloader and passed to the Linux kernel |
The normal workflow is to edit the platform’s DTS files, compile them with the device-tree compiler used by that platform’s build system, and deploy the resulting DTB through the board’s boot process. File names, build targets, storage locations and bootloader settings differ by board and distribution, so use the current documentation for the exact platform rather than copying a command intended for another board. The introductory presentation describes this source-to-binary and bootloader-to-kernel flow; its event description also covers syntax, compilation and boot interaction (presentation, event description).
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
#1 Best Overall
What is a device-tree binding?
A binding is the convention that says how a class of hardware must be represented in the tree. It defines the expected node structure, property names, value formats and connections for items such as buses, interrupts, GPIOs and peripherals.
When describing a component, start with the binding that applies to it. The node’s properties and values must match what the corresponding Linux driver expects; a syntactically valid DTS can still fail to probe if it describes the hardware with the wrong binding or omits required information. Toradex’s Device Tree Technical Overview provides an accessible explanation of this relationship between hardware descriptions and drivers.
Rank #2
What is a device-tree overlay?
An overlay is a partial tree that extends or modifies a base device tree. Instead of restating the whole platform, it adds the description for an attached or optional component and the connections needed to use it.
| Base tree | Overlay | |
|---|---|---|
| Scope | Whole platform and its built-in hardware | Incremental fragment for an add-on or change |
| Use | Describes the board presented to the kernel | Enables or adjusts hardware selected by the platform’s firmware or boot flow |
| Compatibility | Must match the board, kernel and drivers | Must match the base tree, firmware, kernel and drivers |
On Raspberry Pi systems, firmware can read an overlay at boot and merge it into the system tree passed to Linux. The official HAT Device Tree Blob guide uses I2C, SPI, I2S, LEDs and buttons as examples. That mechanism is a platform-specific example, not a universal overlay procedure. An overlay also cannot supply a missing driver: the kernel still needs software that supports the described device.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchHow the bootloader and kernel use the tree
- Firmware or a bootloader identifies the platform. It selects the appropriate DTB, and on platforms that support them may apply overlays.
- The bootloader places the DTB in memory. It passes the DTB’s location to the kernel along with the other boot parameters.
- The kernel reads the hardware description. Drivers match compatible devices and use properties such as register ranges, interrupts, clocks and GPIOs to initialize them.
The exact hand-off interface and boot configuration are platform-dependent. For a real board, follow its current bootloader and operating-system documentation and verify which DTB and overlay files are actually loaded.
A safe beginner workflow for writing DTS
- Identify the exact platform. Record the board revision, bootloader, kernel version and operating-system distribution. Device-tree files are not interchangeable just because boards have similar names.
- Find the existing base DTS. Start from the platform’s maintained source and inspect how its buses, pin controllers, clocks and enabled peripherals are represented.
- Locate the binding. Use the binding for the device or bus and copy its required property names and value conventions; do not invent a near-equivalent property.
- Describe connections as well as the device. Check addresses, interrupt lines, GPIO polarity, pin multiplexing, clocks, regulators and bus status. A node alone does not make an electrically connected device usable.
- Compile with the platform’s documented build system. Produce the DTB through the same kernel or board build flow expected by the target. Keep the generated file tied to the source and kernel version that produced it.
- Deploy and verify. Confirm the bootloader selected the intended DTB or overlay, then inspect kernel logs and the driver’s probe result. A successful compile proves syntax, not that the wiring, binding or driver is correct.
Common mistakes and their symptoms
- Using a preference as hardware data: the tree becomes difficult to maintain because board description and policy are mixed together.
- Choosing the wrong binding: the kernel may ignore the node or a driver may fail during probe.
- Forgetting pin, clock, regulator or interrupt dependencies: the peripheral appears in the tree but cannot communicate or initialize.
- Applying an overlay to the wrong base tree: labels, addresses or symbols may not exist, or the resulting hardware description may be inconsistent.
- Assuming an overlay includes software support: Linux still requires a compatible driver in the running kernel.
- Following an old board guide unchanged: bootloader, firmware, kernel and binding details can change; check the current platform documentation.
What “Device Tree for Dummies” actually is
The title refers to Thomas Petazzoni’s introductory presentation delivered under the Free Electrons name, not to a verified commercially published For Dummies book. Its stated learning goals are to boot a system with a device tree, understand basic syntax, and learn bindings and their rules. It remains useful as an introduction, while the exact commands and file paths for a current board must come from that board’s up-to-date documentation.
Quick Recap
Best Value
Rank #4
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

