linux/Documentation/sound/alsa/Procfile.txt
<<
>>
Prefs
   1                Proc Files of ALSA Drivers
   2                ==========================
   3                Takashi Iwai <tiwai@suse.de>
   4
   5General
   6-------
   7
   8ALSA has its own proc tree, /proc/asound.  Many useful information are
   9found in this tree.  When you encounter a problem and need debugging,
  10check the files listed in the following sections.
  11
  12Each card has its subtree cardX, where X is from 0 to 7. The
  13card-specific files are stored in the card* subdirectories.
  14
  15
  16Global Information
  17------------------
  18
  19cards
  20        Shows the list of currently configured ALSA drivers,
  21        index, the id string, short and long descriptions.
  22
  23version
  24        Shows the version string and compile date.
  25
  26modules
  27        Lists the module of each card
  28
  29devices
  30        Lists the ALSA native device mappings.
  31
  32meminfo
  33        Shows the status of allocated pages via ALSA drivers.
  34        Appears only when CONFIG_SND_DEBUG=y.
  35
  36hwdep
  37        Lists the currently available hwdep devices in format of
  38        <card>-<device>: <name>
  39
  40pcm
  41        Lists the currently available PCM devices in format of
  42        <card>-<device>: <id>: <name> : <sub-streams>
  43
  44timer
  45        Lists the currently available timer devices
  46
  47
  48oss/devices
  49        Lists the OSS device mappings.
  50
  51oss/sndstat
  52        Provides the output compatible with /dev/sndstat.
  53        You can symlink this to /dev/sndstat.
  54
  55
  56Card Specific Files
  57-------------------
  58
  59The card-specific files are found in /proc/asound/card* directories.
  60Some drivers (e.g. cmipci) have their own proc entries for the
  61register dump, etc (e.g. /proc/asound/card*/cmipci shows the register
  62dump).  These files would be really helpful for debugging.
  63
  64When PCM devices are available on this card, you can see directories
  65like pcm0p or pcm1c.  They hold the PCM information for each PCM
  66stream.  The number after 'pcm' is the PCM device number from 0, and
  67the last 'p' or 'c' means playback or capture direction.  The files in
  68this subtree is described later.
  69
  70The status of MIDI I/O is found in midi* files.  It shows the device
  71name and the received/transmitted bytes through the MIDI device.
  72
  73When the card is equipped with AC97 codecs, there are codec97#*
  74subdirectories (described later).
  75
  76When the OSS mixer emulation is enabled (and the module is loaded),
  77oss_mixer file appears here, too.  This shows the current mapping of
  78OSS mixer elements to the ALSA control elements.  You can change the
  79mapping by writing to this device.  Read OSS-Emulation.txt for
  80details.
  81
  82
  83PCM Proc Files
  84--------------
  85
  86card*/pcm*/info
  87        The general information of this PCM device: card #, device #,
  88        substreams, etc.
  89
  90card*/pcm*/xrun_debug
  91        This file appears when CONFIG_SND_DEBUG=y and
  92        CONFIG_PCM_XRUN_DEBUG=y.
  93        This shows the status of xrun (= buffer overrun/xrun) and
  94        invalid PCM position debug/check of ALSA PCM middle layer.
  95        It takes an integer value, can be changed by writing to this
  96        file, such as
  97
  98                 # echo 5 > /proc/asound/card0/pcm0p/xrun_debug
  99
 100        The value consists of the following bit flags:
 101          bit 0 = Enable XRUN/jiffies debug messages
 102          bit 1 = Show stack trace at XRUN / jiffies check
 103          bit 2 = Enable additional jiffies check
 104          bit 3 = Log hwptr update at each period interrupt
 105          bit 4 = Log hwptr update at each snd_pcm_update_hw_ptr()
 106          bit 5 = Show last 10 positions on error
 107          bit 6 = Do above only once
 108
 109        When the bit 0 is set, the driver will show the messages to
 110        kernel log when an xrun is detected.  The debug message is
 111        shown also when the invalid H/W pointer is detected at the
 112        update of periods (usually called from the interrupt
 113        handler).
 114
 115        When the bit 1 is set, the driver will show the stack trace
 116        additionally.  This may help the debugging.
 117
 118        Since 2.6.30, this option can enable the hwptr check using
 119        jiffies.  This detects spontaneous invalid pointer callback
 120        values, but can be lead to too much corrections for a (mostly
 121        buggy) hardware that doesn't give smooth pointer updates.
 122        This feature is enabled via the bit 2.
 123
 124        Bits 3 and 4 are for logging the hwptr records.  Note that
 125        these will give flood of kernel messages.
 126
 127        When bit 5 is set, the driver logs the last 10 xrun errors and
 128        the proc file shows each jiffies, position, period_size,
 129        buffer_size, old_hw_ptr, and hw_ptr_base values.
 130
 131        When bit 6 is set, the full xrun log is shown only once.
 132
 133card*/pcm*/sub*/info
 134        The general information of this PCM sub-stream.
 135
 136card*/pcm*/sub*/status
 137        The current status of this PCM sub-stream, elapsed time,
 138        H/W position, etc.
 139
 140card*/pcm*/sub*/hw_params
 141        The hardware parameters set for this sub-stream.
 142
 143card*/pcm*/sub*/sw_params
 144        The soft parameters set for this sub-stream.
 145
 146card*/pcm*/sub*/prealloc
 147        The buffer pre-allocation information.
 148
 149
 150AC97 Codec Information
 151----------------------
 152
 153card*/codec97#*/ac97#?-?
 154        Shows the general information of this AC97 codec chip, such as
 155        name, capabilities, set up.
 156
 157card*/codec97#0/ac97#?-?+regs
 158        Shows the AC97 register dump.  Useful for debugging.
 159
 160        When CONFIG_SND_DEBUG is enabled, you can write to this file for
 161        changing an AC97 register directly.  Pass two hex numbers.
 162        For example,
 163
 164        # echo 02 9f1f > /proc/asound/card0/codec97#0/ac97#0-0+regs
 165
 166
 167USB Audio Streams
 168-----------------
 169
 170card*/stream*
 171        Shows the assignment and the current status of each audio stream
 172        of the given card.  This information is very useful for debugging.
 173
 174
 175HD-Audio Codecs
 176---------------
 177
 178card*/codec#*
 179        Shows the general codec information and the attribute of each
 180        widget node.
 181
 182card*/eld#*
 183        Available for HDMI or DisplayPort interfaces.
 184        Shows ELD(EDID Like Data) info retrieved from the attached HDMI sink,
 185        and describes its audio capabilities and configurations.
 186
 187        Some ELD fields may be modified by doing `echo name hex_value > eld#*`.
 188        Only do this if you are sure the HDMI sink provided value is wrong.
 189        And if that makes your HDMI audio work, please report to us so that we
 190        can fix it in future kernel releases.
 191
 192
 193Sequencer Information
 194---------------------
 195
 196seq/drivers
 197        Lists the currently available ALSA sequencer drivers.
 198
 199seq/clients
 200        Shows the list of currently available sequencer clients and
 201        ports.  The connection status and the running status are shown
 202        in this file, too.
 203
 204seq/queues
 205        Lists the currently allocated/running sequencer queues.
 206
 207seq/timer
 208        Lists the currently allocated/running sequencer timers.
 209
 210seq/oss
 211        Lists the OSS-compatible sequencer stuffs.
 212
 213
 214Help For Debugging?
 215-------------------
 216
 217When the problem is related with PCM, first try to turn on xrun_debug
 218mode.  This will give you the kernel messages when and where xrun
 219happened.
 220
 221If it's really a bug, report it with the following information:
 222
 223  - the name of the driver/card, show in /proc/asound/cards
 224  - the register dump, if available (e.g. card*/cmipci)
 225
 226when it's a PCM problem,
 227
 228  - set-up of PCM, shown in hw_parms, sw_params, and status in the PCM
 229    sub-stream directory
 230
 231when it's a mixer problem,
 232
 233  - AC97 proc files, codec97#*/* files
 234
 235for USB audio/midi,
 236
 237  - output of lsusb -v
 238  - stream* files in card directory
 239
 240
 241The ALSA bug-tracking system is found at:
 242
 243    https://bugtrack.alsa-project.org/alsa-bug/
 244