.\" Process this file with
.\" groff -man -Tascii foo.1
.\" $Id: setcd.1,v 1.1 1997/02/23 17:11:34 david Exp $
.TH SETCD 1 "February 1997" Linux "User Manuals"
setcd \- set various flags to control the behaviour of your cdrom
.B setcd [-hirs] [-ceflot
.IB 0|1 "] [-dx"
.IB arg "]"
.BI [ device
.IB ... ]
is a program that allows you to control the behaviour of your Linux
cdrom device. There are a number of ways you can control the
behaviour of your cdrom drive: should it try to close the tray upon
mounting a cdrom when your happened to have left the tray open, or
should it eject the tray (or caddy)
upon unmounting the cdrom? Should it lock the
door when some process uses the cdrom or not? Should the kernel try to
ensure that there actually is a cd in the drive, and that it is of the
right type (i.e., a data cd in case of a mount, or an audio cd in case
of a play operation)?
can also inform you on the current configuration of the drive, and can
give information on the status of the drive; whether or not a cd is
loaded, what the type is (audio/data), and some basic information of
the disc (total playing time for audio / volume name for data).
can list/probe/configure several cdrom devices at once, independent of
their low-level implementation. Finally,
can select a disc in a multi-disc cdrom player (juke-box), and set
the operating speed of the player.
Options come in three flavours: without arguments, with one boolean
type argument and with a numeric argument. For boolean type arguments,
means `clear option,' and
means `set option.' Several options may be given at the same
time. Following the options, a list of cdrom device names can be
given, for which the operations will take place. If no device is
given, the default value
will be used.
.IP "-c 0|1"
Clear/set auto-close flag. If the cdrom device is opened for data access
.BR mount (1)
) and the tray is found open, an attempt is made to close the
tray. This is considered `desired' behaviour but people with old cd
player programs may disagree. A cd player that opens the device at
regular intervals would have problems leaving the tray ejected, if
there were no special arrangements taken to support cd player
programs. In the new interface they can specify in their
.BR open (2)
call that they wish to open the device just for issuing
.BR ioctl (2)
calls. Instead of clearing this option, consider upgrading your
cd player program.
.IP "-d drive"
Selects the cd in slot number
in case the cdrom player is a juke-box model.
.IP "-e 0|1"
flag. This is basically identical to controlling the auto-close
and auto-open flags simultaneously. The EJECT_SW flag enables closing
the tray upon mounting a cdrom, and opening the tray upon unmounting
it again. The option is included to support the old-style cdrom
behaviour (many low-level driver have implemented the ioctl-command
connected to this flag).
.IP "-f 0|1"
Clear/set use-fflags flag. The new cdrom interface specifies a special
interpretation of the O_NONBLOCK option in the
.BR open (2)
call for cdrom devices. When this option is used, and the
use-fflags option is set, the cdrom driver will not attempt to do
anything to make the open() call more successful; the tray is not
closed upon opening, no cd type checking is performed, in fact the
open() call will
succeed. This allows user-level programs to issue ioctl() commands
regardless of the state in which the drive is. Setting this option is
the preferred state. Users may wish to clear this option in case they
have an old cd player program that does not support the O_NONBLOCK
option, but have a new style cdrom driver (i.e., IDE, SCSI or cm206).
Print copyright information and terse help.
Give information on the cdrom drive. The status of the drive is
checked, possible outcome is (a) no disc inserted, (b) tray is open,
(c) drive is not ready, (d) disc is found. In the last case, an
attempt is made to determine the type of disc (audio or one of 4 types
of data disc), and for both "audio" and "data disc type 1|2" some
additional information is given. Currently for data discs this is the
volume name, publisher and data preparer. For audio discs the extra
information is very terse, you may enjoy a full-fledged audio cd player
.IP "-l 0|1"
Clear/set locking flag. When this flag is set, the drive door is
locked while the cdrom devices is opened, e.g., when a cdrom is
mounted. Not locking the door is undesired behaviour, because this may
lead to file system corruption if a cdrom is removed while being
.IP "-o 0|1"
Clear/set auto-open flag. When this flag is set, and the last process
that uses the cdrom device closes the device, an attempt is made to
eject the tray. Care is taken, that processes that used the O_NONBLOCK
option in opening the device, will not cause such an auto-eject. Yet,
we consider this auto-eject behaviour undesired. In most cases, this
behaviour is combined with the auto-close behaviour, in which case the
option "-e" is the preferred usage.
Resets all options to a default behaviour. Using this option is
equivalent to "-c1 -f1 -l1 -o0 -t1", i.e., all options set in a way we
consider `desired.' For the current development kernel, this is
identical to the default settings apart from the type-checking flag,
because this flag relies on a very modern kernel, libc and cdrom
Gives the current status of the option flags. Information on the
following flag settings is giver, one per line: (a) auto-close, (b)
auto-open, (c) use-fflags, (d) tray-locking, (e) type-checking.
.IP "-t 0|1"
Clear/set cd type checking flag. When this option is set, the kernel
will check the type of cd upon various operations. A system error
"Wrong medium type" is given if the generic cdrom driver receives an
open-for-data call while an audio cd is inside the drive, or a playing
command is received while a data disc is in the drive. This behaviour
is considered superior over kernel time-outs and other
implementation-dependent behaviour found on the old-style cdrom
interface. However, this feature is relatively new, and requires
kernel version 2.1.27 or later, and libc-5.4.24 or later. Moreover, if
you use an audio cd player program, it
use the O_NONBLOCK open flag (see option "-f"). These stringent
constraints made the current kernels to have this option turned off,
while people using
are considered modern and progressive enough to have this option
selected by default using the "-r" option.
.IP "-x speed"
Sets the head-rate of the cdrom player to
times 150 KB/sec, or
times real-time audio playback. The special value
is interpreted as auto-selection: data cd's are read at maximum
head-rate, while audio cd's are played at normal speed. There are a
few reasons for having the speed to be selectable. Badly pressed
cdroms may benefit from less-than-maximum head rate. Modern cdrom
drives can obtain very high head rates,
but these drives tend to make an annoyingly loud noise. A
lower speed may reduce this.
Traditionally, up to the 2.0 Linux kernel line, the behaviour of the
cdrom access was determined by the low-level driver implementation,
which varied between different brands of drives. Since kernel
1.3.late, an extra interface layer has been defined between the kernel
and user level programs,
that makes the behaviour of the cdrom drive independent of the
low-level driver. The first driver to respect the new interface was,
surprisingly, the outdated Philips/LMS cm206 in kernel 2.0. Nowadays,
all new cdrom drives are either IDE or SCSI, and these drivers support the
new cdrom interface in the kernel 2.1 line. We hope that the other
`old' cdrom divers will eventually support the new interface, so that
the behaviour of Linux cdrom drives is truly uniform.
The new cdrom interface level was actually inspired after writing a
volume daemon that automatically mounts a cdrom at the location
.RI /cdrom/ volume
upon insertion of the disc. I then found out that there was a need for
finding out the status of the drive without trying to read data, and
that the uniformity of cdrom drivers was a mess. The volume daemon has
not been finished yet, but progress has been made in convincing the
Linux cdrom driver community to comply to the proposed standard.
Setting or clearing an option will result in a message indicating the
new status of that option. Operations not supported by the underlying
hardware, e.g., disc selection, will result in an error
condition. Several other ioctls may result an error condition if the
low-level drivers don't support that particular ioctl.
The default cdrom device. In most installations, this is a symbolic
link to the only cdrom device on the system. In multi cdrom systems,
the cdrom devices have to be explicitly named on the command line.
The header file for the new cdrom interface. Please consult this file
first if you want to use ioctl calls in your program to control the
cdrom drives. Maybe you can get want you want by controlling the
behaviour of the cdrom, instead of issuing direct commands. At any
rate, use the O_NONBLOCK option if you open the device for
Location where O_NONBLOCK is defined.
A piece of proza originally written for cdrom driver
developers. However, cd player program developers may benefit from the
explanation of new ioctls defined in the new cdrom interface. You can
view the documentation by issuing
I am sorry that you'll have to install TeX, latex and xdvi first, but
you may have success in reading the plain latex source; after all, it
Long-style options are not supported.
.SH "TO DO"
CD medium catalog number could be given for audio cd's. However, not
many cd's bare that kind of information.
Somehow convince the `old-style' cdrom driver developers to adapt their
drivers to the new interface, it shouldn't be that much work.
Write texinfo documentation.
is written by David A. van Leeuwen <email@example.com>, the author of
the earlier mentioned new cdrom interface and the cm206 cdrom driver.
.SH "SEE ALSO"
.BR mount (1),
.BR open (2),
.BR ioctl (2).