Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Nov 97 18:20:34 +0100
From:      Jean-Marc Zucconi <jmz@cabri.obs-besancon.fr>
To:        michael_class@bbn.hp.com
Cc:        freebsd-scsi@freebsd.org
Subject:   Re: Burning Audio-CD on HP4020i does not work
Message-ID:  <9711021720.AA05572@cabri.obs-besancon.fr>
In-Reply-To: <345C64B2.2ED68420@hpbbse.bbn.hp.com> (message from Micha Class on Sun, 02 Nov 1997 12:32:02 %2B0100)

next in thread | previous in thread | raw e-mail | index | archive | help
>>>>> Micha Class writes:


 > Symtom:

 > Burning does not start, I get the following error-messages:

 > Nov  2 12:20:40 pc-micha /kernel: worm0: ILLEGAL REQUEST asc:2c,0
 > Command sequence error
 > Nov  2 12:20:42 pc-micha last message repeated 2 times

Try the patch below (which is in -current now). However I am surprised
that you were able to burn audio CDs with your script, because audio
burning requires a bloc size which is  a multiple of 2352.

Index: worm.c
===================================================================
RCS file: /home/ncvs/src/sys/scsi/worm.c,v
retrieving revision 1.46
diff -u -r1.46 worm.c
--- worm.c	1997/09/21 22:03:22	1.46
+++ worm.c	1997/10/11 05:32:04
@@ -139,6 +139,7 @@
 static errval worm_rezero_unit(struct scsi_link *sc_link);
 static errval worm_read_session_info(struct scsi_link *, struct wormio_session_info *);
 static int worm_sense_handler(struct scsi_xfer *);
+static errval worm_set_blksize(struct scsi_link *sc_link, int size);
 
 /* XXX should be moved out to an LKM */
 static errval rf4100_prepare_disk(struct scsi_link *, int dummy, int speed);
@@ -957,6 +958,31 @@
     return SCSIRET_CONTINUE;
 }
 
+static errval 
+worm_set_blksize(struct scsi_link *sc_link, int size)
+{
+    struct scsi_mode_select scsi_cmd;
+    struct {
+	struct scsi_mode_header header;
+	struct blk_desc desc;
+    } dat;
+    bzero(&scsi_cmd, sizeof(scsi_cmd));
+    bzero(&dat, sizeof(dat));
+    scsi_cmd.op_code = MODE_SELECT;
+    scsi_cmd.length = sizeof(dat);
+    dat.header.blk_desc_len = sizeof(struct blk_desc);
+    scsi_uto3b(size, dat.desc.blklen);
+    return scsi_scsi_cmd(sc_link,
+			  (struct scsi_generic *) &scsi_cmd,
+			  sizeof(scsi_cmd),
+			  (u_char *) &dat,
+			  sizeof(dat),
+			  /*WORM_RETRIES*/ 4,
+			  5000,
+			  NULL,
+			  SCSI_DATA_OUT);
+}
+
 static void
 worm_drvinit(void *unused)
 {
@@ -1230,12 +1256,9 @@
 			     60000, /* this may take a while */
 			     NULL,
 			     0);
-	if (!error) {
-	    struct wormio_prepare_track t;
-	    bzero (&t, sizeof (t));
-	    t.track_type = BLOCK_MODE_1;
-	    error = rf4100_prepare_track(sc_link, &t);
-	}
+	if (!error) 
+	    error = worm_set_blksize(sc_link, 2048);
+
 	return error;
 }
 
@@ -1532,12 +1555,9 @@
 			     60000, /* this may take a while */
 			     NULL,
 			     0);
-	if (!error) {
-	    struct wormio_prepare_track t;
-	    bzero (&t, sizeof (t));
-	    t.track_type = BLOCK_MODE_1;
-	    error = hp4020i_prepare_track(sc_link, &t);
-	}
+	if (!error) 
+	    error = worm_set_blksize(sc_link, 2048);
+
 	return error;
 }

Jean-Marc
 _____________________________________________________________________________
 Jean-Marc Zucconi       Observatoire de Besancon       F 25010 Besancon cedex
                   PGP Key: finger jmz@cabri.obs-besancon.fr



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