The tapetest.com is an interactive utility for exercising the 3server tape drive unit. It will work - returning valid status after each command completion - as long as the CME board and its SCSI host adapter function properly. The user interface is either from the remote console (boot on sw #4) or from the RS232 terminal (boot from sw #3), although the remote console interface is rather clumsy. Individual SCSI commands are available to the user. This combines with the unmodified command completion error status from the controller turn hardware troubleshooting into a straight forward process. There are 3 different types of error flags; they are: (1) SCSI interface error. This resulted from a command abort that is usually caused by the bus or controller-host interface problems. - SCSI interface error: no controller response. Causes: bad controller, wrong controller ID, bad SCSI cable, BUSY line signal on SCSI pin 36 is stuck high. - SCSI interface error: can not select controller, no bus-free-phase. Causes: BUSY (pin 36) and/or SELECT (pin 44) on SCSI bus are stuck low, RESET (pin 40) is stuck low, or bad SCSI flat cable. - SCSI interface error: controller is busy executing another command. Causes: A command issued while the controller is positioning the tape to beginning of media following reset or cartridge insertion. - SCSI interface error: unknown command. Causes: Bad copy of the program or bad CME board. - COMMAND ERROR: CHECK CONDITION RETURNED AFTER REQUEST SENSE. Causes: Bad CME, bad controller, bad SCSI flat cable. (2) Command error. These are error codes returned within the sense bytes. This is usually a sign of trouble either in the tape drive or the tape cartridge. See detail of request sense command for a list of sense key error codes. A peculiar command error: check condition returned after request sense is not an error code from the sense bytes; it is a code returned by the host SCSI software driver. It usually caused by a catastrophic failure either in the tape drive or the controller. (3) System error. These are write or read buffer compare error. Write buffer compare error is caused by a problem in the CME board; each data record in the write buffer is verified before it is written to the tape. Isolation of read buffer compare error can only be done by component substitution (ie. flat cables, tape cartridge, tape drive, controller, or the CME) and tape drive write/read head cleaning. Use a minimum 90% isopropyl alcohol to clean the head. Command list: (* = non SCSI command) (a) Select controller model (ADSI Python or ADAPTEC). (*) (b) Select controller address asignment (0-7). (*) (c) Reset SCSI bus. This is equivalent to power on reset. (d) Test unit ready. This can be used to check if the drive is powered-on with a non write protected cartridge inserted and ready for operation. (e) Set parameter/mode select. This command allows the host to configure the controller to the attached tape drive and set specific parameters related to write and read operation. This command must be issued ONCE in between EACH reset and write or read operations. The functional check command (q) will do this automatically. (f) Erase tape. (g) Retension tape. (h) Rewind to beginning of tape. (i) Set write/read pattern. A repeated hex word pattern will be used for writing and verifying. If there is no input or an illegal input, a default a5a5 hex pattern will be used instead. (j) Write. Up to 1000 record writes can be specified even though 480 records is usually enough to fill up a 60 mb tape cartridge. The controller has a 512 byte write/read buffer block. the 3server uses a 128kb record size in every write/read operation; this amounts to 256 blocks written or read for each record. Writing is normally done from beginning of tape, after rewinding or erasing. It can also begin from the current tape position if the previous command left the tape at position for the write; this can be accomplished by a previous write, write file mark, or space to end of recorded media command. Otherwise the write command will get an "illegal request" (5) sense key. (k) Write file mark. A block of special pattern is written onto the current position. This command has the same write requirement as shown in write command above. (l) Read. Up to 1000 record reads can be specified. Reading is normally done from beginning of tape, after rewinding or retension.It can also begin from the current tape position if the previous command left the tape at position for the read; this can be accomplished by a previous read. Otherwise the read command will get an "illegal request" (5) sense key. (m) Read/verify. Similar to read command except that each record read is compared against the pattern set in command (i). (n) Space to the end of recorded media. The tape will be left in the position to append data to the last block written. (o) Request sense. Whenever a non busy SCSI controller receives a command, after completing the command execution it may return an ok status in which case the host can issue a subsequent command, or it may return a check status in which case the host must issue a request sense command. This command returns to the host information regarding a check status condition, tape access retries, controller buffer status, and tape status. Sense information will be valid for the last check status sent to the host; sense data will be cleared when the controller receives a subsequent command. A check condition returned after request sense command is illegal; this is a sign of either CME or controller defect. The adaptec controller will return 16 bytes of sense information; for the ADSI controller, only the first 14 bytes are valid. The return bytes on the screen are shown as follows: Byte # 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F They are displayed in hex code. The format of the sense bytes are shown below. The most important information that you usually need are at bytes 02, 08, and 09. BIT Byte 7 6 5 4 3 2 1 0 |-----+-----+-----+-----+-----+-----+-----+-----| 00 |VALID| 1 | 1 | 1 | 0 | 0 | 0 | 0 | |-----+-----+-----+-----+-----+-----+-----+-----| 01 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |-----+-----+-----+-----+-----+-----+-----+-----| 02 | FM | EOM | 0 | 0 | SENSE KEY | |-----+-----+-----+-----+-----+-----+-----+-----| 03 | (MSB) | |- -+- -+- -+- -+- -+- -+- -+- -| 04 | | |- -+- -+- - BLOCK COUNT - -+- -+- -| 05 | | |- -+- -+- -+- -+- -+- -+- -+- -| 06 | (LSB) | |-----+-----+-----+-----+-----+-----+-----+-----| 07 | # OF ADDITIONAL BYTES (08h ADAPTEC, 06h ADSI) | |-----+-----+-----+-----+-----+-----+-----+-----| 08 | 0 | CNI | 0 | WRP | EOM | UDA | BNL | FIL | |-----+-----+-----+-----+-----+-----+-----+-----| 09 | 0 | 0 | NDA | 0 | BOM | 0 | 0 | POR | |-----+-----+-----+-----+-----+-----+-----+-----| 0A | (MSB) | |- -+- -+ DATA RETRIES COUNTER -+- -+- -| 0B | (LSB) | |-----+-----+-----+-----+-----+-----+-----+-----| 0C | (MSB) | |- -+- -+- UNDERRUN COUNTER -+- -+- -| 0D | (LSB) | |-----+-----+-----+-----+-----+-----+-----+-----| 0E | CURRENT TRACK POSITION OF WRITE/READ HEAD | adaptec only. |-----+-----+-----+-----+-----+-----+-----+-----| 0F | BLOCKS TO GO COUNT | adaptec only. |-----+-----+-----+-----+-----+-----+-----+-----| Note: A block = 512 bytes of data. VALID (bit 7, byte 00): This bit set indicates that the information contained in the BLOCK COUNT bytes (03-06) is valid. FM (bit 7, byte 02): This bit will be set to indicate that the last block processed was a file mark. Read and space command will terminate on a file mark. EOM (bit 6, byte 02): This bit will be set when the end of physical tape warning is encountered while accessing the last track of the tape. SENSE KEY (bits 0-3, byte 02): The sense key contains the error code (if any) that caused the last check status. A detail of possible error codes are listed separately below. BLOCK COUNT (bytes 03-06): The block count contains the number of 512-byte-blocks not processed (written to tape) from current command. This number is valid only if the VALID bit is set. The following information, contained in bytes 08 through 0f, provides additional error, controller state, and drive state data. CNI (bit 6, byte 08): This bit set indicates the tape cartridge is not inserted. WRP (bit 4, byte 08): This bit set indicates the inserted cartridge is write protected, inhibiting tape writes. EOM (bit 3, byte 08): This bit set indicates the end of physical tape warning has been detected. It's identical to bit 6, byte 02. UDA (bit 2, byte 08): This bit set indicates a block can not be successfully read or written. The controller will retry a read or write up to 16 times per block. BNL (bit 1, byte 08): This bit set indicates the block that the controller is attempting to access, block # N, can not be found. This will be reported when blocks N+1 and N+2 are found but block N is not after 16 attempts. This error may occur during any tape access and when locating the last block on the tape for appending. FIL (bit 0, byte 08): This bit set indicates that a file mark has been encountered. It is identical to bit 7, byte 02. NDA (bit 5, byte 09): This bit set indicates that a span of erased tape has been encountered. BOM (bit 3, byte 09): This bit set indicates that the tape is positioned at the physical beginning of the media. POR (bit 0, byte 09): This bit set indicates that a power-on or SCSI bus reset has occured. The sense key, Unit Attention (06) is always reported with this bit. DATA RETRIES COUNTER (bytes 0A-0B): The data retries counter contains the number of blocks rewritten due to errors during write operation. During a read operation, this counter contains the number of soft and hard errors, causing tape reposition, encountered. UNDERRUN COUNTER (bytes 0C-0D): It contains the number of times a normal streaming operation was interrupted because of an underrun or overrun of data in the controller buffer. CURRENT TRACK (byte 0E): This is relevant for the Adaptec controller only. It contains the track number (0-8) that the write/read heads are currently positioned over. BLOCKS TO GO COUNT (byte 0F): This is relevant for Adaptec controller only. It contains the number of 512-byte-blocks that have not been written to the tape. SENSE KEYS. The sense key returned in the unit sense information, indicates the error state causing the last check status. Sense key: Error: 0 No Sense 1 Recovered Error 2 Device Not Ready 3 Media Error 4 Hardware Error 5 Illegal Request 6 Unit Attention 7 Data Protect 8 Blank Check 9 * = "not used" A * B Aborted Command C * D Volume Overflow E * F * No Sense (0): No sense information available. The last command was executed succesfully. File mark or EOM may have been encountered, the appropriate sense bits will be set. Recoverable Error (1): The last tape access was successful after retries (within 16 times). Not Ready (2): The tape drive can not be accessed. This can be caused by no cartridge inserted, no power applied to tape drive, or a faulty flat cable connecting the controller and the drive. Media Error (3): The last tape access was unsuccessful. This is likely because of a flaw in the media. Hardware Error (4): The controller detected an unrecoverable data error. This is generally caused by the lack of capstan tach pulses from the tape drive or a faulty flat cable connecting the controller and the drive. Illegal Request (5): Illegal parameter was passed with the last command. Unit Attention (6): The tape cartridge has been changed (removed and reinserted) or a reset has occured since the last command. This will be returned in response to the first command received. The first command will result in a check status and NOT be executed. If this sense key is a result of a device reset, power on or SCSI bus, the POR bit will also be set. Data Protect (7): A write was tried onto a tape that is write protected. Blank Check (8): The end of recorded media was detected during a read. The host tried to read beyond the last recorded block number. Aborted Command (9): The controller aborted the command at the request of the host or because of a hardware failure such as a cartridge pull while a read or write was in progress. Volume Overflow (D): The physical end of media is detected before all data blocks specified are written onto the tape. (p) Write and read verify loop. These are loops (up to 1000 times) of: tape retension, write (up to 1000 records), tape retension, and read/verify. This command is useful for runing in the tape unit. The accumulated soft errors displayed on each pass of write/read are good indications of the condition of the write /read heads and/or the tape media. (q) Functional check. In this test a sequence of the following commands are issued: - Reset SCSI bus. - Command completion interrupt test. - Test unit ready. - Set parameter/mode select. - Erase tape. - Write 80 records (= 10mb). - Rewind. - Read and verify 80 records. - Rewind. - Space to end of recording. - Rewind. (r) Write read soft errors check. In this test a sequence of the following commands are issued: - Retention tape. - Write 20 mb in streaming. - Display write soft errors and pass/fail criteria. - Retention tape. - Read 20 mb in streaming. - Display read soft errors and pass/fail criteria. - Rewind. (s) Server (host adapter) interrupt line check. In this test, 80 test unit ready commands are issued with the interrupt line path to the server CPU being enabled. When the controller completes executing each command, it interrupts the CPU. Each time a command is issued a dash (-) is printed in the screen, and each time the controller interrupts the CPU a star (*) is printed in the screen. (t) Display sense byte buffer. This is useful for looking at the status of the tape system when an error just occur. Note: - In the SCSI implementation, the first command issued after reset or cartridge replacement is not executed and the error sense 6 is returned by the controller. The tapetest.com preserves this condition in write and read type commands; in other words the first write or read command issued will get error sense 6. But the rest of the commands will just be retried once automatically making it transparent to the user. - Whenever the SCSI bus is reset, command (e) set parameter/mode select must be issued at least ONCE before write or read command can be issued. - Whenever a SCSI interface error occurs, the sense bytes buffer becomes meaningless ----------------------------END--------------------------------------