0% found this document useful (0 votes)
92 views38 pages

Cdrom Howto PDF

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.

Uploaded by

Selvaraj Villy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
92 views38 pages

Cdrom Howto PDF

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.

Uploaded by

Selvaraj Villy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

The Linux CDROM HOWTO

Jeff Tranter
[email protected]
v1.15, 11 May 2001
Revision History
Revision 1.15

20010511

Revised by: jjt

This document describes how to install, configure, and use CDROM 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.

The Linux CDROM HOWTO

Table of Contents
1. Introduction.....................................................................................................................................................1
1.1. Acknowledgments.............................................................................................................................1
1.2. New Versions Of This Document.....................................................................................................1
1.3. Feedback...........................................................................................................................................2
1.4. Distribution Policy............................................................................................................................2
2. CDROM Technology....................................................................................................................................3
3. Supported Hardware......................................................................................................................................4
3.1. ATAPI CDROM Drives.................................................................................................................4
3.2. SCSI CDROM Drives....................................................................................................................4
3.3. Proprietary CDROM Drives...........................................................................................................5
3.4. Parallel Port Drives...........................................................................................................................6
3.5. PCMCIA Drives...............................................................................................................................7
3.6. USB CDROM Drives.....................................................................................................................7
4. Installation.......................................................................................................................................................8
4.1. Installing the Hardware.....................................................................................................................8
4.2. Configuring and Building the Kernel...............................................................................................8
4.3. Creating Device Files and Setting Boot Time Parameters................................................................9
4.3.1. Sbpcd Driver...................................................................................................................10
4.3.2. Sonycdu535 Driver.........................................................................................................11
4.3.3. Cdu31a Driver.................................................................................................................12
4.3.4. Aztcd Driver...................................................................................................................13
4.3.5. Gscd Driver.....................................................................................................................14
4.3.6. Mcd Driver......................................................................................................................14
4.3.7. Mcdx Driver....................................................................................................................15
4.3.8. Cm206 Driver.................................................................................................................16
4.3.9. Optcd Driver...................................................................................................................16
4.3.10. Sjcd Driver....................................................................................................................17
4.3.11. Paride Driver.................................................................................................................18
4.3.12. SCSI Driver...................................................................................................................18
4.3.13. IDECD Driver...............................................................................................................19
4.4. Booting the Linux Kernel...............................................................................................................20
4.5. Mounting, Unmounting, and Ejecting Devices...............................................................................20
4.6. Troubleshooting..............................................................................................................................21
4.6.1. Step 1: Make sure you are really running the kernel you compiled...............................21
4.6.2. Step 2: Make sure the proper kernel drivers are compiled in.........................................21
4.6.3. Step 3: Did the kernel detect your drive during booting?...............................................22
4.6.4. Step 4: Can you read data from the drive?......................................................................23
4.6.5. Step 5: Can you mount the drive?...................................................................................23
4.6.6. Debugging Audio Problems............................................................................................24
4.6.7. When All Else Fails........................................................................................................24
5. Applications...................................................................................................................................................25
5.1. Audio CD Players...........................................................................................................................25
5.2. PhotoCD..........................................................................................................................................26
5.3. Mkisofs...........................................................................................................................................26
i

The Linux CDROM HOWTO

Table of Contents
5.4. ISO9660 Utilities..........................................................................................................................26
6. Answers to Frequently Asked Questions....................................................................................................27
6.1. How can a nonroot user mount and unmount discs?....................................................................27
6.2. Why do I get device is busy when unmounting a CDROM?.......................................................27
6.3. How do I export a CDROM to other hosts over NFS?.................................................................27
6.4. Can I boot Linux from a CDROM?..............................................................................................28
6.5. How can I read digital data from audio CDs?.................................................................................28
6.6. Why doesn't the find command work properly?.............................................................................28
6.7. Does Linux support any recordable CDROM drives?..................................................................28
6.8. Why do I get mount: Readonly file system when mounting a CDROM?..................................28
6.9. Why does the disc tray open when I shut down the system?..........................................................29
6.10. I have a "special" CD that can't be mounted.................................................................................29
6.11. Do multiplatter CDROM drives work with Linux?.................................................................29
6.12. I get "/cdrom: Permission denied" errors......................................................................................30
6.13. How do I interpret IDE CD kernel error messages?.....................................................................30
6.14. How can I tell what speed CDROM I have?..............................................................................30
6.15. My CDROM stopped working after Linux was installed...........................................................31
6.16. There are "hidden" files on a CD which I can't read.....................................................................31
6.17. Where is the CDROM API documented?...................................................................................31
6.18. Why don't I see long filenames on this Windows CDROM?.....................................................32
6.19. Is Microsoft's Joliet filesystem supported?...................................................................................32
6.20. Does Linux support "enhanced" CDs?.........................................................................................32
6.21. Does Linux support DVDROM?................................................................................................32
6.22. Does Linux support CDRW?......................................................................................................32
6.23. How do I mount a multisession disc?.........................................................................................33
6.24. How do I read a CD volume label?...............................................................................................33
6.25. My IDE CDR or CDRW drive is not working with Linux......................................................33
7. References......................................................................................................................................................34

ii

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

1.1. Acknowledgments
Much of this information came from the documentation and source files provided with the Linux kernel, the
Internet alt.cdrom newsgroup FAQ, and input from Linux users.
Thanks to the 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 comp.os.linux.answers newsgroup.
Hypertext versions of this and other Linux HOWTOs are available on many worldwide web sites, including
http://www.linuxdoc.org. Most Linux CDROM 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 CDROM 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/CDROMHOWTO.html
French: http://www.freenix.org/unix/linux/HOWTO/
German: http://www.tuharburg.de/dlhp/HOWTO/DECDROMHOWTO.html
Korean: http://kldp.org/HOWTO/html/CDROM/CDROMHOWTO.html
Japanese: http://www.linux.or.jp/JF/JFdocs/CDROMHOWTO.html
Polish: http://www.jtz.org.pl/Html/CDROMHOWTO.pl.html
Spanish: ftp://ftp.insflug.org/es
Swedish: ftp://ftp.hig.se/pub/linux/swedoc/
Most translations of this and other Linux HOWTOs can also be found at
1. Introduction

The Linux CDROM HOWTO


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, [email protected], and I will try to incorporate them in the next
revision.
I am also willing to answer general questions on CDROM 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 CDROM drives under operating systems other than Linux.
If you publish this document on a CDROM 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 [email protected] for more
information.

1.4. Distribution Policy


Copyright (c) 19952001 by Jeff Tranter. This document may be distributed under the terms set forth in the
LDP license at http://www.linuxdoc.org/COPYRIGHT.html.

1.3. Feedback

2. CDROM Technology
"CDROM is readonly memory, and audio compact disc system is available as
packagemedia of digital data for those purpose. For playing audio CD, please insert
Headphone jack."
from a CDROM instruction manual
Don't Panic! The world of CDROM technology is not as confusing as your instruction manual.
CDROM stands for Compact Disc ReadOnly 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, CDROM has become an
increasingly popular storage media.
The storage capacity of a CDROM 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 CDROM 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.
CDROMs are usually formatted with an ISO9660 (formerly called High Sierra) file system. This format
restricts filenames to the MSDOS style (8+3 characters). The Rock Ridge Extensions use undefined fields in
the ISO9660 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 16bit UNICODE character encoding.
PhotoCD is a standard developed by Kodak for storing photographic images as digital data on a CDROM.
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 multisession capability.
CD recordable (CDR) drives allow writing onto a special "gold" CD which can then be read by any
CDROM drive. Data can only be written once, although using multisession new data can be appended to a
disc.
CDRW (rewritable) drives can be erased and rewritten with new data. They use special discs which can be
read by most recent CDROM drives (but not older ones or most audio CD players).
DVDROM 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 MPEG2 format. The MPEG video decoding is
performed using specialized decoder software and/or hardware. DVDRAM is a writable version of DVD.

2. CDROM Technology

3. Supported Hardware
This section lists the CDROM 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 CDROM 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, CDROM 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 CDROM drive. Vendors
shipping compatible drives include Aztech, Mitsumi, NEC, Sony, Creative Labs, and Vertos. If you have
recently purchased a CDROM 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 PDCD or
CDR drive); you can then use this emulation together with an appropriate SCSI device driver.

3.2. SCSI CDROM Drives


SCSI (Small Computer Systems Interface) is a popular format for CDROM drives. Its chief advantages are
a reasonably fast transfer rate, multidevice 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 CDROM drive with a block size of 512 or 2048 bytes should work under Linux; this includes the
vast majority of CDROM drives on the market.
You will also need a supported SCSI controller card; see the Linux SCSI HOWTO for more information on
interface hardware.
Note that some older CDROM 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. Supported Hardware

The Linux CDROM HOWTO

3.3. Proprietary CDROM Drives


Several CDROM 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 CDROM drives and have offered proprietary,
SCSI, and ATAPI interfaces on their sound cards.
The table below lists the proprietary CDROM 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/. 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

CR521

sbpcd

Note 1

Panasonic

CR522

sbpcd

Note 1

Panasonic

CR523

sbpcd

Note 1

Panasonic

CR562

sbpcd

Note 1

Panasonic

CR563

sbpcd

Note 1

Creative Labs

CD200

sbpcd

IBM

External ISA

sbpcd

Longshine

LCS7260

sbpcd

Teac

CD55A

sbpcd

Sony

CDU31A

cdu31a

Sony

CDU33A

cdu31a

Sony

CDU535

sonycd535

Sony

CDU531

sonycd535

Aztech

CDA26801A

aztcd

Orchid

CDS3110

aztcd

Okano/Wearnes

CDD110

aztcd

Conrad

TXC

aztcd

CyCDROM

CR520ie

aztcd

CyCDROM

CR940ie

aztcd

GoldStar

R420

gscd

3.3. Proprietary CDROM Drives

Note 2

Note 3

Note 4

Note 5

The Linux CDROM HOWTO


Philips/LMS

CM206

cm206

Mitsumi

CRMC LU005S mcd/mcdx

Note 7,
8

Mitsumi

FX001

Note 7,
8

Optics Storage

Dolphin 8000AT optcd

Lasermate

CR328A

optcd

Sanyo

H94A

sjcd

various

various

isp16

mcd/mcdx

Note 6

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 CR562.
3. May also be sold under the Procomm name.
4. This driver is for the CDA26801A only. Other models, including the CDA26803I and
CDA269031SE 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 multisession support).
9. This driver works with CDROM 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 CDROM 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 CDROM 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 noname and clone drives compatible with
these): ATEN, Avatar, DataStor, Fidelity International Technology, Freecom, HewlettPackard, Imation, KT
Technology, KingByte Information Corp., Maxell, MicroSolutions, OnSpec, Shuttle Technology, SyQuest,
and ValuStore.

3.4. Parallel Port Drives

The Linux CDROM HOWTO


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

3.5. PCMCIA Drives


Using a PCMCIA SCSI or IDE adaptor you can connect external CDROM 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 Linux PCMCIA HOWTO for more information.

3.6. USB CDROM Drives


The Universal Serial Bus has support for mass storage devices. USB CDR and CDRW 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 Linux USB HOWTO for more details.

3.5. PCMCIA Drives

4. Installation
Installation of a CDROM 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 idecd, ATAPI CDROMS 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 CDROM 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
CDROM device type. If you cannot find a boot disk with the necessary CDROM driver, you have several
options:
1. Boot directly from CDROM (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 CDROM driver
The Linux Installation HOWTO has more information on installing Linux. If you purchased Linux on
CDROM, 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 CDROM drive or other hardware
to upgrade to a newer kernel release
to free up memory resources by minimizing the size of the kernel
The Linux Kernel HOWTO should be consulted for the details of building a kernel. I will just mention here
4. Installation

The Linux CDROM HOWTO


some issues that are specific to CDROM drives.
Obviously, you need to compile in support for your CDROM drive when you configure the kernel.
If you have an ATAPI CDROM drive, you need to enable Enhanced IDE/MFM/RLL disk/cdrom/tape
support and Include IDE/ATAPI CDROM support.
For SCSI CDROM 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 CDROM drives, enable the appropriate driver. You can use the table listed
previously to determine the driver to use for your model.
Virtually all CDROMs use the ISO9660 file system, so you must also enable ISO 9660 CDROM filesystem
support.
Although not needed for CDROM 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 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 ISO9660 filesystem and almost all of the CDROM 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 CDROM installation running using compiledin drivers first. How to
use modules is described in the modules documentation and the 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 Kernel HOWTO explains how to do this.
Note that you can configure the kernel using the textbased program using "make config", a menubased
kernel configuration program invoked by "make menuconfig" and an X11based graphical configuration
invoked as "make xconfig". All three configuration methods offer online 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 menubased setup tool that includes CDROM 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
4.3. Creating Device Files and Setting Boot Time Parameters

The Linux CDROM HOWTO


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 CDROM device names from
those listed here.
I recommended that you also create a symbolic link to the CDROM device to make it easier to remember.
For example, for an IDE CDROM 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
brwrwr
1 root

disk

22,

64 Feb

1995 /dev/hdd

Some Linux distributions use group permissions to control access to devices such as CDROMs. 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 autoprobe 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
([email protected])

Multisession support:

yes (but not all drives)

Multiple drive support:

yes

4.3.1. Sbpcd Driver

10

The Linux CDROM HOWTO


Loadable module support:

yes

Reading audio frames:

yes (CR562, CR563, CD200 only)

Autoprobing:

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=<ioaddress>,<interfacetype>

where the first parameter is the base address of the device (e.g. 0x230), and <interfacetype> is one of
"SoundBlaster", "LaserMate", or "SPEA". See the file sbpcd.h for hints on what interface type to use.
Using sbpcd=0 disables autoprobing, 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 CDROM drives in total; hopefully enough for most
users :).
See the file sbpcd for more information on this driver.
If you recently bought a CDROM drive, don't assume that if it connects to a SoundBlaster card it should use
this kernel driver. Most CDROM drives being sold by Creative Labs are now EIDE/ATAPI drives.

4.3.2. Sonycdu535 Driver


Principal author:

Ken Pizzini
([email protected])

Multiple drive support:

no

Loadable module support:

yes

Reading audio frames:

no

Autoprobing:

no

Device file:

/dev/sonycd535, major 24

Configuration file:

sonycd535.h

Kernel config option:


4.3.2. Sonycdu535 Driver

11

The Linux CDROM HOWTO


Sony CDU535 CDROM
support
Documentation file:

sonycd535

This driver accepts a kernel command line of the form:


sonycd535=<ioaddress>

where <ioaddress> 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
([email protected])

Multisession support:

yes

Multiple drive support:

no

Loadable module support:

yes

Reading audio frames:

yes

Autoprobing:

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=<ioaddress>,<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
ProAudio Spectrum 16 sound card, otherwise left blank.
4.3.3. Cdu31a Driver

12

The Linux CDROM HOWTO


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=<ioaddress> cdu31a_irq=<interrupt>

The base ioaddress 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
([email protected])

Multisession support:

yes

Multiple drive support:

no

Loadable module support:

yes

Reading audio frames:

no

Autoprobing:

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=<ioaddress>

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 CDA26801A only. Other models, including the CDA26803I and
CDA269031SE are not proprietary and should use the IDECD (ATAPI) kernel driver.
See the file aztcd for more information on this driver.

4.3.4. Aztcd Driver

13

The Linux CDROM HOWTO

4.3.5. Gscd Driver


Principal author:

Oliver Raupach
([email protected])

Multisession support:

no

Multiple drive support:

no

Loadable module support:

yes

Reading audio frames:

no

Autoprobing:

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=<ioaddress>

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 ([email protected])

Multisession support:

no

Multiple drive support:

no

Loadable module support:

yes

Reading audio frames:

no

Autoprobing:

no

Device file:

/dev/mcd, major 23

Configuration file:

mcd.h

Kernel config option:

Standard Mitsumi CDROM


support

4.3.5. Gscd Driver

14

The Linux CDROM HOWTO


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=<ioaddress>,<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

Multisession support:

yes

Multiple drive support:

yes

Loadable module support:

yes

Reading audio frames:

no (not supported by
hardware)

Autoprobing:

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=<ioaddress>,<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

4.3.7. Mcdx Driver

15

The Linux CDROM HOWTO


If you recently bought a Mitsumi CDROM 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


([email protected])

Multisession support:

yes

Multiple drive support:

no

Loadable module support:

yes

Reading audio frames:

no

Autoprobing:

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=<ioaddress>,<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
([email protected])

Multisession support:

yes

Multiple drive support:

no

Loadable module support:

yes

4.3.8. Cm206 Driver

16

The Linux CDROM HOWTO


Reading audio frames:

no

Autoprobing:

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=<ioaddress>

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 ([email protected])

Multisession support:

no

Multiple drive support:

no

Loadable module support:

yes

Reading audio frames:

no

Autoprobing:

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=<ioaddress>,<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:
4.3.10. Sjcd Driver

17

The Linux CDROM HOWTO


# 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
([email protected])

Multisession support:

no

Multiple drive support:

yes

Loadable module support:

yes

Reading audio frames:

no

Autoprobing:

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
autodetect the parallel port device. The documentation describes parameters that can be used to specify the
device parameters if autodetection 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

Multisession support:

yes (depending on
drive)

Multiple drive support:

yes

Loadable module support:

yes

Reading audio frames:

no

Autoprobing:

yes

4.3.11. Paride Driver

18

The Linux CDROM HOWTO


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 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 ([email protected])

Multisession support:

yes

Multiple drive support:

yes

Loadable module support:

no

Reading audio frames:

yes (on supported drives)

Autoprobing:

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:

idecd

This is the driver for ATAPI CDROMS. 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.

4.3.13. IDECD Driver

19

The Linux CDROM HOWTO


Getting the IDE driver to recognize your CDROM 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/idecd 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
CDROM has been found by the device driver (the message will vary depending on the drive type):
hdd: TOSHIBA CDROM XM7002B, ATAPI CD/DVDROM 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 CDROM, 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 CDROM 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 CDROM, 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 eject program that allows ejecting CDROMs under software control.
4.4. Booting the Linux Kernel

20

The Linux CDROM HOWTO


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 CDROM drivers can automatically eject a CDROM 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 CDROM. 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 kernelbased automounter which provides transparent mounting of removable
media including CDROM. You can find the tools needed to use it at
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
CDROM 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:

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 reinstall 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

4.6. Troubleshooting

21

The Linux CDROM HOWTO

Block devices:
3 ide0
22 ide1

First look for your CDROM 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 ISO9660 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
...
02300233 : 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 CDROM 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 CDROMS 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 autoprobing, 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 CDROM driver. Some documentation
may refer to proprietary interfaces as IDE, leading some to mistakenly believe they are ATAPI drives.
4.6.3. Step 3: Did the kernel detect your drive during booting?

22

The Linux CDROM HOWTO


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 ControlAltDelete.
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 CDROM 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 CDROM is inserted; use ControlC 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 ISO9660 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
ISO9660 CDROM (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 CDROM 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.4. Step 4: Can you read data from the drive?

23

The Linux CDROM HOWTO

4.6.6. Debugging Audio Problems


If the drive works with CDROMs, 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/.
A few of the CDROM 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 CDROM drive to the sound card. Make sure that the kernel sound card driver is
installed and working (see the Sound HOWTO).

4.6.7. When All Else Fails


If you still have problems, here are some final suggestions for things to try:
carefully reread 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 CDROM 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 Escx doctor :)

4.6.6. Debugging Audio Problems

24

5. Applications
This section briefly lists a few of the many applications related to CDROM 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 textmode 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

5. Applications

25

The Linux CDROM HOWTO


command line tools for playing audio CDs
Some of these programs are coded to use a specific device file for the CDROM (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 CDROM input for recording.

5.2. PhotoCD
PhotoCDs use an ISO9660 file system containing image files in a proprietary format. Not all CDROM
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 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 ([email protected]) can convert PhotoCD images into Targa or
Windows and OS/2 bitmap files.
The same author has written the program xpcd, an X11based 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.tuberlin.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/.

5.3. Mkisofs
Eric Youngdale's mkisofs package allows creating an ISO9660 file system on a hard disk partition. This
can then be used to assist in creating and testing CDROM file systems before mastering discs.

5.4. ISO9660 Utilities


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

5.2. PhotoCD

26

6. Answers to Frequently Asked Questions


6.1. How can a nonroot 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 nonroot users to mount and unmount
removable devices such as floppies and CDROMs, 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


CDROM?
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 CDROM 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. Answers to Frequently Asked Questions

27

The Linux CDROM HOWTO

6.4. Can I boot Linux from a CDROM?


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 CDROM 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 ([email protected]) 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.
Because CDROM 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/ and the
alt.cdrom FAQ listed in the references section.

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


On ISO9660 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 CDROM drives?


Linux supports most CDR and CDRW drives. The cdrecord and mkisofs tools can be used to burn CDs,
there are also many graphical frontends to these tools. For more information see the Linux CDWriting
HOWTO.

6.8. Why do I get mount: Readonly file system when


mounting a CDROM?
CDROM is a readonly media. With some early kernels you could mount a CDROM 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 CDROMs must be mounted read only (e.g. using the r option to mount).

6.4. Can I boot Linux from a CDROM?

28

The Linux CDROM HOWTO

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 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, CDR, or CDRW 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 DVDROM drive.
3. The disc doesn't use an ISO9660 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 multiplatter CDROM drives work with Linux?


Several users have reported success with SCSI multidisc CDROM 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 SCSIdriver. 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 CDROM drives). To create the block special file execute mknod /dev/sr? b 11 ? as
root with ? being the required number.
The Nakamichi MBR7 7 disc changer, NEC Multispin 4Xc and Pioneer 12 disc changer have been reported
6.9. Why does the disc tray open when I shut down the system?

29

The Linux CDROM HOWTO


to work.
EIDE/ATAPI multidisc changers are also available. The kernel has support for some drives using the
CDROM_SELECT_DISC ioctl function. The IDECD 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 CDROM 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 CDROM driver like "hdxx: code: xx key: x
asc: xx ascq: x"?
This is an status/error message from the IDE CDROM 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/idecd.c, changing the
value of VERBOSE_IDE_CD_ERRORS to 1, and recompiling the kernel.

6.14. How can I tell what speed CDROM 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 CDROM data transfer rate; I can send it to
you on request.

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

30

The Linux CDROM HOWTO

6.15. My CDROM stopped working after Linux was


installed
The usual symptom is that the boot disk used to initially install Linux recognized your CDROM drive, but
after Linux was installed on the hard drive or floppy and rebooted it no longer recognizes the CDROM.
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 CDROM hardware, while the kernel you installed is a "generic" kernel that is
lacking CDROM 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 CDROM drive and any others that
are needed (e.g. SCSI controller, ISO9660 file system) are included. See the 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 CDROM 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 CDROM 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 ([email protected]) to standardize
the API for CDROM 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/cdromstandard.tex. Several kernel drivers
support this. As of the 2.0 kernel all CDROM drivers conform to this API.
My book, Linux Multimedia Guide, goes into quite a bit of detail on how to program CDROM drives,
especially for audio functions. See the end of the References section.

6.15. My CDROM stopped working after Linux was installed

31

The Linux CDROM HOWTO

6.18. Why don't I see long filenames on this Windows


CDROM?
If you have a CDROM 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 CDROM format called Joliet. It allows for long filenames
encoded using the 16bit 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 CDROMs 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 ISO9660 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 multisession disk which some very old CDROM drives do not support reading.
On the disc was a readme.txt file containing an Enhanced CD FAQ.

6.21. Does Linux support DVDROM?


SCSI and ATAPI compliant DVDROM drives should work under Linux for reading discs formatted with an
ISO9660 file system. In other words they will work as a (possibly large) CDROM drive.
Many DVDROM discs use the UDF file system. Recent kernels have UDF filesystem support.
A number of Linux MPEG2 DVD players are available. For more information see the DVD Playing
HOWTO.

6.22. Does Linux support CDRW?


SCSI and ATAPI compliant CDRW drives work under Linux for discs formatted with an ISO9660 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.18. Why don't I see long filenames on this Windows CDROM?

32

The Linux CDROM HOWTO

6.23. How do I mount a multisession disc?


You mount a multisession disc like any other CDROM. The normal behaviour for multisession 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 CDROM drive does not support reading multisession CDs (it would probably have to be
quite old for this to be the case).
2. The Linux kernel driver for your CDROM type does not support multisession (mostly only some
old proprietary, nonIDE/ATAPI and nonSCSI drives fall into this category).
3. If you are mounting a CD with a file system other than ISO9660, then multisession 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 CDR or CDRW drive is not working with


Linux
You need to use the IDE SCSI emulation driver for writable drives. See the Linux CDWriting HOWTO for
more information.

6.23. How do I mount a multisession disc?

33

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.answers and archived at Internet FTP sites such
as ftp://rtfm.mit.edu/.
alt.cdrom FAQ
comp.periphs.scsi FAQ
Enhanced IDE/FastATA/ATA2 FAQ
Several other Linux HOWTOs have useful information relevant to CDROM:
Linux SCSI HOWTO
Hardware Compatibility HOWTO
Sound HOWTO
Kernel HOWTO
Distribution HOWTO
CD Writing HOWTO
At least a dozen companies sell Linux distributions on CDROM; most of them are listed in the Distribution
HOWTO.
The following Usenet news groups cover CDROM related topics:
comp.publish.cdrom.hardware
comp.publish.cdrom.multimedia
comp.publish.cdrom.software
comp.sys.ibm.pc.hardware.cdrom
alt.cdrom
alt.cdrom.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/pchardwarefaq/enhancedIDE/ and at
http://www.seagate.com/techsuppt/faq/faqlist.html.
A web site dedicated to multimedia can be found at http://www.scala.com/multimedia/. Creative Labs has a
web site at 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/. and there is an online browsable version at http://www.boutell.com/lsm/.
Another great site for finding Linux applications is 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 [email protected].
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.
7. References

34

The Linux CDROM HOWTO


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

7. References

35

You might also like