While sof-bin repository is open to all vendors, in practise only binaries for Intel based systems have been distributed using this method so far. For pragmatic reasons, examples in this documentation use Intel binaries as examples as those are currently available.
WARNING: starting with v2.2, older Intel products are not supported by the main SOF development branch anymore. To avoid duplication and confusion in this sof-bin git repository, older product generations are now intentionally MISSING from sof-bin subdirectories v2.x/sof-v2.2/ and above.
For a complete release that includes all Intel products including older ones you MUST use official release tarballs found here:
https://github.com/thesofproject/sof-bin/releases
Installing directly from the sof-bin git repo should still work but it will only install a subset.
Tarballs are now a combination of several sof-bin subdirectories generated by a new release script. They include a new manifest.txt describing that combination. For more details see Github issue #90.
Some releases have version specific notes on installation. E.g. SOF v2.5 binaries require extra steps to configure the Linux kernel to use new IPC variant. Please see v2.5.x/README.md
To install the release just perform a recursive copy. You can also try
the convenience ./install.sh script:
tar zxf sof-bin-2023.09.tar.gz
cd sof-bin-2023.09
sudo mv /lib/firmware/intel/sof* some_backup_location/
sudo mv /usr/local/bin/sof-* some_backup_location/ # optional
sudo ./install.sh
The install script is intended for Linux systems where the Linux kernel will look up firmware binaries under /lib/firmware.
To run install from sof-bin git checkout:
sudo mv /lib/firmware/intel/sof* some_backup_location/
sudo mv /usr/local/bin/sof-* some_backup_location/ # optional
sudo ./install.sh v1.N.x/v1.N-rcM
Again you don't have to use install.sh, you can use any recursive copy of
your preference. This is all what install.sh does, example with
v1.7.x/v1.7:
cd v1.7.x
rsync -a sof*v1.7 /lib/firmware/intel/
ln -s sof-v1.7 /lib/firmware/intel/sof
ln -s sof-tplg-v1.7 /lib/firmware/intel/sof-tplg
rsync tools-v1.7/* /usr/local/bin
If you don't want the symbolic links:
rsync -a sof-v1.7/ /lib/firmware/intel/sof/
rsync -a sof-tplg-v1.7/ /lib/firmware/intel/sof-tplg/
rsync tools-v1.7/ /usr/local/bin/
Remember that for rsync (and some versions of cp), a trailing slash
in srcdir/ is roughly equivalent to srcdir/* + srcdir/.??* This
is how a recursive rsync is always idempotent while a recursive cp
is typically not.
To verify that the installed SOF firmware binaries, LLEXT dynamic modules, topologies, and userspace tools match a specific release in this repository using MD5 checksums:
# Identify versions of all installed SOF files on the filesystem
./validate_sof_install.py --identify
# Identify installed files with embedded binary manifest details (build date, ABI, git tags)
./validate_sof_install.py --identify -p tgl --manifest
# Identify installed files on remote DUT over SSH
./validate_sof_install.py -i -p tgl --ssh root@spider
# List available versions in sof-bin
./validate_sof_install.py --list-versions
# Validate a specific version on local /lib/firmware/intel (automatically displays manifest diffs on mismatch)
./validate_sof_install.py --version v2.14.1
# Validate with full manifest details shown for all files
./validate_sof_install.py --version v2.14.1 --manifest
# Validate only a specific platform (e.g. Tiger Lake on local host)
./validate_sof_install.py --version v2.12 --platform tgl
# Preview repairs without modifying files (--dry-run)
./validate_sof_install.py --version v2.14.1 --platform tgl --fix --dry-run
# Automatically repair/sync missing or mismatched files from sof-bin
sudo ./validate_sof_install.py --version v2.14.1 --platform tgl --fix
# Validate a remote DUT directly over SSH (supports remote --fix as well)
./validate_sof_install.py --version v2.12 --platform tgl --ssh root@spider
# Validate an offline rootfs (e.g. PXE NFS mount)
./validate_sof_install.py --version v2.12 --platform tgl --target-root /srv/nfs/spider-rootfs
# Validate Debian (.deb) package against SOF v2.14.1
./validate_sof_install.py --deb firmware-sof-signed_2.14.1_all.deb --version v2.14.1
# Validate RPM (.rpm) package against SOF v2.14.1
./validate_sof_install.py --rpm alsa-sof-firmware-2.14.1.rpm --version v2.14.1
# Auto-identify SOF release versions inside a package archive
./validate_sof_install.py --pkg firmware-sof-signed.deb --identify
# Generate a standalone md5sum manifest
./validate_sof_install.py --version v2.14.1 --generate-md5 /tmp/v2.14.1-md5.txt