Based on kernel version 4.13.3. Page generated on 2017-09-23 13:56 EST.
1 Introduction Notes on Modular Sound Drivers and Soundcore 2 Wade Hampton 3 2/14/2001 4 5 Purpose: 6 ======== 7 This document provides some general notes on the modular 8 sound drivers and their configuration, along with the 9 support modules sound.o and soundcore.o. 10 11 Note, some of this probably should be added to the Sound-HOWTO! 12 13 Note, soundlow.o was present with 2.2 kernels but is not 14 required for 2.4.x kernels. References have been removed 15 to this. 16 17 18 Copying: 19 ======== 20 none 21 22 23 History: 24 ======== 25 0.1.0 11/20/1998 First version, draft 26 1.0.0 11/1998 Alan Cox changes, incorporation in 2.2.0 27 as Documentation/sound/oss/Introduction 28 1.1.0 6/30/1999 Second version, added notes on making the drivers, 29 added info on multiple sound cards of similar types,] 30 added more diagnostics info, added info about esd. 31 added info on OSS and ALSA. 32 1.1.1 19991031 Added notes on sound-slot- and sound-service. 33 (Alan Cox) 34 1.1.2 20000920 Modified for Kernel 2.4 (Christoph Hellwig) 35 1.1.3 20010214 Minor notes and corrections (Wade Hampton) 36 Added examples of sound-slot-0, etc. 37 38 39 Modular Sound Drivers: 40 ====================== 41 42 Thanks to the GREAT work by Alan Cox (alan@lxorguk.ukuu.org.uk), 43 44 [And Oleg Drokin, Thomas Sailer, Andrew Veliath and more than a few 45 others - not to mention Hannu's original code being designed well 46 enough to cope with that kind of chopping up](Alan) 47 48 the standard Linux kernels support a modular sound driver. From 49 Alan's comments in linux/drivers/sound/README.FIRST: 50 51 The modular sound driver patches were funded by Red Hat Software 52 (www.redhat.com). The sound driver here is thus a modified version of 53 Hannu's code. Please bear that in mind when considering the appropriate 54 forums for bug reporting. 55 56 The modular sound drivers may be loaded via insmod or modprobe. 57 To support all the various sound modules, there are two general 58 support modules that must be loaded first: 59 60 soundcore.o: Top level handler for the sound system, provides 61 a set of functions for registration of devices 62 by type. 63 64 sound.o: Common sound functions required by all modules. 65 66 For the specific sound modules (e.g., sb.o for the Soundblaster), 67 read the documentation on that module to determine what options 68 are available, for example IRQ, address, DMA. 69 70 Warning, the options for different cards sometime use different names 71 for the same or a similar feature (dma1= versus dma16=). As a last 72 resort, inspect the code (search for module_param). 73 74 Notes: 75 76 1. There is a new OpenSource sound driver called ALSA which is 77 currently under development: http://www.alsa-project.org/ 78 The ALSA drivers support some newer hardware that may not 79 be supported by this sound driver and also provide some 80 additional features. 81 82 2. The commercial OSS driver may be obtained from the site: 83 http://www.opensound.com. This may be used for cards that 84 are unsupported by the kernel driver, or may be used 85 by other operating systems. 86 87 3. The enlightenment sound daemon may be used for playing 88 multiple sounds at the same time via a single card, eliminating 89 some of the requirements for multiple sound card systems. For 90 more information, see: http://www.tux.org/~ricdude/EsounD.html 91 The "esd" program may be used with the real-player and mpeg 92 players like mpg123 and x11amp. The newer real-player 93 and some games even include built-in support for ESD! 94 95 96 Building the Modules: 97 ===================== 98 99 This document does not provide full details on building the 100 kernel, etc. The notes below apply only to making the kernel 101 sound modules. If this conflicts with the kernel's README, 102 the README takes precedence. 103 104 1. To make the kernel sound modules, cd to your /usr/src/linux 105 directory (typically) and type make config, make menuconfig, 106 or make xconfig (to start the command line, dialog, or x-based 107 configuration tool). 108 109 2. Select the Sound option and a dialog will be displayed. 110 111 3. Select M (module) for "Sound card support". 112 113 4. Select your sound driver(s) as a module. For ProAudio, Sound 114 Blaster, etc., select M (module) for OSS sound modules. 115 [thanks to Marvin Stodolsky <stodolsk@erols.com>]A 116 117 5. Make the kernel (e.g., make bzImage), and install the kernel. 118 119 6. Make the modules and install them (make modules; make modules_install). 120 121 Note, for 2.5.x kernels, make sure you have the newer module-init-tools 122 installed or modules will not be loaded properly. 2.5.x requires an 123 updated module-init-tools. 124 125 126 Plug and Play (PnP: 127 =================== 128 129 If the sound card is an ISA PnP card, isapnp may be used 130 to configure the card. See the file isapnp.txt in the 131 directory one level up (e.g., /usr/src/linux/Documentation). 132 133 Also the 2.4.x kernels provide PnP capabilities, see the 134 file NEWS in this directory. 135 136 PCI sound cards are highly recommended, as they are far 137 easier to configure and from what I have read, they use 138 less resources and are more CPU efficient. 139 140 141 INSMOD: 142 ======= 143 144 If loading via insmod, the common modules must be loaded in the 145 order below BEFORE loading the other sound modules. The card-specific 146 modules may then be loaded (most require parameters). For example, 147 I use the following via a shell script to load my SoundBlaster: 148 149 SB_BASE=0x240 150 SB_IRQ=9 151 SB_DMA=3 152 SB_DMA2=5 153 SB_MPU=0x300 154 # 155 echo Starting sound 156 /sbin/insmod soundcore 157 /sbin/insmod sound 158 # 159 echo Starting sound blaster.... 160 /sbin/insmod uart401 161 /sbin/insmod sb io=$SB_BASE irq=$SB_IRQ dma=$SB_DMA dma16=$SB_DMA2 mpu_io=$SB_MP 162 163 When using sound as a module, I typically put these commands 164 in a file such as /root/soundon.sh. 165 166 167 MODPROBE: 168 ========= 169 170 If loading via modprobe, these common files are automatically loaded when 171 requested by modprobe. For example, my /etc/modprobe.d/oss.conf contains: 172 173 alias sound sb 174 options sb io=0x240 irq=9 dma=3 dma16=5 mpu_io=0x300 175 176 All you need to do to load the module is: 177 178 /sbin/modprobe sb 179 180 181 Sound Status: 182 ============= 183 184 The status of sound may be read/checked by: 185 cat (anyfile).au >/dev/audio 186 187 [WWH: This may not work properly for SoundBlaster PCI 128 cards 188 such as the es1370/1 (see the es1370/1 files in this directory) 189 as they do not automatically support uLaw on /dev/audio.] 190 191 The status of the modules and which modules depend on 192 which other modules may be checked by: 193 /sbin/lsmod 194 195 /sbin/lsmod should show something like the following: 196 sb 26280 0 197 uart401 5640 0 [sb] 198 sound 57112 0 [sb uart401] 199 soundcore 1968 8 [sb sound] 200 201 202 Removing Sound: 203 =============== 204 205 Sound may be removed by using /sbin/rmmod in the reverse order 206 in which you load the modules. Note, if a program has a sound device 207 open (e.g., xmixer), that module (and the modules on which it 208 depends) may not be unloaded. 209 210 For example, I use the following to remove my Soundblaster (rmmod 211 in the reverse order in which I loaded the modules): 212 213 /sbin/rmmod sb 214 /sbin/rmmod uart401 215 /sbin/rmmod sound 216 /sbin/rmmod soundcore 217 218 When using sound as a module, I typically put these commands 219 in a script such as /root/soundoff.sh. 220 221 222 Removing Sound for use with OSS: 223 ================================ 224 225 If you get really stuck or have a card that the kernel modules 226 will not support, you can get a commercial sound driver from 227 http://www.opensound.com. Before loading the commercial sound 228 driver, you should do the following: 229 230 1. remove sound modules (detailed above) 231 2. remove the sound modules from /etc/modprobe.d/*.conf 232 3. move the sound modules from /lib/modules/<kernel>/misc 233 (for example, I make a /lib/modules/<kernel>/misc/tmp 234 directory and copy the sound module files to that 235 directory). 236 237 238 Multiple Sound Cards: 239 ===================== 240 241 The sound drivers will support multiple sound cards and there 242 are some great applications like multitrack that support them. 243 Typically, you need two sound cards of different types. Note, this 244 uses more precious interrupts and DMA channels and sometimes 245 can be a configuration nightmare. I have heard reports of 3-4 246 sound cards (typically I only use 2). You can sometimes use 247 multiple PCI sound cards of the same type. 248 249 On my machine I have two sound cards (cs4232 and Soundblaster Vibra 250 16). By loading sound as modules, I can control which is the first 251 sound device (/dev/dsp, /dev/audio, /dev/mixer) and which is 252 the second. Normally, the cs4232 (Dell sound on the motherboard) 253 would be the first sound device, but I prefer the Soundblaster. 254 All you have to do is to load the one you want as /dev/dsp 255 first (in my case "sb") and then load the other one 256 (in my case "cs4232"). 257 258 If you have two cards of the same type that are jumpered 259 cards or different PnP revisions, you may load the same 260 module twice. For example, I have a SoundBlaster vibra 16 261 and an older SoundBlaster 16 (jumpers). To load the module 262 twice, you need to do the following: 263 264 1. Copy the sound modules to a new name. For example 265 sb.o could be copied (or symlinked) to sb1.o for the 266 second SoundBlaster. 267 268 2. Make a second entry in /etc/modprobe.d/*conf, for example, 269 sound1 or sb1. This second entry should refer to the 270 new module names for example sb1, and should include 271 the I/O, etc. for the second sound card. 272 273 3. Update your soundon.sh script, etc. 274 275 Warning: I have never been able to get two PnP sound cards of the 276 same type to load at the same time. I have tried this several times 277 with the Soundblaster Vibra 16 cards. OSS has indicated that this 278 is a PnP problem.... If anyone has any luck doing this, please 279 send me an E-MAIL. PCI sound cards should not have this problem.a 280 Since this was originally release, I have received a couple of 281 mails from people who have accomplished this! 282 283 NOTE: In Linux 2.4 the Sound Blaster driver (and only this one yet) 284 supports multiple cards with one module by default. 285 Read the file 'Soundblaster' in this directory for details. 286 287 288 Sound Problems: 289 =============== 290 291 First RTFM (including the troubleshooting section 292 in the Sound-HOWTO). 293 294 1) If you are having problems loading the modules (for 295 example, if you get device conflict errors) try the 296 following: 297 298 A) If you have Win95 or NT on the same computer, 299 write down what addresses, IRQ, and DMA channels 300 those were using for the same hardware. You probably 301 can use these addresses, IRQs, and DMA channels. 302 You should really do this BEFORE attempting to get 303 sound working! 304 305 B) Check (cat) /proc/interrupts, /proc/ioports, 306 and /proc/dma. Are you trying to use an address, 307 IRQ or DMA port that another device is using? 308 309 C) Check (cat) /proc/isapnp 310 311 D) Inspect your /var/log/messages file. Often that will 312 indicate what IRQ or IO port could not be obtained. 313 314 E) Try another port or IRQ. Note this may involve 315 using the PnP tools to move the sound card to 316 another location. Sometimes this is the only way 317 and it is more or less trial and error. 318 319 2) If you get motor-boating (the same sound or part of a 320 sound clip repeated), you probably have either an IRQ 321 or DMA conflict. Move the card to another IRQ or DMA 322 port. This has happened to me when playing long files 323 when I had an IRQ conflict. 324 325 3. If you get dropouts or pauses when playing high sample 326 rate files such as using mpg123 or x11amp/xmms, you may 327 have too slow of a CPU and may have to use the options to 328 play the files at 1/2 speed. For example, you may use 329 the -2 or -4 option on mpg123. You may also get this 330 when trying to play mpeg files stored on a CD-ROM 331 (my Toshiba T8000 PII/366 sometimes has this problem). 332 333 4. If you get "cannot access device" errors, your /dev/dsp 334 files, etc. may be set to owner root, mode 600. You 335 may have to use the command: 336 chmod 666 /dev/dsp /dev/mixer /dev/audio 337 338 5. If you get "device busy" errors, another program has the 339 sound device open. For example, if using the Enlightenment 340 sound daemon "esd", the "esd" program has the sound device. 341 If using "esd", please RTFM the docs on ESD. For example, 342 esddsp <program> may be used to play files via a non-esd 343 aware program. 344 345 6) Ask for help on the sound list or send E-MAIL to the 346 sound driver author/maintainer. 347 348 7) Turn on debug in drivers/sound/sound_config.h (DEB, DDB, MDB). 349 350 8) If the system reports insufficient DMA memory then you may want to 351 load sound with the "dmabufs=1" option. Or in /etc/conf.modules add 352 353 preinstall sound dmabufs=1 354 355 This makes the sound system allocate its buffers and hang onto them. 356 357 You may also set persistent DMA when building a 2.4.x kernel. 358 359 360 Configuring Sound: 361 ================== 362 363 There are several ways of configuring your sound: 364 365 1) On the kernel command line (when using the sound driver(s) 366 compiled in the kernel). Check the driver source and 367 documentation for details. 368 369 2) On the command line when using insmod or in a bash script 370 using command line calls to load sound. 371 372 3) In /etc/modprobe.d/*conf when using modprobe. 373 374 4) Via Red Hat's GPL'd /usr/sbin/sndconfig program (text based). 375 376 5) Via the OSS soundconf program (with the commercial version 377 of the OSS driver. 378 379 6) By just loading the module and let isapnp do everything relevant 380 for you. This works only with a few drivers yet and - of course - 381 only with isapnp hardware. 382 383 And I am sure, several other ways. 384 385 Anyone want to write a linuxconf module for configuring sound? 386 387 388 Module Loading: 389 =============== 390 391 When a sound card is first referenced and sound is modular, the sound system 392 will ask for the sound devices to be loaded. Initially it requests that 393 the driver for the sound system is loaded. It then will ask for 394 sound-slot-0, where 0 is the first sound card. (sound-slot-1 the second and 395 so on). Thus you can do 396 397 alias sound-slot-0 sb 398 399 To load a soundblaster at this point. If the slot loading does not provide 400 the desired device - for example a soundblaster does not directly provide 401 a midi synth in all cases then it will request "sound-service-0-n" where n 402 is 403 404 0 Mixer 405 406 2 MIDI 407 408 3, 4 DSP audio 409 410 411 For example, I use the following to load my Soundblaster PCI 128 412 (ES 1371) card first, followed by my SoundBlaster Vibra 16 card, 413 then by my TV card: 414 415 # Load the Soundblaster PCI 128 as /dev/dsp, /dev/dsp1, /dev/mixer 416 alias sound-slot-0 es1371 417 418 # Load the Soundblaster Vibra 16 as /dev/dsp2, /dev/mixer1 419 alias sound-slot-1 sb 420 options sb io=0x240 irq=5 dma=1 dma16=5 mpu_io=0x330 421 422 # Load the BTTV (TV card) as /dev/mixer2 423 alias sound-slot-2 bttv 424 alias sound-service-2-0 tvmixer 425 426 pre-install bttv modprobe tuner ; modprobe tvmixer 427 pre-install tvmixer modprobe msp3400; modprobe tvaudio 428 options tuner debug=0 type=8 429 options bttv card=0 radio=0 pll=0 430 431 432 For More Information (RTFM): 433 ============================ 434 1) Information on kernel modules: manual pages for insmod and modprobe. 435 436 2) Information on PnP, RTFM manual pages for isapnp. 437 438 3) Sound-HOWTO and Sound-Playing-HOWTO. 439 440 4) OSS's WWW site at http://www.opensound.com. 441 442 5) All the files in Documentation/sound. 443 444 6) The comments and code in linux/drivers/sound. 445 446 7) The sndconfig and rhsound documentation from Red Hat. 447 448 8) The Linux-sound mailing list: sound-list@redhat.com. 449 450 9) Enlightenment documentation (for info on esd) 451 http://www.tux.org/~ricdude/EsounD.html. 452 453 10) ALSA home page: http://www.alsa-project.org/ 454 455 456 Contact Information: 457 ==================== 458 Wade Hampton: (whampton@staffnet.com)