Bug: 177926874

Clone this repo:
  1. 0096a0a update OWNERS file by David Li · 9 days ago master
  2. 0d55c94 Merge remote-tracking branch 'aosp/upstream-master' into master by David Li · 2 weeks ago
  3. fa1136e Merge pull request #222 from dvdli/tinyalsa-dev by dvdli · 2 weeks ago
  4. 25096d3 add ioctl to read IEC958 data by dvdli · 5 weeks ago
  5. e720c93 match the varaibles' type for 64-bit compatibility by dvdli · 5 weeks ago


Build Status

TinyALSA is a small library to interface with ALSA in the Linux kernel.

The aims are:

  • Provide a basic pcm and mixer API.
  • If it‘s not absolutely needed, don’t add it to the API.
  • Avoid supporting complex and unnecessary operations, that could be dealt with at a higher level.
  • Provide comprehensive documentation.


TinyALSA supports these build systems:

To build and install with Make, run the commands:

sudo make install
sudo ldconfig


TinyALSA is now available as a set of the following Debian packages from launchpad:

Package Name:Description:
tinyalsaContains tinyplay, tinycap, tinymix and tinypcminfo
libtinyalsaContains the shared library
libtinyalsa-devContains the static library and header files

To install these packages, run the commands:

sudo apt-add-repository ppa:taylorcholberton/tinyalsa
sudo apt-get update
sudo apt-get install tinyalsa
sudo apt-get install libtinyalsa-dev


Once installed, the man pages are available via:

man tinyplay
man tinycap
man tinymix
man tinypcminfo
man libtinyalsa-pcm
man libtinyalsa-mixer


To test libtinyalsa, please follow the instructions,

Setup Bazel build environment

Visit here to get more info to setup Bazel environment.

Insert loopback devices

The test program does pcm_* operations on loopback devices. You have to insert loopback devices after your system boots up.

sudo modprobe snd-aloop
sudo chmod 777 /dev/snd/*

Run test program

bazel test //:tinyalsa_tests --test_output=all

The default playback device is hw:2,0 and the default capture device is hw:2,1. If your loopback devices are not hw:2,0 and hw:2,1, you can specify the loopback device.

bazel test //:tinyalsa_tests --test_output=all \
    --copt=-DTEST_LOOPBACK_CARD=[loopback card] \
    --copt=-DTEST_LOOPBACK_PLAYBACK_DEVICE=[loopback playback device] \
    --copt=-DTEST_LOOPBACK_CAPTURE_DEVICE=[loopback capture device]

Generate coverage report

bazel coverage //:tinyalsa_tests --combined_report=lcov --test_output=all
genhtml bazel-out/_coverage/_coverage_report.dat -o tinyalsa_tests_coverage