Subject: Re: TK50Z-GA/SCSI?
To: Rick GC <rickgc@calweb.com>
From: Tom I Helbekkmo <tih@Hamartun.Priv.NO>
List: port-vax
Date: 02/23/1997 19:40:48
On Sun, 23 Feb 1997, Rick GC wrote:

> I have a TK50Z-GA (stand alone TK50 tape drive with power supply and some
> kind of interface card in it) which appears to have a SCSI bus on the back.
> I have tried connecting it to a PC running NetBSD, but the PC comes back
> with "SCSI1" for st0.  Will this drive only work with other DEC equipment?

Nope, you can use it with NetBSD on a PC or anything else with SCSI.
You just have to teach NetBSD to recognize the old clunker.  I got the
following from Michael L. Hitch, and have been using it for about six
months now, with no problems:

*** /store/ctm/src/sys/scsi/scsiconf.c	Mon Dec 23 08:39:11 1996
--- ./sys/scsi/scsiconf.c	Mon Dec 23 08:56:46 1996
***************
*** 448,453 ****
--- 448,457 ----
  	{{T_SEQUENTIAL, T_REMOV,
  	 "CALIPER ", "CP150           ", ""},     SDEV_NOLUNS},
  	{{T_SEQUENTIAL, T_REMOV,
+ 	 "DEC     ", "TZ30            ", ""},     SDEV_NOLUNS},
+ 	{{T_SEQUENTIAL, T_REMOV,
+ 	 "DEC     ", "TK50            ", ""},     SDEV_NOLUNS},
+ 	{{T_SEQUENTIAL, T_REMOV,
  	 "EXABYTE ", "EXB-8200        ", ""},     SDEV_NOLUNS},
  	{{T_SEQUENTIAL, T_REMOV,
  	 "SONY    ", "SDT-2000        ", "2.09"}, SDEV_NOLUNS},
***************
*** 635,640 ****
--- 639,653 ----
  			inqbuf.unused[len++] = '\0';
  		while (len < 3 + 28)
  			inqbuf.unused[len++] = ' ';
+ 		if (inqbuf.additional_length == 0) {
+ 			if (inqbuf.dev_qual2 == 0xb0) {
+ 				strncpy(inqbuf.unused+3, "DEC", 3);
+ 				strncpy(inqbuf.unused+11, "TZ30", 4);
+ 			} else if (inqbuf.dev_qual2 == 0xd0) {
+ 				strncpy(inqbuf.unused+3, "DEC", 3);
+ 				strncpy(inqbuf.unused+11, "TK50", 4);
+ 			}
+ 		}
  	}
  
  	finger = (struct scsi_quirk_inquiry_pattern *)scsi_inqmatch(&inqbuf,
*** /store/ctm/src/sys/scsi/st.c	Sat Dec  7 15:53:37 1996
--- ./sys/scsi/st.c	Sat Dec  7 16:10:59 1996
***************
*** 1560,1566 ****
  	_lto3b(number, cmd.number);
  
  	return scsi_scsi_cmd(st->sc_link, (struct scsi_generic *) &cmd,
! 	    sizeof(cmd), 0, 0, 0, 900000, NULL, flags);
  }
  
  /*
--- 1560,1566 ----
  	_lto3b(number, cmd.number);
  
  	return scsi_scsi_cmd(st->sc_link, (struct scsi_generic *) &cmd,
! 	    sizeof(cmd), 0, 0, 0, 2000000, NULL, flags);
  }
  
  /*

The first of these patches (obviously) helps it recognize the TZ30 and
TK50 drives, and the other one bumps the timeout on tape operations
enough that you can "mt fsf" past a large file on a TK50 without
NetBSD deciding that the drive died.  :-)

-tih
-- 
Popularity is the hallmark of mediocrity.  --Niles Crane, "Frasier"