# Install dtc with Homebrew, apk, dnf, MacPorts, Nix, pacman, winget, zypper

Device tree compiler. Version 1.8.1 via Homebrew; verified 2026-05-28.

## Install

```sh
sudo av install brew:dtc
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install dtc
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install dtc
```

  Evidence: MacPorts ports tree: cross/dtc/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- apk (92%):

```sh
sudo apk add dtc
```

  Evidence: Alpine Linux edge package indexes: dtc from https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz

- dnf (92%):

```sh
sudo dnf install dtc
```

  Evidence: Fedora Rawhide package metadata: dtc from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst

- Nix (92%):

```sh
nix profile install nixpkgs#dtc
```

  Evidence: nixpkgs package indexes: pkgs/by-name/dt/dtc/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- pacman (92%):

```sh
sudo pacman -S dtc
```

  Evidence: Arch Linux sync databases: dtc from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz

- zypper (92%):

```sh
sudo zypper install dtc
```

  Evidence: openSUSE Tumbleweed package metadata: dtc from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

### Windows

- winget (92%):

```sh
winget install --id oss-winget.dtc -e
```

  Evidence: Windows Package Manager source index: oss-winget.dtc from https://cdn.winget.microsoft.com/cache/source.msix

## Package facts

- **Package key:** brew:dtc
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/dtc>
- **Version:** 1.8.1
- **Source summary:** Device tree compiler
- **Homepage:** <https://git.kernel.org/pub/scm/utils/dtc/dtc.git>
- **Repository:** <https://git.kernel.org/pub/scm/utils/dtc/dtc.git>
- **Upstream docs:** <https://git.kernel.org/pub/scm/utils/dtc/dtc.git/tree/Documentation>
- **License:** GPL-2.0-or-later OR BSD-2-Clause
- **Source archive:** <https://mirrors.edge.kernel.org/pub/software/utils/dtc/dtc-1.8.1.tar.xz>
- **Last updated:** 2026-05-28T04:27:00Z
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- convert-dtsv0 (cli)
- dtc (cli)
- dtdiff (cli)
- fdtdump (cli)
- fdtget (cli)
- fdtoverlay (cli)
- fdtput (cli)
- convert-dtsv0 (alias)
- dtc (alias)
- dtdiff (alias)
- fdtdump (alias)
- fdtget (alias)
- fdtoverlay (alias)
- fdtput (alias)

## Dependencies

- libyaml

## Build dependencies

- meson
- ninja
- pkgconf

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 1.8.1
- Package-manager updated: 2026-05-28
- Local data: ok
- Upstream repository: https://git.kernel.org/pub/scm/utils/dtc/dtc
- info: Release/tag comparison is only available for GitHub repositories.
## Project history and usage

dtc is the Device Tree Compiler, the upstream toolchain for converting human-readable Devicetree Source files into binary Devicetree Blob files and back. It is a small command-line package, but it sits on a critical path for Linux, embedded boards, bootloaders, firmware descriptions, and hardware bring-up.

### Project history

The Linux kernel documentation explains the historical setting: Devicetree came from Open Firmware as a way for firmware to describe hardware to an operating system, long used on PowerPC and SPARC. In 2005, PowerPC Linux cleanup required DT support broadly, and the Flattened Device Tree format was created so bootloaders such as U-Boot and kexec could pass a binary blob to the kernel without requiring a full Open Firmware implementation.

dtc is the userspace compiler around that format. Its manual says the compiler takes a device tree in one format and emits another, typically compiling DTS source into DTB binary output, while also supporting filesystem-style input, assembly output, YAML intermediate output, libfdt, fdtdump, fdtget, fdtput, fdtoverlay, and related tools.

The upstream repository is maintained on git.kernel.org by the DTC group. The official manual names git.kernel.org as the source location and gives the HTTP(S) upstream repository URL, making it the authoritative repo rather than a package-manager mirror.

### Adoption history

dtc adoption follows Linux and embedded adoption rather than an application popularity curve. Whenever a board port, bootloader, firmware workflow, or kernel build needs DTS-to-DTB compilation or libfdt tools, dtc becomes part of the build or debugging environment.

Package-manager coverage is broad: the input package metadata records Alpine, Homebrew, Fedora/DNF, MacPorts, Nix, Arch/pacman, winget, and zypper packages. Homebrew analytics are much higher than the other packages in this batch, which fits dtc's role as infrastructure pulled in by embedded, kernel, and hardware workflows.

### How it is used

The core command compiles between input formats such as `dts`, `dtb`, and filesystem representation, and output formats such as `dtb`, `dts`, assembly, and YAML. Common workflows include compiling board `.dts` files, decompiling `.dtb` blobs for inspection, generating overlays with symbol and fixup metadata, and using libfdt utilities in scripts.

The package has no user config file or credentials. It is a compiler/tool suite whose behavior is driven by command-line options and source files.

### Why package nerds care

dtc is significant because it is one of those packages that looks small in a package list but represents an entire hardware-description ABI. If you build kernels, bootloaders, board support packages, or firmware images, `dtc` is often just there, quietly turning text descriptions into boot-time data.

For package nerds, it is also a reminder that not all important packages are user-facing applications. dtc is plumbing: versioned tarballs from kernel.org, a dual GPL/BSD license model, libfdt consumers, distro packaging, and an executable family that shows up anywhere embedded Linux work happens.

### Timeline

- 2005: Linux kernel documentation describes Flattened Device Tree creation during PowerPC Linux cleanup.
- 2006-01: The dtc refs page shows the `dwg-last` tag.
- 2007-08: The dtc refs page shows v1.0.0.
- 2011-05: The dtc refs page shows v1.3.0.
- 2021-06: The dtc refs page shows v1.6.1.
- 2026-05: The dtc refs page shows v1.8.1, packaged by Homebrew as the stable version.

### Related projects

- Linux Devicetree support is the main operating-system context for dtc.
- U-Boot and kexec are named by the Linux kernel documentation as bootloaders or loaders modified to pass and modify DTB data.
- libfdt is part of the dtc source tree and provides library access to Flattened Device Tree data.
- Devicetree.org specifications are cited by the Linux kernel documentation as the format overview.

### Sources

- <https://git.kernel.org/pub/scm/utils/dtc/dtc.git>
- <https://git.kernel.org/pub/scm/utils/dtc/dtc.git/plain/Documentation/manual.txt>
- <https://git.kernel.org/pub/scm/utils/dtc/dtc.git/refs/>
- <https://www.kernel.org/doc/html/latest/devicetree/usage-model.html>
- <https://formulae.brew.sh/api/formula/dtc.json>


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** dtc
- **Version Scheme:** 0
- **Revision:** 0
- **Head Version:** HEAD
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Nix - dtc: normalized package name match | nixpkgs package indexes: pkgs/by-name/dt/dtc/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- apk - dtc - 1.7.2-r1: normalized package name match | Alpine Linux edge package indexes: dtc from https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz | Device Tree Compiler | https://git.kernel.org/pub/scm/utils/dtc/dtc.git/
- apk - dtc-dev - 1.7.2-r1: normalized package name match | Alpine Linux edge package indexes: dtc-dev from https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz | Device Tree Compiler (development files) | https://git.kernel.org/pub/scm/utils/dtc/dtc.git/
- apk - libfdt - 1.7.2-r1: normalized package name match | Alpine Linux edge package indexes: libfdt from https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz | Device tree library | https://git.kernel.org/pub/scm/utils/dtc/dtc.git/
- apk - py3-libfdt - 1.7.2-r1: normalized package name match | Alpine Linux edge package indexes: py3-libfdt from https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz | Device tree library for Python 3 | https://git.kernel.org/pub/scm/utils/dtc/dtc.git/
- apk - py3-libfdt-pyc - 1.7.2-r1: normalized package name match | Alpine Linux edge package indexes: py3-libfdt-pyc from https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz | Precompiled Python bytecode for py3-libfdt | https://git.kernel.org/pub/scm/utils/dtc/dtc.git/
- dnf - dtc - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: dtc from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Device Tree Compiler | https://devicetree.org/
- dnf - libfdt - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: libfdt from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Device tree library | https://devicetree.org/
- dnf - libfdt-devel - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: libfdt-devel from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Development headers for device tree library | https://devicetree.org/
- dnf - libfdt-static - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: libfdt-static from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Static version of device tree library | https://devicetree.org/
- dnf - mingw32-libfdt - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: mingw32-libfdt from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | MinGW Device tree library | https://devicetree.org/
- dnf - mingw32-libfdt-static - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: mingw32-libfdt-static from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Static version of MinGW Device tree library | https://devicetree.org/
- dnf - mingw64-libfdt - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: mingw64-libfdt from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | MinGW Device tree library | https://devicetree.org/
- dnf - mingw64-libfdt-static - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: mingw64-libfdt-static from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Static version of MinGW Device tree library | https://devicetree.org/
- dnf - python3-libfdt - 1.8.1-2.fc45: normalized package name match | Fedora Rawhide package metadata: python3-libfdt from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Python 3 bindings for device tree library | https://devicetree.org/
- pacman - dtc - 1:1.7.2-1: normalized package name match | Arch Linux sync databases: dtc from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz | Device Tree Compiler | https://www.devicetree.org/


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [meson](https://www.automicvault.com/pkg/brew/meson/) - Build dependency declared by Homebrew.
- [ninja](https://www.automicvault.com/pkg/brew/ninja/) - Build dependency declared by Homebrew.
- [pkgconf](https://www.automicvault.com/pkg/brew/pkgconf/) - Build dependency declared by Homebrew.
- [qemu](https://www.automicvault.com/pkg/brew/qemu/) - Popular package that depends on this formula.
- [arm-none-eabi-gcc](https://www.automicvault.com/pkg/brew/arm-none-eabi-gcc/) - Shares av.db curated category or tags: cli, compiler, compilers, developer-tools, embedded.
- [aarch64-elf-gcc](https://www.automicvault.com/pkg/brew/aarch64-elf-gcc/) - Shares av.db curated category or tags: cli, compiler, compilers, developer-tools.
- [adaptivecpp](https://www.automicvault.com/pkg/brew/adaptivecpp/) - Shares av.db curated category or tags: cli, compiler, compilers, developer-tools.
- [arm-none-eabi-binutils](https://www.automicvault.com/pkg/brew/arm-none-eabi-binutils/) - Shares av.db curated category or tags: cli, compilers, developer-tools, embedded.
- [bunster](https://www.automicvault.com/pkg/brew/bunster/) - Shares av.db curated category or tags: cli, compiler, compilers, developer-tools.
- [foma](https://www.automicvault.com/pkg/brew/foma/) - Shares av.db curated category or tags: cli, compiler, compilers, developer-tools.
- [i686-elf-gcc](https://www.automicvault.com/pkg/brew/i686-elf-gcc/) - Shares av.db curated category or tags: cli, compiler, compilers, developer-tools.
- [m68k-elf-gcc](https://www.automicvault.com/pkg/brew/m68k-elf-gcc/) - Shares av.db curated category or tags: cli, compiler, compilers, developer-tools.
- [i2c-tools](https://www.automicvault.com/pkg/brew/i2c-tools/) - Local package facts share a topical domain. Shared terms: cli, developer, developer-tools, linux.
- [sparse](https://www.automicvault.com/pkg/brew/sparse/) - Local package facts share a topical domain. Shared terms: cli, compiler, developer, developer-tools.

## Combined YAML source

View the package source record on GitHub. [combined/dtc.yml](https://github.com/automic-vault/db/blob/main/combined/dtc.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
