Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PCM(4)                 FreeBSD Kernel Interfaces Manual                 PCM(4)

     pcm, snd -- FreeBSD PCM audio device driver

     For a card with bridge driver support, and a PnP card:
     device pcm

     For a card without bridge driver support, and a non-PnP card:
     device pcm0 at isa? port? irq 5 drq 1 flags 0x15

     The pcm driver provides support for PCM audio play and capture.  This
     driver also supports various PCI and WSS/MSS compatible ISA sound cards,
     and AC97 mixer.  True full duplex operation is available on most cards.

     If your sound card is supported by a bridge driver, pcm driver works in
     conjunction with the bridge driver.

     Apart from the usual parameters, the flags field is used to specify the
     secondary DMA channel (generally used for capture in full duplex cards).
     Flags are set to 0 for cards not using a secondary DMA channel, or to
     0x10 + C to specify channel C.

     The driver works best with WSS/MSS cards, which have a very clean archi-
     tecture and an orthogonal set of features.  They also happen to be among
     the cheapest audio cards on the market.

     The driver does its best to recognize the installed hardware and drive it
     correctly, so that you don't have to give too many details in the kernel
     config files.  For PCI and ISA PnP cards this is actually easy since they
     identify themselves.  For legacy ISA cards, the driver looks for MSS
     cards at addresses 0x530 and 0x604 (obviously, unless overridden in the
     kernel config file by specifying an address).

     The driver supports most of the Voxware ioctls(), and most applications
     work unmodified (including popular mpeg players and linux binaries). A
     few differences exist (the most important one is the ability to use mem-
     ory-mapped access to the audio buffers). As a consequence, some applica-
     tions may need to be recompiled with a slightly modified audio module.
     See /usr/include/sys/soundcard.h for a complete list of the supported

     Below we include a list of supported codecs/cards.  If your sound card is
     not listed here, it may be supported by a bridge driver.

     CS4237, CS4236, CS4232, CS4231 (ISA)
         All these cards work perfectly in full duplex using the MSS mode.
         This chipset is used, among others, on the A/Open AW35 and AW32, on
         some Intel motherboards, and (the CS4231) on some non-PnP cards.

         The CS4232 is reported as buggy in the Voxware documentation but I am
         not sure if this is true.  On one of my Intel motherboards, capture
         does not work simply because the capture DMA channel is not wired to
         the ISA DMA controller.

     Yamaha OPL-SAx (ISA)
         Works perfectly in all modes.  This chip is used in several PnP
         cards, but also (in non-PnP mode) on motherboards and laptops (e.g.
         the Toshiba Libretto).

     OPTi931 (ISA)
         The chip is buggy, but the driver has many workarounds to make it
         work in full duplex because for some time these were the only full
         duplex cards I could find. u-law formats uses U8 format internally
         because of a bug in the chip.

     Trident 4DWave DX/NX (PCI)

     ENSONIQ AudioPCI ES1370/1371 (PCI)
         Creative Labs SoundBlaster PCI is supported as well.

     ESS Solo-1/1E (PCI)

     NeoMagic 256AV/ZX (PCI)

     The following commonly used symbolic links to real device nodes should be

     /dev/audio      Sparc-compatible audio device
     /dev/dsp        Digitized voice device
     /dev/dspW       Like /dev/dsp, but 16 bits per sample
     /dev/midi       Raw midi access device
     /dev/mixer      Control port mixer device
     /dev/music      Level 2 sequencer interface
     /dev/sequencer  Sequencer device
     /dev/pss        Programmable device interface

     Each symbolic link refers to a device node of the same name, but with a
     unit number appended.  The unit number for each device matches the unit
     number of the device probed at boot time.  Device probe messages can be
     examined with the dmesg(8) utility.

     All the appropriate device nodes and symbolic links for the `pcm0' device
     can be created with the following commands:

           cd /dev; sh MAKEDEV snd0

     Similarly, the device nodes and symbolic links for the `pcm1' device
     would be created as follows:

           cd /dev; sh MAKEDEV snd1

     Since the /dev/MAKEDEV utility creates symbolic links that will be used
     by many utilities by default, the device nodes and symbolic links for the
     preferred audio device in systems with multiple audio devices should be
     created last.

     ac97: dac not ready
         AC97 codec is not likely to be accompanied with the sound card.

     unsupported subdevice XX
         A device node is not created properly.

     Some features of your cards (e.g. global volume control) might not be
     supported on all devices.

     The pcm device driver first appeared in FreeBSD 2.2.6, rewritten in
     FreeBSD 4.0.

     csa(4), gusc(4), sbc(4)

     Luigi Rizzo <> initially wrote the pcm device driver
     and this manual page.
     Cameron Grant <> totally revised the device
     Seigo Tanimura <> revised this manual

FreeBSD 4.10                     June 3, 1998                     FreeBSD 4.10


Want to link to this manual page? Use this URL:

home | help