The Linux CD-ROM HOWTO

Jeff Tranter

tranter@pobox.com

v1.17, 18 July 2001
Revision History                                                             
Revision 1.17            2001-07-18            Revised by: jjt               
Merged in some questions from the no longer maintained ATAPI/IDE CD-ROM FAQ  
by Mathew Kirsch. Added note on the Red Hat 7.1 DMA issue.                   
Revision 1.16            2001-07-16            Revised by: jjt               
Relicensed under the GFDL.                                                   
Revision 1.15            2001-05-11            Revised by: jjt               


This document describes how to install, configure, and use CD-ROM drives
under Linux. It lists the supported hardware and answers a number of
frequently asked questions. The intent is to bring new users up to speed
quickly and reduce the amount of traffic in the Usenet news groups and
mailing lists.

-----------------------------------------------------------------------------
Table of Contents
1. Introduction
    1.1. Acknowledgments
    1.2. New Versions Of This Document
    1.3. Feedback
    1.4. Distribution Policy
   
   
2. CD-ROM Technology
3. Supported Hardware
    3.1. ATAPI CD-ROM Drives
    3.2. SCSI CD-ROM Drives
    3.3. Proprietary CD-ROM Drives
    3.4. Parallel Port Drives
    3.5. PCMCIA Drives
    3.6. USB CD-ROM Drives
   
   
4. Installation
    4.1. Installing the Hardware
    4.2. Configuring and Building the Kernel
    4.3. Creating Device Files and Setting Boot Time Parameters
    4.4. Booting the Linux Kernel
    4.5. Mounting, Unmounting, and Ejecting Devices
    4.6. Troubleshooting
   
   
5. Applications
    5.1. Audio CD Players
    5.2. PhotoCD
    5.3. Mkisofs
    5.4. ISO-9660 Utilities
   
   
6. Answers to Frequently Asked Questions
    6.1. How can a non-root user mount and unmount discs?
    6.2. Why do I get device is busy when unmounting a CD-ROM?
    6.3. How do I export a CD-ROM to other hosts over NFS?
    6.4. Can I boot Linux from a CD-ROM?
    6.5. How can I read digital data from audio CDs?
    6.6. Why doesn't the find command work properly?
    6.7. Does Linux support any recordable CD-ROM drives?
    6.8. Why do I get mount: Read-only file system when mounting a CD-ROM?
    6.9. Why does the disc tray open when I shut down the system?
    6.10. I have a "special" CD that can't be mounted
    6.11. Do multi-platter CD-ROM drives work with Linux?
    6.12. I get "/cdrom: Permission denied" errors
    6.13. How do I interpret IDE CD kernel error messages?
    6.14. How can I tell what speed CD-ROM I have?
    6.15. My CD-ROM stopped working after Linux was installed
    6.16. There are "hidden" files on a CD which I can't read
    6.17. Where is the CD-ROM API documented?
    6.18. Why don't I see long filenames on this Windows CD-ROM?
    6.19. Is Microsoft's Joliet filesystem supported?
    6.20. Does Linux support "enhanced" CDs?
    6.21. Does Linux support DVD-ROM?
    6.22. Does Linux support CD-RW?
    6.23. How do I mount a multi-session disc?
    6.24. How do I read a CD volume label?
    6.25. My IDE CD-R or CD-RW drive is not working with Linux
    6.26. Is the insert your brand/model here IDE CD-ROM drive supported?
    6.27. I can't seem to find a driver for my IDE drive in the kernel
        source?
    6.28. I'm having problems with my CD-ROM on Red Hat 7.1
   
   
7. References

1. Introduction

This is the Linux CD-ROM HOWTO. It is intended as a quick reference covering
everything you need to know to install and configure CD-ROM hardware under
Linux. Frequently asked questions related to CD-ROM are answered, and
references are given to other sources of information related to CD-ROM
applications and technology.
-----------------------------------------------------------------------------

1.1. Acknowledgments

Much of this information came from the documentation and source files
provided with the Linux kernel, the Internet [news:alt.cd-rom] alt.cdrom
newsgroup FAQ, and input from Linux users.

Thanks to the [http://www.docbook.org] DocBook tools, this HOWTO is available
in several formats, all generated from a common source file.
-----------------------------------------------------------------------------

1.2. New Versions Of This Document

New versions of this document will be periodically posted to the [news:
comp.os.linux.answers] comp.os.linux.answers newsgroup. Hypertext versions of
this and other Linux HOWTOs are available on many world-wide web sites,
including [http://www.linuxdoc.org/] http://www.linuxdoc.org. Most Linux
CD-ROM distributions include the HOWTOs, often under the /usr/doc directory,
and you can also buy printed copies from several vendors. Sometimes the
HOWTOs available from CD-ROM vendors, ftp sites, and printed format are out
of date. If the date on this HOWTO is more than six months in the past, then
a newer copy is probably available on the Internet.

Please note that, due to the dynamic nature of the Internet, all web and ftp
links listed in this document are subject to change.

Translations of this document are available in several languages:

Chinese: [http://www.linux.org.tw/CLDP/CDROM-HOWTO.html] http://
www.linux.org.tw/CLDP/CDROM-HOWTO.html

French: [http://www.freenix.org/unix/linux/HOWTO/] http://www.freenix.org/
unix/linux/HOWTO/

German: [http://www.tu-harburg.de/dlhp/HOWTO/DE-CDROM-HOWTO.html] http://
www.tu-harburg.de/dlhp/HOWTO/DE-CDROM-HOWTO.html

Korean: [http://kldp.org/HOWTO/html/CDROM/CDROM-HOWTO.html] http://kldp.org/
HOWTO/html/CDROM/CDROM-HOWTO.html

Japanese: [http://www.linux.or.jp/JF/JFdocs/CDROM-HOWTO.html] http://
www.linux.or.jp/JF/JFdocs/CDROM-HOWTO.html

Polish: [http://www.jtz.org.pl/Html/CDROM-HOWTO.pl.html] http://
www.jtz.org.pl/Html/CDROM-HOWTO.pl.html

Spanish: [ftp://ftp.insflug.org/es] ftp://ftp.insflug.org/es

Swedish: [ftp://ftp.hig.se/pub/linux/swe-doc/] ftp://ftp.hig.se/pub/linux/
swe-doc/

Most translations of this and other Linux HOWTOs can also be found at [http:/
/www.ibiblio.org/pub/Linux/docs/HOWTO/translations/] http://www.ibiblio.org/
pub/Linux/docs/HOWTO/translations/. If you make a translation of this
document into another language, let me know and I'll include a reference to
it here.
-----------------------------------------------------------------------------

1.3. Feedback

I rely on you, the reader, to make this HOWTO useful. If you have any
suggestions, corrections, or comments, please send them to me, [mailto:
tranter@pobox.com] tranter@pobox.com, and I will try to incorporate them in
the next revision.

I am also willing to answer general questions on CD-ROM under Linux, as best
I can. Before doing so, please read all of the information in this HOWTO, and
then send me detailed information about the problem. Please do not ask me
about using CD-ROM drives under operating systems other than Linux.

If you publish this document on a CD-ROM or in hardcopy form, a complimentary
copy would be appreciated; mail me for my postal address. Also consider
making a donation to the Linux Documentation Project to help support free
documentation for Linux. Contact the LDP at [mailto:feedback@linuxdoc.org]
feedback@linuxdoc.org for more information.
-----------------------------------------------------------------------------

1.4. Distribution Policy

Copyright (c) 1995-2001 by Jeff Tranter. Permission is granted to copy,
distribute and/or modify this document under the terms of the GNU Free
Documentation License, Version 1.1 or any later version published by the Free
Software Foundation; with no Invariant Sections, with no Front-Cover Texts,
and with no Back-Cover Texts. A copy of the license is available at [http://
www.gnu.org/copyleft/fdl.html] http://www.gnu.org/copyleft/fdl.html
-----------------------------------------------------------------------------

2. CD-ROM Technology

        "CD-ROM is read-only memory, and audio compact disc system          
        is available as package-media of digital data for those             
        purpose. For playing audio CD, please insert Head-phone             
        jack."                                                              
                                  --from a CD-ROM instruction manual        

Don't Panic! The world of CD-ROM technology is not as confusing as your
instruction manual.

CD-ROM stands for Compact Disc Read-Only Memory, a mass storage medium
utilizing an optical laser to read microscopic pits on the aluminized layer
of a polycarbonate disc. The same format is used for audio Compact Discs.
Because of its high storage capacity, reliability, and low cost, CD-ROM has
become an increasingly popular storage media.

The storage capacity of a CD-ROM disc is approximately 650 megabytes,
equivalent to over 500 high density 3.5" floppy disks or roughly 250,000
typed pages.

First generation drives (known as single speed), provided a transfer rate of
approximately 150 kilobytes per second. Hardware manufacturers then
introduced double speed (300 kB/sec), quad speed (600 kB/sec), and higher.
Current drives operate at up to 40 times speed, although the maximum rate is
only achievable over certain portions of the disc surface.

Most CD-ROM drives use either the Small Computer Systems Interface (SCSI),
ATAPI enhanced IDE interface, or a vendor proprietary interface. They also
typically support playing audio CDs via an external headphone jack or line
level output. Most drives also allow reading the frames of data from audio
CDs in digital form.

CD-ROMs are usually formatted with an ISO-9660 (formerly called High Sierra)
file system. This format restricts filenames to the MS-DOS style (8+3
characters). The Rock Ridge Extensions use undefined fields in the ISO-9660
standard to support longer filenames and additional Unix style information
(e.g. file ownership, symbolic links, etc.). Microsoft has defined a
proprietary ISO file system extension called Joliet which supports long
filenames using the 16-bit UNICODE character encoding.

PhotoCD is a standard developed by Kodak for storing photographic images as
digital data on a CD-ROM. With appropriate software, you can view the images
on a computer, manipulate them, or send them to a printer. Information can be
added to a PhotoCD at a later date; this is known as multi-session
capability.

CD recordable (CD-R) drives allow writing onto a special "gold" CD which can
then be read by any CD-ROM drive. Data can only be written once, although
using multi-session new data can be appended to a disc.

CD-RW (rewritable) drives can be erased and rewritten with new data. They use
special discs which can be read by most recent CD-ROM drives (but not older
ones or most audio CD players).

DVD-ROM expands the storage of a CD to as much as 17 gigabytes. They are
commonly used as a medium for distributing full length motion pictures
encoded using the MPEG-2 format. The MPEG video decoding is performed using
specialized decoder software and/or hardware. DVD-RAM is a writable version
of DVD.
-----------------------------------------------------------------------------

3. Supported Hardware

This section lists the CD-ROM drivers and interfaces that are currently
supported under Linux. The information here is based on the latest stable
Linux kernel, which at time of writing was version 2.4.4.

This information is valid for Linux on the Intel x86 platform. Much of it is
applicable to Linux on other processor architectures as well.
-----------------------------------------------------------------------------

3.1. ATAPI CD-ROM Drives

ATAPI (ATA Packet Interface) is a protocol for controlling mass storage
devices. It builds on the ATA (AT Attachment) interface, the official ANSI
standard name for the IDE interface developed for hard disk drives. ATAPI is
commonly used for hard disks, CD-ROM drives, tape drives, and other devices.
Currently the most popular type of interface, it offers most of the
functionality of SCSI, without the need for an expensive controller or
cables.

The Linux kernel has a device driver that should work with any ATAPI
compliant CD-ROM drive. Vendors shipping compatible drives include Aztech,
Mitsumi, NEC, Sony, Creative Labs, and Vertos. If you have recently purchased
a CD-ROM drive, especially if it is quad speed or faster, it is almost
guaranteed to be IDE/ATAPI.

Linux also has an IDE SCSI emulation kernel driver that makes an IDE/ATAPI
device appear in software to be a SCSI device, allowing the use of a SCSI
device driver instead of the native ATAPI driver. This is useful if you have
an ATAPI device for which no native driver has been written (for example, an
ATAPI PD-CD or CDR drive); you can then use this emulation together with an
appropriate SCSI device driver.
-----------------------------------------------------------------------------

3.2. SCSI CD-ROM Drives

SCSI (Small Computer Systems Interface) is a popular format for CD-ROM
drives. Its chief advantages are a reasonably fast transfer rate,
multi-device capability, and support on a variety of computer platforms. Some
disadvantages of SCSI are the need for a relatively expensive controller card
and cables.

Any SCSI CD-ROM drive with a block size of 512 or 2048 bytes should work
under Linux; this includes the vast majority of CD-ROM drives on the market.

You will also need a supported SCSI controller card; see the [http://
www.ibiblio.org/pub/Linux/docs/HOWTO/unmaintained/SCSI-HOWTO] Linux SCSI
HOWTO for more information on interface hardware.

Note that some older CD-ROM drives use a proprietary controller with a
modified interface that is not fully SCSI compatible (e.g. it may not support
adding other SCSI devices on the bus). These will most likely not work under
Linux.
-----------------------------------------------------------------------------

3.3. Proprietary CD-ROM Drives

Several CD-ROM drives using proprietary interfaces are available; the
interface is often provided on a sound card. Simple interface cards
equivalent to that provided on the sound card are also available. These
drives generally tend to be lower in cost and smaller than SCSI drives. Their
disadvantages are the lack of standardization and expandability.

Note that proprietary interfaces are sometimes erroneously referred to as IDE
interfaces, because like IDE hard disks, they use a simple interface based on
the PC/AT bus. To add to the confusion, some vendors, most notably Creative
Labs, have shipped many different types of CD-ROM drives and have offered
proprietary, SCSI, and ATAPI interfaces on their sound cards.

The table below lists the proprietary CD-ROM drives that are known to be
supported under Linux. Drivers for additional devices may be available in the
latest development kernels or as kernel patches. The latter can most often be
found at [ftp://www.ibiblio.org/pub/Linux/kernel/patches/cdrom/] ftp://
www.ibiblio.org/pub/Linux/kernel/patches/cdrom/. Also check the documentation
files included with the kernel distribution, usually installed in /usr/src/
linux/Documentation/cdrom, for the latest information.


+--------------+--------------+-------------+---------+
|Vendor        |Model         |Kernel Driver|Notes    |
+--------------+--------------+-------------+---------+
|Panasonic     |CR-521        |sbpcd        |Note 1   |
+--------------+--------------+-------------+---------+
|Panasonic     |CR-522        |sbpcd        |Note 1   |
+--------------+--------------+-------------+---------+
|Panasonic     |CR-523        |sbpcd        |Note 1   |
+--------------+--------------+-------------+---------+
|Panasonic     |CR-562        |sbpcd        |Note 1   |
+--------------+--------------+-------------+---------+
|Panasonic     |CR-563        |sbpcd        |Note 1   |
+--------------+--------------+-------------+---------+
|Creative Labs |CD-200        |sbpcd        |         |
+--------------+--------------+-------------+---------+
|IBM           |External ISA  |sbpcd        |Note 2   |
+--------------+--------------+-------------+---------+
|Longshine     |LCS-7260      |sbpcd        |         |
+--------------+--------------+-------------+---------+
|Teac          |CD-55A        |sbpcd        |         |
+--------------+--------------+-------------+---------+
|Sony          |CDU-31A       |cdu31a       |         |
+--------------+--------------+-------------+---------+
|Sony          |CDU-33A       |cdu31a       |         |
+--------------+--------------+-------------+---------+
|Sony          |CDU-535       |sonycd535    |Note 3   |
+--------------+--------------+-------------+---------+
|Sony          |CDU-531       |sonycd535    |         |
+--------------+--------------+-------------+---------+
|Aztech        |CDA268-01A    |aztcd        |Note 4   |
+--------------+--------------+-------------+---------+
|Orchid        |CDS-3110      |aztcd        |         |
+--------------+--------------+-------------+---------+
|Okano/Wearnes |CDD110        |aztcd        |         |
+--------------+--------------+-------------+---------+
|Conrad        |TXC           |aztcd        |         |
+--------------+--------------+-------------+---------+
|CyCDROM       |CR520ie       |aztcd        |         |
+--------------+--------------+-------------+---------+
|CyCDROM       |CR940ie       |aztcd        |         |
+--------------+--------------+-------------+---------+
|GoldStar      |R420          |gscd         |Note 5   |
+--------------+--------------+-------------+---------+
|Philips/LMS   |CM206         |cm206        |Note 6   |
+--------------+--------------+-------------+---------+
|Mitsumi       |CRMC LU005S   |mcd/mcdx     |Note 7, 8|
+--------------+--------------+-------------+---------+
|Mitsumi       |FX001         |mcd/mcdx     |Note 7, 8|
+--------------+--------------+-------------+---------+
|Optics Storage|Dolphin 8000AT|optcd        |         |
+--------------+--------------+-------------+---------+
|Lasermate     |CR328A        |optcd        |         |
+--------------+--------------+-------------+---------+
|Sanyo         |H94A          |sjcd         |         |
+--------------+--------------+-------------+---------+
|various       |various       |isp16        |Note 9   |
+--------------+--------------+-------------+---------+

Notes:

 1. These drives may be sold under the names Creative Labs, Panasonic,
    Matsushita, or Kotobuki.
   
 2. This drive is the same as a Panasonic CR-562.
   
 3. May also be sold under the Procomm name.
   
 4. This driver is for the CDA268-01A only. Other models, including the
    CDA268-03I and CDA269-031SE are not proprietary and should use the IDECD
    (ATAPI) kernel driver.
   
 5. May also be sold as part of a Reveal Multimedia Kit.
   
 6. The Philips CM205 is not supported by this driver, but there is a
    separate alpha release driver available from ftp://www.ibiblio.org in /
    pub/Linux/kernel/patches/cdrom/lmscd0.4.tar.gz
   
 7. May also be sold under the Radio Shack name.
   
 8. There are two drivers available. "mcd" is the original one, and "mcdx" is
    a newer driver with more features (XA and multi-session support).
   
 9. This driver works with CD-ROM drives that are attached to the interface
    on an ISP16, MAD16 or Mozart sound card.
   

 

If a drive listed here is not supported by your kernel, you probably need to
upgrade to a newer version.

If your drive is not one of the models listed here, particularly if it was
bought recently and is quad speed or faster, it probably uses the IDE/ATAPI
interface listed in a previous section. The single most common error among
Linux CD-ROM users is to assume that any drive connected to a SoundBlaster
card should use the SBPCD driver. Creative Labs and most other vendors are no
longer selling proprietary interface drives, they are following the standard
ATAPI/IDE interface.
-----------------------------------------------------------------------------

3.4. Parallel Port Drives

There are external storage devices, including CD-ROM drives, that attach to
the parallel port of personal computers. In many cases the devices internally
use an IDE interface in conjunction with an adaptor which interfaces the
internal IDE bus to the PC parallel port.

Linux has a parallel port IDE driver which supports most parallel port
devices. At the time of writing it supported devices from the following
vendors (as well as most no-name and clone drives compatible with these):
ATEN, Avatar, DataStor, Fidelity International Technology, Freecom,
Hewlett-Packard, Imation, KT Technology, KingByte Information Corp., Maxell,
MicroSolutions, OnSpec, Shuttle Technology, SyQuest, and ValuStore.

Additional information can be found at [http://www.torque.net/parport/] http:
//www.torque.net/parport/.
-----------------------------------------------------------------------------

3.5. PCMCIA Drives

Using a PCMCIA SCSI or IDE adaptor you can connect external CD-ROM drives to
a laptop. Once the appropriate PCMCIA kernel driver is installed the drives
will appear like any other IDE or SCSI drives.

See the [http://www.ibiblio.org/LDP/HOWTO/PCMCIA-HOWTO.html] Linux PCMCIA
HOWTO for more information.
-----------------------------------------------------------------------------

3.6. USB CD-ROM Drives

The Universal Serial Bus has support for mass storage devices. USB CD-R and
CD-RW drives are popular because they can be quickly and easily moved between
systems.

You need to configure the kernel for "USB Mass Storage support". This makes
USB storage devices appear like SCSI, although they do not use the same
device files. See the [http://www.dynamine.net/linux-usb/HOWTO] Linux USB
HOWTO for more details.
-----------------------------------------------------------------------------

4. Installation

Installation of a CD-ROM under Linux consists of these steps:

 1. Installing the hardware.
   
 2. Configuring and building the Linux kernel.
   
 3. Creating device files and setting boot time parameters
   
 4. Booting the Linux kernel.
   
 5. Mounting the media.
   

The next sections will cover each of these steps in detail.
-----------------------------------------------------------------------------

4.1. Installing the Hardware

Follow the manufacturer's instructions for installing the hardware or have
your dealer perform the installation. The details will vary depending on
whether the drive is internal or external and on the type of interface used.
There are no special installation requirements for Linux. You may need to set
jumpers on the drive and/or interface card for correct operation; some of the
kernel drivers include documentation files that include this information.

As explained in the file ide-cd, ATAPI CD-ROMS should be jumpered as "single"
or "master", and not "slave" when only one IDE device is attached to an
interface (although this restriction is no longer enforced with recent
kernels).
-----------------------------------------------------------------------------

4.2. Configuring and Building the Kernel

When initially installing Linux from CD-ROM you will likely be using a boot
and/or root disk provided as part of a Linux distribution. If possible, you
should choose a boot disk with the kernel driver for your CD-ROM device type.
If you cannot find a boot disk with the necessary CD-ROM driver, you have
several options:

 1. Boot directly from CD-ROM (if supported by your computer and Linux CD)
   
 2. Install over a network
   
 3. Boot DOS, and install the Linux files onto your hard disk
   
 4. Boot DOS, and create a set of floppies to install Linux
   
 5. Find someone who can build you a boot disk with the needed CD-ROM driver
   

The [http://www.linuxdoc.org/HOWTO/Installation-HOWTO/index.html] Linux
Installation HOWTO has more information on installing Linux. If you purchased
Linux on CD-ROM, it likely also came with some installation instructions
(that little booklet inside the jewel case, and/or files on the CD).

Once Linux has initially been installed, most users will want to compile
their own kernel, usually for one of these reasons:

  * to support a CD-ROM drive or other hardware
   
  * to upgrade to a newer kernel release
   
  * to free up memory resources by minimizing the size of the kernel
   

The [http://www.ibiblio.org/LDP/HOWTO/Kernel-HOWTO.html] Linux Kernel HOWTO
should be consulted for the details of building a kernel. I will just mention
here some issues that are specific to CD-ROM drives.

Obviously, you need to compile in support for your CD-ROM drive when you
configure the kernel.

If you have an ATAPI CD-ROM drive, you need to enable Enhanced IDE/MFM/RLL
disk/cdrom/tape support and Include IDE/ATAPI CDROM support.

For SCSI CD-ROM drives, enable the options SCSI support and SCSI CDROM
support. Also enable support for your SCSI host adapter when prompted, e.g. 
Adaptec AHA152X/2825 support.

For proprietary interface CD-ROM drives, enable the appropriate driver. You
can use the table listed previously to determine the driver to use for your
model.

Virtually all CD-ROMs use the ISO-9660 file system, so you must also enable 
ISO 9660 CDROM filesystem support.

Although not needed for CD-ROM operation, if you have a sound card that is
supported under Linux you might want to enable and configure the kernel sound
driver at this time as well. The [http://www.ibiblio.org/LDP/HOWTO/
Sound-HOWTO.html] Sound HOWTO can be a useful reference here.

You should then follow the usual procedure for building the kernel and
installing it. Don't boot with the new kernel until you create the device
files and set up any boot time parameters as described in the next section.

The ISO-9660 filesystem and almost all of the CD-ROM drivers can be built as
loadable kernel modules. This scheme allows the kernel drivers to be loaded
and unloaded without rebooting the kernel, freeing up memory. I recommend you
get your CD-ROM installation running using compiled-in drivers first. How to
use modules is described in the modules documentation and the [http://
www.ibiblio.org/LDP/HOWTO/Kernel-HOWTO.html] Kernel HOWTO.

If a drive type listed here is not supported by your kernel, you likely need
to upgrade to a newer version.

It is possible that you need to use a driver that is distributed separately
from the kernel source code. This usually involves patching the kernel.
Again, the [http://www.ibiblio.org/LDP/HOWTO/Kernel-HOWTO.html] Kernel HOWTO
explains how to do this.

Note that you can configure the kernel using the text-based program using
"make config", a menu-based kernel configuration program invoked by "make
menuconfig" and an X11-based graphical configuration invoked as "make
xconfig". All three configuration methods offer on-line help.
-----------------------------------------------------------------------------

4.3. Creating Device Files and Setting Boot Time Parameters

The kernel uses device files to identify which device driver to use. If you
are running a standard Linux distribution you may have created the necessary
device files during installation. Under Slackware Linux, for example, there
is a menu-based setup tool that includes CD-ROM setup, and most systems have
a /dev/MAKEDEV script. If you don't use these methods, you can use the more
manual procedure listed in this section. Even if you use either of these
methods, it is recommended that you at least verify the device files against
the information in this section.

If you are using the new devfs file system in the 2.4 kernels, the device
files are created dynamically by the kernel rather than residing on disk, and
follow a different naming convention. The examples in this document assume
that devfs is not being used, and may need to be adjusted accordingly if you
are.

You create the device file by running the shell commands indicated for your
drive type. This should be done as user root. Note that some Linux
distributions may use slightly different CD-ROM device names from those
listed here.

I recommended that you also create a symbolic link to the CD-ROM device to
make it easier to remember. For example, for an IDE CD-ROM drive that is the
second device on the secondary interface, the link would be created using

+---------------------------------------------------------------------------+
|# ln -s /dev/hdd /dev/cdrom                                                |
+---------------------------------------------------------------------------+

If you want to play audio CDs, you will need to set the protection on the
device file (the real file, not the symbolic link to it) to allow all users
to read, e.g.

+---------------------------------------------------------------------------+
|# chmod 664 /dev/hdd                                                       |
|# ls -l /dev/hdd                                                           |
|brw-rw-r--   1 root     disk      22,  64 Feb  4  1995 /dev/hdd            |
+---------------------------------------------------------------------------+

Some Linux distributions use group permissions to control access to devices
such as CD-ROMs. A common convention is to only allow members of a group
called cdrom to have access. In this case you should add the appropriate
users to the group rather than changing file permissions on the device file.

When booting Linux, the device drivers attempt to determine whether the
appropriate devices are present, typically by probing specific addresses.
Many of the drivers auto-probe at several addresses, but because of
differences in configuration, possible device conflicts, and hardware
limitations, the drivers sometimes need help identifying the addresses and
other parameters. Most drivers support an option on the kernel command line
to pass this information to the device driver. This can be done
interactively, or more commonly, configured into your boot loader. With LILO,
for example, you would add an append command such as the following to your /
etc/lilo.conf file:

+---------------------------------------------------------------------------+
|append = "sbpcd=0x230,SoundBlaster"                                        |
+---------------------------------------------------------------------------+

See the LILO documentation for more information.

In the next section I discuss issues specific to individual device drivers,
including device files, boot parameters, and the capabilities of the
different drivers. You probably only need to read the section relevant to
your drive type. The documentation files are usually found in the directory /
usr/src/linux/Documentation/cdrom.
-----------------------------------------------------------------------------

4.3.1. Sbpcd Driver

+------------------------+-------------------------------------+
|Principal author:       |Eberhard Moenkeberg (emoenke@gwdg.de)|
+------------------------+-------------------------------------+
|Multi-session support:  |yes (but not all drives)             |
+------------------------+-------------------------------------+
|Multiple drive support: |yes                                  |
+------------------------+-------------------------------------+
|Loadable module support:|yes                                  |
+------------------------+-------------------------------------+
|Reading audio frames:   |yes (CR-562, CR-563, CD-200 only)    |
+------------------------+-------------------------------------+
|Auto-probing:           |yes                                  |
+------------------------+-------------------------------------+
|Device file:            |/dev/sbpcd, major 25                 |
+------------------------+-------------------------------------+
|Configuration file:     |sbpcd.h                              |
+------------------------+-------------------------------------+
|Kernel config option:   |Matsushita/Panasonic CDROM support   |
+------------------------+-------------------------------------+
|Documentation file:     |sbpcd                                |
+------------------------+-------------------------------------+

This driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|sbpcd=<io-address>,<interface-type>                                        |
+---------------------------------------------------------------------------+

where the first parameter is the base address of the device (e.g. 0x230), and
<interface-type> is one of "SoundBlaster", "LaserMate", or "SPEA". See the
file sbpcd.h for hints on what interface type to use. Using sbpcd=0 disables
auto-probing, disabling the driver.

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/sbpcd b 25 0                                                  |
+---------------------------------------------------------------------------+

Up to four drives per controller are supported. The next three drives on the
first controller would use minor device numbers 1 through 3. If you have more
than one controller, create devices with major numbers 26, 27, and 28, up to
a maximum of 4 controllers (this is 16 CD-ROM drives in total; hopefully
enough for most users :-).

See the file sbpcd for more information on this driver.

If you recently bought a CD-ROM drive, don't assume that if it connects to a
SoundBlaster card it should use this kernel driver. Most CD-ROM drives being
sold by Creative Labs are now EIDE/ATAPI drives.
-----------------------------------------------------------------------------

4.3.2. Sonycdu535 Driver

+------------------------+------------------------------+
|Principal author:       |Ken Pizzini (ken@halcyon.com) |
+------------------------+------------------------------+
|Multiple drive support: |no                            |
+------------------------+------------------------------+
|Loadable module support:|yes                           |
+------------------------+------------------------------+
|Reading audio frames:   |no                            |
+------------------------+------------------------------+
|Auto-probing:           |no                            |
+------------------------+------------------------------+
|Device file:            |/dev/sonycd535, major 24      |
+------------------------+------------------------------+
|Configuration file:     |sonycd535.h                   |
+------------------------+------------------------------+
|Kernel config option:   |Sony CDU535 CDROM support     |
+------------------------+------------------------------+
|Documentation file:     |sonycd535                     |
+------------------------+------------------------------+

This driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|sonycd535=<io-address>                                                     |
+---------------------------------------------------------------------------+

where <io-address> is the base address of the controller (e.g. 0x320).
Alternatively you can set the address in the file sonycd535.h and compile it
in.

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/sonycd535 b 24 0                                              |
+---------------------------------------------------------------------------+

Some Linux distributions use /dev/sonycd for this device. Older versions of
the driver used major device number 21; make sure your device file is
correct.

This driver was previously distributed as a patch but is now part of the
standard kernel. See the file sonycd535 for more information on this driver.
-----------------------------------------------------------------------------

4.3.3. Cdu31a Driver

+------------------------+-------------------------------------+
|Principal author:       |Corey Minyard (minyard@-rch.cirr.com)|
+------------------------+-------------------------------------+
|Multi-session support:  |yes                                  |
+------------------------+-------------------------------------+
|Multiple drive support: |no                                   |
+------------------------+-------------------------------------+
|Loadable module support:|yes                                  |
+------------------------+-------------------------------------+
|Reading audio frames:   |yes                                  |
+------------------------+-------------------------------------+
|Auto-probing:           |no                                   |
+------------------------+-------------------------------------+
|Device file:            |/dev/cdu31a, major 15                |
+------------------------+-------------------------------------+
|Configuration file:     |cdu31a.h                             |
+------------------------+-------------------------------------+
|Kernel config option:   |Sony CDU31A/CDU33A CDROM support     |
+------------------------+-------------------------------------+
|Documentation file:     |cdu31a                               |
+------------------------+-------------------------------------+

This driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|cdu31a=<io-address>,<interrupt>,PAS                                        |
+---------------------------------------------------------------------------+

The first number is the I/O base address of the card (e.g. 0x340). The second
is the interrupt number to use (0 means to use polled i/o). The optional
third parameter should be "PAS" if the drive is connected to a Pro-Audio
Spectrum 16 sound card, otherwise left blank.

If the driver is loaded as a module, it uses a slightly different format.
When loading the driver using the modprobe or insmod command, the parameters
take the form:

+---------------------------------------------------------------------------+
|cdu31a_port=<io-address> cdu31a_irq=<interrupt>                            |
+---------------------------------------------------------------------------+

The base io-address is required while the interrupt number is optional.

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/cdu31a b 15 0                                                 |
+---------------------------------------------------------------------------+

See the file cdu31a for more information on this driver.
-----------------------------------------------------------------------------

4.3.4. Aztcd Driver

+------------------------+--------------------------------------------------+
|Principal author:       |Werner Zimmermann (zimmerma@rz.fht-esslingen.de)  |
+------------------------+--------------------------------------------------+
|Multi-session support:  |yes                                               |
+------------------------+--------------------------------------------------+
|Multiple drive support: |no                                                |
+------------------------+--------------------------------------------------+
|Loadable module support:|yes                                               |
+------------------------+--------------------------------------------------+
|Reading audio frames:   |no                                                |
+------------------------+--------------------------------------------------+
|Auto-probing:           |no                                                |
+------------------------+--------------------------------------------------+
|Device file:            |/dev/aztcd0, major 29                             |
+------------------------+--------------------------------------------------+
|Configuration file:     |aztcd.h                                           |
+------------------------+--------------------------------------------------+
|Kernel config option:   |Aztech/Orchid/Okano/Wearnes (non IDE) CDROM       |
|                        |support                                           |
+------------------------+--------------------------------------------------+
|Documentation file:     |aztcd                                             |
+------------------------+--------------------------------------------------+

This driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|aztcd=<io-address>                                                         |
+---------------------------------------------------------------------------+

where the parameter is the I/O base address of the card (e.g. 0x340).

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/aztcd0 b 29 0                                                 |
+---------------------------------------------------------------------------+

Note that this driver is for the CDA268-01A only. Other models, including the
CDA268-03I and CDA269-031SE are not proprietary and should use the IDECD
(ATAPI) kernel driver.

See the file aztcd for more information on this driver.
-----------------------------------------------------------------------------

4.3.5. Gscd Driver

+-------------------------+-------------------------------------------------+
|Principal author:        |Oliver Raupach (raupach@nwfs1.rz.fh-hannover.de) |
+-------------------------+-------------------------------------------------+
|Multi-session support:   |no                                               |
+-------------------------+-------------------------------------------------+
|Multiple drive support:  |no                                               |
+-------------------------+-------------------------------------------------+
|Loadable module support: |yes                                              |
+-------------------------+-------------------------------------------------+
|Reading audio frames:    |no                                               |
+-------------------------+-------------------------------------------------+
|Auto-probing:            |no                                               |
+-------------------------+-------------------------------------------------+
|Device file:             |/dev/gscd0, major 16                             |
+-------------------------+-------------------------------------------------+
|Configuration file:      |gscd.h                                           |
+-------------------------+-------------------------------------------------+
|Kernel config option:    |Goldstar R420 CDROM support                      |
+-------------------------+-------------------------------------------------+
|Documentation file:      |gscd                                             |
+-------------------------+-------------------------------------------------+

This driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|gscd=<io-address>                                                          |
+---------------------------------------------------------------------------+

specifying the I/O base address of the card (e.g. 0x340).

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/gscd0 b 16 0                                                  |
+---------------------------------------------------------------------------+

See the file gscd for more information on this driver.
-----------------------------------------------------------------------------

4.3.6. Mcd Driver

+------------------------+------------------------------+
|Principal author:       |Martin (martin@bdsi.com)      |
+------------------------+------------------------------+
|Multi-session support:  |no                            |
+------------------------+------------------------------+
|Multiple drive support: |no                            |
+------------------------+------------------------------+
|Loadable module support:|yes                           |
+------------------------+------------------------------+
|Reading audio frames:   |no                            |
+------------------------+------------------------------+
|Auto-probing:           |no                            |
+------------------------+------------------------------+
|Device file:            |/dev/mcd, major 23            |
+------------------------+------------------------------+
|Configuration file:     |mcd.h                         |
+------------------------+------------------------------+
|Kernel config option:   |Standard Mitsumi CDROM support|
+------------------------+------------------------------+
|Documentation file:     |mcd                           |
+------------------------+------------------------------+

This is the older driver for Mitsumi drivers that has been available for some
time. You might want to try the newer mcdx driver, which has some new
features but is possibly less stable.

This driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|mcd=<io-address>,<irq>                                                     |
+---------------------------------------------------------------------------+

specifying the I/O base address of the card (e.g. 0x340) and the IRQ request
number used.

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/mcd b 23 0                                                    |
+---------------------------------------------------------------------------+

See the file mcd for more information on this driver.
-----------------------------------------------------------------------------

4.3.7. Mcdx Driver

+------------------------+------------------------------+
|Principal author:       |Heiko Schlittermann           |
+------------------------+------------------------------+
|Multi-session support:  |yes                           |
+------------------------+------------------------------+
|Multiple drive support: |yes                           |
+------------------------+------------------------------+
|Loadable module support:|yes                           |
+------------------------+------------------------------+
|Reading audio frames:   |no (not supported by hardware)|
+------------------------+------------------------------+
|Auto-probing:           |no                            |
+------------------------+------------------------------+
|Device file:            |/dev/mcdx0, major 20          |
+------------------------+------------------------------+
|Configuration file:     |mcdx.h                        |
+------------------------+------------------------------+
|Kernel config option:   |Experimental Mitsumi support  |
+------------------------+------------------------------+
|Documentation file:     |mcdx                          |
+------------------------+------------------------------+

This is a newer driver for Mitsumi drivers. The older and possibly more
stable mcd driver is still available.

This driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|mcdx=<io-address>,<irq>                                                    |
+---------------------------------------------------------------------------+

specifying the I/O base address of the card (e.g. 0x340) and the IRQ request
number used.

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/mcdx0 b 20 0                                                  |
+---------------------------------------------------------------------------+

If you recently bought a Mitsumi CD-ROM drive, don't assume that it should
use this kernel driver. New Mitsumi drives are now EIDE/ATAPI compatible and
should use the idecd kernel driver instead.

See the file mcdx for more information on this driver.
-----------------------------------------------------------------------------

4.3.8. Cm206 Driver

+------------------------+---------------------------------------+
|Principal author:       |David A. van Leeuwen (david@tm.tmo.nl) |
+------------------------+---------------------------------------+
|Multi-session support:  |yes                                    |
+------------------------+---------------------------------------+
|Multiple drive support: |no                                     |
+------------------------+---------------------------------------+
|Loadable module support:|yes                                    |
+------------------------+---------------------------------------+
|Reading audio frames:   |no                                     |
+------------------------+---------------------------------------+
|Auto-probing:           |yes                                    |
+------------------------+---------------------------------------+
|Device file:            |/dev/cm206cd, major 32                 |
+------------------------+---------------------------------------+
|Configuration file:     |cm206.h                                |
+------------------------+---------------------------------------+
|Kernel config option:   |Philips/LMS CM206 CDROM support        |
+------------------------+---------------------------------------+
|Documentation file:     |cm206                                  |
+------------------------+---------------------------------------+

The driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|cm206=<io-address>,<interrupt>                                             |
+---------------------------------------------------------------------------+

where the first number is the I/O base address of the card (e.g. 0x340). The
second is the interrupt channel.

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/cm206cd b 32 0                                                |
+---------------------------------------------------------------------------+

See the file cm206 for more information on this driver.
-----------------------------------------------------------------------------

4.3.9. Optcd Driver

+------------------------+----------------------------------------------+
|Principal author:       |Leo Spiekman (spiekman@dutette.et.tudelft.nl) |
+------------------------+----------------------------------------------+
|Multi-session support:  |yes                                           |
+------------------------+----------------------------------------------+
|Multiple drive support: |no                                            |
+------------------------+----------------------------------------------+
|Loadable module support:|yes                                           |
+------------------------+----------------------------------------------+
|Reading audio frames:   |no                                            |
+------------------------+----------------------------------------------+
|Auto-probing:           |no                                            |
+------------------------+----------------------------------------------+
|Device file:            |/dev/optcd0, major 17                         |
+------------------------+----------------------------------------------+
|Configuration file:     |optcd.h                                       |
+------------------------+----------------------------------------------+
|Kernel config option:   |Experimental Optics Storage ... CDROM support |
+------------------------+----------------------------------------------+
|Documentation file:     |optcd                                         |
+------------------------+----------------------------------------------+

The driver accepts a kernel command line of the form

+---------------------------------------------------------------------------+
|optcd=<io-address>                                                         |
+---------------------------------------------------------------------------+

to specify the I/O base address of the card (e.g. 0x340).

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/optcd0 b 17 0                                                 |
+---------------------------------------------------------------------------+

See the file optcd for more information on this driver.
-----------------------------------------------------------------------------

4.3.10. Sjcd Driver

+------------------------+-------------------------------------+
|Principal author:       |Vadim V. Model (vadim@rbrf.msk.su)   |
+------------------------+-------------------------------------+
|Multi-session support:  |no                                   |
+------------------------+-------------------------------------+
|Multiple drive support: |no                                   |
+------------------------+-------------------------------------+
|Loadable module support:|yes                                  |
+------------------------+-------------------------------------+
|Reading audio frames:   |no                                   |
+------------------------+-------------------------------------+
|Auto-probing:           |no                                   |
+------------------------+-------------------------------------+
|Device file:            |/dev/sjcd, major 18                  |
+------------------------+-------------------------------------+
|Configuration file:     |sjcd.h                               |
+------------------------+-------------------------------------+
|Kernel config option:   |Experimental Sanyo H94A CDROM support|
+------------------------+-------------------------------------+
|Documentation file:     |sjcd                                 |
+------------------------+-------------------------------------+

The driver accepts a kernel command line of the form:

+---------------------------------------------------------------------------+
|sjcd=<io-address>,<interrupt>,<dma>                                        |
+---------------------------------------------------------------------------+

indicating the base address, interrupt, and DMA channel to be used (e.g. sjcd
=0x340,10,5).

The device file can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/sjcd b 18 0                                                   |
+---------------------------------------------------------------------------+

See the file sjcd for more information on this driver.
-----------------------------------------------------------------------------

4.3.11. Paride Driver

+------------------------+-------------------------------------+
|Principal author:       |Grant R. Guenther (grant@torque.net) |
+------------------------+-------------------------------------+
|Multi-session support:  |no                                   |
+------------------------+-------------------------------------+
|Multiple drive support: |yes                                  |
+------------------------+-------------------------------------+
|Loadable module support:|yes                                  |
+------------------------+-------------------------------------+
|Reading audio frames:   |no                                   |
+------------------------+-------------------------------------+
|Auto-probing:           |yes                                  |
+------------------------+-------------------------------------+
|Device file:            |/dev/pcd0, major 46                  |
+------------------------+-------------------------------------+
|Configuration file:     |bpcd.h                               |
+------------------------+-------------------------------------+
|Kernel config option:   |Parallel port IDE device support     |
+------------------------+-------------------------------------+
|Documentation file:     |paride.txt                           |
+------------------------+-------------------------------------+

This is the driver for various types of storage devices that attach to a
parallel port. Normally the driver will auto-detect the parallel port device.
The documentation describes parameters that can be used to specify the device
parameters if auto-detection does not work.

The device file for the first drive can be created using:

+---------------------------------------------------------------------------+
|# mknod /dev/pcd0 b 46 0                                                   |
+---------------------------------------------------------------------------+

See the file /usr/src/linux/Documentation/paride.xt for more information on
this driver. Note that this replaces the bpcd driver that was present in
older kernels.
-----------------------------------------------------------------------------

4.3.12. SCSI Driver

+------------------------+------------------------+
|Principal author:       |David Giller            |
+------------------------+------------------------+
|Multi-session support:  |yes (depending on drive)|
+------------------------+------------------------+
|Multiple drive support: |yes                     |
+------------------------+------------------------+
|Loadable module support:|yes                     |
+------------------------+------------------------+
|Reading audio frames:   |no                      |
+------------------------+------------------------+
|Auto-probing:           |yes                     |
+------------------------+------------------------+
|Device file:            |/dev/scd0, major 11     |
+------------------------+------------------------+
|Configuration file:     |cdrom.h                 |
+------------------------+------------------------+
|Kernel config option:   |SCSI CDROM support      |
+------------------------+------------------------+
|Documentation file:     |scsi.txt                |
+------------------------+------------------------+

There are kernel command line option specific to each type of SCSI
controller. See the [ftp://www.ibiblio.org/pub/Linux/docs/HOWTO/unmaintained/
SCSI-HOWTO] SCSI HOWTO for more information.

Multiple drives are supported (up to the limit of the maximum number of
devices on the SCSI bus). Create device files with major number 11 and minor
numbers starting at zero:

+---------------------------------------------------------------------------+
|# mknod /dev/scd0 b 11 0                                                   |
|# mknod /dev/scd1 b 11 1                                                   |
+---------------------------------------------------------------------------+

While the kernel driver itself does not support reading digital audio frames,
some SCSI drives have the capability and will work with the cdda2wav program
(which uses the generic SCSI kernel interface).

Also see the discussion of the IDE SCSI emulation driver earlier in this
document.
-----------------------------------------------------------------------------

4.3.13. IDECD Driver

+------------------------+-------------------------------------+
|Principal author:       |Scott Snyder (snyder@fnald0.fnal.gov)|
+------------------------+-------------------------------------+
|Multi-session support:  |yes                                  |
+------------------------+-------------------------------------+
|Multiple drive support: |yes                                  |
+------------------------+-------------------------------------+
|Loadable module support:|no                                   |
+------------------------+-------------------------------------+
|Reading audio frames:   |yes (on supported drives)            |
+------------------------+-------------------------------------+
|Auto-probing:           |yes                                  |
+------------------------+-------------------------------------+
|Device file:            |/dev/hd{a,b,c,d}, major 22           |
+------------------------+-------------------------------------+
|Configuration file:     |cdrom.h                              |
+------------------------+-------------------------------------+
|Kernel config option:   |Include support for IDE/ATAPI CDROMs |
+------------------------+-------------------------------------+
|Documentation file:     |ide-cd                               |
+------------------------+-------------------------------------+

This is the driver for ATAPI CD-ROMS. The driver accepts a kernel command
line of the form

+---------------------------------------------------------------------------+
|hdx=cyls,heads,sects,wpcom,irq                                             |
|  or                                                                       |
|hdx=cdrom                                                                  |
+---------------------------------------------------------------------------+

where hdx can be any of {hda,hdb,hdc,hdd}, or simply hd, for the "next" drive
in sequence. Only the first three parameters are required (cyls,heads,sects).
For example hdc=1050,32,64 hdd=cdrom.

Getting the IDE driver to recognize your CD-ROM drive can be tricky,
especially if you have more than 2 devices or more than one IDE controller.
Usually all that is required is to pass the right command line options from
LILO. The file /usr/src/linux/Documentation/cdrom/ide-cd explains how to do
this. Read it carefully.

Recent Linux kernels have better support for multiple IDE devices. If you
have problems with an older kernel, upgrading may help.

Some IDE controllers have hardware problems which the kernel driver can work
around. You may need to pass additional parameters to the driver to enable
this. See the documentation for details.
-----------------------------------------------------------------------------

4.4. Booting the Linux Kernel

You can now reboot with the new kernel. Watch for a message such as the
following indicating that the CD-ROM has been found by the device driver (the
message will vary depending on the drive type):

+---------------------------------------------------------------------------+
|hdd: TOSHIBA CD-ROM XM-7002B, ATAPI CD/DVD-ROM drive                       |
+---------------------------------------------------------------------------+

If the bootup messages scroll by too quickly to read, you should be able to
retrieve them using dmesg or tail /var/log/messages.

If the drive is not found, then a problem has occurred, See the section on
troubleshooting.
-----------------------------------------------------------------------------

4.5. Mounting, Unmounting, and Ejecting Devices

To mount a CD-ROM, insert a disc in the drive, and run the mount command as
root (this assumes you created a symbolic link to your device file as
recommended above and that an empty directory /mnt/cdrom exists):

+---------------------------------------------------------------------------+
|# mount -t iso9660 -r /dev/cdrom /mnt/cdrom                                |
+---------------------------------------------------------------------------+

The CD can now be accessed under the directory /mnt/cdrom.

There are other options to the mount command that you may wish to use; see
the mount(8) man page for details.

You can add an entry to /etc/fstab to automatically mount a CD-ROM when Linux
boots or to specify parameters to use when it is mounted; see the fstab(5)
man page.

Note that to play audio CDs you should not try to mount them.

To unmount a CD-ROM, use the umount command as root:

+---------------------------------------------------------------------------+
|# umount /mnt/cdrom                                                        |
+---------------------------------------------------------------------------+

The disc can only be unmounted if no processes are currently accessing the
drive (including having their default directory set to the mounted drive).
You can then eject the disc. Most drives have an eject button; there is also
a standalone [http://www.pobox.com/~tranter/eject.html] eject program that
allows ejecting CD-ROMs under software control.

Note that you should not eject a disc while it is mounted (this may or may
not be possible depending on the type of drive). Some CD-ROM drivers can
automatically eject a CD-ROM when it is unmounted and insert the CD tray when
a disc is mounted (you can turn this feature off when compiling the kernel or
by using a software command).

Its possible that after playing an audio CD you may not be able to mount a
CD-ROM. You need to send a CD audio "stop" command (using a CD player
program) before trying the mount. This problem only appears to occur with the
SBPCD driver.

Recent kernels support a kernel-based automounter which provides transparent
mounting of removable media including CD-ROM. You can find the tools needed
to use it at [ftp://ftp.kernel.org/pub/linux/daemons/autofs/] ftp://
ftp.kernel.org/pub/linux/daemons/autofs/.
-----------------------------------------------------------------------------

4.6. Troubleshooting

If you still encounter problems after following the instructions in the
HOWTO, here are some things to check. The checks are listed in increasing
order of complexity. If a check fails, solve the problem before moving to the
next stage.
-----------------------------------------------------------------------------

4.6.1. Step 1: Make sure you are really running the kernel you compiled

You can check the date stamp on the kernel to see if you are running the one
that you compiled with CD-ROM support. You can do this with the uname
command:

+---------------------------------------------------------------------------+
|% uname -a                                                                 |
|Linux moe 2.4.4 #1 Sat Apr 28 10:30:45 EDT 2001 i686 unknown               |
+---------------------------------------------------------------------------+

or by displaying the file /proc/version:

+---------------------------------------------------------------------------------------------------------------+
|% cat /proc/version                                                                                            |
|Linux version 2.4.4 (root@moe) (gcc version 2.95.2 20000220 (Debian GNU/Linux)) #1 Sat Apr 28 10:30:45 EDT 2001|
+---------------------------------------------------------------------------------------------------------------+

If the date stamp doesn't match when you compiled the kernel, then you are
running an old kernel. Did you remember to reboot? If you use LILO, did you
re-install it (typically by running /sbin/lilo)? If booting from floppy, did
you create a new boot floppy and use it when booting?
-----------------------------------------------------------------------------

4.6.2. Step 2: Make sure the proper kernel drivers are compiled in

You can see what drivers are compiled in by looking at /proc/devices:

+---------------------------------------------------------------------------+
|% cat /proc/devices                                                        |
|Character devices:                                                         |
| 1 mem                                                                     |
| 2 pty                                                                     |
| 3 ttyp                                                                    |
| 4 ttyS                                                                    |
| 5 cua                                                                     |
| 7 vcs                                                                     |
|                                                                           |
|Block devices:                                                             |
| 3 ide0                                                                    |
|22 ide1                                                                    |
+---------------------------------------------------------------------------+

First look for your CD-ROM device driver. These are all block devices, in
this case we can see that the idecd driver with major number 22 was present.

Also make sure that ISO-9660 filesystem support was compiled in, by looking
at /proc/filesystems:

+---------------------------------------------------------------------------+
|% cat /proc/filesystems                                                    |
|        ext2                                                               |
|nodev   proc                                                               |
|nodev   devpts                                                             |
|        vfat                                                               |
|        iso9660                                                            |
+---------------------------------------------------------------------------+

You can also see what i/o port addresses are being used by a driver with the
file /proc/ioports:

+---------------------------------------------------------------------------+
|howto % cat /proc/ioports                                                  |
| ...                                                                       |
|0230-0233 : sbpcd                                                          |
| ...                                                                       |
+---------------------------------------------------------------------------+

If any of the drivers you thought you compiled in are not displayed, then
something went wrong with the kernel configuration or build. Start the
installation process again, beginning with configuration and building of the
kernel.
-----------------------------------------------------------------------------

4.6.3. Step 3: Did the kernel detect your drive during booting?

Make sure that the CD-ROM device was detected when the kernel booted. You
should have seen a message on bootup. If the messages scrolled off the
screen, you can usually recall them using the dmesg command:

+---------------------------------------------------------------------------+
|% dmesg                                                                    |
+---------------------------------------------------------------------------+

or

+---------------------------------------------------------------------------+
|% tail /var/log/messages                                                   |
+---------------------------------------------------------------------------+

If your drive was not found then something is wrong. Make sure it is powered
on and all cables are connected. If your drive has hardware jumpers for
addressing, check that they are set correctly (e.g. drive 0 if you have only
one drive). ATAPI CD-ROMS must be jumpered as "single" or "master", and not
"slave" when only one IDE device is attached to an interface. If the drive
works under DOS then you can be reasonably confident that the hardware is
working.

Many kernel drivers using auto-probing, but some do not, and in any case the
probing is not always reliable. Use the kernel command line option listed for
your kernel driver type. You may want to try several different values if you
are not sure of the i/o address or other parameters. LILO can be (and usually
is) configured to allow you to enter the parameters manually when booting.

Another possibility is that you used the wrong kernel driver for your CD-ROM
driver. Some documentation may refer to proprietary interfaces as IDE,
leading some to mistakenly believe they are ATAPI drives.

Another possibility is that your drive (or interface card) is one of the
"compatible" type that requires initialization by the DOS driver. Try booting
DOS and loading the vendor supplied DOS device driver. Then soft boot Linux
using Control-Alt-Delete.

If your drive is not listed in this document, it is possible that there are
no drivers for it available under Linux. You can check with some of the
references listed at the end of this document for assistance.
-----------------------------------------------------------------------------

4.6.4. Step 4: Can you read data from the drive?

Try reading from the CD-ROM drive. Typing the following command should cause
the drive activity light (if present) to come on and no errors should be
reported. Use whatever device file is appropriate for your drive and make
sure a CD-ROM is inserted; use Control-C to exit.

+---------------------------------------------------------------------------+
|# dd if=/dev/cdrom of=/dev/null bs=2048                                    |
|^C                                                                         |
|124+0 records in                                                           |
|124+0 records out                                                          |
+---------------------------------------------------------------------------+

If this works, then the kernel is communicating with the drive and you can
move on to step 5.

If not, then a possible cause is the device file. Make sure than the device
file in the /dev directory has the correct major and minor numbers as listed
previously for your drive type. Check that the permissions on the device file
allow reading and writing.

A remote possibility is a hardware problem. Try testing the drive under
another operating system, if possible, to determine if this could be the
case.
-----------------------------------------------------------------------------

4.6.5. Step 5: Can you mount the drive?

If you can read from the drive but cannot mount it, first verify that you
compiled in ISO-9660 file system support by reading /proc/filesystems, as
described previously.

Make sure you are mounting the drive with the "-t iso9660" and "-r" options
and that a known good ISO-9660 CD-ROM (not Audio CD) is inserted in the
drive. You normally must mount drives as user root.

Make sure that the mount point exists and is an empty directory.

If you are automatically mounting the CD-ROM on bootup, make sure that you
have correct entries in the /etc/fstab file.

If you are running the syslog daemon, there may be error messages from the
kernel that you are not seeing. Try using the "dmesg" command:

+---------------------------------------------------------------------------+
|% dmesg                                                                    |
|SBPCD: sbpcd_open: no disk in drive                                        |
+---------------------------------------------------------------------------+

There may also be errors logged to files in /var/log, depending on how your
system is configured.
-----------------------------------------------------------------------------

4.6.6. Debugging Audio Problems

If the drive works with CD-ROMs, but not for playing audio CDs, here are some
possible solutions.

You need an application program to play audio CDs. Some applications may be
broken or may not be compatible with your drive. Try other applications and/
or try recompiling them yourself. A good place to look for software is [ftp:/
/www.ibiblio.org/pub/Linux/apps/sound/cdrom/] ftp://www.ibiblio.org/pub/Linux
/apps/sound/cdrom/.

A few of the CD-ROM drivers do not support playing Audio CDs. Check the
documentation file or source code to see if that is the case.

Check if the audio can be played through the headphone jack. If so, then the
problem is likely related to your sound card. Use a mixer program to set the
input device and volume levels. Make sure you have installed an audio cable
from the CD-ROM drive to the sound card. Make sure that the kernel sound card
driver is installed and working (see the [http://www.ibiblio.org/LDP/HOWTO/
Sound-HOWTO.html] Sound HOWTO).
-----------------------------------------------------------------------------

4.6.7. When All Else Fails

If you still have problems, here are some final suggestions for things to
try:

  * carefully re-read this HOWTO document
   
  * read the references listed at the end of this document, especially the
    relevant kernel source files
   
  * post a question to one of the comp.os.linux or other Usenet newsgroups
   
  * send a question to the Linux mailing list
   
  * try using the latest Linux kernel
   
  * contact your computer dealer
   
  * contact the CD-ROM manufacturer
   
  * send mail to the maintainer of the relevant kernel driver (look in the
    file /usr/src/linux/MAINTAINERS)
   
  * send mail to me
   
  * fire up emacs and type Esc-x doctor :-)
   

 
-----------------------------------------------------------------------------

5. Applications

This section briefly lists a few of the many applications related to CD-ROM
that are available under Linux. Check the Linux Software Map for the latest
versions and archive sites.
-----------------------------------------------------------------------------

5.1. Audio CD Players

Several programs are available for playing audio CDs, either through a
headphone jack or an attached sound card.

kscd
    A graphical CD player included as part of the KDE desktop environment.
   
gtcd
    A graphical CD player included as part of the GNOME desktop environment.
   
Workman
    a graphical player running under X11 and supporting a CD database and
    many other features
   
WorkBone
    an interactive text-mode player
   
xcdplayer
    a simple X11 based player
   
cdplayer
    a very simple command line based player
   
Xmcd
    an X11/Motif based player
   
xmitsumi
    another X11 based player for Mitsumi drives
   
xplaycd
    another X11 based player, bundled with sound mixer and VU meter programs
   
cdtool
    command line tools for playing audio CDs
   

Some of these programs are coded to use a specific device file for the CD-ROM
(e.g. /dev/cdrom). You may be able to pass the correct device name as a
parameter, or you can create a symbolic link in the /dev directory. If
sending the CD output to a sound card, you may wish to use a mixer program to
set volume settings or select the CD-ROM input for recording.
-----------------------------------------------------------------------------

5.2. PhotoCD

PhotoCDs use an ISO-9660 file system containing image files in a proprietary
format. Not all CD-ROM drives support reading PhotoCDs.

The hpcdtoppm program by Hadmut Danisch converts PhotoCD files to the
portable pixmap format. It can be obtained from [ftp://ftp.gwdg.de/pub/linux/
hpcdtoppm] ftp://ftp.gwdg.de/pub/linux/hpcdtoppm or as part of the PBM
(portable bit map) utilities, available on many archive sites (look for "pbm"
or "netpbm").

The photocd program by Gerd Knorr ([mailto:kraxel@cs.tu-berlin.de]
kraxel@cs.tu-berlin.de) can convert PhotoCD images into Targa or Windows and
OS/2 bitmap files.

The same author has written the program xpcd, an X11-based program for
handling PhotoCD images. You can select the images with a mouse, preview the
image in a small window, and load the image with any of the five possible
resolutions. You can also mark a part of the Image and load only the selected
part. Look for these packages at [ftp://ftp.cs.tu-berlin.de/pub/linux/Local/
misc/] ftp://ftp.cs.tu-berlin.de/pub/linux/Local/misc/.

The ImageMagick image file manipulation program also supports PhotoCD files.
It is available from [ftp://ftp.x.org/contrib/applications/ImageMagick/] ftp:
//ftp.x.org/contrib/applications/ImageMagick/.
-----------------------------------------------------------------------------

5.3. Mkisofs

Eric Youngdale's mkisofs package allows creating an ISO-9660 file system on a
hard disk partition. This can then be used to assist in creating and testing
CD-ROM file systems before mastering discs.
-----------------------------------------------------------------------------

5.4. ISO-9660 Utilities

These are some utilities for verifying the format of ISO-9660 formatted
discs; you may find them useful for testing suspect CDs. The package can be
found at [ftp://ftp.cdrom.com/pub/unixfreeware/archive/] ftp://ftp.cdrom.com/
pub/unixfreeware/archive/. They were written by Bill Siegmund and Rich Morin.
-----------------------------------------------------------------------------

6. Answers to Frequently Asked Questions

6.1. How can a non-root user mount and unmount discs?

Most mount commands support the user option. If you make an entry such as the
following in /etc/fstab:

+---------------------------------------------------------------------------+
|/dev/sbpcd  /mnt/cdrom   iso9660     user,noauto,ro                        |
+---------------------------------------------------------------------------+

then an ordinary user will be allowed to mount and unmount the drive using
these commands:

+---------------------------------------------------------------------------+
|% mount /mnt/cdrom                                                         |
|% umount /mnt/cdrom                                                        |
+---------------------------------------------------------------------------+

By default the disc will be mounted with some options that help enforce
security (e.g. programs cannot executed, device files are ignored). If this
is too restrictive you can use additional options (e.g. the "exec" option
will enable execution or programs). See the mount(8) man page for details.

Another method is to get the usermount package which allows non-root users to
mount and unmount removable devices such as floppies and CD-ROMs, but
restricts access to other devices (such as hard disk partitions). It is
available on major archive sites.

Yet another option is to use the sudo program which allows users to run
selective programs with root privileges.
-----------------------------------------------------------------------------

6.2. Why do I get device is busy when unmounting a CD-ROM?

The disc cannot be unmounted if any processes are accessing the drive,
including having their default directory set to the mounted filesystem. If
you cannot identify the processes using the disc, you can use the fuser
command, as shown in the following example.

+---------------------------------------------------------------------------+
|% umount /cdrom                                                            |
|umount: /dev/hdd: device is busy                                           |
|% fuser -v /cdrom                                                          |
|                     USER       PID ACCESS COMMAND                         |
|/mnt/cdrom           tranter    133 ..c..  bash                            |
+---------------------------------------------------------------------------+

On some systems you may need to be root when running the fuser command in
order to see the processes of other users.
-----------------------------------------------------------------------------

6.3. How do I export a CD-ROM to other hosts over NFS?

You need to add an entry to the /etc/exports file. Users on other machines
will then be able to mount the device. See the exports(5) man page for
details.
-----------------------------------------------------------------------------

6.4. Can I boot Linux from a CD-ROM?

Most Linux distributions support directly booting a Linux kernel from CD as
an alternative to a boot floppy. This requires a bootable CD and ROM BIOS and
CD-ROM drive which supporting booting from CD.

The latest version of mkisofs supports creating such disks using the El
Torito standard for bootable CDs.
-----------------------------------------------------------------------------

6.5. How can I read digital data from audio CDs?

Heiko Eissfeldt ([mailto:heiko@colossus.escape.de] heiko@colossus.escape.de)
and Olaf Kindel have written a utility that reads audio data and saves it as
.wav format sound files. The package is called cdda2wav.tar.gz and can be
found on www.ibiblio.org.

Another utility to extract digital audio is cdparanoia available from [http:/
/www.xiph.org/paranoia/] http://www.xiph.org/paranoia.

Because CD-ROM drives are changing very quickly, it is difficult to list
which models support reading digital data. Your best bet is to get the latest
cdda2wav or cdparanoia package and read the documentation.

For more information on this subject, see the web site [http://
www.tardis.ed.ac.uk/~psyche/cdda/] http://www.tardis.ed.ac.uk/~psyche/cdda/
and the alt.cd-rom FAQ listed in the references section.
-----------------------------------------------------------------------------

6.6. Why doesn't the find command work properly?

On ISO-9660 formatted discs without the Rock Ridge Extensions, you need to
add the -noleaf option to the find command. See the find(1) man page for
details.

(In my experience virtually all recent Linux CDs use the Rock Ridge
extensions, so this problem should occur very rarely.)
-----------------------------------------------------------------------------

6.7. Does Linux support any recordable CD-ROM drives?

Linux supports most CD-R and CD-RW drives. The cdrecord and mkisofs tools can
be used to burn CDs, there are also many graphical front-ends to these tools.
For more information see the [http://www.ibiblio.org/LDP/HOWTO/
CD-Writing-HOWTO.html] Linux CD-Writing HOWTO.
-----------------------------------------------------------------------------

6.8. Why do I get mount: Read-only file system when mounting a CD-ROM?

CD-ROM is a read-only media. With some early kernels you could mount a CD-ROM
for read/write; attempts to write data to the CD would simple be ignored. As
of kernel version 1.1.33 this was corrected so that CD-ROMs must be mounted
read only (e.g. using the -r option to mount).
-----------------------------------------------------------------------------

6.9. Why does the disc tray open when I shut down the system?

The sbpcd driver supports automatically ejecting the CD when it is unmounted.
In some older kernel versions this was the default behaviour. If you shut
down the system, a mounted CD will be unmounted, causing it to eject.

This feature is for convenience when changing discs. If the tray is open when
you mount or read a CD, it will also automatically be closed.

I found that this caused problems with a few programs (e.g. cdplay and
workbone). As of the 1.1.60 kernel you can control this feature under
software control. A sample program is included in the sbpcd documentation
file (or use the [http://www.pobox.com/~tranter/eject.html] eject program).
You can also control the default behaviour by editing the kernel source file
sbpcd.h.
-----------------------------------------------------------------------------

6.10. I have a "special" CD that can't be mounted

If you have a particular disc that cannot be mounted, here are some possible
reasons:

 1. It is an XA, CD-R, or CD-RW disc and your drive or the Linux driver does
    not support reading these discs (this is only likely for very old
    drives).
   
 2. It is a DVD disc, which is only readable by a DVD-ROM drive.
   
 3. The disc doesn't use an ISO-9660 file system (e.g. some use SunOS or
    HFS).
   
 4. It is an audio CD.
   
 5. The CD is damaged or defective.
   
 6. You put it in the drive upside down :-)
   

 
-----------------------------------------------------------------------------

6.11. Do multi-platter CD-ROM drives work with Linux?

Several users have reported success with SCSI multi-disc CD-ROM changers. You
probably need to enable the "Probe all LUNs on each SCSI device" kernel
configuration option (this is not necessary if your CD changer is already
known to the SCSI-driver. Have a look at /usr/src/linux/drivers/scsi.c).

At least one user also had to increase a SCSI timeout value in the kernel
driver. A symptom of this is an error message like "wrong fs type, bad
option, bad superblock on /dev/sr5, or too many mounted file systems" when
trying to mount a CD for the first time, but a second mount immediately
afterwards succeeds. To increase the timeout increase the value of
IOCTL_TIMEOUT at the beginning of /usr/src/linux/drivers/scsi/sr_ioctl.c and
recompile the kernel. A value of 10000 instead of the default 3000 is
reported to work with a NEC Multispin 4Xc.

It might be necessary to create additional block special files, so that all
LUNs can be accessed. A device file is needed for every LUN. So for a 7 disc
changer /dev/sr0 to /dev/sr6 are needed (more if you have additional SCSI
CD-ROM drives). To create the block special file execute mknod /dev/sr? b 11
? as root with ? being the required number.

The Nakamichi MBR-7 7 disc changer, NEC Multispin 4Xc and Pioneer 12 disc
changer have been reported to work.

EIDE/ATAPI multi-disc changers are also available. The kernel has support for
some drives using the CDROM_SELECT_DISC ioctl function. The IDE-CD kernel
driver documentation file includes source code for a program to select
changer slots, or you can use various utilities such as the eject program
described earlier.
-----------------------------------------------------------------------------

6.12. I get "/cdrom: Permission denied" errors

Some CDs have root directory file permissions that only allow user root to
read them. This is an error on the part of the CD-ROM vendor and is a real
inconvenience. A more common occurrence is for certain files or directories
not to be world readable. Some people have patched their kernels to work
around the problem.

Also see the related question on hidden files later in this document.
-----------------------------------------------------------------------------

6.13. How do I interpret IDE CD kernel error messages?

What does it mean when I get a kernel message from the IDE CD-ROM driver like
"hdxx: code: xx key: x asc: xx ascq: x"?

This is an status/error message from the IDE CD-ROM drive. By default the
IDECD driver prints out the raw information instead of wasting kernel space
with error messages. You can change the default to display the actual error
messages by going into /usr/src/linux/drivers/block/ide-cd.c, changing the
value of VERBOSE_IDE_CD_ERRORS to 1, and recompiling the kernel.
-----------------------------------------------------------------------------

6.14. How can I tell what speed CD-ROM I have?

Here's one way. This command measures how long is takes to read 1500K of data
from CD:

+---------------------------------------------------------------------------+
|% time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500                   |
|1500+0 records in                                                          |
|1500+0 records out                                                         |
|real 5.24                                                                  |
|user 0.03                                                                  |
|sys 5.07                                                                   |
+---------------------------------------------------------------------------+

The transfer rate of single speed drives is 150 kilobytes per second, which
should take about 10 seconds. At double speed it would take five seconds,
quad speed would take 2.5, etc.

The "real" time above is probably the best number to look at -- in this case
it indicates a double speed drive. You can increase the amount of data
transferred to get a more accurate value (the data does not get cached). You
should probably run the command a few times and take the average.

I've also written a small C program that measures and reports CD-ROM data
transfer rate; I can send it to you on request.
-----------------------------------------------------------------------------

6.15. My CD-ROM stopped working after Linux was installed

The usual symptom is that the boot disk used to initially install Linux
recognized your CD-ROM drive, but after Linux was installed on the hard drive
or floppy and rebooted it no longer recognizes the CD-ROM.

The most common reason for this problem is that with some Linux distributions
the kernel that is installed on your hard drive (or floppy) is not
necessarily the same one that was on your boot disk. You selected a boot disk
that matched your CD-ROM hardware, while the kernel you installed is a
"generic" kernel that is lacking CD-ROM support. You can verify this by
following the troubleshooting guidelines discussed previously in this
document (e.g. start by checking /proc/devices).

The solution is to recompile the kernel, ensuring that the drivers for your
CD-ROM drive and any others that are needed (e.g. SCSI controller, ISO-9660
file system) are included. See the [http://www.ibiblio.org/LDP/HOWTO/
Kernel-HOWTO.html] Kernel HOWTO if you don't know how to do this.

If you passed any command line options to the boot disk (e.g. "hdc=cdrom")
you need to add these to your boot program configuration file (typically /etc
/lilo.conf).
-----------------------------------------------------------------------------

6.16. There are "hidden" files on a CD which I can't read

Some CDs have files with the "hidden" bit set on them. Normally these files
are not visible. If you mount the CD with the "unhide" option then the files
should be accessible (this doesn't seem to be documented anywhere).
-----------------------------------------------------------------------------

6.17. Where is the CD-ROM API documented?

If you want to write your own application, such as an audio CD player
program, you will need to understand the application programming interface
(API) provided by Linux.

Originally the CD-ROM kernel drivers used their own ioctl() functions to
support features specific to each drive. Header files such as /usr/include/
linux/sbpcd.h describe these. Because many of the drivers were based on other
drivers, the interfaces, while not identical, have a lot in common.

More recently there has been an initiative headed by David van Leeuwen
([mailto:david@tm.tno.nl] david@tm.tno.nl) to standardize the API for CD-ROM
drives, putting common code in one place and ensuring that all drivers
exhibit the same behaviour. This is documented in the file /usr/src/linux/
Documentation/cdrom/cdrom-standard.tex. Several kernel drivers support this.
As of the 2.0 kernel all CD-ROM drivers conform to this API.

My book, Linux Multimedia Guide, goes into quite a bit of detail on how to
program CD-ROM drives, especially for audio functions. See the end of the
References section.
-----------------------------------------------------------------------------

6.18. Why don't I see long filenames on this Windows CD-ROM?

If you have a CD-ROM which has long filenames under Windows but not under
Linux, it may be formatted using Microsoft's proprietary Joliet filesystem.
See the next question for a solution.
-----------------------------------------------------------------------------

6.19. Is Microsoft's Joliet filesystem supported?

Microsoft has created an extension to the ISO CD-ROM format called Joliet. It
allows for long filenames encoded using the 16-bit UNICODE format.

Starting with version 2.0.34 the Linux kernel has support for the Microsoft
Joliet file system extensions. You need to enable support for it in the
kernel.

If you want to display filenames with native language characters from Joliet
CD-ROMs correctly on the screen, you need to enable support in the kernel for
the appropriate NLS ISO8859 character sets.
-----------------------------------------------------------------------------

6.20. Does Linux support "enhanced" CDs?

Some audio CDs are "enhanced" with additional data. Typically you will find
that these CDs have the usual audio CD tracks as well as a data track which
can be mounted as an ISO-9660 file system.

An enhanced CD I examined had Microsoft Windows and Apple Macintosh
applications on it (which won't run directly under Linux of course, although
I had partial success running the Windows application under the WINE Windows
emulator). There were some GIF images which could be viewed using a standard
viewer such as xv and some animations in Apple QuickTime format which could
be viewed using the xanim program. It was a multi-session disk which some
very old CD-ROM drives do not support reading. On the disc was a readme.txt
file containing an Enhanced CD FAQ.
-----------------------------------------------------------------------------

6.21. Does Linux support DVD-ROM?

SCSI and ATAPI compliant DVD-ROM drives should work under Linux for reading
discs formatted with an ISO-9660 file system. In other words they will work
as a (possibly large) CD-ROM drive.

Many DVD-ROM discs use the UDF file system. Recent kernels have UDF
filesystem support.

A number of Linux MPEG-2 DVD players are available. For more information see
the [http://www.ibiblio.org/LDP/HOWTO/DVD-Playing-HOWTO.html] DVD Playing
HOWTO.
-----------------------------------------------------------------------------

6.22. Does Linux support CD-RW?

SCSI and ATAPI compliant CD-RW drives work under Linux for discs formatted
with an ISO-9660 or UDF file system. This includes the ability to write to
the disc. Utilities such as cdrecord can be used to erase a disc.
-----------------------------------------------------------------------------

6.23. How do I mount a multi-session disc?

You mount a multi-session disc like any other CD-ROM. The normal behaviour
for multi-session support is that the last session will be seen when you
mount the disc. You will not see multiple partitions. If it does not work it
could be for three reasons:

 1. Your CD-ROM drive does not support reading multi-session CDs (it would
    probably have to be quite old for this to be the case).
   
 2. The Linux kernel driver for your CD-ROM type does not support
    multi-session (mostly only some old proprietary, non-IDE/ATAPI and
    non-SCSI drives fall into this category).
   
 3. If you are mounting a CD with a file system other than ISO-9660, then
    multi-session may not be supported.
   

 
-----------------------------------------------------------------------------

6.24. How do I read a CD volume label?

There is a small utility called volname included with recent versions of the
eject program. Alternatively you can run this shell command:

+---------------------------------------------------------------------------+
|dd if=/dev/cdrom bs=1 skip=32808 count=32                                  |
+---------------------------------------------------------------------------+

assuming /dev/cdrom is the device file name for your drive.
-----------------------------------------------------------------------------

6.25. My IDE CD-R or CD-RW drive is not working with Linux

You need to use the IDE SCSI emulation driver for writable drives. See the
[http://www.ibiblio.org/LDP/HOWTO/CD-Writing-HOWTO.html] Linux CD-Writing
HOWTO for more information.
-----------------------------------------------------------------------------

6.26. Is the insert your brand/model here IDE CD-ROM drive supported?

Yes, of course it is. Linux supports the IDE interface used by all modern IDE
CD-ROM drives. It has been like this since kernel version 1.1.85.
-----------------------------------------------------------------------------

6.27. I can't seem to find a driver for my IDE drive in the kernel source?

Unlike for the older proprietary drives, there isn't a specific driver for
each model of ATAPI/IDE CD-ROM drives. All drives conforming to the standard
should work with the ATAPI CD-ROM driver included in the standard Linux
kernel.
-----------------------------------------------------------------------------

6.28. I'm having problems with my CD-ROM on Red Hat 7.1

You may be running into an issue with hardware that does not support DMA
(Direct Memory Access). RedHat ships a highly tuned version of the Linux
kernel which enables DMA on selected IDE controller chipsets. Information on
this issue can be found at [http://www.exocore.com/linux/rhl71dma/] http://
www.exocore.com/linux/rhl71dma/
-----------------------------------------------------------------------------

7. References

I have already mentioned the documentation files, typically installed in /usr
/src/linux/Documentation/cdrom. These can be a gold mine of useful
information.

The following Usenet FAQs are posted periodically to [news:news.answers]
news.answers and archived at Internet FTP sites such as [ftp://rtfm.mit.edu/]
ftp://rtfm.mit.edu/.

  * alt.cd-rom FAQ
   
  * comp.periphs.scsi FAQ
   
  * Enhanced IDE/Fast-ATA/ATA-2 FAQ
   

Several other Linux HOWTOs have useful information relevant to CD-ROM:

  * [http://www.ibiblio.org/pub/Linux/docs/HOWTO/unmaintained/SCSI-HOWTO]
    Linux SCSI HOWTO
   
  * [http://www.ibiblio.org/LDP/HOWTO/Hardware-HOWTO.html] Hardware
    Compatibility HOWTO
   
  * [http://www.ibiblio.org/LDP/HOWTO/Sound-HOWTO.html] Sound HOWTO
   
  * [http://www.ibiblio.org/LDP/HOWTO/Kernel-HOWTO.html] Kernel HOWTO
   
  * [http://www.ibiblio.org/LDP/HOWTO/Distribution-HOWTO.html] Distribution
    HOWTO
   
  * [http://www.ibiblio.org/LDP/HOWTO/CD-Writing-HOWTO.html] CD Writing HOWTO
   

At least a dozen companies sell Linux distributions on CD-ROM; most of them
are listed in the Distribution HOWTO.

The following Usenet news groups cover CD-ROM related topics:

  * [news:comp.publish.cdrom.hardware] comp.publish.cdrom.hardware
   
  * [news:comp.publish.cdrom.multimedia] comp.publish.cdrom.multimedia
   
  * [news:comp.publish.cdrom.software] comp.publish.cdrom.software
   
  * [news:comp.sys.ibmpc.hardware.cd-rom] comp.sys.ibm.pc.hardware.cd-rom
   
  * [news:alt.cd-rom] alt.cd-rom
   
  * [news:alt.cd-rom.reviews] alt.cd-rom.reviews
   

The comp.os.linux newsgroups are also good sources of Linux specific
information.

A FAQ document on IDE and ATA devices can be found at [ftp://rtfm.mit.edu/pub
/usenet/news.answers/pc-hardware-faq/enhanced-IDE/] ftp://rtfm.mit.edu/pub/
usenet/news.answers/pc-hardware-faq/enhanced-IDE/ and at [http://
www.seagate.com/techsuppt/faq/faqlist.html] http://www.seagate.com/techsuppt/
faq/faqlist.html.

A web site dedicated to multimedia can be found at [http://www.scala.com/
multimedia/] http://www.scala.com/multimedia/. Creative Labs has a web site
at [http://www.creaf.com/] http://www.creaf.com/.

The Linux Software Map (LSM) is an invaluable reference for locating Linux
software. The LSM home page is at [http://www.ExecPC.com/lsm/] http://
www.ExecPC.com/lsm/. and there is an on-line browsable version at [http://
www.boutell.com/lsm/] http://www.boutell.com/lsm/.

Another great site for finding Linux applications is [http://
www.freshmeat.net/] http://www.freshmeat.net/.

The Linux mailing list has a number of "channels" dedicated to different
topics. To find out how to join, send a mail message with the word "help" as
the message body to [mailto:majordomo@vger.kernel.org]
majordomo@vger.kernel.org.

The Linux Documentation Project has produced several books on Linux,
including Linux Installation and Getting Started. These are freely available
by anonymous FTP from major Linux archive sites or can be purchased in
hardcopy format.

Finally, a shameless plug: If you want to learn a lot more about multimedia
under Linux (especially CD-ROM and sound card applications and programming),
check out my book Linux Multimedia Guide, ISBN 1-56592-219-0, published by
O'Reilly and Associates. As well as the original English version, French and
Japanese translations are now in print. For details, call 800-998-9938 in
North America or check the web page [http://www.ora.com/catalog/multilinux/
noframes.html] http://www.ora.com/catalog/multilinux/noframes.html.
