README.txt for Taped13.zip Tapedrv.exe -- IBM Tape Device Firmware Utility - v1.3 Files ----- README.txt This file Tapedrv.txt Tapedrv documentation Tapedrv.exe Tapedrv executable Tapedrv.msg Tapedrv message file Tapedrv.ini Tapedrv initialization file Makefile Nmake script for building tapedrv.exe devioctl.h NT header file ntddscsi.h NT header file Tapedrv.c Tapedrv source History ------- 0.0 - Initial pass 0.1 - Second pass 0.2 - Add DOS mode memory usage logging - Hide cursor after status and prompt line update - Fix command line option character case insensitivity 0.3 - Reduce maximum DOS mode memory requirement by about 12K. 0.4 - Reduce maximum DOS mode memory requirement an additional 15K. 0.5 - Fix "Invalid device request reading drive c" errors during DOS mode program initialization. 0.6 - Fixes for 3502 and 3600 Libraries and the IBM Ultrium-1 0.7 - Add support for device access via NT port driver 0.8 - Fix for HP half-high and Win9x 3600 Library w/ 126I firmware 0.8a - Fix 'tapedrv status /r' broken in v0.8 0.9 - Fix 'tapedrv status /o' broken in v0.8; 5K DOS memory reduction 1.0 - Debug version (partial non-zero LUN support) 1.1 - Add non-zero LUN support (Use new /z option if LUN0 only is needed); - Add "seagate_tr7" UpdateAlgorithm (for STT3401A) - Add "quantum_dlt_8k" UpdateAlgorithm (for DLT4000) - Add UpdateFlags = "" control 1.2 - Fix failure to update Seagate STT3401A TR7 in DOS mode 1.3 - Fix by disabling non-zero LUN scan when LUN0 returns error Bugs resolved by Tapedrv v0.6 ----------------------------- Bug: Failure to update firmware for an IBM 3600 Library The Library rejected firmware image download as it sees incorrect data. The incorrect data was the result of Tapedrv's failure to skip the 1088 byte header at the beginning of the .FRM firmware file. In addition, the Library requires that firmware be transferred in 32K blocks (except for the final block which may be shorter). Lastly, Tapedrv was incorrectly issuing a final Write Buffer with a zero transfer length (appropriate for other devices but not not the 3600 Library). The solution was to add support for a new "hp_library" update algorithm in Tapedrv.exe. In addition, the configuration parameter Tapedrv.ini [3600_library] UpdateAlgorithm = "standard" was changed to UpdateAlgorithm = "hp_library". The hp_library algorithm validates then skips the .FRM file header, then transfers the firmware image to the library using a block size of 32K. The final non-zero image transfer is assumed to be the end of firmware download. IMPORTANT: Because of firmware issues it is necessary to both power cycle the Library and reboot the host system after firmware update. HP supplied new C7200_130I.frm (a replacement for the original 3600l_30.frm). Bug: Failure to update firmware for an IBM Ultrium Drive Tapedrv was incorrectly issuing a final Write Buffer with a zero transfer length (appropriate for other devices but not not the 3600 Library). The solution was to add support for a new "ibm_ultrium" update algorithm in Tapedrv.exe. In addition, the configuration parameter Tapedrv.ini [IBM_Ultrium-TD1_SCSI] UpdateAlgorithm = "standard" was changed to UpdateAlgorithm = "ibm_ultrium". The "ibm_ultrium" algorithm differs from the "standard" in that the image size is verified to be 1MB and the final Write Buffer command transfers data. That is, the addition Write Buffer with zero length transfer has been removed. Failure to update firmware for a DLT7000 with an OML personality within a IBM 3502-R14 (ATL L500) Library The DLT7000 rejected the D7L_v105.img (OEM) firmware because it was not OML. Tapedrv had no way to distinguish whether a Quantum DLT has the OEM (stand alone) or OML (library connected) Firmware Personalities installed. The Firmware Personality is reported in byte 41 of standard Inquiry data as a binary value. Tapedrv v0.5 and earlier have no way to recognize byte 41 of Inquiry data. Tapedrv v0.6 has added capability for recognition of binary data in an standard Inquiry data. This is implemented in Tapedrv.ini by adding a InquiryStdHex parameter to the appropriate []. To tell Tapedrv to recognize the Quantum DLT Firmware Personalities: OEM, use InquiryStdHex = "41:04*" OML, use InquiryStdHex = "41:0f*" OMX, use InquiryStdHex = "41:12*" Since both DLT7000 OEM and OML Firmware Personalities need to be updated, a new [Quantum_DLT7000_OML] section is added to Tapedrv.ini. The old [Quantum_DLT7000] section still specifies an OEM personality. The new [Quantum_DLT7000_OML] section specifies the OML personality. IMPORTANT: You may want examine the following Tapedrv.ini sections and determine whether they need an added InquiryStdHex = "41:04*" parameter for detection of the OEM Firmware Personality: [Benchmark_DLT1], [Quantum_DLT4000], [Quantum_DLT8000], and [Quantum_SuperDLT_SCSI]. Bugs resolved by Tapedrv v0.7 ----------------------------- Bug: When running under Windows NT/2000, Tapedrv reports "Device inaccessible" and fails to update either a tape drive or medium changer when no Class driver is installed. The "Unknown Medium Changer Device" is not a Class driver. To resolve this issue Tapedrv v0.7 uses the SCSI Port driver to access and update tape drives or medium changers for which no Class driver can be found. Bugs resolved by Tapedrv v0.8 ----------------------------- Bug: Tapedrv fails to update HP Ultrium Half-high firmware The HP Ultrium rejects firmware showing the following error: TAPEDRV8570 error: Image offset 0x8e4a0: Writebuffer(Mode=5, addr=0x0008e4a0, length=0) error: Host adapter status 0x11: Select timeout An error occurred while downloading firmware. Firmware update failed. [Note: This seems to be inappropriate behaviour for an invalid firmware image. Instead of _not_ responding, the HP should return CHECK CONDITION, ASC/ASCQ 0x26/0x00: INVALID FIELD IN PARAMETER LIST.] This results from incorrect data sent to the tape drive as the because of Tapedrv's failure to skip the 1088 byte header at the beginning of the .FRM firmware file. The solution was to add support for a new "hp_ultrium" update algorithm in Tapedrv.exe. In addition, the configuration parameter: Tapedrv.ini [HP_Ultrium-1_SCSI_Half_High] UpdateAlgorithm = "standard" was changed to UpdateAlgorithm = "hp_ultrium". The hp_ultrium algorithm validates then skips the .FRM file header before transferring the firmware image to the drive. If the firmware filename ends with other than the suffix .FRM, the file is treated as a raw binary image. Bug: When updating IBM 3600 Library firmware on Windows 95/98/ME, the Library becomes an "HP DOWNLOAD" device. When running Tapedrv v0.7 or earlier to update an IBM 3600 Library's firmware from version 126I on a Windows 95/98/ME system, the update process terminates in the middle of the update procedure with a message similar to the following: This TAPEDRV8570 error: Image offset 0x000bd000: WriteBuffer(mode=4, adrs=0x10000000, length=32768) error: Host Adapter error 0x12: DMA overrun/underrun An error occurred while downloading firmware. Firmware update failed. Where, words of significance are "DMA overrun/underrun". As a result, of the abnormal update termination, the Library hangs in the middle of the update procedure. When power cycled, the Library's LCD screen is blank and, at the SCSI BUS interface changes its Inquiry string from: "HP C7200 126I" to: "HP DOWNLOAD B.13" [While in this DOWNLOAD state, Library firmware can still be updated using a special version of Tapedrv.ini.] This is NOT an issue with 130I firmware. To resolve this bug, Tapedrv v0.8 is modified to ignore the "DMA overrun/underrun" error when version 126I, or earlier, firmware is present in the device while running on Windows 95/98/ME. Bug: For a 3600 Library, only 1 of 2 Tape Drives are shown when updating firmware under Windows 2000. Under Windows 2000, with _no_ IBM Ultrium tape (class) driver installed, only 1 of the 2 IBM Ultrium drives is found by the Tapedrv v0.7 (and earlier) firmware update program. For example, there should actually be two Ultrium tape drives listed on the following screen: ------------------------------------------------- tapedrv -- IBM Tape Device Firmware Utility - v0.7 Copyright (c) 2000-2001 IBM Corporation Press Enter key to end without updating. Update pending. Update will start in 25 seconds. Device Address: Port_Number.Bus_Number/SCSI_Device_ID Current Update Device Ver- Version Address Device Inquiry sion State Old,New Status ------- ------------------------ ---------------- ----------------- 2.0/2 IBM ULTRIUM-TD1 0BN1 Out of date 0BN1,16E0 Waiting 2.0/0 HP C7200 126I Out of date 126I,130I Waiting ------------------------------------------------- Since the second Ultrium drive is not seen, its firmware is not be updated. Because of a Windows 2000 device enumeration anomaly, one of the Ultriums is not listed in the registry when a IBM Ultrium (class) driver is _not_ installed. Tapedrv v0.7 and earlier finds all tape devices by scanning the registry. To resolve this issue, Tapedrv v0.8 now scans SCSI port drivers for all "unclaimed" and "claimed" tape devices. Thus both tape drives are displayed and updated if out-of-date. Bugs resolved by Tapedrv v1.1 ----------------------------- Bug: Tapedrv fails to update tape devices with non-zero LUNs Tapedrv v0.9 (and earlier) report tape devices with non-zero Logical Unit Numbers (LUNs) as "Unrecognized Device". This is a particular problem in FibreChannel configurations. For example, on the following, the final four devices are erroneously reported as "Unrecognized device" and thus will not receive needed firmware update: ------------------------------------------------- tapedrv -- IBM Tape Device Firmware Utility - v0.9 Copyright (c) 2000-2001 IBM Corporation Press Enter end immediately Device Address: Port_Number.Bus_Number/SCSI_Device_ID Current Update Device Ver- Version Address Device Inquiry sion State Old,New Status ------- ------------------------ ---------------- ----------------- 1.0/6 EXABYTE EXB-89008E000116 V41k Up to date 4.0/0 IBM ULTRIUM-TD1 18N2 Up to date 4.0/0 IBM ULTRIUM-TD1 12U8 Unrecognized device 4.0/1 IBM ULTRIUM-TD1 12U8 Unrecognized device 4.0/1 IBM ULTRIUM-TD1 12U8 Unrecognized device 4.0/1 HP C7200 130I Unrecognized device ------------------------------------------------- Because of incorrect filtering in Tapedrv v0.9 (and earlier) any device with a non-zero LUN was considered unrecognized. To resolve this issue, Tapedrv v1.1 correctly detects devices with non-zero LUNs. In addition, under DOS as well as Windows 95,98,ME, Tapedrv now scans for non-zero LUNs during device detection. (If necessary, a new /z command line option may be used to restrict detection of only LUN0 devices.) Also, v1.1 now shows each device's LUN on the display: ------------------------------------------------- tapedrv -- IBM Tape Device Firmware Utility - v1.1 Copyright (c) 2000-2002 IBM Corporation Press Enter end immediately Device Address: Port_Number.Bus_Number/SCSI_Device_ID.Logical_Unit_Number Current Update Device Ver- Version Address Device Inquiry sion State Old,New Status ------- ------------------------ ---------------- ----------------- 1.0/6.0 EXABYTE EXB-89008E000116 V41k Up to date 4.0/0.0 IBM ULTRIUM-TD1 18N2 Up to date 4.0/0.1 IBM ULTRIUM-TD1 12U8 Out of date 12U8,18N2 Waiting 4.0/1.1 IBM ULTRIUM-TD1 12U8 Out of date 12U8,18N2 Waiting 4.0/1.2 IBM ULTRIUM-TD1 12U8 Out of date 12U8,18N2 Waiting 4.0/1.0 HP C7200 130I Up to date ------------------------------------------------- Bugs resolved by Tapedrv v1.2 ----------------------------- Bug: Tapedrv fails to update Seagate STT3401A Travan TR7 in DOS mode While updating a Seagate STT3401A Travan TR7 in DOS mode, the following error message is reported: TAPEDRV8330 error: Tape device is not responding: Host adapter status 0x0d: CDB rejected via MESSAGE REJECT Firmware update not started. This was the result of an incorrect error checking algorithm in the DOS mode built in ATAPI driver. To resolve this issue, Tapedrv v1.2 uses a corrected error checking algorithm. Bugs resolved by Tapedrv v1.3 ----------------------------- Bug: Tapedrv delays more than minute when enumerating tape devices In DOS and Windows 95, 98, Me, Tapedrv v1.1, and v1.2 may exhibit poor performance while enumerating tape devices. Tapedrv enumerates (scans the SCSI bus for) tape devices shortly after it begins execution. Time consumed can be more than a minute. Poor performance was the result of continuing to enumerate non-zero LUNs (Logical Unit Numbers) after LUN0 reported an error. To resolve this issue, Tapedrv v1.3 discontinues enumeration of non-zero LUNs when LUN 0 returns an error for a given controller and SCSI target ID. This change does not effect Windows NT, 2000, XP, under which Tapedrv reads and uses the results of SCSI enumeration already performed by the operating system. Library reboot -------------- Both the 3600 and 8502 libraries need to be rebooted if the Library firmware is updated. For autoupdate, Library devices are moved to the end of the list of devices displayed on the screen. This reordering may reduce the requirement to reboot between Drive and Library update for the 3502. However, whenever Library firmware is updated, a Library power cycle as well as a host system reboot is recommended. Known Issues ------------ - Firmware update fails for DLT7000 Drive in an 3502-R14 Library when a tape is present in the drive. Customers need to be instructed to eject any tapes, if present in tape drives, into storage slots. If the message "TAPEDRV8360 error: Timeout waiting device to become stable" is seen, try inserting a tape in the left most storage slot. DOS Memory Requirement ---------------------- Tapedrv v0.6 has the following DOS mode memory requirement: 363K for Seagate Travan drives, 337K for Seagate DDS-1 and DDS-2 with 256K EEPROM, and 97K for all other drives. Installation ------------ To install copy the files Tapedrv.exe, Tapedrv.msg, and Tapedrv.ini, from the .zip file to a test directory. For example: \tapedrv\Tapedrv.exe \tapedrv\Tapedrv.msg \tapedrv\Tapedrv.ini Usage Hints ----------- To run the status simulation, use a command similar to: \tapedrv\tapedrv statussim [/r] [/o outfile] To run the autoupdate simulation, use a command similar to: \tapedrv\tapedrv autosim For any of the commands status, statussim, autoupdate, autosim, ÿa log file may optionally be created by adding a /l parameter. Once firmware files are accumulated in a directory (e.g., \FIRMWARE), re-run the autoupdate commands, using a commands similar to: \tapedrv\tapedrv autosim /p \FIRMWARE \tapedrv\tapedrv autoupdate /p \FIRMWARE \tapedrv\tapedrv inick /p \FIRMWARE