		Proc Files of ALSA Drivers
		==========================
		Takashi Iwai <tiwai@suse.de>

General
-------

ALSA has its own proc tree, /proc/asound.  Many useful information are
found in this tree.  When you encounter a problem and need debugging,
check the files listed in the following sections.

Each card has its subtree cardX, where X is from 0 to 7. The
card-specific files are stored in the card* subdirectories.


Global Information
------------------

cards
	Shows the list of currently configured ALSA drivers,
	index, the id string, short and long descriptions.

version
	Shows the version string and compile date.

modules
	Lists the module of each card

devices
	Lists the ALSA native device mappings.

meminfo
	Shows the status of allocated pages via ALSA drivers.
	Appears only when CONFIG_SND_DEBUG=y.

hwdep
	Lists the currently available hwdep devices in format of
	<card>-<device>: <name>

pcm
	Lists the currently available PCM devices in format of
	<card>-<device>: <id>: <name> : <sub-streams>

timer
	Lists the currently available timer devices


oss/devices
	Lists the OSS device mappings.

oss/sndstat
	Provides the output compatible with /dev/sndstat.
	You can symlink this to /dev/sndstat.


Card Specific Files
-------------------

The card-specific files are found in /proc/asound/card* directories.
Some drivers (e.g. cmipci) have their own proc entries for the
register dump, etc (e.g. /proc/asound/card*/cmipci shows the register
dump).  These files would be really helpful for debugging.

When PCM devices are available on this card, you can see directories
like pcm0p or pcm1c.  They hold the PCM information for each PCM
stream.  The number after 'pcm' is the PCM device number from 0, and
the last 'p' or 'c' means playback or capture direction.  The files in
this subtree is described later.

The status of MIDI I/O is found in midi* files.  It shows the device
name and the received/transmitted bytes through the MIDI device.

When the card is equipped with AC97 codecs, there are codec97#*
subdirectories (described later).

When the OSS mixer emulation is enabled (and the module is loaded),
oss_mixer file appears here, too.  This shows the current mapping of
OSS mixer elements to the ALSA control elements.  You can change the
mapping by writing to this device.  Read OSS-Emulation.txt for
details.


PCM Proc Files
--------------

card*/pcm*/info
	The general information of this PCM device: card #, device #,
	substreams, etc.

card*/pcm*/xrun_debug
	This file appears when CONFIG_SND_DEBUG=y and
	CONFIG_PCM_XRUN_DEBUG=y.
	This shows the status of xrun (= buffer overrun/xrun) and
	invalid PCM position debug/check of ALSA PCM middle layer.
	It takes an integer value, can be changed by writing to this
	file, such as

		 # echo 5 > /proc/asound/card0/pcm0p/xrun_debug

	The value consists of the following bit flags:
	  bit 0 = Enable XRUN/jiffies debug messages
	  bit 1 = Show stack trace at XRUN / jiffies check
	  bit 2 = Enable additional jiffies check
	  bit 3 = Log hwptr update at each period interrupt
	  bit 4 = Log hwptr update at each snd_pcm_update_hw_ptr()

	When the bit 0 is set, the driver will show the messages to
	kernel log when an xrun is detected.  The debug message is
	shown also when the invalid H/W pointer is detected at the
	update of periods (usually called from the interrupt
	handler).

	When the bit 1 is set, the driver will show the stack trace
	additionally.  This may help the debugging.

	Since 2.6.30, this option can enable the hwptr check using
	jiffies.  This detects spontaneous invalid pointer callback
	values, but can be lead to too much corrections for a (mostly
	buggy) hardware that doesn't give smooth pointer updates.
	This feature is enabled via the bit 2.

	Bits 3 and 4 are for logging the hwptr records.  Note that
	these will give flood of kernel messages.

card*/pcm*/sub*/info
	The general information of this PCM sub-stream.

card*/pcm*/sub*/status
	The current status of this PCM sub-stream, elapsed time,
	H/W position, etc.

card*/pcm*/sub*/hw_params
	The hardware parameters set for this sub-stream.

card*/pcm*/sub*/sw_params
	The soft parameters set for this sub-stream.

card*/pcm*/sub*/prealloc
	The buffer pre-allocation information.


AC97 Codec Information
----------------------

card*/codec97#*/ac97#?-?
	Shows the general information of this AC97 codec chip, such as
	name, capabilities, set up.

card*/codec97#0/ac97#?-?+regs
	Shows the AC97 register dump.  Useful for debugging.

	When CONFIG_SND_DEBUG is enabled, you can write to this file for
	changing an AC97 register directly.  Pass two hex numbers.
	For example,

	# echo 02 9f1f > /proc/asound/card0/codec97#0/ac97#0-0+regs


USB Audio Streams
-----------------

card*/stream*
	Shows the assignment and the current status of each audio stream
	of the given card.  This information is very useful for debugging.


HD-Audio Codecs
---------------

card*/codec#*
	Shows the general codec information and the attribute of each
	widget node.

card*/eld#*
	Available for HDMI or DisplayPort interfaces.
	Shows ELD(EDID Like Data) info retrieved from the attached HDMI sink,
	and describes its audio capabilities and configurations.

	Some ELD fields may be modified by doing `echo name hex_value > eld#*`.
	Only do this if you are sure the HDMI sink provided value is wrong.
	And if that makes your HDMI audio work, please report to us so that we
	can fix it in future kernel releases.


Sequencer Information
---------------------

seq/drivers
	Lists the currently available ALSA sequencer drivers.

seq/clients
	Shows the list of currently available sequencer clients and
	ports.  The connection status and the running status are shown
	in this file, too.

seq/queues
	Lists the currently allocated/running sequencer queues.

seq/timer
	Lists the currently allocated/running sequencer timers.

seq/oss
	Lists the OSS-compatible sequencer stuffs.


Help For Debugging?
-------------------

When the problem is related with PCM, first try to turn on xrun_debug
mode.  This will give you the kernel messages when and where xrun
happened.

If it's really a bug, report it with the following information:

  - the name of the driver/card, show in /proc/asound/cards
  - the register dump, if available (e.g. card*/cmipci)

when it's a PCM problem,

  - set-up of PCM, shown in hw_parms, sw_params, and status in the PCM
    sub-stream directory

when it's a mixer problem,

  - AC97 proc files, codec97#*/* files

for USB audio/midi,

  - output of lsusb -v
  - stream* files in card directory


The ALSA bug-tracking system is found at:

    https://bugtrack.alsa-project.org/alsa-bug/
