This section lists the sound cards and interfaces that are currently supported under Linux. The information here is based on the latest Linux kernels, at time of writing.
The sound driver has its own version numbering. The latest stable Linux kernel release was version 2.0.33, using sound driver version 3.5.4-960630.
The author of the sound driver, Hannu Savolainen, typically also makes available newer beta releases of the sound driver before they are included as part of the standard Linux kernel distribution. The most up to date list of supported cards is available at http://www.4front-tech.com/ossfree/new_cards.html (USA) or http://personal.eunet.fi/pp/voxware/new_cards.html (Europe). These pages indicate which sound driver version is required for a given type of sound card or if support for it is still under development. The file /usr/src/linux/drivers/sound/Readme.cards distributed with the kernel sound driver contains information on supported cards but it is not always up to date.
The information in this HOWTO is valid for Linux on the Intel platform.
The sound driver should also work with most sound cards on the Alpha platform. However, some cards may conflict with I/O ports of other devices on Alpha systems even though they work perfectly on i386 machines, so in general it's not possible to tell if a given card will work or not without actually trying it.
At the time of writing the sound driver was not yet working on the PowerPC version of Linux, but it should be supported in future.
Sound can be configured into the kernel under the MIPs port of Linux, and some MIPs machines have EISA slots and/or built in sound hardware. I'm told the Linux-MIPs group is interested in adding sound support in the future.
The Linux kernel includes a separate driver for the Atari and Amiga versions of Linux that implements a compatible subset of the sound driver on the Intel platform using the built-in sound hardware on these machines.
The SPARC port of Linux does not currently have sound support. Like the Amiga and Atari, SPARC machines have built in sound hardware, so it could be done with a new driver (this is somewhat ironic, as under Linux /dev/dsp emulates the SunOS sound device).
The following sound cards are supported by the Linux kernel sound driver:
It should be noted that Plug and Play (PnP) sound cards are not fully compatible with the older non-PnP models of the same device. For example, the SoundBlaster16 PnP is not fully compatible with the original SoundBlaster16. The same is true for the Soundscape PnP and GUS PnP cards. More information related to Plug and Play is found later in this document.
The following cards are not supported, either because they are obsolete or because the vendor will not release the programming information needed to write a driver:
Other sound cards that are claimed to be compatible with one of the supported sound cards may work if they are hardware (i.e. register level) compatible.
Even though most sound cards are claimed to be "SoundBlaster compatible", very few currently sold cards are compatible enough to work with the Linux SoundBlaster driver. These cards usually work better using the MSS/WSS or MAD16 driver. Only real SoundBlaster cards made by Creative Labs, which use Creative's custom chips (e.g. SoundBlaster16 Vibra), MV Jazz16 and ESS688/1688 based cards generally work with the SoundBlaster driver. Trying to use a "SoundBlaster Pro compatible 16 bit sound card" with the SoundBlaster driver is usually just a waste of time.
The Linux kernel supports the SCSI port provided on some sound cards (e.g. ProAudioSpectrum 16) and the proprietary interface for some CD-ROM drives (e.g. Soundblaster Pro). See the Linux SCSI HOWTO and CDROM HOWTO documents for more information.
A loadable kernel module to support joystick ports, including those provided on some sound cards, is also available.
Note that the kernel SCSI, CD-ROM, joystick, and sound drivers are completely independent of each other.
For the latest information on the sound card driver check Hannu Savolainen's World-Wide Web site listed in the References section.
There are some "unofficial" sound drivers available, not included in the standard Linux kernel distribution, and used in place of the standard sound driver.
A commercial version of the Linux sound driver is sold by 4Front Technologies. It offers a number of additional features over the free version included in the Linux kernel. For more information see the 4Front Technologies Web page at http://www.4front-tech.com/.
Markus Mummert ( mum@mmk.e-technik.tu-muenchen.de) has written a driver package for the Turtle Beach MultiSound (classic), Tahiti, and Monterey sound cards. The documentation states:
"It is designed for high quality hard disk recording/playback without losing sync even on a busy system. Other features such as wave synthesis, MIDI and digital signal processor (DSP) cannot be used. Also, recording and playback at the same time is not possible. It currently replaces VoxWare and was tested on several kernel versions ranging from 1.0.9 to 1.2.1. Also, it is installable on UN*X SysV386R3.2 systems."
It can be found at http://www.cs.colorado.edu/~mccreary/tbeach.
Kim Burgaard ( burgaard@daimi.aau.dk) has written a device driver and utilities for the Roland MPU-401 MIDI interface. The Linux software map entry gives this description:
"A device driver for true Roland MPU-401 compatible MIDI interfaces (including Roland SCC-1 and RAP-10/ATW-10). Comes with a useful collection of utilities including a Standard MIDI File player and recorder.
Numerous improvements have been made since version 0.11a. Among other things, the driver now features IRQ sharing policy and complies with the new kernel module interface. Metronome functionality, possibility for synchronizing e.g. graphics on a per beat basis without losing precision, advanced replay/record/overdub interface and much, much more."
It can be found at ftp://sunsite.unc.edu/pub/Linux/kernel/sound/mpu401-0.2.tar.gz.
Jaroslav Kysela and others have written an alternate sound driver for the Gravis UltraSound Card. Information can be found at http://romeo.pf.jcu.cz/~perex/ultra, the home page of the Linux UltraSound Project.
Another novel use for a sound card under Linux is as a modem for amateur packet radio. The recent 2.1.x kernels include a driver that works with SoundBlaster and Windows Sound System compatible sound cards to implement 1200 bps AFSK and 9600 bps FSK packet protocols. See the Linux AX25 HOWTO for details (I'm a ham myself, by the way -- callsign VE3ICH).
An alternate sound driver is available that requires no additional sound hardware; it uses the internal PC speaker. It is mostly software compatible with the sound card driver, but, as might be expected, provides much lower quality output and has much more CPU overhead. The results seem to vary, being dependent on the characteristics of the individual loudspeaker. For more information, see the documentation provided with the release.
The current version is 1.1, and can be found at ftp://ftp.informatik.hu-berlin.de/pub/os/linux/hu-sound/
Another option is to build a digital to analog converter using a parallel printer port and some additional components. This provides better sound quality than the PC speaker but still has a lot of CPU overhead. The PC sound driver package mentioned above supports this, and includes instructions for building the necessary hardware.