| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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#* | 
| Matt LaPlante | fff9289 | 2006-10-03 22:47:42 +0200 | [diff] [blame] | 74 | subdirectories (described later). | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | 
| Takashi Iwai | 4f64e15 | 2009-06-11 16:14:11 +0200 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 97 |  | 
| Takashi Iwai | 4f64e15 | 2009-06-11 16:14:11 +0200 | [diff] [blame] | 98 | # cat 5 > /proc/asound/card0/pcm0p/xrun_debug | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 99 |  | 
| Takashi Iwai | 4f64e15 | 2009-06-11 16:14:11 +0200 | [diff] [blame] | 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 |  | 
|  | 105 | When the bit 0 is set, the driver will show the messages to | 
|  | 106 | kernel log when an xrun is detected.  The debug message is | 
|  | 107 | shown also when the invalid H/W pointer is detected at the | 
|  | 108 | update of periods (usually called from the interrupt | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 109 | handler). | 
|  | 110 |  | 
| Takashi Iwai | 4f64e15 | 2009-06-11 16:14:11 +0200 | [diff] [blame] | 111 | When the bit 1 is set, the driver will show the stack trace | 
|  | 112 | additionally.  This may help the debugging. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 113 |  | 
| Takashi Iwai | 4f64e15 | 2009-06-11 16:14:11 +0200 | [diff] [blame] | 114 | Since 2.6.30, this option can enable the hwptr check using | 
| Takashi Iwai | c87d973 | 2009-05-27 10:53:33 +0200 | [diff] [blame] | 115 | jiffies.  This detects spontaneous invalid pointer callback | 
|  | 116 | values, but can be lead to too much corrections for a (mostly | 
|  | 117 | buggy) hardware that doesn't give smooth pointer updates. | 
| Takashi Iwai | 4f64e15 | 2009-06-11 16:14:11 +0200 | [diff] [blame] | 118 | This feature is enabled via the bit 2. | 
| Takashi Iwai | c87d973 | 2009-05-27 10:53:33 +0200 | [diff] [blame] | 119 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 120 | card*/pcm*/sub*/info | 
|  | 121 | The general information of this PCM sub-stream. | 
|  | 122 |  | 
|  | 123 | card*/pcm*/sub*/status | 
|  | 124 | The current status of this PCM sub-stream, elapsed time, | 
|  | 125 | H/W position, etc. | 
|  | 126 |  | 
|  | 127 | card*/pcm*/sub*/hw_params | 
|  | 128 | The hardware parameters set for this sub-stream. | 
|  | 129 |  | 
|  | 130 | card*/pcm*/sub*/sw_params | 
|  | 131 | The soft parameters set for this sub-stream. | 
|  | 132 |  | 
|  | 133 | card*/pcm*/sub*/prealloc | 
|  | 134 | The buffer pre-allocation information. | 
|  | 135 |  | 
|  | 136 |  | 
|  | 137 | AC97 Codec Information | 
|  | 138 | ---------------------- | 
|  | 139 |  | 
|  | 140 | card*/codec97#*/ac97#?-? | 
|  | 141 | Shows the general information of this AC97 codec chip, such as | 
|  | 142 | name, capabilities, set up. | 
|  | 143 |  | 
|  | 144 | card*/codec97#0/ac97#?-?+regs | 
|  | 145 | Shows the AC97 register dump.  Useful for debugging. | 
|  | 146 |  | 
|  | 147 | When CONFIG_SND_DEBUG is enabled, you can write to this file for | 
|  | 148 | changing an AC97 register directly.  Pass two hex numbers. | 
|  | 149 | For example, | 
|  | 150 |  | 
|  | 151 | # echo 02 9f1f > /proc/asound/card0/codec97#0/ac97#0-0+regs | 
|  | 152 |  | 
|  | 153 |  | 
| Takashi Iwai | 59de641 | 2005-11-17 11:05:34 +0100 | [diff] [blame] | 154 | USB Audio Streams | 
|  | 155 | ----------------- | 
|  | 156 |  | 
|  | 157 | card*/stream* | 
|  | 158 | Shows the assignment and the current status of each audio stream | 
|  | 159 | of the given card.  This information is very useful for debugging. | 
|  | 160 |  | 
|  | 161 |  | 
|  | 162 | HD-Audio Codecs | 
|  | 163 | --------------- | 
|  | 164 |  | 
|  | 165 | card*/codec#* | 
|  | 166 | Shows the general codec information and the attribute of each | 
|  | 167 | widget node. | 
|  | 168 |  | 
| Wu Fengguang | a5fcf89 | 2008-11-22 09:40:55 +0800 | [diff] [blame] | 169 | card*/eld#* | 
|  | 170 | Available for HDMI or DisplayPort interfaces. | 
|  | 171 | Shows ELD(EDID Like Data) info retrieved from the attached HDMI sink, | 
|  | 172 | and describes its audio capabilities and configurations. | 
|  | 173 |  | 
|  | 174 | Some ELD fields may be modified by doing `echo name hex_value > eld#*`. | 
|  | 175 | Only do this if you are sure the HDMI sink provided value is wrong. | 
|  | 176 | And if that makes your HDMI audio work, please report to us so that we | 
|  | 177 | can fix it in future kernel releases. | 
|  | 178 |  | 
| Takashi Iwai | 59de641 | 2005-11-17 11:05:34 +0100 | [diff] [blame] | 179 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 180 | Sequencer Information | 
|  | 181 | --------------------- | 
|  | 182 |  | 
|  | 183 | seq/drivers | 
|  | 184 | Lists the currently available ALSA sequencer drivers. | 
|  | 185 |  | 
|  | 186 | seq/clients | 
| Matt LaPlante | 53cb472 | 2006-10-03 22:55:17 +0200 | [diff] [blame] | 187 | Shows the list of currently available sequencer clients and | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 188 | ports.  The connection status and the running status are shown | 
|  | 189 | in this file, too. | 
|  | 190 |  | 
|  | 191 | seq/queues | 
| Matt LaPlante | 53cb472 | 2006-10-03 22:55:17 +0200 | [diff] [blame] | 192 | Lists the currently allocated/running sequencer queues. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 193 |  | 
|  | 194 | seq/timer | 
|  | 195 | Lists the currently allocated/running sequencer timers. | 
|  | 196 |  | 
|  | 197 | seq/oss | 
|  | 198 | Lists the OSS-compatible sequencer stuffs. | 
|  | 199 |  | 
|  | 200 |  | 
|  | 201 | Help For Debugging? | 
|  | 202 | ------------------- | 
|  | 203 |  | 
|  | 204 | When the problem is related with PCM, first try to turn on xrun_debug | 
|  | 205 | mode.  This will give you the kernel messages when and where xrun | 
|  | 206 | happened. | 
|  | 207 |  | 
| Matt LaPlante | d6bc8ac | 2006-10-03 22:54:15 +0200 | [diff] [blame] | 208 | If it's really a bug, report it with the following information: | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 209 |  | 
|  | 210 | - the name of the driver/card, show in /proc/asound/cards | 
| Matt LaPlante | d6bc8ac | 2006-10-03 22:54:15 +0200 | [diff] [blame] | 211 | - the register dump, if available (e.g. card*/cmipci) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 212 |  | 
|  | 213 | when it's a PCM problem, | 
|  | 214 |  | 
|  | 215 | - set-up of PCM, shown in hw_parms, sw_params, and status in the PCM | 
|  | 216 | sub-stream directory | 
|  | 217 |  | 
|  | 218 | when it's a mixer problem, | 
|  | 219 |  | 
|  | 220 | - AC97 proc files, codec97#*/* files | 
|  | 221 |  | 
|  | 222 | for USB audio/midi, | 
|  | 223 |  | 
|  | 224 | - output of lsusb -v | 
|  | 225 | - stream* files in card directory | 
|  | 226 |  | 
|  | 227 |  | 
|  | 228 | The ALSA bug-tracking system is found at: | 
|  | 229 |  | 
|  | 230 | https://bugtrack.alsa-project.org/alsa-bug/ |