hardware-mute
The soundcard itself is capable of muting the channel. Otherwise, kernel midlevel code will set the volume to minimum when an application requests muting on this channel.
Advanced controls for alsa soundcard driver
alsactl [options]
[{store | restore}]
<card
#>
alsactl is used to control advanced settings for the ALSA soundcard drivers. It supports multiple soundcards. If your card has features that you can't seem to control from a mixer application, you have come to the right place.
alsactl [options] [store|restore] <card #>
store saves the current driver setup for the selected soundcard to the configuration file.
restore loads driver setup for the selected soundcard from the configuration file.
If no soundcards are specified, setup for all cards will be saved or loaded.
Help: show available flags and commands.
Select the configuration file to use. The default is /etc/asound.conf
Use debug mode: a bit more verbose.
Print alsactl version number.
/etc/asound.conf (or whatever file you specify with the -f flag) is used to store current settings for your soundcards. The settings include all the usual soundcard mixer settings. More importantly, alsactl is capable of controlling other card-specific features that mixer apps usually don't know about.
The configuration file is generated automatically by running alsactl store. Editing the configuration file by hand may be necessary for some soundcard features (e.g. enabling/disabling automatic mic gain, digital output, joystick/game ports, some future MIDI routing options, etc).
There are some terms in the config file that bear explaining. The "capabilities" comments before each line tells you some characteristics of each channel. This is purely informational; these are not flags you can set. Capabilities are listed below.
hardware-mute
The soundcard itself is capable of muting the channel. Otherwise, kernel midlevel code will set the volume to minimum when an application requests muting on this channel.
join-mute
Muting this channel can only be toggled for left and right at the same time, not independently -- even if you can control the volumes for left and right independently!
stereo
The channel is stereo.
record
The channel may be used as a recording source.
join-record
Recording from this channel can only be toggled for both left and right at once; they cannot be toggled independently.
record-by-mute
This channel can be recorded even if it's muted, so you can avoid feeding your record source back to the speakers.
external-input
The channel controls a signal from an external input (like Line-In or CD). This serves to distinguish external source channels from onboard source channels (like OPL-3 synth).
digital
This channel is fed to an onboard digital mixer for possible hardware processing (for instance, surround-sound processing if your card has it).
The configuration file also has boolean switches which are used to toggle certain card-specific advanced features. For example:
; Type is 'bool'.
switch( "MIC Gain", false )
This shows that my card has a switchable mic gain, and that it's currently turned off. To turn it on, just change "false" to "true," save the config file, and run alsactl restore.
Let's say I have this entry in /etc/asound.conf for my PCM output.
; Capabilities: stereo hardware-mute digital.
; Accepted channel range is from 0 to 63.
channel( "PCM", stereo( 40 mute, 50 mute ))
When alsactl restore is run, the PCM volume will be set to 40 for the left and 50 for the right, but both will be muted. Since this card supports hardware-mute, muting will be done by hardware rather than by zeroing the levels.