Developer utilities, visual tools, and host applications for the Sound Open Firmware (SOF) ecosystem.
| Tool | Directory | Description |
|---|---|---|
sof-top |
sof-top/ |
GTK4 Live DSP Resource Monitor — Moving Core Utilization Graph, Moving Memory Utilization Graph (HPSRAM, LPSRAM, DRAM L3/IMR, Heaps), and Unified DSP Task List |
sof-remote-server |
sof-remote-server/ |
Lightweight C TCP Telemetry & Control Daemon (Port 9998) for DUTs via /dev/sof-dsp0 or direct PCIe BAR4 MMIO + DebugFS/SysFS fallback |
sof-builder |
sof-builder/ |
GTK4 Topology2 Visual Graph Editor, IPC4 .tplg Compiler & Real-Time sof-testbench4 Simulation / Telemetry Studio |
sof-testbench |
sof-testbench/ |
Multi-Core LL/DP sof-testbench4 Simulator, sof-tb-ctl TCP Control CLI, Host Platform Runtime (platform/library), and 70-Test Suite |
sof-tplg-parser |
sof-tplg-parser/ |
ALSA Topology (.tplg) IPC3/IPC4 Parser Library (libsof_tplg_parser.a) |
The top-level Makefile builds, installs, and packages all sof-utils tools (sof-builder, sof-top, sof_remote_server, sof-remote, sof-testbench4, sof-tb-ctl, and libsof_tplg_parser.a):
# Build all tools (auto-detects SOF_SRC_DIR or pass SOF_SRC_DIR=/path/to/sof):
make
# Install all binaries, libraries, headers, Python apps, and .desktop files:
sudo make install PREFIX=/usr
# Build Debian (.deb) package into dist/:
make deb
# Build RPM (.rpm) package into dist/:
make rpm
# Build both .deb and .rpm packages into dist/:
make packagessof-testbench/ builds sof-testbench4 and sof-tb-ctl in a local build directory by compiling sof-utils's host platform runtime (sof-testbench/platform/library and sof-testbench/arch/host) together with the firmware audio modules, pipeline engine, and IPC code directly from an SOF checkout (${SOF_SRC_DIR}/src/), leaving the sof checkout completely untouched.
west init -l sof-utils
west updatecmake -B sof-testbench/build -S sof-testbench -DSOF_SRC_DIR=/path/to/sof
cmake --build sof-testbench/build -j$(nproc)(If -DSOF_SRC_DIR is omitted, CMake auto-detects sof via west list -f "{abspath}" sof, $SOF_SRC_DIR, or ../sof.)
ctest --test-dir sof-testbench/build --output-on-failureUbuntu / Debian:
sudo apt update
sudo apt install python3 python3-pip python3-gi python3-gi-cairo gir1.2-gtk-4.0 gir1.2-pango-1.0 alsa-utilsPython Packages (pip):
pip install -r sof-builder/requirements.txt(Required Python packages: PyGObject>=3.42.0, pycairo>=1.20.0)
# Run directly:
./sof-builder/sof-builder /path/to/sof/tools/topology/topology2
# Or install as a Python CLI package:
pip install -e ./sof-builder
sof-builder /path/to/sof/tools/topology/topology2See sof-builder/README.md for full documentation, environment variables (SOF_ROOT, SOF_TOPOLOGY2_DIR, SOF_TESTBENCH_BIN, ALSATPLG), and feature guides.
# Build sof_remote_server and sof-remote for Linux DUTs:
make remote-server
# or: make -C sof-remote-server
# Launch sof-top (Moving Core Graph + Moving SRAM/DRAM Memory Graph + DSP Task List):
./sof-top/sof-top --host <dut-ip> --wakesof-remote-server cross-compiles cleanly against Bionic (NO_ALSA + TinyALSA + TinyCompress + liblog):
# 1. Cross-compile with Android NDK (or set AOSP_DIR=/path/to/aosp):
make android ANDROID_NDK_HOME=/path/to/android-ndk ANDROID_ABI=arm64-v8a ANDROID_API=34
make android ANDROID_ABI=x86_64 # Default ABI
# 2. Push binaries to /data/local/tmp/ and forward TCP port 9998 over ADB:
make android-push ANDROID_ABI=arm64-v8a
adb shell /data/local/tmp/sof_remote_server -p 9998
# 3. Connect host tools (sof-top / sof-remote) over the ADB-forwarded loopback port:
./sof-top/sof-top --host 127.0.0.1 --port 9998For security, Android builds bind 127.0.0.1 by default (use -b <addr> to override) and disable host: shell popen() execution unless -E is explicitly passed.
For in-tree AOSP integration:
- Soong:
sof-remote-server/Android.bpbuildssof_remote_serverandsof-remote(m sof_remote_server sof-remote). - Init service:
sof-remote-server/sof_remote_server.rcis opt-in on debuggable builds (adb shell setprop persist.vendor.sof.remote_server.enable 1). - SELinux: Reference vendor policy files live in
sof-remote-server/sepolicy/(BOARD_VENDOR_SEPOLICY_DIRS).
See sof-remote-server/README.md for CMake Android toolchain flags and full setup details.
Licensed under the BSD 3-Clause License. See LICENSE for details.