Skip to content

About

SOF Topology Files

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Sound Open Firmware Topologies (sof-topologies)

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.


Repository Structure

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

Quick Start

1. Build Local alsa-lib and alsa-utils (alsatplg >= 1.2.7)

If you do not already have a recent alsatplg built in ../tools/bin/alsatplg:

./scripts/build-topology.sh -A

2. Build Topologies

# 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/topology

Or directly with CMake + Ninja:

cmake -B build -GNinja
cmake --build build

3. Install Topologies

Using 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.14

Or using standard CMake install:

sudo cmake --install build --prefix /lib/firmware

4. Build & Validate RPM, DEB, and TGZ Packages

# 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 test

Synchronizing with sof During CI Transition

While 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

About

SOF Topology Files

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages