


READCD(1)            Schily's USER COMMANDS             READCD(1)



NNNNAAAAMMMMEEEE
     readcd - read or write data Compact Discs

SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
     rrrreeeeaaaaddddccccdddd ddddeeeevvvv====_d_e_v_i_c_e [ _o_p_t_i_o_n_s ]


DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
     RRRReeeeaaaaddddccccdddd is used to read or write Compact Discs.

     The _d_e_v_i_c_e refers to _s_c_s_i_b_u_s/_t_a_r_g_e_t/_l_u_n of the  drive.  Com-
     munication  on  _S_u_n_O_S  is  done with the SCSI general driver
     ssssccccgggg.... Other operating systems are using a library  simulation
     of    this    driver.     Possible    syntax    is:     ddddeeeevvvv====
     _s_c_s_i_b_u_s,_t_a_r_g_e_t,_l_u_n or ddddeeeevvvv==== _t_a_r_g_e_t,_l_u_n.  In the latter  case,
     the drive has to be connected to the default SCSI bus of the
     machine.  _S_c_s_i_b_u_s, _t_a_r_g_e_t and _l_u_n 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:     ddddeeeevvvv====
     _d_e_v_i_c_e_n_a_m_e:_s_c_s_i_b_u_s,_t_a_r_g_e_t,  or  ddddeeeevvvv====  _d_e_v_i_c_e_n_a_m_e:_t_a_r_g_e_t,_l_u_n.
     If  the  name  of the device node that has been specified on
     such a system refers to exactly one SCSI device, a shorthand
     in  the  form ddddeeeevvvv==== _d_e_v_i_c_e_n_a_m_e:@ or ddddeeeevvvv==== _d_e_v_i_c_e_n_a_m_e:@,_l_u_n may
     be used instead of ddddeeeevvvv==== _d_e_v_i_c_e_n_a_m_e:_s_c_s_i_b_u_s,_t_a_r_g_e_t,


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


     To make rrrreeeeaaaaddddccccdddd portable to all UNIX  platforms,  the  syntax
     ddddeeeevvvv====  _d_e_v_i_c_e_n_a_m_e:_s_c_s_i_b_u_s,_t_a_r_g_e_t, 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
     _s_c_s_i_b_u_s,_t_a_r_g_e_t,_l_u_n.


     _S_c_s_i_b_u_s 0 is the default SCSI bus on the machine. Watch  the
     boot   messages   for   more   information   or   look  into
     ////vvvvaaaarrrr////aaaaddddmmmm////mmmmeeeessssssssaaaaggggeeeessss for more information about the SCSI confi-
     guration  of  your  machine.  If you have problems to figure
     out what values for _s_c_s_i_b_u_s,_t_a_r_g_e_t,_l_u_n should be  used,  try
     the ----ssssccccaaaannnnbbbbuuuussss option of ccccddddrrrreeeeccccoooorrrrdddd.





Joerg Schilling     Last change: Version 1.10                   1






READCD(1)            Schily's USER COMMANDS             READCD(1)



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

     ----vvvveeeerrrrssssiiiioooonnnn
          Print version information and exit.

     ddddeeeevvvv====_t_a_r_g_e_t
          Sets the SCSI target for the drive, see notes above.  A
          typical   device  specification  is  ddddeeeevvvv====_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 _F_r_e_e_B_S_D system without _C_A_M sup-
          port,   you  need  to  use  the  control  device  (e.g.
          /_d_e_v/_r_c_d_0._c_t_l).  A correct device specification in this
          case may be ddddeeeevvvv====/_d_e_v/_r_c_d_0._c_t_l:@ .

          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 _d_e_v option is present, ccccddddrrrreeeeccccoooorrrrdddd will try  to  get
          the device from the CCCCDDDDRRRR____DDDDEEEEVVVVIIIICCCCEEEE environment.

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

     ttttiiiimmmmeeeeoooouuuutttt====#
          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  _t_i_m_e_o_u_t
          option  is  present, a default timeout of 40 seconds is
          used.

     ddddeeeebbbbuuuugggg====#, ----dddd
          Set the misc debug value to # (with debug=#) or  incre-
          ment  the  misc  debug  level  by one (with -d). If you
          specify -_d_d, this equals to ddddeeeebbbbuuuugggg====_2.  This may help  to
          find  problems  while  opening a driver for libscg.  as
          well as with sector sizes and sector types.   Using   ----



Joerg Schilling     Last change: Version 1.10                   2






READCD(1)            Schily's USER COMMANDS             READCD(1)



          ddddeeeebbbbuuuugggg  slows down the process and may be the reason for
          a buffer underrun.

     kkkkddddeeeebbbbuuuugggg====#, kkkkdddd====#
          Tell the ssssccccgggg-driver to modify the  kernel  debug  value
          while SCSI commands are running.

     ----ssssiiiilllleeeennnntttt, ----ssss
          Do not print out a status report for failed  SCSI  com-
          mands.

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

     ----VVVV    Increment the verbose level with respect of SCSI  com-
          mand  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.  ----VVVVVVVV  will  show
          data buffer content in addition.  Using ----VVVV or ----VVVVVVVV slows
          down the process.

     ffff====_f_i_l_e

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

     sssseeeeccccttttoooorrrrssss====_r_a_n_g_e
          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.

     ----nnnnoooottttrrrruuuunnnncccc
          Do not truncate the outputfile when opening it.


EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
     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 _c_d_i_m_a_g_e._r_a_w:

         readcd dev=2,0 f=cdimage.raw

     To read sectors from range 150 ... 10000 from a CD-ROM writ-
     ing the data to the file _c_d_i_m_a_g_e._r_a_w:

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





Joerg Schilling     Last change: Version 1.10                   3






READCD(1)            Schily's USER COMMANDS             READCD(1)



     To write the data from the file _c_d_i_m_a_g_e._r_a_w (e.g. a filesys-
     tem image from mmmmkkkkiiiissssooooffffssss) to a DVD-RAM, call:

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


FFFFIIIILLLLEEEESSSS
SSSSEEEEEEEE AAAALLLLSSSSOOOO
     ccccddddrrrreeeeccccoooorrrrdddd(1), mmmmkkkkiiiissssooooffffssss(1), ssssccccgggg(7), ffffbbbbkkkk(7).


NNNNOOOOTTTTEEEESSSS
     If you don't want to allow users to become root on your sys-
     tem,  rrrreeeeaaaaddddccccdddd  may safely be installed suid root. This allows
     all users or a group of users with no root privileges to use
     rrrreeeeaaaaddddccccdddd.... RRRReeeeaaaaddddccccdddd in this case will only allow access to CD-ROM
     type drives- To give all user access to use rrrreeeeaaaaddddccccdddd,,,, enter:

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

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

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

     and add a group _c_d_b_u_r_n_e_r_s on your system.

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

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

     When using rrrreeeeaaaaddddccccdddd with the broken LLLLiiiinnnnuuuuxxxx SSSSCCCCSSSSIIII ggggeeeennnneeeerrrriiiicccc ddddrrrriiiivvvveeeerrrr....
     You  should note that rrrreeeeaaaaddddccccdddd uses a hack, that tries to emu-
     late the functionality of the  scg  driver.   Unfortunately,
     the sg driver on LLLLiiiinnnnuuuuxxxx 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.  RRRReeeeaaaaddddccccdddd  for  that
          reason  cannot  report  failing  SCSI  commands in some
          situations.

     +o     It cannot get real DMA count of transfer. RRRReeeeaaaaddddccccdddd  can-
          not tell you if there is an DMA residual count.




Joerg Schilling     Last change: Version 1.10                   4






READCD(1)            Schily's USER COMMANDS             READCD(1)



     +o     It cannot get number of  bytes  valid  in  auto  sense
          data.   RRRReeeeaaaaddddccccdddd  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).


DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
     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  kernel.  It
     usually  is:   IIII////OOOO  eeeerrrrrrrroooorrrr  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.
     ffffaaaattttaaaallll  eeeerrrrrrrroooorrrr means that it was not possible 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 avail-
     able,  followed  by the segment number that is only valid if
     the command was a _c_o_p_y command. If the error message is  not
     directly  related  to the current command, the text _d_e_f_e_r_r_e_d
     _e_r_r_o_r 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 _s_c_s_i_e_r_r_s._c .
     The text is followed by the error value for a field replace-
     able unit.



Joerg Schilling     Last change: Version 1.10                   5






READCD(1)            Schily's USER COMMANDS             READCD(1)



     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.


BBBBUUUUGGGGSSSS
CCCCRRRREEEEDDDDIIIITTTTSSSS
MMMMAAAAIIIILLLLIIIINNNNGGGG LLLLIIIISSSSTTTTSSSS
     If you want to actively take  part  on  the  development  of
     cdrecord, you may join the cdwriting mailing list by sending
     mail to:

          other-cdwrite-request@lists.debian.org

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

          cdwrite@lists.debian.org


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

     ccccddddrrrreeeeccccoooorrrrdddd----ssssuuuuppppppppoooorrrrtttt@@@@bbbbeeeerrrrlllliiiioooossss....ddddeeee
     or ooootttthhhheeeerrrr----ccccddddwwwwrrrriiiitttteeee@@@@lllliiiissssttttssss....ddddeeeebbbbiiiiaaaannnn....oooorrrrgggg

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

     ccccddddrrrreeeeccccoooorrrrdddd----ddddeeeevvvveeeellllooooppppeeeerrrrssss@@@@bbbbeeeerrrrlllliiiioooossss....ddddeeee
     or sssscccchhhhiiiilllllllliiiinnnngggg@@@@ffffooookkkkuuuussss....ggggmmmmdddd....ddddeeee

     To subscribe, use:

     hhhhttttttttpppp::::////////lllliiiissssttttssss....bbbbeeeerrrrlllliiiioooossss....ddddeeee////mmmmaaaaiiiillllmmmmaaaannnn////lllliiiissssttttiiiinnnnffffoooo////ccccddddrrrreeeeccccoooorrrrdddd----ddddeeeevvvveeeellllooooppppeeeerrrrssss
     or hhhhttttttttpppp::::////////lllliiiissssttttssss....bbbbeeeerrrrlllliiiioooossss....ddddeeee////mmmmaaaaiiiillllmmmmaaaannnn////lllliiiissssttttiiiinnnnffffoooo////ccccddddrrrreeeeccccoooorrrrdddd----ssssuuuuppppppppoooorrrrtttt









Joerg Schilling     Last change: Version 1.10                   6



