Introduced in 1989, the 4mm DDS DAT tape and drive had a capacity of 1.3GB and a transfer rate of 183 KB/sec. The speed and small cartridge size of the 4mm tape drives makes them an attractive and convenient way to store large amounts of data. DDS technology is based on 4mm helical-scan technology, initially developed for professional quality audio recording. Capacity has grown steadily with DDS capacity reaching 2GB with 90m tapes and DDS-2 drives doubling that to 4GB on 120m tapes. DDS-3 drives, introduced in 1997, triple the DDS-2 capacity, storing 12GB on a 125m tape. The recording density on a DDS-3 tape is an impressive 122Kbpi, nearly 100 times that of older 1/2" tape drives.
SGI has sold two basic DAT drives, a DDS(-1) model and a DDS-2 model. In addition, newer version of IRIX include built-in support of the Sony DDS-3 DAT drive. The DDS-1 model does not support hardware compression while the DDS-2 model does. Both models are capable of reading and writing DAT audio data as well.
While DAT tapes and the DDS recording format are standard, there are many options available for writing and reading DAT tapes. This can present a problem if you want to read tapes written on one system on another. This document will attempt to address some of these issues and is thus presented in a question and answer format, similar to a Frequently Asked Questions (FAQ) list:
hinv
lists my tape drive as "unknown"?
Under the IRIX operating system, 4mm DAT drives support many features. Not all of these features can be determined directly from the tape drive itself. Because of this, a configuration table is used to define their capabilities. This table is found in the file /var/sysgen/master.d/scsi. A special naming convention has been defined to allow access to the supported features of a particular drive. For a 4mm DAT tape drive, the device file names have the following format:
/dev/{r}mt/tps<controller-#>d<ID-#>{nr}{ns}{s}{v}{c}
controller-# the SCSI controller the drive is attached to
ID-# the SCSI id of the drive
nr no-rewind on close device
ns non-byte swapping device
s byte-swapping device
v variable blocking size device
c data compression device
The data compression device is only available under systems running IRIX 6.2 and later with a DDS-2 drive. Software control of hardware compression was not available prior to IRIX 6.2.
The /dev/mt
directory is a symbolic link to the /dev/rmt
directory and is provided for compatibility with older software.
Additionally, starting in IRIX 6.4, the hardware graph (/hw
)
supercedes the /dev structures, specifically the following symbolic
link structure exists:
/dev/mt -> /dev/rmt -> /hw/tape
So, in the following document, the string $TAPE_DIR
will refer to the top-level hardware tape directory.
For convenience, IRIX provides alternate names for the most commonly used devices. In the example above, these names, and the devices they correspond to are:
$TAPE_DIR
t/tps1d6v
$TAPE_DIR
/tps1d6nsv
$TAPE_DIR
/tps1d6nrv
$TAPE_DIR
/tps1d6nrnsv
This can be determined on any system by comparing the major and minor device numbers of /dev/tape (for example) with the corresponding files in /dev/rmt:
> ls -l /dev/tape
crw-rw-rw- 2 root sys 144,710 Sep 3 14:18 /dev/tape
major--^^^ ^^^--minor> ls -l $TAPE_DIR | grep "144,710"
crw-rw-rw- 1 root sys 144,710 Sep 3 14:18 tps1d6nsv
crw-rw-rw- 2 root sys 144,710 Sep 3 14:18 tps1d6v
In later versions of IRIX, the initial ls -l /dev/tape
may be linked directly to the actual SCSI tape driver, so the second
step above may not be needed.
Note that the default 4mm DAT tape device on an IRIX system uses variable blocking. This is the preferred device for data, and the required device for audio (all DAT tape drives sold by SGI support DAT audio capabilities, this may not be true for other manufacturer's units).
In systems where there is more than one tape device, the alternate names are provided for the drive with the highest number SCSI ID on the lowest numbered SCSI bus.
Users are cautioned to use hardware compression only if they are sure that the drive that will be used to read the tape also supports hardware compression.
<Return to the top>
The answer is to use hinv
and mt
.
DDS-1 example:
> hinv -c tape
Tape drive: unit 2 on SCSI controller 0: DAT
> mt -f $TAPE_DIR/tps0d2 status
Controller: SCSI
Device: ARCHIVE: Python 25601-XXX2.63
Status: 0x202
Drive type: DAT
Media : Not READY
DDS-2 example:
> hinv -c tape
Tape drive: unit 6 on SCSI controller 1: DAT
> mt -f $TAPE_DIR/tps1d6 status
Controller: SCSI
Device: ARCHIVE: Python 01931-XXX5.56
Status: 0x20266
Drive type: DAT
Media : READY, write protected, at BOT
DDS-3 example:
> hinv -c tape
Tape drive: unit 6 on SCSI controller 1: DAT
> mt -f $TAPE_DIR/tps1d6 status
Controller: SCSI
Device: SONY: SDT-9000...
Status: 0x20266
Drive type: DAT
Media : READY, write protected, at BOT
Note the construction of the TPS device name which is specified as $TAPE_DIR/tpsCdU
where "C
" is the controller ID and "U
"
is the SCSI ID of the tape drive itself. The last few digits in the Device:
string that indicate the firmware version, seem to be the key
distinguishing factor.
Another way is by color, all the DDS-1 drives I've seen have a black face plate while the DDS-2 drives are beige.
<Return to the top>hinv
lists my
tape drive as "unknown"?If you see the following:
> hinv -c tape Tape drive: unit 5 on SCSI controller 1: unknown
it is because IRIX only has built-in support for a limited number of DAT tape drives, usually just those that SGI resells. However, all is not lost, as it is rather easy to add your "unknown" drive to the list.
What follows is a complete start to finish example of adding an "unknown" DAT tape drive to an IRIX system. To do this, you'll need to log in a root (su) and edit the system configuration file that defines the "known" tape drive models. This file is located at:
/var/sysgen/master.d/scsi
You'll want to look for the tpsc_types{}
data structure
initialization section and make an entry for your DAT tape drive.
Before doing so, you'll need to get some information regarding the
vendor and product ID strings returned by the SCSI controller in the
drive itself.
Assuming you've booted your system with the DAT tape drive connected,
there will be some generic SCSI tape device drivers in the $TAPE_DIR
directory of your system. You can use the command:
> mt -f $TAPE_DIR/tpsCdU status
(where C is the SCSI controlled ID and U is the SCSI unit ID of the drive itself) to return this information. In my case, I'm trying to add a WangTEK DDS-1 DAT drive (unit 5 on on SCSI controller 1). The status information returned is:
> mt -f $TAPE_DIR
/tps1d5 status
Controller: SCSI
Device: WANGTEK: 6130-HS 4B18
Status: 0x200
Drive type: unknown
Media : Not READY
Based on this, I know the vendor ID is "WANGTEK" and the product ID is
"6130-HS". Now, I can edit the SCSI configuration file. You
should refer to the sytem include file /usr/include/sys/tpsc.h
to identify the fields in the data structure. In my case, I simply
chose another DDS1 DAT tape drive and modified a copy as follows:
Sample tpsc entry for IRIX 6.3:
struct tpsc_types tpsc_types[] = {
/* ... */
/* Added WANGTEK 6130-HS DDS1 DAT tape drive - r.c.brown@ieee.org */
{ DATTAPE,
TPDAT,
7, /* = length of "WANGTEK" */
7, /* = length of "6130-HS" */
"WANGTEK",
"6130-HS" /*DDS1*/,
0,
0,
{0},
/* Capabilities supported - No Audio, Compression */
MTCAN_BSF|MTCAN_BSR|MTCAN_APPEND|MTCAN_SETMK|MTCAN_PART|MTCAN_PREV|
MTCAN_SYNC|MTCAN_SPEOD|MTCAN_CHKRDY|MTCAN_VAR|MTCAN_SETSZ|
MTCAN_SILI|MTCAN_SEEK|MTCAN_CHTYPEANY,
/* minimum delay on i/o is 4 minutes, because when a retry is
* performed, the drive retries a number of times, and then
* rewinds to BOT, repositions, and tries again. */
40, /* transfer timeout */
4*60, /* minimum timeout for any cmd */
4*60, /* space cmd timeout */
5*60, /* timeout for very long operations */
512, /* default block size */
512*512, /* recommended blocking factor */
0, /* No-issue command length */
(u_char *)0 /* No issue commands */ },
/* ... */
}
Sample tpsc entry for IRIX 6.5:
struct tpsc_types tpsc_types[] = {
/* ... */
/* Added WANGTEK 6130-HS DDS1 DAT tape drive - r.c.brown@ieee.org */
{ DATTAPE,
TPDAT,
7, /* = length of "WANGTEK" */
7, /* = length of "6130-HS" */
"WANGTEK",
"6130-HS" /*DDS1*/,
0,
0,
{0},
/* Capabilities supported - No Audio, Compression */
MTCAN_BSF|MTCAN_BSR|MTCAN_APPEND|MTCAN_SETMK|MTCAN_PART|MTCAN_PREV|
MTCAN_SYNC|MTCAN_SPEOD|MTCAN_CHKRDY|MTCAN_VAR|MTCAN_SETSZ|
MTCAN_SILI|MTCAN_SEEK|MTCAN_CHTYPEANY,
/* minimum delay on i/o is 4 minutes, because when a retry is
* performed, the drive retries a number of times, and then
* rewinds to BOT, repositions, and tries again. */
40,
4*60,
4*60,
5*60,
3*3600,
512,
512*512,
tpsc_default_dens_count,
tpsc_default_hwg_dens_names,
tpsc_default_alias_dens_names,
{0}, 0, 0, 0,
0,
(u_char *)0},
/*...*/}
I only had to change the ID strings and their lengths, as well as
remove the MTCAN_AUDIO
and MTCAN_COMPRESS
capability bits. Other than that, all fields were left unchanged. The
entries in this file can and do change with versions of IRIX, so the
best bet is to follow the logic used in the above examples rather than
blindly cutting and pasting the entries into your system configuration.
Next, run the following commands (as root):
/etc/autoconfig -f
sync; sync
reboot
After your system reboots the new kernel, and the /dev/MAKEDEV
script is run, the $TAPE_DIR
directory will be
populated with device drivers for your DAT tape drive, hinv
and mt
will recognize it, etc. In my example:
> hinv -c tape
Tape drive: unit 5 on SCSI controller 1: DAT
> mt -f $TAPE_DIR/tps1d5 status
Controller: SCSI
Device: WANGTEK: 6130-HS 4B18
Status: 0x200
Drive type: DAT
Media : Not READY
> ls -l $TAPE_DIR
crw-rw-rw- 1 root sys 144,674 Sep 9 14:10 $TAPE_DIR/tps1d5
crw-rw-rw- 1 root sys 144,675 Sep 9 14:10 $TAPE_DIR/tps1d5nr
crw-rw-rw- 1 root sys 144,675 Sep 9 13:40 $TAPE_DIR/tps1d5nrns
crw-rw-rw- 1 root sys 144,679 Sep 9 14:10 $TAPE_DIR/tps1d5nrnsv
crw-rw-rw- 1 root sys 144,673 Sep 9 13:40 $TAPE_DIR/tps1d5nrs
crw-rw-rw- 1 root sys 144,677 Sep 9 14:10 $TAPE_DIR/tps1d5nrsv
crw-rw-rw- 1 root sys 144,679 Sep 9 14:10 $TAPE_DIR/tps1d5nrv
crw-rw-rw- 1 root sys 144,674 Sep 9 13:40 $TAPE_DIR/tps1d5ns
crw-rw-rw- 1 root sys 144,678 Sep 9 14:10 $TAPE_DIR/tps1d5nsv
crw-rw-rw- 1 root sys 144,672 Sep 9 13:40 $TAPE_DIR/tps1d5s
crw-rw-rw- 1 root sys 152,675 Sep 9 13:40 $TAPE_DIR/tps1d5stat
crw-rw-rw- 1 root sys 144,676 Sep 9 14:10 $TAPE_DIR/tps1d5sv
crw-rw-rw- 1 root sys 144,678 Sep 9 14:10 $TAPE_DIR/tps1d5v
As you can see, since this drive does not support compression, none of the tps*c devices are created.
<Return to the top>This has probably been asked before. How should the tpsc entry for an HP35480A/HP35470A DAT tape look like for IRIX? If the following example is used, you may get an error message like:
"disconnect on nonword boundary" - or - "unexpected EOF on tape..."
You need to set the dip switches on the HP drive correctly, so that they don't disconnect during data phase. This is also the reason you need to set the recommended block size to 128*512, as that is small enough that it will fit in the drive buffer. The DMA hardware in SGI workstations was not designed to work on non-word boundaries.
... { DATTAPE, TPDAT, 2, 8, "HP", "HP35480A", 0, 0, {0, 0, 0, 0}, MTCAN_BSF|MTCAN_BSR|MTCAN_APPEND|MTCAN_SETMK|MTCAN_PART|MTCAN_PREV| MTCAN_SYNC|MTCAN_SPEOD|MTCAN_CHKRDY|MTCAN_VAR|MTCAN_SETSZ| MTCAN_SILI|MTCAN_SEEK|MTCAN_CHTYPEANY, 40, 4*60, 4*60, 5*60, 1024, 128*512 }, { DATTAPE, TPDAT, 2, 8, "HP", "HP35470A", 0, 0, {0, 0, 0, 0}, MTCAN_BSF|MTCAN_BSR|MTCAN_APPEND|MTCAN_SETMK|MTCAN_PART|MTCAN_PREV| MTCAN_SYNC|MTCAN_SPEOD|MTCAN_CHKRDY|MTCAN_VAR|MTCAN_SETSZ| MTCAN_SILI|MTCAN_SEEK|MTCAN_CHTYPEANY, 80, 4*60, 4*60, 5*60, 1024, 128*512 }, ...
NOTE: Refer to the above section for incorporating the above tpsc entry into your system.
Here are the switch settings to use, along with various explanations.
switch 1 1 = compression enabled 2 1 = compression host controllable 3 0 = data phase disconnect disabled 4 1 = parity enabled 5 1 = default to variable block mode 6 1 = enable non-immediate file marks 7&8 00= Sun mode (11=hp, 10=dec)
Desired SCSI addr Desired density Enter setting 4 hi 0 4 lo 1 5 hi 2 5 lo 3 6 hi 4 6 lo 5 7 hi 6 7 lo 7
Specifically, the modification consists of re-mapping the three address select lines such that one of the three can be used to designate density, (high or low). Please refer to the diagram below. The remaining two lines while still used for address selection have been reassigned to accomodate the change. In particular, of the three lines bit0 is now assigned as density select. Bit1 and bit2 have been re-mapped as bit0 and 1 respectively, with the actual bit2 wired "high". Therefore, with the address select lines thus modified it is necessary to use the table above to obtain the correct address.
bit 2 1 0 +----+----+----+ +----+ | 1 | | | | | density +----+----+----+ +----+ ^ ^ ^ | | | +---+ +--+ +----------+ | | | +----+----+----+ | 1 | | | +----+----+----+ bit 2 1 0
More data regarding adding foreign DAT tape drives may be found at:
Python is the code name for a family of DAT tape drives originally trade marked by the Archive company which was purchased by Conner which merged with Seagate. The model of DDS-2 DAT tape drive available through SGI is based on the CTD8000H. You can visit the Archive/Conner/Seagate tape storage web pages for more information. Other vendors will usually have their product information on-line as well.
The Python DAT drives are fully DDS, DDS-DC, DDS-2, SCSI 1 and SCSI-2 compliant.
Lower | Upper | Description |
15 | 16 | Termination power, on=15-16 |
13 | 14 | Not connected |
11 | 12 | Active Terminator, enabled=-11-12 |
9 | 10 | Data Compression, disabled=9-10 |
7 | 8 | Power-on Self test, enabled=8-10 |
5 | 6 | SCSI ID bit 4 |
3 | 4 | SCSI ID bit 2 |
1 | 2 | SCSI ID bit 1 |
As configured by the factory, the drive's Data Compression option is disabled, meaning the jumper is installed between pins 9 and 10. In IRIX 6.2 and later operating system versions, you can control the Data Compression feature via software by specifying one of the hardware compression driver options when accessing the tape. This is usually done with the "-f /dev/rmt/tpsCdUc" option of tar, mt, etc. However, if you are running IRIX 5.3 or would like to have your drive default to hardware Data Compression mode, you can modify the default configuration jumper.
To remove this jumper (and thus enable Data Compression):
Reassemble the drive, connect it to your workstation and reboot the system. As IRIX boots, a script is run in the /dev directory named MAKEDEV and it will detect the DAT drive and its new features and build all the required device files.
<Return to the top>To ensure maximum portability with DAT (or other tapes for that matter) you need to take a few precautions. You really need to find the least common denominators of the possible source and destination tape drives you are (or might be) dealing with. Among these are:
tar
. Tar
is present on most systems and in my experience is the most likely to
be compatible.
Tar
uses the
blocking factor argument as the blocking factor for tape records.The
default is to use the results of the MTIOCGETBLKSIZE
ioctl
for tape when creating a tape (and for reading on fixed block size
devices, such as QIC) and to determine the block size (for variable
block size devices) when reading. See the output of:
> mt blksize
/var/sysgen/master.d/tpsc
. This
default blocking factor may be large enough that some non-SGI systems
will either not be able to determine the blocking factor automatically
when reading the tape, (thus requiring the b option be specified when
reading the tape), or in rare cases, to not be able to read the tape at
all. In the latter case, the b option with a smaller value must be
specified when writing the tape.
On a related topic, reading a "foreign" DAT tape on an SGI
system involves similar reasoning. If the tape driver reports a byte-swapping
error, use the opposite-endian tape device or use dd to read
and byte swap the file. Generally, the variable blocking factor option
will allow the tape driver to read the tape regardless of the blocking
factor used to write the tape. In some cases, you may get a message to insert
the next tape if the blocking factors don't line up exactly. If you
know there was only one tape in the archive, just hit the Enter
key to have the rest of the tape read. If the tape was written
compressed, you will need a DDS-DC drive to read it.
Also, if DDS-2 or DDS-3 media were used, you'll need at least that
level of drive to read the tape.
DAT products are designed to use data grade DDS DAT cartridges, which
comply with the specifications in the 3.81mm Helical-Scan Digital
Computer Tape Cartridge for Information Interchange, ANSI
X3B5/89-156
standard.
Notes:
The drives that support DDS-2 also recognize 120 meter MP+ cartridges and other MRS cartridges when MRS is enabled. MRS cartridges have a series of alternate opaque and clear stripes at the beginning of the tape. This striping classifies the media as data grade, rather than audio grade. Four recognition holes allow the drive sensors to identify the type of tape, its magnetic thickness, and to determine whether the tape is prerecorded or unrecorded or is a cleaning cartridge. Other cartridge features allow the drive to optically sense "cartridge in", BOT, and EOT.
Upon further inspection, the use of the media recognition holes is as follows:
Hole # | Description |
none | DAT or DDS1-60m |
1 | DDS2-120m |
2 | DDS1-90m |
3 | DDS Cleaning Tape |
4 | ? - Perhaps DDS3-125m |
What is interesting to note is that these holes do not seem to be used in combination. Also, it is if you try to save money buying a 120m Digital Audio Tape, you are just fooling yourself, as the drive will recognize it as DDS-1-60m.
<Return to the top>The DDS-2 tape drives are designed to use the industry standard DDS, DDS-DC, DDS-2, and DDS-2DC tape formats. A 120m DDS-2 tape is twice as long as a 60m DDS-1 tape, so if length were the only factor, you could expect 2.6 GB storage (2 x 1.3 GB). However, in DDS-2 format, 4.0 GB is written, or 50% more than length alone would account for. This is done by writing data in a narrow track, creating the additional capacity. Both the drive head assembly as well as the tape media must support this higher density. Compatibility between the different tape drives and media are as follows:
MRS stands for Media Recognition System. The latest generation of DDS equipment is designed to detect cartridges having MRS striped splicing tape. This tells the drive that it is working with media certified for digital data storage, thereby ensuring safe data storage for computer usage.
DDS-MRS subsystems detect MRS media to permit data-write operations. DDS tapes without MRS stripes become read-only. Conventional subsystems read and write to both tape types.
When using MRS tapes with an older DAT drive, verify that the drive has the ability to support the MRS.
For example, on the DAT drives sold by SGI, the DDS tape drive requires a minimum firmware revision of 2.96. A DDS-DC DAT drive requires a minimum revision level of 4.96 to support MRS. All DDS-2 and drives with 5.xx (Peregrine) or 6.xx (Scorpion) firmware versions are MRS compliant. The S4 switch, on drives that support the media recognition system without a firmware upgrade, enables or disables Media Recognition System (MRS) mode. The default is MRS disabled (S4 = ON). If S4 is ON, the drive reads or writes both MRS and non-MRS 4mm DAT media. If S4 is OFF, the drive only writes to MRS media. The drive reports a check condition if the media is non-data grade, and the sense key will be 07, Data Protect. The additional sense code and qualifier will be 30/00, Incompatible Media Installed. The drive reads any kind of 4mm DAT media when S4 is OFF.
If all your DAT tape media is MRS-encoded, then it might be useful to enable this feature. However, be advised that if you do, that one time you need to make a quick tape archive and all you have is a non-MRS tape, that tape is considered read-only by MRS. You'll need to shut down your system, re-configure the tape drive and reboot the system to write to the non-MRS tape.
<Return to the top>Spec. | Introduction (year) |
Data Transfer (Bytes/sec) |
Tape Length (meters) |
Native (GB) |
DC/Compressed (GB) |
DDS-1 | 1989 | 183K | 90 | 2.0 | 4.0 |
DDS-2 | 1993 | 360-750K | 120 | 4.0 | 8.0 |
DDS-3 | 1995 | 720K-1.5M | 125 | 12.0 | 24.0 |
DDS-4 | 1999 | 1-3M | 150 | 20 | 40 |
DDS-5 | 2001(est) | 1-6M | 150+ | 40 | 80 |