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



NNAAMMEE
       scgcheck - check and validate the ABI of libscg

SSYYNNOOPPSSIISS
       ssccggcchheecckk [ _o_p_t_i_o_n_s ]


DDEESSCCRRIIPPTTIIOONN
       SSccggcchheecckk  is  used  to  check  and  verify the Application
       Binary Interface of libscg.


       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
       ssccgg..  Other operating systems are using a library  simula-
       tion  of  this  driver.   Possible  syntax  is: ddeevv== _s_c_s_i_-
       _b_u_s,_t_a_r_g_e_t,_l_u_n or ddeevv== _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: ddeevv== _d_e_v_i_c_e_-
       _n_a_m_e:_s_c_s_i_b_u_s,_t_a_r_g_e_t,_l_u_n or ddeevv== _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  short-
       hand  in  the  form  ddeevv==  _d_e_v_i_c_e_n_a_m_e:_@  or  ddeevv==  _d_e_v_i_c_e_-
       _n_a_m_e:_@,_l_u_n may be used instead  of  ddeevv==  _d_e_v_i_c_e_n_a_m_e:_s_c_s_i_-
       _b_u_s,_t_a_r_g_e_t,_l_u_n.


       To  access  remote  SCSI  devices, you need to prepend the
       SCSI device name by a remote device indicator. The  remote
       device   indicator   is   either   RREEMMOOTTEE::_u_s_e_r_@_h_o_s_t_:  or
       RREEMMOOTTEE::_h_o_s_t_:
       A valid remote SCSI device name may be:  RREEMMOOTTEE::_u_s_e_r_@_h_o_s_t_:
       to     allow     remote     SCSI     bus    scanning    or
       RREEMMOOTTEE::_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 rreeaaddccdd portable to all UNIX platforms, the syntax
       ddeevv==  _d_e_v_i_c_e_n_a_m_e:_s_c_s_i_b_u_s,_t_a_r_g_e_t,_l_u_n  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
       //vvaarr//aaddmm//mmeessssaaggeess for more information about the SCSI con-
       figuration  of your machine.  If you have problems to fig-
       ure 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 --ssccaannbbuuss option of ccddrreeccoorrdd.


OOPPTTIIOONNSS
       --vveerrssiioonn
              Print version information and exit.

       ddeevv==_t_a_r_g_e_t
              Sets  the SCSI target default for SCSI Bus scanning
              test, see notes above.  This allows e.g. to specify
              to  use  Solaris  USCSI  or remote SCSI for the bus
              scanning case.

              For the non bus scanning  case,  a  typical  device
              specification  is  ddeevv==_6_,_0 .  If a filename must be
              provided together with the numerical target  speci-
              fication,  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  support,
              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 ddeevv==_/_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, ccddrreeccoorrdd will  try  to
              get the device from the CCDDRR__DDEEVVIICCEE environment.

              If the argument to the ddeevv== 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).

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

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

       kkddeebbuugg==#, kkdd==#
              Tell the ssccgg-driver  to  modify  the  kernel  debug
              value while SCSI commands are running.

       --ssiilleenntt, --ss
              Do  not  print  out a status report for failed SCSI
              commands.

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

       --VV     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.  --VVVV will show data buffer content
              in addition.  Using --VV or --VVVV slows down  the  pro-
              cess.

       ff==_f_i_l_e Specify   the  log  file  to  be  used  instead  of
              _c_h_e_c_k_._l_o_g.


EEXXAAMMPPLLEESS
FFIILLEESS
SSEEEE AALLSSOO
       ccddrreeccoorrdd(1), rreeaaddccdd(1), mmkkiissooffss(1), ssccgg(7).


NNOOTTEESS
       When using ssccggcckkeecckk with the  broken  LLiinnuuxx  SSCCSSII  ggeenneerriicc
       ddrriivveerr..   You  should note that ssccggcchheecckk uses a hack, that
       tries to emulate the  functionality  of  the  scg  driver.
       Unfortunately,  the  sg driver on LLiinnuuxx 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.  SSccggcchheecckk for
              that reason cannot report failing SCSI commands  in
              some situations.

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

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


DDIIAAGGNNOOSSTTIICCSS
       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: II//OO eerrrroorr 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.  ffaattaall eerrrroorr 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 _c_o_p_y command. If the error mes-
       sage  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 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 realy needed to complete.


BBUUGGSS
CCRREEDDIITTSS
MMAAIILLIINNGG LLIISSTTSS
AAUUTTHHOORR
       Joerg Schilling
       Seestr. 110
       D-13353 Berlin
       Germany

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

       If you have support questions, send them to:

       ccddrreeccoorrdd--ssuuppppoorrtt@@bbeerrlliiooss..ddee
       or ootthheerr--ccddwwrriittee@@lliissttss..ddeebbiiaann..oorrgg

       Of you have definitely found a bug, send a mail to:

       ccddrreeccoorrdd--ddeevveellooppeerrss@@bbeerrlliiooss..ddee
       or sscchhiilllliinngg@@ffookkuuss..ffhhgg..ddee

       To subscribe, use:

       hhttttpp::////lliissttss..bbeerrlliiooss..ddee//mmaaiillmmaann//lliissttiinnffoo//ccddrreeccoorrdd--ddeevveelloopp--
       eerrss
       or  hhttttpp::////lliissttss..bbeerrlliiooss..ddee//mmaaiillmmaann//lliissttiinnffoo//ccddrreeccoorrdd--ssuupp--
       ppoorrtt



Joerg Schilling            Version 2.0                SCGCHECK(1)
