Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Feb 1997 18:36:23 -0800
From:      amor@geop.ubc.ca (John Amor)
To:        freebsd-scsi@freebsd.org
Subject:   HP6020i CDR fails on fixation
Message-ID:  <199702060236.SAA01750@moho.ubc.ca>

next in thread | raw e-mail | index | archive | help

I am having problems sending the fixate command to a HP6020i CDR.
The worm.c code burns the file system but dies when the final 
fixate command is given. Resulting in a useless CD. Doing a dry run
with the dummy option is fine. The only changes I have made was;

 1) add the following to the scsiconf.c code to identify the device at 
    boot time.

        {
                T_READONLY, T_WORM, T_REMOV, "HP", "CD-Writer 6020", "*",
                "worm", SC_ONE_LU
        },

 2) commented out the two calls "scsi_stop_unit" and "scsi_prevent"
    in the worm_close function in worm.c.
    These lines seemed to casued the drive to report "Not Ready" for 
    any command after the "wormcontrol select HP 4020i" was run. 
    Opening and closing the CDR clears the message.


Here is the run that failed

  # wormcontrol select HP 4020i
  # wormcontrol prepdisk double
  # wormcontrol track data
  # rtprio 5 team -v 1m 5 < cnsn8.cd | rtprio 5 dd of=/dev/rworm0 obs=20k
  631938 kilobytes, 2099 seconds
  1263876+0 records in
  31596+1 records out
  647104512 bytes transferred in 2109.314342 secs (306784 bytes/sec)
  # wormcontrol fixate 1
  wormcontrol: ioctl(WORMIOFIXATION): Input/output error
  #
Note: 3-5 second delay from fixate command and error message (as I recall).

>From the worm.c code

 hp4020i_finalize_disk(struct scsi_link *sc_link, int toc_type, int onp)
{
	struct scsi_fixation cmd;

	SC_DEBUG(sc_link, SDEV_DB2, ("hp4020i_finalize_disk"));

	if (toc_type < 0 || toc_type > WORM_TOC_TYPE_CDI)
		return EINVAL;

	/*
	 * Fixate this session.  Mark the next one as opened if onp
	 * is true.  Otherwise, the disk will be finalized once and
	 * for all.  ONP stands for "open next program area".
	 */
	
	bzero(&cmd, sizeof(cmd));
	cmd.op_code = FIXATION;
	cmd.action = (onp? WORM_FIXATION_ONP: 0) + toc_type;
	return scsi_scsi_cmd(sc_link,
			     (struct scsi_generic *) &cmd,
			     sizeof(cmd),
			     0,	/* no data transfer */
			     0,
			     1,
			     20*60*1000, /* takes a huge amount of time */
			     NULL,
			     0);
}

It would appear that scsi_scsi_cmd is returning EIO ???

If I am way off base perhaps someone could suggest a more likely 
location for the problem. 

I hate to create more coasters for my coffee cup.

Thanks,

John
----------------------------------------------------------------------------
   John Amor -- Systems Manager --   Geophysical Research Processing Facility
  amor@eos.ubc.ca    (604) 822-6933    Department of Earth and Ocean Sciences
 http://www.geop.ubc.ca/~amor/amor.html  University of British Columbia, Canada
------------------------------------------------------------------------------


F.Y.I.  More background...

The HP-4020i scsi command info is in the http://www.hp.com/isgsupport/cdr 
under product info.
-----------------------------------------------------------------------
 According to various people, the philips cdd2600 is the same unit as the 
HP6020. From the philips site they have a manual for the 2600 which gives
the scsi command set used.
 
.... from philips online manual for the CDD2600 ...
 
 The following lists the supported SCSI commands. An extensive description
of the total command set is avaliable on request.
 
Messages
         in = Target to Initiator
         out = Initiator to Target
00h  command complete in
02h  save data pointer in
04h  disconnect in
06h  abort out
07h  message reject in out
08h  no operation out
0ch  bus device reset out
80h+ identify in out

Recorder group 0 commands
 
00  Test unit ready
01  Rezero Unit
03  Request Sense
08  Read
0a  write
0b  Seek
12  Inquiry
15  Mode Select
16  Reserve
17  Release
18  Copy
1a  Mode Sense
1b  Start/Stop Unit
1c  Recieve Diagnostic Results
1d  send Diagnostics
1e  prevent/Allow medium removal
 
Group 1& 2 - ten byte commands
 
25  Read Capacity
28  Read
2a  write
2b  Seek
2f  Verify
35  Flush Cashe
3b  Write Buffer
3c  Read Buffer
42  Read Sub Channel
43  Read Disk info
45  Play Audio
47  Play Audio MSF
48  Play Audio Track / Index
4b  Pause Resume
55  mode select
5a  mode sense
 
Vendor Unique commands
 
d1  Read Disc ID
d2  READ OPC
d3  write OPC
e2  First writable address
e3  format track
e4  reserve track
e5  read track info
e6  write track
e7  medium load/unload
e8  finish track
e9  fixation (write leadin and leadout)
eb  send absorption control errors
ec  recover
ed  write
ee  read session info
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702060236.SAA01750>