Linux Zone

| HowTo Linux Zone | Linux Zone Home | E-Mail Me |

The Linux CD-ROM HOWTO


Jeff Tranter, tranter@pobox.com

v1.14, 24 March 1999

This document describes how to install, configure, and use CD-ROM

drives under Linux. It lists the supported hardware and answers a num­

ber 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 Alternate Drivers

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.3.1 Sbpcd Driver

4.3.2 Sonycdu535 Driver

4.3.3 Cdu31a Driver

4.3.4 Aztcd Driver

4.3.5 Gscd Driver

4.3.6 Mcd Driver

4.3.7 Mcdx Driver

4.3.8 Cm206 Driver

4.3.9 Optcd Driver

4.3.10 Sjcd Driver

4.3.11 Paride Driver

4.3.12 SCSI Driver

4.3.13 IDECD Driver

4.4 Booting the Linux Kernel

4.5 Mounting, Unmounting, and Ejecting Devices

4.6 Troubleshooting

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

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

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

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

4.6.5 Step 5: Can you mount the drive?

4.6.6 Debugging Audio Problems

4.6.7 When All Else Fails

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?

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 alt.cdrom newsgroup FAQ,

and input from Linux users.

Thanks to the SGML Tools package, 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. They will also be uploaded to various

anonymous ftp sites that archive such information including

<ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/>.

Hypertext versions of this and other Linux HOWTOs are available on

many world-wide web sites, including

<http://metalab.unc.edu/LDP/HOWTO/>. 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>

French: <http://www.freenix.org/unix/linux/HOWTO/>

 

Japanese: <http://jf.linux.or.jp/JF/JF.html/>

Polish: <http://www.jtz.org.pl/Html/CDROM-HOWTO.pl.html>

Spanish: <ftp://ftp.insflug.org/es>

Swedish: <http://www.swe-doc.linux.nu/>

Most translations of this and other Linux HOWTOs can also be found at

<http://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/> and

<ftp://metalab.unc.edu/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,

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

Linux HOWTO coordinator, Tim Bynum (linux-howto@metalab.unc.edu), for

more information.

 

1.4. Distribution Policy

 

Copyright (c) 1995-1999 by Jeff Tranter. This document may be

distributed under the terms set forth in the LDP license at

<http://metalab.unc.edu/LDP/COPYRIGHT.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. Some CDs 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 recorders (CD-R) 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. These

drives are now becoming increasingly affordable.

CD-RW (read/write) drives support multiple writing of data to CDs.

They use special discs which cannot be read using standard CD-ROM

drives, although the CD-RW drives themselves can read standard discs.

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

usually performed using specialized decoder hardware.

 

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.2.4.

This information is only valid for Linux on the Intel 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 SCSI

HOWTO for more information on interface hardware.

 

Note that some CD-ROMs include 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://metalab.unc.edu/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.

Proprietary CD-ROM Drives

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://metalab.unc.edu

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 (but possibly less

stable).

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/>.

 

3.5. Alternate Drivers

 

There is an alternate kernel driver available for Panasonic/Matsushita

CR-56x drives written by Zoltan Vorosbaranyi. It can be found at

<ftp://ftp.honlap.net/pub/linux/pcd/pcd-0.30.tar.gz>.

 

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 Linux Installation HOWTO

<http://metalab.unc.edu/LDP/HOWTO/Installation-HOWTO.html> 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 Linux Kernel HOWTO <http://metalab.unc.edu/LDP/HOWTO/Kernel-

HOWTO.html> 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 do a "make config".

If you have an ATAPI CD-ROM drive, you need to answer yes to the

questions:

 

 

Enhanced IDE/MFM/RLL disk/cdrom/tape support (CONFIG_BLK_DEV_IDE) [Y/n/?]

Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/n/?]

 

 

 

For SCSI CD-ROM drives, enable these options:

 

SCSI support (CONFIG_SCSI) [Y/n/m/?]

SCSI CDROM support (CONFIG_BLK_DEV_SR) [Y/n/m/?]

 

 

 

Also enable support for your SCSI host adapter when prompted, e.g.

 

 

Adaptec AHA152X/2825 support (CONFIG_SCSI_AHA152X) [Y/n/m/?]

 

 

 

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 (CONFIG_ISO9660_FS) [Y/n/m/?]

 

 

 

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 Sound HOWTO

<http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html> 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 Kernel HOWTO

<http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html>.

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

<http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html> explains how to

do this.

Note that there is 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.

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.

It is 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

 

 

 

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)

Multi-session support: no

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.

Also see the web page put together by Jeffrey Oxenreider

(zureal@infinet.com) that covers a lot of common problems with these

drives. It can be found at

<http://lemures.shinma.symix.com/~zureal/cdu31a.html>.

 

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 and the world-wide web site <http://linux.rz.fh-

hannover.de/~raupach/> 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.tno.)

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 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: NEC CD-ROM DRIVE:282, ATAPI CDROM 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 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/>.

 

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 com&SHY;

piled

 

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 fizzbin 2.2.4 #1 Tue Mar 232 11:23:21 EST 1999 i586 unknown

 

 

 

or by displaying the file /proc/version:

 

 

% cat /proc/version

Linux version 2.2.4 (root@fizzbin) (gcc version 2.7.2.3) #1 Tue Mar 23 11:23:21 EST 1999

 

 

 

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://metalab.unc.edu/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 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.

 

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> 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 (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/>.

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

The tools for actually writing data to writable CD-ROM drives tend to

be vendor specific. They also require writing the data with no

interruptions, so a multitasking operating system like Linux is not

particularly well suited.

 

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/>. 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.

The archive site ftp.cdrom.com has the source file mount.c which

allows mounting an unmounting of CD-ROMs (only) by normal users. It

runs as a setuid executable.

 

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?

 

When initially installing Linux the most common method is to use a

boot floppy. Some distributions allow booting a Linux kernel on CD

directly from DOS.

With the right CD-ROM, ROM BIOS, and ATAPI CD-ROM drive it is possible

to boot directly 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 (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

metalab.unc.edu.

Another utility to extract digital audio is cdparanoia available from

<http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia>.

Because CD-ROM drives are changing very quickly, it is difficult to

list which models support reading digital data. You 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.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?

 

The X-CD-Roast package for Linux is a graphical front-end for using CD

writers. The package can be found at metalab.unc.edu in

/pub/Linux/utils/disk-management/xcdroast-0.95.tar.gz

Also see the Linux CD-Writing HOWTO document, found at

<ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/CD-Writing-HOWTO> or

<http://metalab.unc.edu/LDP/HOWTO/CD-Writing-HOWTO.html>.

 

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

 

The "special" CD is likely an XA disc (like all Photo CDs or "one-

offs" created using CD-R drives). Most of the Linux kernel CD-ROM

drivers do not support XA discs, although you may be able to find a

patch to add support on one of the archive sites.

The sbpcd driver does support XA. If you are using this driver you can

determine if the disc is XA using the following procedure: go into the

file sbpcd.c and enable the display of the "Table of Contents"

(DBG_TOC). Build and install the new kernel and boot from it. During

each mount the TOC info will be written (either to the console or to a

log file). If the first displayed value in the TOC header line is

"20", then it is an XA disc. That byte is "00" with normal disks. If

the TOC display shows different tracks, that is also a sign that it is

an XA disc.

(thanks to Eberhard Moenkeberg for the above information)

Other possibilities for unreadable CDs are:

 

1. The disc doesn't use an ISO-9660 file system (e.g. some use SunOS

or HFS)

2. It is an audio CD

3. The CD is damaged or defective

4. 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 (in case you

were wondering, 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 Kernel HOWTO

<http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html> 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

(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 multisession 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. At the time of writing

this was still in development. Kernel patches were available from

<http://trylinux.com/projects/udf/>.

However, I am not aware of any support for playing MPEG-2 encoded DVD

videos either in software or in conjunction with DVD decoder hardware.

Apparently the standard document for the encoding format can only be

obtained at a high cost and under a non-disclosure agreement. Another

issue is that MPEG decoding typically uses proprietary hardware for

which the vendor may not be willing to release programming

information. These factors may preclude any freely available DVD video

software being developed for Linux.

 

6.22. Does Linux support CD-RW?

 

SCSI and ATAPI compliant CD-RW drives should work under Linux for

discs formatted with an ISO-9660 file system. This includes the

ability to write to the disc.

Many CD-RW discs use the UDF file system. At the time of writing this

was still in development. Kernel patches were available from

<http://trylinux.com/projects/udf/>.

 

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.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:

 

· SCSI HOWTO <http://metalab.unc.edu/LDP/HOWTO/unmaintained/SCSI-

HOWTO.html>

· Hardware Compatibility HOWTO

<http://metalab.unc.edu/LDP/HOWTO/Hardware-HOWTO.html>

· Sound HOWTO <http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html>

· Kernel HOWTO <http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html>

· Distribution HOWTO <http://metalab.unc.edu/LDP/HOWTO/Distribution-

HOWTO.html>

· CD Writing HOWTO <http://metalab.unc.edu/LDP/HOWTO/CD-Writing.html>

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:

 

· comp.publish.cdrom.hardware

· comp.publish.cdrom.multimedia

 

· comp.publish.cdrom.software

· comp.sys.ibm.pc.hardware.cd-rom

· alt.cd-rom

· alt.cd-rom.reviews

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

information.

There is a large archive of CD-ROM information and software at

<ftp://ftp.cdrom.com/pub/cdrom/>.

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/> and at <http://www.seagate.com/techsuppt/faq/faqlist.html>.

Western Digital, the company that started the IDE protocol, has

information available on the IDE protocol available on their FTP site

at <ftp://fission.dt.wdc.com/pub/standards/atapi>.

A web site dedicated to multimedia can be found at

<http://viswiz.gmd.de/MultimediaInfo/>. 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 can be found on various anonymous FTP sites,

including <ftp://metalab.unc.edu/pub/Linux/docs/LSM/> (formerly known

as sunsite). There are also various web sites that maintain databases

of Linux applications. One such site 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 majordomo@vger.rutgers.edu

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> or my

home page <http://www.pobox.com/~tranter/>.


| HowTo Linux Zone | Linux Zone Home | E-Mail Me |

Copyright 1999

Linux Zone