[alsa-devel] [alsa-utils] alsaucm should come with a man page

Takashi Iwai tiwai at suse.de
Thu Sep 29 10:00:48 CEST 2016


On Fri, 23 Sep 2016 18:37:10 +0200,
Antonio Ospite wrote:
> 
> On Mon, 8 Aug 2016 18:30:41 +0200
> Antonio Ospite <ao2 at ao2.it> wrote:
> 
> > On Wed, 03 Aug 2016 17:57:49 +0200
> > Takashi Iwai <tiwai at suse.de> wrote:
> > 
> [...]
> > > Go ahead, please post your draft version.  That's already helpful.
> > > 
> > 
> > OK, I will.
> > 
> > The first version will be in a readable text format (maybe asciidoc),
> > this makes writing and reviewing the content a lot easier.
> [...]
> 
> Hi, I am inlining below a man page written in reStructuredText, I saw
> that other kernel subsystem are using this format.
> 
> The document can be converted to a unix man page with the rst2man
> command available in the python3-docutils package (on Debian systems).
> BTW, there is also a rst2html which can be handy.

Yes, ReST looks like a good choice for now.

> Let's just review the content for now, but let me also know if you want
> the groff man page in the final patch or if shipping this .rst and
> generating the man page at compile time is OK.

Liam, could you review the content?


thanks,

Takashi


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


More information about the Alsa-devel mailing list