123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- 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()
- bit 5 = Show last 10 positions on error
- bit 6 = Do above only once
- 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.
- When bit 5 is set, the driver logs the last 10 xrun errors and
- the proc file shows each jiffies, position, period_size,
- buffer_size, old_hw_ptr, and hw_ptr_base values.
- When bit 6 is set, the full xrun log is shown only once.
- 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/
|