Blame alsaucm/alsaucm.rst

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