Blame view

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