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