Man Linux: Main Page and Category List

NAME

       setcd  -  set  various  flags  to  control  the behaviour of your cdrom
       device.

SYNOPSIS

       setcd [-hirs] [-ceflot 0|1] [-dx arg] [device ...]

DESCRIPTION

       Setcd 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)?

       Setcd 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).
       Setcd  can  list/probe/configure  several  cdrom   devices   at   once,
       independent  of  their  low-level  implementation.  Finally,  setcd can
       select a disc in a multi-disc cdrom  player  (juke-box),  and  set  the
       operating speed of the player.

OPTIONS

       Options  come  in  three  flavours: without arguments, with one boolean
       type argument and with a numeric argument. For boolean type  arguments,
       0  means  ‘clear option,’ and 1 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 /dev/cdrom will be used.

       -c 0|1 Clear/set auto-close flag. If the cdrom  device  is  opened  for
              data  access (e.g., using 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 open(2) call that they
              wish to open the device just for issuing ioctl(2) calls. Instead
              of  clearing  this  option,  consider  upgrading  your cd player
              program.

       -d drive
              Selects the cd in slot number drive in case the cdrom player  is
              a juke-box model.

       -e 0|1 Clear/set   EJECT_SW   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).

       -f 0|1 Clear/set  use-fflags  flag. The new cdrom interface specifies a
              special interpretation of the O_NONBLOCK option in  the  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 always 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).

       -h     Print copyright information and terse help.

       -i     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 program better.

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

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

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

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

       -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 must 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 setcd are considered
              modern and progressive enough to have this  option  selected  by
              default using the "-r" option.

       -x speed
              Sets  the  head-rate  of  the  cdrom  player  to speed times 150
              KB/sec, or speed times real-time  audio  playback.  The  special
              value  0 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.

HISTORY

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

DIAGNOSTICS

       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.

FILES

       /dev/cdrom
              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.
       /usr/include/linux/ucdrom.h
              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 ioctl-commanding.
       /usr/include/fcntl.h
              Location where O_NONBLOCK is defined.
       /usr/src/linux/Documentation/cdrom/cdrom-standard.tex
              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
                          latex cdrom-standard.tex
                          xdvi cdrom-standard
              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 is ASCII.

BUGS

       Long-style options are not supported.

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.

AUTHOR

       Setcd is written by  David  A.  van  Leeuwen  <david@elseware.nl>,  the
       author of the earlier mentioned new cdrom interface and the cm206 cdrom
       driver.

SEE ALSO

       mount(1), open(2), ioctl(2).