Blame alsaucm/alsaucm.rst

Packit 229ac0
=========
Packit 229ac0
 alsaucm
Packit 229ac0
=========
Packit 229ac0
Packit 229ac0
---------------------
Packit 229ac0
ALSA Use Case Manager
Packit 229ac0
---------------------
Packit 229ac0
Packit 229ac0
:Author: Antonio Ospite <ao2@ao2.it>
Packit 229ac0
:Date:   2016-09-22
Packit 229ac0
:Copyright: GPLv2+
Packit 229ac0
:Manual section: 1
Packit 229ac0
:Manual group: General Commands Manual
Packit 229ac0
Packit 229ac0
SYNOPSIS
Packit 229ac0
========
Packit 229ac0
Packit 229ac0
*alsaucm* <options> [command]
Packit 229ac0
Packit 229ac0
DESCRIPTION
Packit 229ac0
===========
Packit 229ac0
Packit 229ac0
alsaucm (ALSA Use Case Manager) is a program to use the ALSA `Use Case
Packit 229ac0
Interface`_ from the command line.
Packit 229ac0
Packit 229ac0
On complex sound cards, setting up audio routes is not trivial and mixer
Packit 229ac0
settings can conflict one another preventing the audio card to work at all.
Packit 229ac0
Packit 229ac0
The ALSA Use Case Manager is a mechanism for controlling complex audio
Packit 229ac0
hardware establishing a relationship between hardware configurations and
Packit 229ac0
meaningful use cases that the end-user can relate with.
Packit 229ac0
Packit 229ac0
The use case manager can also be used to switch between use cases when
Packit 229ac0
necessary, in a consistent way.
Packit 229ac0
Packit 229ac0
At a lower level, the use case manager works by configuring the sound card
Packit 229ac0
ALSA kcontrols to change the hardware digital and analog audio routing to
Packit 229ac0
match the requested device use case.
Packit 229ac0
Packit 229ac0
The use case manager kcontrol configurations are stored in easy to modify text
Packit 229ac0
files. An audio use case can be defined by a **verb** and **device** parameter.
Packit 229ac0
Packit 229ac0
The verb describes the use case action i.e. a phone call, listening to music,
Packit 229ac0
recording a conversation etc. The device describes the physical audio capture
Packit 229ac0
and playback hardware i.e. headphones, phone handset, bluetooth headset, etc.
Packit 229ac0
Packit 229ac0
Packit 229ac0
OPTIONS
Packit 229ac0
=======
Packit 229ac0
Packit 229ac0
Available options:
Packit 229ac0
Packit 229ac0
  **-h**, **--help**
Packit 229ac0
    this help
Packit 229ac0
Packit 229ac0
  **-c**, **--card** `NAME`
Packit 229ac0
    open card NAME
Packit 229ac0
Packit 229ac0
  **-i**, **--interactive**
Packit 229ac0
    interactive mode
Packit 229ac0
Packit 229ac0
  **-b**, **--batch** `FILE`
Packit 229ac0
    batch mode (use ``'-'`` for the stdin input)
Packit 229ac0
Packit 229ac0
  **-n**, **--no-open**
Packit 229ac0
    do not open first card found
Packit 229ac0
Packit 229ac0
Packit 229ac0
Available commands:
Packit 229ac0
Packit 229ac0
  ``open`` `NAME`
Packit 229ac0
    open card NAME.
Packit 229ac0
Packit 229ac0
    valid names are sound card names as listed in ``/usr/share/alsa/ucm``.
Packit 229ac0
Packit 229ac0
  ``reset``
Packit 229ac0
    reset sound card to default state.
Packit 229ac0
Packit 229ac0
  ``reload``
Packit 229ac0
    reload configuration.
Packit 229ac0
Packit 229ac0
  ``listcards``
Packit 229ac0
    list available cards.
Packit 229ac0
Packit 229ac0
  ``list`` `IDENTIFIER`
Packit 229ac0
    list command, for items returning two entries (value+comment).
Packit 229ac0
Packit 229ac0
    the value of the `IDENTIFIER` argument can can be:
Packit 229ac0
Packit 229ac0
    - ``_verbs`` - get verb list (in pair verb+comment)
Packit 229ac0
    - ``_devices[/{verb}]`` - get list of supported devices (in pair device+comment)
Packit 229ac0
    - ``_modifiers[/{verb}]`` - get list of supported modifiers (in pair modifier+comment)
Packit 229ac0
Packit 229ac0
    The forms without the trailing ``/{verb}`` are valid only after a specific
Packit 229ac0
    verb has been set.
Packit 229ac0
Packit 229ac0
  ``list1`` `IDENTIFIER`
Packit 229ac0
    list command, for lists returning one item per entry.
Packit 229ac0
Packit 229ac0
    the value of the `IDENTIFIER` argument can vary depending on the context,
Packit 229ac0
    it can be:
Packit 229ac0
Packit 229ac0
    - ``TQ[/{verb}]`` - get list of Tone Quality identifiers
Packit 229ac0
    - ``_enadevs`` - get list of enabled devices
Packit 229ac0
    - ``_enamods`` - get list of enabled modifiers
Packit 229ac0
    - ``_supporteddevs/{modifier}|{device}[/{verb}]`` - list of supported devices
Packit 229ac0
    - ``_conflictingdevs/{modifier}|{device}[/{verb}]`` - list of conflicting devices
Packit 229ac0
Packit 229ac0
  ``get`` `IDENTIFIER`
Packit 229ac0
    get string value.
Packit 229ac0
Packit 229ac0
    the value of the `IDENTIFIER` argument can can be:
Packit 229ac0
Packit 229ac0
    - ``_verb`` - return current verb
Packit 229ac0
    - ``[=]{NAME}[/[{modifier}|{/device}][/{verb}]]`` (For valid NAMEs look at the
Packit 229ac0
      ALSA `Use Case Interface`_)
Packit 229ac0
Packit 229ac0
Packit 229ac0
  ``geti`` `IDENTIFIER`
Packit 229ac0
    get integer value.
Packit 229ac0
Packit 229ac0
    the value of the `IDENTIFIER` argument can can be:
Packit 229ac0
Packit 229ac0
    - ``_devstatus/{device}``
Packit 229ac0
    - ``_modtstaus/{device}``
Packit 229ac0
Packit 229ac0
  ``set`` `IDENTIFIER` `VALUE`
Packit 229ac0
    set string value
Packit 229ac0
Packit 229ac0
    The value of the `IDENTIFIER` argument can can be:
Packit 229ac0
Packit 229ac0
    - ``_verb`` - set the verb to `VALUE`
Packit 229ac0
    - ``_enadev`` - enable the device specified by `VALUE`
Packit 229ac0
    - ``_disdev`` - disable the device specified by `VALUE`
Packit 229ac0
    - ``_swdev/{old_device}`` - switche device:
Packit 229ac0
Packit 229ac0
      - disable `old_device` and then enable the device specified by
Packit 229ac0
        `VALUE`
Packit 229ac0
      - if no device was enabled just return
Packit 229ac0
Packit 229ac0
    - ``_enamod`` - enable the modifier specified by `VALUE`
Packit 229ac0
    - ``_dismod`` - disable the modifier specified by `VALUE`
Packit 229ac0
    - ``_swmod/{old_modifier}`` - switch modifier:
Packit 229ac0
Packit 229ac0
      - disable `old_modifier` and then enable the modifier specified by
Packit 229ac0
        `VALUE`
Packit 229ac0
      - if no modifier was enabled just return
Packit 229ac0
Packit 229ac0
    Note that the identifiers referring to devices and modifiers are valid
Packit 229ac0
    only after setting a verb.
Packit 229ac0
Packit 229ac0
  ``h``, ``help``
Packit 229ac0
    help
Packit 229ac0
Packit 229ac0
  ``q``, ``quit``
Packit 229ac0
    quit
Packit 229ac0
Packit 229ac0
Packit 229ac0
FILES
Packit 229ac0
=====
Packit 229ac0
Packit 229ac0
The master use case files for each supported sound card are in ``/usr/share/alsa/ucm``.
Packit 229ac0
Packit 229ac0
For example, the master use case file for the `Pandaboard` card is in
Packit 229ac0
``/usr/share/alsa/ucm/PandaBoard/PandaBoard.conf``, this file lists all the
Packit 229ac0
supported use cases, e.g.
Packit 229ac0
Packit 229ac0
::
Packit 229ac0
Packit 229ac0
  SectionUseCase."HiFi" {
Packit 229ac0
                  File "hifi"
Packit 229ac0
                  Comment "Play HiFi quality Music."
Packit 229ac0
  }
Packit 229ac0
  ...
Packit 229ac0
Packit 229ac0
Packit 229ac0
Each use case defines a _verb, which is described in the file specified in
Packit 229ac0
the ``File`` directive, like above.
Packit 229ac0
Packit 229ac0
The ``HiFi`` verb above is described in
Packit 229ac0
``/usr/share/alsa/ucm/PandaBoard/hifi``.
Packit 229ac0
Packit 229ac0
For more details on the syntax of UCM files, see the alsa-lib source code:
Packit 229ac0
http://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=src/ucm/parser.c
Packit 229ac0
Packit 229ac0
Packit 229ac0
EXAMPLES OF USE
Packit 229ac0
===============
Packit 229ac0
Packit 229ac0
Some commands, like for instance ``list _devices``,
Packit 229ac0
can only work after setting a ``_verb`` in the **same execution**, for
Packit 229ac0
instance this sequence doesn't work:
Packit 229ac0
Packit 229ac0
::
Packit 229ac0
Packit 229ac0
  # alsaucm -c bytcr-rt5640 set _verb HiFi
Packit 229ac0
  # alsaucm -c bytcr-rt5640 list _devices
Packit 229ac0
Packit 229ac0
Packit 229ac0
However this command does:
Packit 229ac0
Packit 229ac0
::
Packit 229ac0
Packit 229ac0
  # alsaucm -n -b - <
Packit 229ac0
  open bytcr-rt5640
Packit 229ac0
  set _verb HiFi
Packit 229ac0
  list _devices
Packit 229ac0
  EOM
Packit 229ac0
Packit 229ac0
Packit 229ac0
An example of setting the `Speaker` device for the `HiFi` verb of the
Packit 229ac0
`bytcr-rt5640` card:
Packit 229ac0
Packit 229ac0
::
Packit 229ac0
Packit 229ac0
  # alsaucm -n -b - <
Packit 229ac0
  open bytcr-rt5640
Packit 229ac0
  reset
Packit 229ac0
  set _verb HiFi
Packit 229ac0
  set _enadev Speaker
Packit 229ac0
  EOM
Packit 229ac0
Packit 229ac0
Packit 229ac0
Packit 229ac0
SEE ALSO
Packit 229ac0
========
Packit 229ac0
Packit 229ac0
* Use Case Interface: http://www.alsa-project.org/alsa-doc/alsa-lib/group__ucm.html
Packit 229ac0
Packit 229ac0
.. _Use Case Interface: http://www.alsa-project.org/alsa-doc/alsa-lib/group__ucm.html
Packit 229ac0
Packit 229ac0
BUGS
Packit 229ac0
====
Packit 229ac0
Packit 229ac0
None known.