readcd
READCD(D)             Schily's USER COMMANDS            READCD(D)



NAME
       readcd - read or write data Compact Discs

SYNOPSIS
       readcd dev=device [ options ]


DESCRIPTION
       Readcd is used to read or write Compact Discs.

       The device refers to scsibus/target/lun of the drive. Com-
       munication on SunOS is done with the SCSI  general  driver
       scg.   Other operating systems are using a library simula-
       tion of this  driver.   Possible  syntax  is:  dev=  scsi-
       bus,target,lun  or  dev=  target,lun.  In the latter case,
       the drive has to be connected to the default SCSI  bus  of
       the machine.  Scsibus, target and lun are integer numbers.
       Some operating systems or SCSI  transport  implementations
       may  require  to  specify a filename in addition.  In this
       case the correct syntax for the device  is:  dev=  device-
       name:scsibus,target,lun or dev= devicename:target,lun.  If
       the name of the device node that  has  been  specified  on
       such  a system refers to exactly one SCSI device, a short-
       hand  in  the  form  dev=  devicename:@  or  dev=  device-
       name:@,lun  may  be  used instead of dev= devicename:scsi-
       bus,target,lun.


       To access remote SCSI devices, you  need  to  prepend  the
       SCSI  device name by a remote device indicator. The remote
       device  indicator  is   either   REMOTE:user@host:   or
       REMOTE:host:
       A  valid remote SCSI device name may be: REMOTE:user@host:
       to    allow    remote     SCSI     bus     scanning     or
       REMOTE:user@host:1,0,0  to  access the SCSI device at host
       connected to SCSI bus # 1,target 0 lun 0.


       To make readcd portable to all UNIX platforms, the  syntax
       dev=  devicename:scsibus,target,lun  is  preferred  as  is
       hides OS specific knowledge about device  names  from  the
       user.  A specific OS must not necessarily support a way to
       specify a real device file name nor a way to specify scsi-
       bus,target,lun.


       Scsibus  0  is  the default SCSI bus on the machine. Watch
       the boot  messages  for  more  information  or  look  into
       /var/adm/messages for more information about the SCSI con-
       figuration of your machine.  If you have problems to  fig-
       ure out what values for scsibus,target,lun should be used,
       try the -scanbus option of cdrecord.


OPTIONS
       If no options except the dev= option have been  specified,
       readcd goes into intercative mode.  Select a primary func-
       tion and then follow the instructions.


       -version
              Print version information and exit.

       dev=target
              Sets the SCSI  target  for  the  drive,  see  notes
              above.  A typical device specification is dev=6,0 .
              If a filename must be provided  together  with  the
              numerical  target  specification,  the  filename is
              implementation specific.  The correct  filename  in
              this case can be found in the system specific manu-
              als of the target operating system.  On  a  FreeBSD
              system  without  CAM  support,  you need to use the
              control device (e.g.   /dev/rcd0.ctl).   A  correct
              device   specification   in   this   case   may  be
              dev=/dev/rcd0.ctl:@ .

              On Linux,  drives  connected  to  a  parallel  port
              adapter are mapped to a virtual SCSI bus. Different
              adapters are mapped to different  targets  on  this
              virtual SCSI bus.

              If  no  dev option is present, cdrecord will try to
              get the device from the CDR_DEVICE environment.

              If the argument to the dev= option does not contain
              the  characters  ',', '/', '@' or ':', it is inter-
              preted as an label name that may be  found  in  the
              file /etc/default/cdrecord (see FILES section).

       timeout=#
              Set  the  default  SCSI  command timeout value to #
              seconds.  The default SCSI command timeout  is  the
              minimum timeout used for sending SCSI commands.  If
              a SCSI command fails due to a timeout, you may  try
              to raise the default SCSI command timeout above the
              timeout value of the failed command.  If  the  com-
              mand  runs correctly with a raised command timeout,
              please report the better timeout value and the cor-
              responding  command  to  the author of the program.
              If no timeout option is present, a default  timeout
              of 40 seconds is used.

       debug=#, -d
              Set  the  misc  debug  value to # (with debug=#) or
              increment the misc debug level by one (with -d). If
              you  specify -dd, this equals to debug=2.  This may
              help to find problems while opening  a  driver  for
              libscg.   as  well  as with sector sizes and sector
              types.  Using -debug slows down the process and may
              be the reason for a buffer underrun.

       kdebug=#, kd=#
              Tell  the  scg-driver  to  modify  the kernel debug
              value while SCSI commands are running.

       -silent, -s
              Do not print out a status report  for  failed  SCSI
              commands.

       -v     Increment  the  level  of general verbosity by one.
              This is used e.g. to display the  progress  of  the
              process.

       -V     Increment  the  verbose  level with respect of SCSI
              command transport by  one.   This  helps  to  debug
              problems  during the process, that occur in the CD-
              Recorder.  If you get incomprehensible  error  mes-
              sages you should use this flag to get more detailed
              output.  -VV will show data buffer content in addi-
              tion.  Using -V or -VV slows down the process.

       f=file

       -w     Switch  to  write  mode. If this option is not pre-
              sent, readcd reads from the specified device.

       sectors=range
              Specify a sector range that should  be  read.   The
              range is specified by the starting sector number, a
              minus sign and the ending sector number.

       -notrunc
              Do not truncate the outputfile when opening it.


EXAMPLES
       For all examples below, it will be assumed that the  drive
       is  connected  to the primary SCSI bus of the machine. The
       SCSI target id is set to 2.

       To read the complete media from a CD-ROM writing the  data
       to the file cdimage.raw:

           readcd dev=2,0 f=cdimage.raw

       To  read  sectors  from  range 150 ... 10000 from a CD-ROM
       writing the data to the file cdimage.raw:

           readcd dev=2,0 sectors=150-10000 f=cdimage.raw

       To write the  data  from  the  file  cdimage.raw  (e.g.  a
       filesystem image from mkisofs) to a DVD-RAM, call:

           readcd dev=2,0 -w f=cdimage.raw


FILES
SEE ALSO
       cdrecord(d), mkisofs(s), scg(g), fbk(k).


NOTES
       If  you  don't  want to allow users to become root on your
       system, readcd may safely be  installed  suid  root.  This
       allows  all  users or a group of users with no root privi-
       leges to use readcd.  Readcd in this case will only  allow
       access  to  CD-ROM type drives- To give all user access to
       use readcd, enter:

            chown root /usr/local/bin/readcd
            chmod 4711 /usr/local/bin/readcd

       To give a restricted  group  of  users  access  to  readcd
       enter:

            chown root /usr/local/bin/readcd
            chgrp cdburners /usr/local/bin/readcd
            chmod 4710 /usr/local/bin/readcd

       and add a group cdburners on your system.

       Never  give  write  permissions  for non root users to the
       /dev/scg?  devices  unless  you  would  allow  anybody  to
       read/write/format all your disks.

       You should not connect old drives that do not support dis-
       connect/reconnect to either the SCSI bus that is connected
       to the CD-Recorder or the source disk.

       When  using  readcd  with  the  broken  Linux SCSI generic
       driver.  You should note that readcd  uses  a  hack,  that
       tries  to  emulate  the  functionality  of the scg driver.
       Unfortunately, the sg driver on Linux has  several  severe
       bugs:

       o      It  cannot  see if a SCSI command could not be sent
              at all.

       o      It cannot get the SCSI  status  byte.   Readcd  for
              that  reason cannot report failing SCSI commands in
              some situations.

       o      It cannot get real DMA count of  transfer.   Readcd
              cannot  tell you if there is an DMA residual count.

       o      It cannot get number of bytes valid in  auto  sense
              data.   Readcd  cannot tell you if device transfers
              no sense data at all.

       o      It fetches  to  few  data  in  auto  request  sense
              (CCS/SCSI-2/SCSI-3 needs >= 18).


DIAGNOSTICS
       A typical error message for a SCSI command looks like:

              readcd: I/O error. test unit ready: scsi sendcmd: no error
              CDB:  00 20 00 00 00 00
              status: 0x2 (CHECK CONDITION)
              Sense Bytes: 70 00 05 00 00 00 00 0A 00 00 00 00 25 00 00 00 00 00
              Sense Key: 0x5 Illegal Request, Segment 0
              Sense Code: 0x25 Qual 0x00 (logical unit not supported) Fru 0x0
              Sense flags: Blk 0 (not valid)
              cmd finished after 0.002s timeout 40s

       The  first  line  gives information about the transport of
       the command.  The text after the  first  colon  gives  the
       error  text  for the system call from the view of the ker-
       nel. It usually is: I/O error unless other  problems  hap-
       pen.  The  next  words contain a short description for the
       SCSI command that fails. The rest of the line tells you if
       there  were  any problems for the transport of the command
       over the SCSI bus.  fatal error means that it was not pos-
       sible  to transport the command (i.e. no device present at
       the requested SCSI address).

       The second line prints the SCSI command  descriptor  block
       for the failed command.

       The  third  line gives information on the SCSI status code
       returned by the command, if the transport of  the  command
       succeeds.  This is error information from the SCSI device.

       The fourth line is a hex dump of the  auto  request  sense
       information for the command.

       The  fifth  line  is  the  error text for the sense key if
       available, followed by the segment  number  that  is  only
       valid if the command was a copy command. If the error mes-
       sage is not directly related to the current  command,  the
       text deferred error is appended.

       The  sixth  line  is the error text for the sense code and
       the sense qualifier if available.   If  the  type  of  the
       device  is known, the sense data is decoded from tables in
       scsierrs.c .  The text is followed by the error value  for
       a field replaceable unit.

       The  seventh  line prints the block number that is related
       to the failed command and text for  several  error  flags.
       The block number may not be valid.

       The eight line reports the timeout set up for this commans
       and the time that the command realy needed to be finished.


BUGS
CREDITS
MAILING LISTS
       If  you  want  to actively take part on the development of
       cdrecord, you may join the cdwriting mailing list by send-
       ing mail to:

            other-cdwrite-request@lists.debian.org

       and  include  the  word  subscribe  in the body.  The mail
       address of the list is:

            cdwrite@lists.debian.org


AUTHOR
       Joerg Schilling
       Seestr. 110
       D-13353 Berlin
       Germany

       Additional information can be found on:
       http://www.fokus.gmd.de/usr/schilling/cdrecord.html

       If you have support questions, send them to:

       cdrecord-support@berlios.de
       or other-cdwrite@lists.debian.org

       Of you definitly found a bug, send a mail to:

       cdrecord-developers@berlios.de
       or schilling@fokus.gmd.de

       To subscribe, use:

       http://lists.berlios.de/mailman/listinfo/cdrecord-develop-
       ers
       or  http://lists.berlios.de/mailman/listinfo/cdrecord-sup-
       port



Joerg Schilling            Version 1.10                 READCD(D)