blob: 29a466851fd2e84ef2415db5501076695bd7f1d1 [file] [log] [blame]
Takashi Iwaiafb8fd32016-11-09 15:52:06 +01001==========================
2Proc Files of ALSA Drivers
3==========================
4
5Takashi Iwai <tiwai@suse.de>
Linus Torvalds1da177e2005-04-16 15:20:36 -07006
7General
Takashi Iwaiafb8fd32016-11-09 15:52:06 +01008=======
Linus Torvalds1da177e2005-04-16 15:20:36 -07009
10ALSA has its own proc tree, /proc/asound. Many useful information are
11found in this tree. When you encounter a problem and need debugging,
12check the files listed in the following sections.
13
14Each card has its subtree cardX, where X is from 0 to 7. The
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010015card-specific files are stored in the ``card*`` subdirectories.
Linus Torvalds1da177e2005-04-16 15:20:36 -070016
17
18Global Information
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010019==================
Linus Torvalds1da177e2005-04-16 15:20:36 -070020
21cards
22 Shows the list of currently configured ALSA drivers,
23 index, the id string, short and long descriptions.
24
25version
26 Shows the version string and compile date.
27
28modules
29 Lists the module of each card
30
31devices
32 Lists the ALSA native device mappings.
33
34meminfo
35 Shows the status of allocated pages via ALSA drivers.
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010036 Appears only when ``CONFIG_SND_DEBUG=y``.
Linus Torvalds1da177e2005-04-16 15:20:36 -070037
38hwdep
39 Lists the currently available hwdep devices in format of
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010040 ``<card>-<device>: <name>``
Linus Torvalds1da177e2005-04-16 15:20:36 -070041
42pcm
43 Lists the currently available PCM devices in format of
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010044 ``<card>-<device>: <id>: <name> : <sub-streams>``
Linus Torvalds1da177e2005-04-16 15:20:36 -070045
46timer
47 Lists the currently available timer devices
48
49
50oss/devices
51 Lists the OSS device mappings.
52
53oss/sndstat
54 Provides the output compatible with /dev/sndstat.
55 You can symlink this to /dev/sndstat.
56
57
58Card Specific Files
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010059===================
Linus Torvalds1da177e2005-04-16 15:20:36 -070060
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010061The card-specific files are found in ``/proc/asound/card*`` directories.
Linus Torvalds1da177e2005-04-16 15:20:36 -070062Some drivers (e.g. cmipci) have their own proc entries for the
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010063register dump, etc (e.g. ``/proc/asound/card*/cmipci`` shows the register
Linus Torvalds1da177e2005-04-16 15:20:36 -070064dump). These files would be really helpful for debugging.
65
66When PCM devices are available on this card, you can see directories
67like pcm0p or pcm1c. They hold the PCM information for each PCM
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010068stream. The number after ``pcm`` is the PCM device number from 0, and
69the last ``p`` or ``c`` means playback or capture direction. The files in
Linus Torvalds1da177e2005-04-16 15:20:36 -070070this subtree is described later.
71
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010072The status of MIDI I/O is found in ``midi*`` files. It shows the device
Linus Torvalds1da177e2005-04-16 15:20:36 -070073name and the received/transmitted bytes through the MIDI device.
74
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010075When the card is equipped with AC97 codecs, there are ``codec97#*``
Matt LaPlantefff92892006-10-03 22:47:42 +020076subdirectories (described later).
Linus Torvalds1da177e2005-04-16 15:20:36 -070077
78When the OSS mixer emulation is enabled (and the module is loaded),
79oss_mixer file appears here, too. This shows the current mapping of
80OSS mixer elements to the ALSA control elements. You can change the
81mapping by writing to this device. Read OSS-Emulation.txt for
82details.
83
84
85PCM Proc Files
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010086==============
Linus Torvalds1da177e2005-04-16 15:20:36 -070087
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010088``card*/pcm*/info``
Linus Torvalds1da177e2005-04-16 15:20:36 -070089 The general information of this PCM device: card #, device #,
90 substreams, etc.
91
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010092``card*/pcm*/xrun_debug``
93 This file appears when ``CONFIG_SND_DEBUG=y`` and
94 ``CONFIG_PCM_XRUN_DEBUG=y``.
Takashi Iwai4f64e152009-06-11 16:14:11 +020095 This shows the status of xrun (= buffer overrun/xrun) and
96 invalid PCM position debug/check of ALSA PCM middle layer.
97 It takes an integer value, can be changed by writing to this
Takashi Iwaiafb8fd32016-11-09 15:52:06 +010098 file, such as::
Linus Torvalds1da177e2005-04-16 15:20:36 -070099
Masanari Iidafdfa6822009-12-27 00:09:45 +0900100 # echo 5 > /proc/asound/card0/pcm0p/xrun_debug
Linus Torvalds1da177e2005-04-16 15:20:36 -0700101
Takashi Iwai4f64e152009-06-11 16:14:11 +0200102 The value consists of the following bit flags:
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100103
104 * bit 0 = Enable XRUN/jiffies debug messages
105 * bit 1 = Show stack trace at XRUN / jiffies check
106 * bit 2 = Enable additional jiffies check
Takashi Iwai4f64e152009-06-11 16:14:11 +0200107
108 When the bit 0 is set, the driver will show the messages to
109 kernel log when an xrun is detected. The debug message is
110 shown also when the invalid H/W pointer is detected at the
111 update of periods (usually called from the interrupt
Linus Torvalds1da177e2005-04-16 15:20:36 -0700112 handler).
113
Takashi Iwai4f64e152009-06-11 16:14:11 +0200114 When the bit 1 is set, the driver will show the stack trace
115 additionally. This may help the debugging.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700116
Takashi Iwai4f64e152009-06-11 16:14:11 +0200117 Since 2.6.30, this option can enable the hwptr check using
Takashi Iwaic87d9732009-05-27 10:53:33 +0200118 jiffies. This detects spontaneous invalid pointer callback
119 values, but can be lead to too much corrections for a (mostly
120 buggy) hardware that doesn't give smooth pointer updates.
Takashi Iwai4f64e152009-06-11 16:14:11 +0200121 This feature is enabled via the bit 2.
Takashi Iwaic87d9732009-05-27 10:53:33 +0200122
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100123``card*/pcm*/sub*/info``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700124 The general information of this PCM sub-stream.
125
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100126``card*/pcm*/sub*/status``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700127 The current status of this PCM sub-stream, elapsed time,
128 H/W position, etc.
129
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100130``card*/pcm*/sub*/hw_params``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700131 The hardware parameters set for this sub-stream.
132
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100133``card*/pcm*/sub*/sw_params``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700134 The soft parameters set for this sub-stream.
135
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100136``card*/pcm*/sub*/prealloc``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700137 The buffer pre-allocation information.
138
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100139``card*/pcm*/sub*/xrun_injection``
Takashi Iwai2b30d412014-11-04 14:02:40 +0100140 Triggers an XRUN to the running stream when any value is
141 written to this proc file. Used for fault injection.
142 This entry is write-only.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700143
144AC97 Codec Information
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100145======================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700146
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100147``card*/codec97#*/ac97#?-?``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700148 Shows the general information of this AC97 codec chip, such as
149 name, capabilities, set up.
150
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100151``card*/codec97#0/ac97#?-?+regs``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700152 Shows the AC97 register dump. Useful for debugging.
153
154 When CONFIG_SND_DEBUG is enabled, you can write to this file for
155 changing an AC97 register directly. Pass two hex numbers.
156 For example,
157
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100158::
159
Linus Torvalds1da177e2005-04-16 15:20:36 -0700160 # echo 02 9f1f > /proc/asound/card0/codec97#0/ac97#0-0+regs
161
162
Takashi Iwai59de6412005-11-17 11:05:34 +0100163USB Audio Streams
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100164=================
Takashi Iwai59de6412005-11-17 11:05:34 +0100165
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100166``card*/stream*``
Takashi Iwai59de6412005-11-17 11:05:34 +0100167 Shows the assignment and the current status of each audio stream
168 of the given card. This information is very useful for debugging.
169
170
171HD-Audio Codecs
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100172===============
Takashi Iwai59de6412005-11-17 11:05:34 +0100173
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100174``card*/codec#*``
Takashi Iwai59de6412005-11-17 11:05:34 +0100175 Shows the general codec information and the attribute of each
176 widget node.
177
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100178``card*/eld#*``
Wu Fengguanga5fcf892008-11-22 09:40:55 +0800179 Available for HDMI or DisplayPort interfaces.
180 Shows ELD(EDID Like Data) info retrieved from the attached HDMI sink,
181 and describes its audio capabilities and configurations.
182
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100183 Some ELD fields may be modified by doing ``echo name hex_value > eld#*``.
Wu Fengguanga5fcf892008-11-22 09:40:55 +0800184 Only do this if you are sure the HDMI sink provided value is wrong.
185 And if that makes your HDMI audio work, please report to us so that we
186 can fix it in future kernel releases.
187
Takashi Iwai59de6412005-11-17 11:05:34 +0100188
Linus Torvalds1da177e2005-04-16 15:20:36 -0700189Sequencer Information
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100190=====================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700191
192seq/drivers
193 Lists the currently available ALSA sequencer drivers.
194
195seq/clients
Matt LaPlante53cb4722006-10-03 22:55:17 +0200196 Shows the list of currently available sequencer clients and
Linus Torvalds1da177e2005-04-16 15:20:36 -0700197 ports. The connection status and the running status are shown
198 in this file, too.
199
200seq/queues
Matt LaPlante53cb4722006-10-03 22:55:17 +0200201 Lists the currently allocated/running sequencer queues.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700202
203seq/timer
204 Lists the currently allocated/running sequencer timers.
205
206seq/oss
207 Lists the OSS-compatible sequencer stuffs.
208
209
210Help For Debugging?
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100211===================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700212
213When the problem is related with PCM, first try to turn on xrun_debug
214mode. This will give you the kernel messages when and where xrun
215happened.
216
Matt LaPlanted6bc8ac2006-10-03 22:54:15 +0200217If it's really a bug, report it with the following information:
Linus Torvalds1da177e2005-04-16 15:20:36 -0700218
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100219- the name of the driver/card, show in ``/proc/asound/cards``
220- the register dump, if available (e.g. ``card*/cmipci``)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700221
222when it's a PCM problem,
223
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100224- set-up of PCM, shown in hw_parms, sw_params, and status in the PCM
225 sub-stream directory
Linus Torvalds1da177e2005-04-16 15:20:36 -0700226
227when it's a mixer problem,
228
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100229- AC97 proc files, ``codec97#*/*`` files
Linus Torvalds1da177e2005-04-16 15:20:36 -0700230
231for USB audio/midi,
232
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100233- output of ``lsusb -v``
234- ``stream*`` files in card directory
Linus Torvalds1da177e2005-04-16 15:20:36 -0700235
236
237The ALSA bug-tracking system is found at:
Takashi Iwaiafb8fd32016-11-09 15:52:06 +0100238https://bugtrack.alsa-project.org/alsa-bug/