Standalone repository containing the ALSA topology (.tplg) sources, build system, installation scripts, and inspection tooling for Sound Open Firmware (SOF).
ALSA topology files describe the audio DSP graph (pipelines, widgets, routes, DAIs, controls) and are loaded dynamically by the Linux kernel SOF driver during initialization.
| Path | Description |
|---|---|
topology1/ |
Legacy (v1) m4-based IPC3 topology sources (i.MX8, i.MX8MP, i.MX8ULP, i.MX93, i.MX95, MediaTek MT8186/8188/8195/8196/8365, AMD ACP, CAVS nocodec) |
topology2/ |
Class-based (v2) alsatplg -p IPC4 & IPC3 topology sources (Intel CAVS 2.5, ACE 1.x/2.x/3.x/4.x, HDA generic, SDCA generic, i.MX8, CHT, and sof-testbench4 development/benchmark graphs) |
test/topology/ |
Automated component, SSP, and DMIC test topology matrix (tplg-build.sh) |
include/kernel/abi.h |
Standalone SOF ABI version header used when generating topology manifests |
tools/ |
Topology developer tools: tplgtool2.py (binary .tplg parser/graph dumper) and pretty-macro.sh |
scripts/ |
Build (build-topology.sh), ALSA compiler setup (build-alsa-tools.sh), deployment (install-topology.sh), and sof synchronization (sync-from-sof.sh) scripts |
If you do not already have a recent alsatplg built in ../tools/bin/alsatplg:
./scripts/build-topology.sh -A# Build all topology1 and topology2 production & development targets:
./scripts/build-topology.sh
# Or build specific subsets:
./scripts/build-topology.sh -1 # topology1 (M4 IPC3) only
./scripts/build-topology.sh -2 # topology2 (alsaconf v2 IPC4 & IPC3) only
./scripts/build-topology.sh -t # test/topology matrix
./scripts/build-topology.sh -L # also link outputs into ../sof/tools/build_tools/topologyOr directly with CMake + Ninja:
cmake -B build -GNinja
cmake --build buildUsing the helper script:
# Install locally into /lib/firmware/intel/{sof-tplg,sof-ipc4-tplg,sof-ace-tplg}:
sudo ./scripts/install-topology.sh
# Install into an offline/NFS rootfs:
./scripts/install-topology.sh --rootfs /srv/nfs/aphid-rootfs
# Deploy directly to a DUT over SSH:
./scripts/install-topology.sh --ssh root@aphid
# Populate versioned directories in a sof-bin release tree:
./scripts/install-topology.sh --sof-bin ../sof-bin/v2.14.x --version v2.14Or using standard CMake install:
sudo cmake --install build --prefix /lib/firmware# Build DEB, RPM, and TGZ packages with pre-compiled topologies:
make packages
# Or build individual package formats:
make deb # Generates build/sof-topology_<version>_all.deb
make rpm # Generates build/sof-topology-<version>-1.noarch.rpm
make tgz # Generates build/sof-topology-<version>-Linux.tar.gz
# Validate package file paths, permissions, version data, and symlinks:
make validate-packages
# Run the full topology and package test suite:
make testWhile CI systems are transitioning from sof/tools/topology to sof-topology, use scripts/sync-from-sof.sh to pull or push topology changes:
# Pull latest topology changes from ../sof into sof-topology:
./scripts/sync-from-sof.sh --pull
# Check whether sof-topology and ../sof are in sync (CI check):
./scripts/sync-from-sof.sh --check
# Push topology changes from sof-topology back to ../sof:
./scripts/sync-from-sof.sh --push