tarina

git clone https://git.tarina.org/tarina
Log | Files | Refs | README | LICENSE

alsactl_init.xml (26262B)


      1 <?xml version='1.0'?>
      2 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
      3   "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
      4 
      5 <article>
      6   <section>
      7     <title>alsactl init</title>
      8     <refentry>
      9       <refentryinfo>
     10         <title>alsactl init</title>
     11         <date>July 2008</date>
     12         <productname>alsactl</productname>
     13       </refentryinfo>
     14 
     15       <refmeta>
     16         <refentrytitle>alsactl_init</refentrytitle>
     17         <manvolnum>7</manvolnum>
     18         <refmiscinfo class="version"></refmiscinfo>
     19       </refmeta>
     20 
     21       <refnamediv>
     22         <refname>alsactl init</refname>
     23         <refpurpose>alsa control management - initialization</refpurpose>
     24       </refnamediv>
     25 
     26       <refsect1><title>DESCRIPTION</title>
     27         <para>"alsactl init" provides soundcard specific initialization.</para>
     28       </refsect1>
     29 
     30       <refsect1><title>CONFIGURATION</title>
     31         <para>All "alsactl init" configuration files are placed in
     32         <filename>/usr/share/alsa/init/</filename> directory. The top level
     33         configuration file is <filename>/usr/share/alsa/init/00main</filename>.
     34 	The default top-level file can be also specified using -i or
     35 	--initfile parameter for the alsactl tool.
     36 	Every file consists of a set of lines of text. All empty lines or
     37         lines beginning with '#' will be ignored.</para>
     38 
     39         <refsect2><title>Rules files</title>
     40           <para>The "alsactl init" rules are read from the files located
     41           in the <filename>/usr/share/alsa/init/*</filename>. The top
     42           level configuration file is <filename>/usr/share/alsa/init/00main</filename>.
     43           Every line in the rules file contains at least one key value pair.
     44           There are two kind of keys, match and assignment keys. If all match
     45           keys are matching against its value, the rule gets applied and the
     46           assign keys get the specified value assigned.</para>
     47           
     48           <para>A rule may consists of a list of one or more key value pairs
     49           separated by a comma. Each key has a distinct operation, depending
     50           on the used operator. Valid operators are:</para>
     51           <variablelist>
     52             <varlistentry>
     53               <term><option>==</option></term>
     54               <listitem>
     55                 <para>Compare for equality.</para>
     56               </listitem>
     57             </varlistentry>
     58 
     59             <varlistentry>
     60               <term><option>!=</option></term>
     61               <listitem>
     62                 <para>Compare for non-equality.</para>
     63               </listitem>
     64             </varlistentry>
     65 
     66             <varlistentry>
     67               <term><option>=</option></term>
     68               <listitem>
     69                 <para>Assign a value to a key. Keys that represent a list,
     70                 are reset and only this single value is assigned.</para>
     71               </listitem>
     72             </varlistentry>
     73 
     74             <varlistentry>
     75               <term><option>+=</option></term>
     76               <listitem>
     77                 <para>Add the value to a key that holds a list
     78                 of entries.</para>
     79               </listitem>
     80             </varlistentry>
     81 
     82             <varlistentry>
     83               <term><option>:=</option></term>
     84               <listitem>
     85                 <para>Assign  a  value  to  a key finally; disallow any
     86                 later changes, which may be used to prevent changes by
     87                 any later rules.</para>
     88               </listitem>
     89             </varlistentry>
     90           </variablelist>
     91 
     92           <para>The following key names can be used to match against device
     93           properties:</para>
     94           <variablelist>
     95             <varlistentry>
     96               <term><option>CARDINDEX</option></term>
     97               <listitem>
     98                 <para>Match the card index of the ALSA driver.</para>
     99               </listitem>
    100             </varlistentry>
    101 
    102             <varlistentry>
    103               <term><option>CTL{<replaceable>attribute</replaceable>}</option></term>
    104               <listitem>
    105                 <para>Set or test universal control attribute. Possible
    106 		attributes:</para>
    107                 <variablelist>
    108                   <varlistentry>
    109                     <term><option>numid</option></term>
    110                     <listitem>
    111                       <para>Numeric control identification.</para>
    112                     </listitem>
    113                   </varlistentry>
    114                   <varlistentry>
    115                     <term><option>iface</option>, <option>interface</option></term>
    116                     <listitem>
    117                       <para>Control interface name (CARD, HWEDEP, MIXER, PCM, RAWMIDI, TIMER, SEQUENCER)</para>
    118                     </listitem>
    119                   </varlistentry>
    120                   <varlistentry>
    121                     <term><option>subdev</option>, <option>subdevice</option></term>
    122                     <listitem>
    123                       <para>Subdevice number.</para>
    124                     </listitem>
    125                   </varlistentry>
    126                   <varlistentry>
    127                     <term><option>name</option></term>
    128                     <listitem>
    129                       <para>Control name</para>
    130                     </listitem>
    131                   </varlistentry>
    132                   <varlistentry>
    133                     <term><option>index</option></term>
    134                     <listitem>
    135                       <para>Control index</para>
    136                     </listitem>
    137                   </varlistentry>
    138                   <varlistentry>
    139                     <term><option>type</option></term>
    140                     <listitem>
    141                       <para>Control type (BOOLEAN, INTEGER, INTEGER64, ENUMERATED, BYTES, IEC958)</para>
    142                     </listitem>
    143                   </varlistentry>
    144                   <varlistentry>
    145                     <term><option>attr</option>, <option>attribute</option></term>
    146                     <listitem>
    147                       <para>Attributes (stored in a string - use match characters * and ?):</para>
    148 	              <variablelist>
    149 	                <varlistentry>
    150 	                  <term><option>r</option></term>
    151 	                  <listitem>
    152 	                    <para>control is readable</para>
    153 	                  </listitem>
    154 	                </varlistentry>
    155 	                <varlistentry>
    156 	                  <term><option>w</option></term>
    157 	                  <listitem>
    158 	                    <para>control is writable</para>
    159 	                  </listitem>
    160 	                </varlistentry>
    161 	                <varlistentry>
    162 	                  <term><option>v</option></term>
    163 	                  <listitem>
    164 	                    <para>control is volatile</para>
    165 	                  </listitem>
    166 	                </varlistentry>
    167 	                <varlistentry>
    168 	                  <term><option>i</option></term>
    169 	                  <listitem>
    170 	                    <para>control is inactive</para>
    171 	                  </listitem>
    172 	                </varlistentry>
    173 	                <varlistentry>
    174 	                  <term><option>l</option></term>
    175 	                  <listitem>
    176 	                    <para>control is locked</para>
    177 	                  </listitem>
    178 	                </varlistentry>
    179 	                <varlistentry>
    180 	                  <term><option>R</option></term>
    181 	                  <listitem>
    182 	                    <para>control is TLV readable</para>
    183 	                  </listitem>
    184 	                </varlistentry>
    185 	                <varlistentry>
    186 	                  <term><option>W</option></term>
    187 	                  <listitem>
    188 	                    <para>control is TLV writable</para>
    189 	                  </listitem>
    190 	                </varlistentry>
    191 	                <varlistentry>
    192 	                  <term><option>C</option></term>
    193 	                  <listitem>
    194 	                    <para>control is TLV commandable</para>
    195 	                  </listitem>
    196 	                </varlistentry>
    197 	                <varlistentry>
    198 	                  <term><option>o</option></term>
    199 	                  <listitem>
    200 	                    <para>process is owner of this control</para>
    201 	                  </listitem>
    202 	                </varlistentry>
    203 	                <varlistentry>
    204 	                  <term><option>u</option></term>
    205 	                  <listitem>
    206 	                    <para>control created in user space</para>
    207 	                  </listitem>
    208 	                </varlistentry>
    209 	              </variablelist>
    210                     </listitem>
    211                   </varlistentry>
    212                   <varlistentry>
    213                     <term><option>owner</option></term>
    214                     <listitem>
    215                       <para>Control owner process PID number</para>
    216                     </listitem>
    217                   </varlistentry>
    218                   <varlistentry>
    219                     <term><option>count</option></term>
    220                     <listitem>
    221                       <para>Control count of values</para>
    222                     </listitem>
    223                   </varlistentry>
    224                   <varlistentry>
    225                     <term><option>min</option></term>
    226                     <listitem>
    227                       <para>Value range - minimum value</para>
    228                     </listitem>
    229                   </varlistentry>
    230                   <varlistentry>
    231                     <term><option>max</option></term>
    232                     <listitem>
    233                       <para>Value range - maximum value</para>
    234                     </listitem>
    235                   </varlistentry>
    236                   <varlistentry>
    237                     <term><option>step</option></term>
    238                     <listitem>
    239                       <para>Value range - step value</para>
    240                     </listitem>
    241                   </varlistentry>
    242                   <varlistentry>
    243                     <term><option>dBmin</option></term>
    244                     <listitem>
    245                       <para>Value range - minimum dB value</para>
    246                     </listitem>
    247                   </varlistentry>
    248                   <varlistentry>
    249                     <term><option>dBmax</option></term>
    250                     <listitem>
    251                       <para>Value range - maximum dB value</para>
    252                     </listitem>
    253                   </varlistentry>
    254                   <varlistentry>
    255                     <term><option>items</option></term>
    256                     <listitem>
    257                       <para>Enumerated value - number of text items</para>
    258                     </listitem>
    259                   </varlistentry>
    260                   <varlistentry>
    261                     <term><option>enums</option></term>
    262                     <listitem>
    263                       <para>Enumerated value - list of text names stored between '|' character</para>
    264                     </listitem>
    265                   </varlistentry>
    266                   <varlistentry>
    267                     <term><option>value</option></term>
    268                     <listitem>
    269                       <para>Value of control stored to a string delimited by
    270                       comma (,).</para>
    271                     </listitem>
    272                   </varlistentry>
    273                   <varlistentry>
    274                     <term><option>do_search</option></term>
    275                     <listitem>
    276                       <para>Search for a control. Value "1" is returned
    277                       if a control was found. The CTL{name} key might
    278 		      contain match characters * and ?. An control index
    279 		      might be specified as first argument starting from
    280 		      zero (e.g. CTL{do_search 2}="1").</para>
    281                      </listitem>
    282                   </varlistentry>
    283                   <varlistentry>
    284                     <term><option>do_count</option></term>
    285                     <listitem>
    286                       <para>Search for a controls and return total count
    287                       of matched ones. The CTL{name} key might contain match
    288                       characters * and ?.</para>
    289                      </listitem>
    290                   </varlistentry>
    291                 </variablelist>
    292               </listitem>
    293             </varlistentry>
    294 
    295             <varlistentry>
    296               <term><option>CONFIG{sysfs_device}</option></term>
    297               <listitem>
    298                 <para>The relative path to sysfs subsystem specifying
    299                 the root directory of a soundcard device. Usually,
    300                 it should be set to "/class/sound/card$cardinfo{card}/device".
    301                 </para>
    302               </listitem>
    303             </varlistentry>
    304 
    305             <varlistentry>
    306               <term><option>ATTR{<replaceable>filename</replaceable>}</option></term>
    307               <listitem>
    308                 <para>Match sysfs attribute values of the soundcard device.
    309                 The relative path to sysfs tree must be defined by
    310 		CONFIG{sysfs_device} key. Trailing whitespace in the attribute
    311 		values is ignored, if the specified match value does
    312 		not contain trailing whitespace itself. Depending on
    313 		the type of operator, this key is also used to set
    314 		the value of a sysfs attribute.
    315                 </para>
    316               </listitem>
    317             </varlistentry>
    318 
    319             <varlistentry>
    320               <term><option>ENV{<replaceable>key</replaceable>}</option></term>
    321               <listitem>
    322                 <para>Match against the value of an environment variable. Up
    323                 to five <option>ENV</option> keys can be specified per rule.
    324                 Depending on the type of operator, this key is also used
    325                 to export a variable to the environment.</para>
    326               </listitem>
    327             </varlistentry>
    328 
    329             <varlistentry>
    330               <term><option>PROGRAM</option></term>
    331               <listitem>
    332                 <para>Execute external program. The key is true, if
    333                 the program returns without exit code zero. The whole event
    334                 environment is available to the executed program. The
    335                 program's output printed to stdout is available for
    336                 the RESULT key.</para>
    337                 <para>Several buildin commands are available:</para>
    338                 <variablelist>
    339                   <varlistentry>
    340                     <term><option>__ctl_search</option></term>
    341                     <listitem>
    342                       <para>Search for a control. The CTL{name} key might
    343 		      contain match characters * and ?. An control index
    344 		      might be specified as first argument starting from
    345 		      zero (e.g. PROGRAM="__ctl_search 2").</para>
    346                      </listitem>
    347                   </varlistentry>
    348                   <varlistentry>
    349                     <term><option>__ctl_count</option></term>
    350                     <listitem>
    351                       <para>Search for a controls and return total count
    352                       of matched ones. The CTL{name} key might contain match
    353                       characters * and ?.</para>
    354                      </listitem>
    355                   </varlistentry>
    356 		</variablelist>
    357               </listitem>
    358             </varlistentry>
    359 
    360             <varlistentry>
    361               <term><option>RESULT</option></term>
    362               <listitem>
    363                 <para>Match the returned string of the last PROGRAM call.
    364                 This key can be used in the same or in any later rule
    365                 after a PROGRAM call.</para>
    366               </listitem>
    367             </varlistentry>
    368 
    369           </variablelist>
    370 
    371           <para>Most of the fields support a shell style pattern matching.
    372           The following pattern characters are supported:</para>
    373           <variablelist>
    374             <varlistentry>
    375               <term><option>*</option></term>
    376               <listitem>
    377                 <para>Matches zero, or any number of characters.</para>
    378               </listitem>
    379             </varlistentry>
    380             <varlistentry>
    381               <term><option>?</option></term>
    382               <listitem>
    383                 <para>Matches any single character.</para>
    384               </listitem>
    385             </varlistentry>
    386             <varlistentry>
    387               <term><option>[]</option></term>
    388               <listitem>
    389                 <para>Matches any single character specified within
    390                 the brackets. For example, the pattern string 'tty[SR]'
    391                 would match either 'ttyS' or 'ttyR'. Ranges are also
    392                 supported within this match with the '-' character.
    393       		For example, to match on the range of all digits,
    394       		the pattern [0-9] would be used. If the first character
    395       		following the '[' is a '!', any characters
    396                 not enclosed are matched.</para>
    397               </listitem>
    398             </varlistentry>
    399           </variablelist>
    400 
    401           <para>The following keys can get values assigned:</para>
    402           <variablelist>
    403             <varlistentry>
    404               <term><option>CTL{numid}</option>, <option>CTL{iface}</option>,
    405 		    <option>CTL{device}</option>, <option>CTL{subdev}</option>, 
    406 		    <option>CTL{name}</option>,  <option>CTL{index}</option>, 
    407 	      </term>
    408               <listitem>
    409               	 <para>Select universal control element.</para>
    410               </listitem>
    411             </varlistentry>
    412             <varlistentry>
    413               <term><option>CTL{value}</option></term>
    414               <listitem>
    415               	 <para>Value is set (written) also to soundcard's control
    416               	 device and RESULT key is set to errno code. The result of
    417                  set operation is always true (it means continue with
    418                  next key on line).</para>
    419               </listitem>
    420             </varlistentry>
    421             <varlistentry>
    422               <term><option>CTL{values}</option></term>
    423               <listitem>
    424               	 <para>Value is set (written) also to soundcard's control
    425               	 device (all control values are set to specified value) and
    426               	 RESULT key is set to errno code. The result of
    427                  set operation is always true (it means continue with
    428                  next key on line).</para>
    429               </listitem>
    430             </varlistentry>
    431             <varlistentry>
    432               <term><option>CTL{write}</option></term>
    433               <listitem>
    434               	 <para>Value is set (written) also to soundcard's control
    435               	 device (all control values are set to specified value).
    436               	 The result of set operation is true when operation
    437               	 succeed (it means continue with next key on line).</para>
    438               </listitem>
    439             </varlistentry>
    440 
    441             <varlistentry>
    442               <term><option>ENV{<replaceable>key</replaceable>}</option></term>
    443               <listitem>
    444                 <para>Export a variable to the environment. Depending on the type of operator,
    445                 this key is also to match against an environment variable.</para>
    446               </listitem>
    447             </varlistentry>
    448 
    449             <varlistentry>
    450               <term><option>RESULT</option></term>
    451               <listitem>
    452                 <para>Set RESULT variable. Note that PROGRAM also sets
    453                 this variable, but setting this variable manually
    454                 might be useful to change code execution order (included
    455                 files).</para>
    456               </listitem>
    457             </varlistentry>
    458 
    459             <varlistentry>
    460               <term><option>LABEL</option></term>
    461               <listitem>
    462                 <para>Named label where a GOTO can jump to.</para>
    463               </listitem>
    464             </varlistentry>
    465 
    466             <varlistentry>
    467               <term><option>GOTO</option></term>
    468               <listitem>
    469                 <para>Jumps to the next LABEL with a matching name.
    470                       The goto cannot jump backward.</para>
    471               </listitem>
    472             </varlistentry>
    473 
    474             <varlistentry>
    475               <term><option>INCLUDE</option></term>
    476               <listitem>
    477                 <para>Include the specified filename or files in specified directory.
    478 		</para>
    479 		<para>
    480 		When a directory is specified, only the files with the
    481 		extension ".conf" are read.
    482 		Also they are read in the alphabetical order.
    483 		Thus it's highly recommended to use some number prefix
    484 		(e.g. "01-something.conf") to assure the order of execucions.
    485 		</para>
    486               </listitem>
    487             </varlistentry>
    488 
    489             <varlistentry>
    490               <term><option>ACCESS</option></term>
    491               <listitem>
    492                 <para>Check if specified file or directory exists</para>
    493               </listitem>
    494             </varlistentry>
    495 
    496             <varlistentry>
    497               <term><option>CONFIG{sysfs_device}</option></term>
    498               <listitem>
    499                 <para>The relative path to sysfs subsystem specifying
    500                 the root directory of a soundcard device. Usually,
    501                 it should be set to "/class/sound/card$cardinfo{card}/device".
    502                 </para>
    503               </listitem>
    504             </varlistentry>
    505 
    506             <varlistentry>
    507               <term><option>PRINT</option></term>
    508               <listitem>
    509                 <para>PRINT value to stdout.</para>
    510               </listitem>
    511             </varlistentry>
    512 
    513             <varlistentry>
    514               <term><option>ERROR</option></term>
    515               <listitem>
    516                 <para>PRINT value to stderr.</para>
    517               </listitem>
    518             </varlistentry>
    519 
    520             <varlistentry>
    521               <term><option>EXIT</option></term>
    522               <listitem>
    523                 <para>Exit immediately and set program exit code to value
    524                 (should be integer). If value is "return" string,
    525                 parser leaves current included file and returns to parent
    526                 configuration file.</para>
    527               </listitem>
    528             </varlistentry>
    529 
    530           </variablelist>
    531 
    532           <para>The <option>PROGRAM</option>, <option>RESULT</option>,
    533           <option>CTL{value}</option>,
    534 	  <option>PRINT</option>, <option>ERROR</option>,
    535 	  <option>EXIT</option>, <option>CONFIG{}</option>
    536 	  fields support simple printf-like string substitutions.
    537           It allows the use of the complete environment set by earlier matching
    538           rules. For all other fields, substitutions are applied while the individual rule is
    539           being processed. The available substitutions are:</para>
    540           <variablelist>
    541             <varlistentry>
    542 	      <term><option>$cardinfo{<replaceable>attribute</replaceable>}</option>, <option>%i{<replaceable>attribute</replaceable>}</option></term>
    543               <listitem>
    544                 <para>See CARDINFO{} for more details.</para>
    545               </listitem>
    546             </varlistentry>
    547 
    548             <varlistentry>
    549               <term><option>$ctl{<replaceable>attribute</replaceable>}</option>, <option>%C{<replaceable>attribute</replaceable>}</option></term>
    550               <listitem>
    551                 <para>See CTL{} for more details.</para>
    552               </listitem>
    553             </varlistentry>
    554 
    555             <varlistentry>
    556               <term><option>$attr{<replaceable>file</replaceable>}</option>, <option>%s{<replaceable>file</replaceable>}</option></term>
    557               <listitem>
    558                 <para>The value of a sysfs attribute found at the device, where
    559                 all keys of the rule have matched.
    560                 If the attribute is a symlink, the last element of the symlink target is
    561                 returned as the value.</para>
    562               </listitem>
    563             </varlistentry>
    564 
    565             <varlistentry>
    566               <term><option>$env{<replaceable>key</replaceable>}</option>, <option>%E{<replaceable>key</replaceable>}</option></term>
    567               <listitem>
    568                 <para>The value of an environment variable.</para>
    569               </listitem>
    570             </varlistentry>
    571 
    572             <varlistentry>
    573               <term><option>$result</option>, <option>%c</option></term>
    574               <listitem>
    575                 <para>The string returned by the external program requested with PROGRAM.
    576                 A single part of the string, separated by a space character may be selected
    577                 by specifying the part number as an attribute: <option>%c{N}</option>.
    578                 If the number is followed by the '+' char this part plus all remaining parts
    579                 of the result string are substituted: <option>%c{N+}</option></para>
    580               </listitem>
    581             </varlistentry>
    582 
    583             <varlistentry>
    584               <term><option>$sysfsroot</option>, <option>%r</option></term>
    585               <listitem>
    586                 <para>Root directory where sysfs file-system is mounted.
    587                 Ususally, this value is just "/sys".</para>
    588               </listitem>
    589             </varlistentry>
    590 
    591             <varlistentry>
    592               <term><option>$config{<replaceable>key</replaceable>}</option>, <option>%g{<replaceable>key</replaceable>}</option></term>
    593               <listitem>
    594                 <para>The value of a configuration variable. See CONFIG{} for more details.</para>
    595               </listitem>
    596             </varlistentry>
    597 
    598             <varlistentry>
    599               <term><option>%%</option></term>
    600               <listitem>
    601               <para>The '%' character itself.</para>
    602               </listitem>
    603             </varlistentry>
    604 
    605             <varlistentry>
    606               <term><option>$$</option></term>
    607               <listitem>
    608               <para>The '$' character itself.</para>
    609               </listitem>
    610             </varlistentry>
    611           </variablelist>
    612           <para>The count of characters to be substituted may be limited
    613           by specifying the format length value. For example, '%3s{file}'
    614           will only insert the first three characters of the sysfs
    615           attribute</para>
    616         </refsect2>
    617       </refsect1>
    618 
    619       <refsect1><title>AUTHOR</title>
    620         <para>Written by Jaroslav Kysela <email>perex@perex.cz</email></para>
    621         <para>Some portions are written by Greg Kroah-Hartman <email>greg@kroah.com</email> and
    622         Kay Sievers <email>kay.sievers@vrfy.org</email>.</para>
    623       </refsect1>
    624 
    625       <refsect1>
    626         <title>SEE ALSO</title>
    627         <para><citerefentry>
    628             <refentrytitle>alsactl</refentrytitle><manvolnum>1</manvolnum>
    629           </citerefentry></para>
    630       </refsect1>
    631     </refentry>
    632   </section>
    633 </article>