Provided by: wodim_1.1.11-3.4_amd64 bug


       readom - read or write data Compact Discs


       readom dev=device [ options ]


       Readom is used to read or write Compact Discs.

       The device refers to a device location similar to the one used in the wodim command. Refer
       to its manpage for details.

       Also note that this version of  readom  uses  a  modified  libusal  library  which  has  a
       different behaviour compared to the one distributed by its original author.


       If  no  options  except  the dev= option have been specified, readom goes into interactive
       mode.  Select a primary function and then follow the instructions.

              Print version information and exit.

              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 manuals 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, readom will try to get the device from the CDR_DEVICE

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

              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 command runs correctly with a
              raised  command  timeout,  please  report  the  better  timeout   value   and   the
              corresponding  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 libusal.  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 usal-driver to modify the kernel  debug  value  while  SCSI  commands  are

       -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 messages you should use this flag to get  more  detailed
              output.  -VV will show data buffer content in addition.  Using -V or -VV slows down
              the process.

       f=file Specify the filename where the output should be written  or  the  input  should  be
              taken from. Using '-' as filename will cause readom to use stdout resp. stdin.

       -w     Switch  to  write  mode.  If  this  option  is  not  present, readom reads from the
              specified device.

              Scans the whole CD or the range specified by the sectors=range for  C2  errors.  C2
              errors  are  errors  that  are  uncorrectable after the second stage of the 24/28 +
              28/32 Reed Solomon correction system at audio level (2352 bytes sector size). If an
              audio  CD  has  C2 errors, interpolation is needed to hide the errors. If a data CD
              has C2 errors, these errors are in most cases corrected by the  ECC/EDC  code  that
              makes 2352 bytes out of 2048 data bytes. The ECC/EDC code should be able to correct
              about 100 C2 error bytes per sector.

              If you find C2 errors you may want to reduce the speed using the speed=  option  as
              C2 errors may be a result of dynamic unbalance on the medium.

              Scan all SCSI devices on all SCSI busses and print the inquiry strings. This option
              may be used to find SCSI address of the devices on a system.  The  numbers  printed
              out as labels are computed by: bus * 100 + target

              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.  The end  sector  is  not
              included  in  the  list,  so  sectors=0-0 will not read anything and may be used to
              check for a CD in the drive.

              Set the speed factor of the  read  or  write  process  to  #.   #  is  an  integer,
              representing  a multiple of the audio speed.  This is about 150 KB/s for CD-ROM and
              about 172 KB/s for CD-Audio.  If no  speed  option  is  present,  readom  will  use
              maximum speed.  Only MMC compliant drives will benefit from this option.  The speed
              of non MMC drives is not changed.

              Using a lower speed may increase the readability of a CD or DVD.

       ts=#   Set the maximum transfer size for a single SCSI command to #.  The syntax  for  the
              ts= option is the same as for wodim fs=# or sdd bs=#.

              If  no ts= option has been specified, readom defaults to a transfer size of 256 kB.
              If libusal gets lower values from the operating system, the value is reduced to the
              maximum  value  that  is possible with the current operating system.  Sometimes, it
              may help to further reduce the transfer size or to enhance it, but note that it may
              take a long time to find a better value by experimenting with the ts= option.

              Do not truncate the output file when opening it.

              Retrieve a full TOC from the current disk and print it in hex.

       -clone Do  a  clone  read. Read the CD with all sub-channel data and a full TOC.  The full
              TOC data will be put into a file with similar name as with the f=  option  but  the
              suffix .toc added.

              Do  not  abort  if  the  high level error checking in readom found an uncorrectable
              error in the data stream.

              Switch the drive into a mode where it ignores read errors in data sectors that  are
              a  result of uncorrectable ECC/EDC errors before reading.  If readom completes, the
              error recovery mode of the drive is switched back to the remembered old mode.

              Set the retry count for high level retries in readom to #.  The default  is  to  do
              128  retries  which  may  be too much if you like to read a CD with many unreadable

              Meter the SCSI command overhead time.  This is done by executing  several  commands
              1000  times  and printing the total time used. If you divide the displayed times by
              1000, you get the average overhead time for a single command.

              Print read-speed at # locations.  The purpose of this option is to create a list of
              read  speed  values  suitable  for  e.g.  gnuplot.  The speed values are calculated
              assuming that 1000 bytes are one kilobyte as documented in the SCSI standard.   The
              output data created for this purpose is written to stdout.

              Output  the  speed  values  for meshpoints=# as factor based on single speed of the
              current medium.  This only works if readom is able to determine the current  medium


       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:

           readom dev=2,0 f=cdimage.raw

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

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

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

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


       RSH    If the RSH environment is present, the remote connection will not  be  created  via
              rcmd(3)  but  by calling the program pointed to by RSH.  Use e.g.  RSH=/usr/bin/ssh
              to create a secure shell connection.

              Note that this forces wodim to create a pipe to the rsh(1)  program  and  disallows
              wodim  to  directly  access the network socket to the remote server.  This makes it
              impossible to set up performance parameters and slows down the connection  compared
              to a root initiated rcmd(3) connection.

       RSCSI  If the RSCSI environment is present, the remote SCSI server will not be the program
              /opt/schily/sbin/rscsi but the program pointed to by RSCSI.  Note that  the  remote
              SCSI  server  program  name will be ignored if you log in using an account that has
              been created with a remote SCSI server program as login shell.


       wodim(1), genisoimage(1), rcmd(3), ssh(1).


       Unless you want to risk getting problems, readom should be run as root. If you don't  want
       to  allow  users  to become root on your system, readom may safely be installed suid root.
       For more information see the additional  notes  of  your  system/program  distribution  or
       README.suidroot which is part of the Cdrkit source.

       Documentation  of the wodim program contains more technical details which could also apply
       to readom.


       A typical error message for a SCSI command looks like:

              readom: 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 kernel. It
       usually is: I/O error unless other  problems  happen.  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 possible to transport the command (i.e. no device present at the requested SCSI

       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 message  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 command and the time that  the  command
       really needed to complete.


       The  readom  program  described  here  is  the  Cdrkit  spinoff  from  the original readcd
       application (see AUTHOR section for details). It may  contain  bugs  not  present  in  the
       original implementation.

       It is definitely less portable than the original implementation.

       For  platform  specific  bugs,  see  the  corresponding README.platform file in the Cdrkit
       documentation (eg. README.linux).


       If you want to actively take part on the development of readom, you may join the developer
       mailing list via this URL:

       The mail address of the list is:


       Joerg Schilling
       Seestr. 110
       D-13353 Berlin

       This  is  application is a spinoff from the original implementation of readcd delivered in
       the cdrtools package [1] created by Joerg Schilling, who deserves the most credits for its
       success. However, he is not involved into the development of this spinoff and therefore he
       shall not be made responsible for any problem caused by it. Do not try to get support from
       the original author!

       Additional information can be found on:

       If you have support questions, send them to

       If you have definitely found a bug, send a mail to this list or to

       writing at least a short description into the Subject and "Package: cdrkit" into the first
       line of the mail body.


       [1] Cdrtools 2.01.01a08 from May 2006,