tapedrv -- IBM Backup Device Firmware Utility - v1.12.01

Copyright © 2000-2010 IBM Corporation
Last update: 7/07/10
TAPEDRV is a utility program whose primary function is to automatically update certain backup devices with the latest firmware. See Supported Backup Devices. TAPEDRV runs on Microsoft DOS and Windows® as well as Linux based platforms.
Contents Previous Next  

Contents

History
Files
Usage
--autoupdate Command
--autoupdate Screen Examples
--autock Command
--autosim Command
--build Command
--list Command
--listsim Command
--status Command
--statussim Command
Device Firmware States
--identity Command
--inquiry Command
--inick Command
--inireport Command
--msgck Command
--updatealg_list Command
--updatealg_attr Command
tapedrv.ini Syntax
tapedrv.ini [tapedrv] Section
tapedrv.ini [autoupdate] Section
tapedrv.ini [<Device_Section>] Sections
tapedrv.ini Example
tapedrv.msg Syntax
tapedrv.msg Special Messages
tapedrv.msg Runtime Error Checking
tapedrv Executable
Exit Codes

Tapedrv Errors:
TAPEDRV8010 TAPEDRV8110 TAPEDRV8111 TAPEDRV8112 TAPEDRV8113 TAPEDRV8115 TAPEDRV8130 TAPEDRV8140 TAPEDRV8142 TAPEDRV8143 TAPEDRV8150 TAPEDRV8160 TAPEDRV8170 TAPEDRV8180 TAPEDRV8190 TAPEDRV8195 TAPEDRV8200 TAPEDRV8201 TAPEDRV8210 TAPEDRV8220 TAPEDRV8270 TAPEDRV8272 TAPEDRV8274 TAPEDRV8276 TAPEDRV8310 TAPEDRV8320 TAPEDRV8330 TAPEDRV8340 TAPEDRV8350 TAPEDRV8360 TAPEDRV8410 TAPEDRV8510 TAPEDRV8561 TAPEDRV8562 TAPEDRV8563 TAPEDRV8564 TAPEDRV8565 TAPEDRV8566 TAPEDRV8570 TAPEDRV8571 TAPEDRV8572 TAPEDRV8573 TAPEDRV8575 TAPEDRV8576 TAPEDRV8590 TAPEDRV8700

Device Firmware Update Issues
DOS Notes
Windows Notes
Linux Notes
Supported Backup Devices

Contents Previous Next  

History

1.12.01 - Fix Windows TAPEDRV8310 error introduced in 1.12.00.
- Add "Device Firmware Update Issues" secton to this document.
1.12.00 - Add support for CD-DVD devices at /dev/hd<X> (where <X> is a, trough r) for Linux. This change avoids the need to load ide-scsi for CD-DVD.
- Remove message TAPEDRV8116, add message TAPEDRV8700.
1.11.00 - Add Panasonic UJ870A support via new "panasonic_uj8" update algorithm.
- Add long option support so that a TAPEDRV command, identified by '--', may appear at any argument position. For backward compatibility '--' may be omitted for a command given as the first argument.
- Add error printing of standard SCSI ASC/ASCQ messages.
1.10.01 - Fix Linux "TAPEDRV8561 ... Failed to dismount volume..." for RDX removable disk.
1.10.00 - Add "CD-DVD" peripheral device recognition.
- Add Panasonic UJDA780 DVD Combo device support via new "panasonic_ujda" update algorithm.
- Add identity support for improved re-finding of device after PnP re-enumeration.
- Add identity command.
- Add skipEject/autoReload to "prostor_rdx" update algorithm.
1.09.03 - Add RDX System Offload Processor (RSOP) support.
1.09.02 - Changed "ibm_ultrium" update algorithm:
1. Instead of using Mode 4 for bulk of firmware transfer and Mode 5 for final transfer, use Mode 6 and Mode 7.
2. Change Buffer ID from 0 to 4.
3. Remove 1MB firmware image size restriction.
1.09.01 - For linux 2.6 kernels, enumerate devices via SCSI Generic (sg) data in sysfs rather than procfs.
- For linux, report TAPEDRV8116 error when drive-not-found results from inaccessible SCSI Generic (sg) data in procfs or sysfs.
1.09.00 - Add text UI to avoid ncurses issues on linux.
- Add UI selecton option -u {auto,text,cg}.
1.08.29 - For Gen5(DAT72), fix failure to update failure.
- For Windows 2000 and later, disable TAPE test-unit-ready polling.
- For linux 2.6 with HAL support, disable DISK test-unit-ready polling.
- Eject GoVault cartridge after sucessful firmware update.
- Modified message "TAPEDRV8575: ...Firmware update status unknown..."
- On INQUIRY error after firmware update, display TAPEDRV8575 message.
- For linux x86_64, alter "tapedrv" script to exec tapedrv.linux.i386, the 32-bit executable, rather than tapedrv.linux.x86_64.
1.08.28 - Add prostor_rdx update algorithm.
1.08.27 - Add Symbolic-Name change detection.
- Add hp_dds update algorithm.
1.08.26 - Add USB device support.
- Add recognition of Vista ATAPI devices that are no longer listed in the Registry's SCSI tree.
- Add -e (exit immediately) option for Vista.
1.08.25 - Change exit codes as follows:
    "Tape device(s) already up-to-date" from 3 to 0.
    "No supported tape device found" from 2 to 171.
- Add dual "scan for hardware changes" after firmware transfer, but before examining Inquiry data for an updated revision level.
- Mark executible as needing elevated permission for Vista using the MS manifest tool (mt.exe).
- Ignore OS error 1167 on final WriteBuffer for Lsi_sas driver with IBM ULTRIUM-HH3.
- Add RmbDisk ([removable] Disk with RMB bit e.g., GoVault) support.
- Add SAS support.
- Switch Linux SCSI enumeration file from /proc/scsi/scsi to /proc/scsi/sg/device_strs.
1.08.24 - Mutiple firmware file changes.
1.08.23 - Ignore Unit Attention returned for final Write Buffer to prevent TAPEDRV8570 error on Linux with mptscsih driver.
- Add support for DOS aspi320.sys's redefinition of SS_ERR from 4 to 3 to prevent TAPEDRV8310 error: Driver status 0x03.
1.08.22 - Fix incorrectly reported TAPEDRV8320 error on 3623-2LX update.
1.08.21 - Add quantum_dltvs_8k update algorithm for 59P6745 (VS160)
1.08.20 - Add adic_faststor update algorithm for 3581
1.08.19 - Add interactive device selection during autoupdate.
- Add autock, list, listsim commands, and -t, and -s options.
- Add "<Ctrl><L> to repaint screen" on Linux.
- Fix 4-bus SCSI adapter enumeration.
1.8L - Treat "Check Condition: No Sense" as "Good" status rather than error.
- Recompiled for glibc-2.2.4 (rather than glibc-2.3)
1.8k - Add exabyte_vxa algorithm
1.8j - Reset hp_ultrium final Write Buffer Offset to 0
- Increase hp_ultrium transfer segment size from 4K to 32K
- Change default hp_ultrium UpdatePrepare to "Unload" only.
- Add ReferenceName parameter
- Add updatealg_list, updatealg_attr commands
- Fix 1.8i's premature program exit on Windows XP/2003
1.8i - Add support for IBM firmware in DDS1,DDS2,DDS3 tape drives
1.8h - Add support for ReplaceVersion parameter
1.8g - Reduce ibm_library transfer segment size from 64K to 32K
1.8f - Add ibm_library algorithm
1.8e - Add support for .ini WriteBufferID parameter
1.8d - Change Write Buffer ID from 0 to 1 for hp_ultrium
1.8c - Clear data direction flags for all zero length SCSI CDB transfers
1.8b - Fix failure to update TR7 under Windows NT,2000,XP,2003
- Add Linux DDS1/DDS2 with 256K EEPROM, and TR4,TR5,TR7, update support
- Add "tapedrv" script to run Linux architecture specific executables
1.8 - Add Linux support
- Convert InquiryStd full string be ASCII pattern
- Add ASCII pattern capability to InquiryCFR_OEM
- Add DOS/Windows recognition of '-' (as well as '/') for options.
1.7 - Add redirection of firmware to LUN 0 via UpdateFlags = "Z"
- Add Vendor specific ASCII Inquiry recognition via InquiryStdAscii
- Add VPD recognition via VpdAscii and VpdHex
- Add "tapedrv inquiry" command to dump all tape device Inquiry data.
- Update pattern matching and SCSI enumeration
- Change pattern escape character from caret (^) to grave accent (`)
- Enable CDB logging in 32-bit (not 16-bit) mode
- Optimize loading of tapedrv.ini (for floppy performance).
1.6 -
1.5 - Revised menu
1.4 - Updated firmware revisions added menu and support tools
1.3 - Fix by disabling non-zero LUN scan when LUN0 returns error
1.2 - Fix failure to update Seagate STT3401A TR7 in DOS mode
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 = "<flagcharacters>" control
1.0 - Debug version (partial non-zero LUN support)
0.9 - Fix 'tapedrv status -o' broken in v0.8; 5K DOS memory reduction
0.8a - Fix 'tapedrv status -r' broken in v0.8
0.8 - Fix for HP half-high and Win9x 3600 Library w/ 126I firmware
0.7 - Add support for device access via NT port driver
0.6 - Fixes for 3502 and 3600 Libraries and the IBM Ultrium-1
0.5 - Fix "Invalid device request reading drive c" errors during DOS mode program initialization.
0.4 - Reduce maximum DOS mode memory requirement an additional 15K.
0.3 - Reduce maximum DOS mode memory requirement by about 12K.
0.2 - Add DOS mode memory usage logging
- Hide cursor after status and prompt line update
- Fix command line option character case insensitivity
0.1 - Second pass
0.0 - Initial pass

Contents Previous Next  

Files

tapedrv.exe executes under Microsoft DOS and Windows 95, 98, Me, NT 3.51, NT 4.0, 2000, XP, and Server 2003.

tapedrv is a shell script that selects and runs one of the Linux architecture specific executables below.

tapedrv.linux.i386 executes on Linux AMD-K6/Pentium ® (IA32).

tapedrv.linux.x86_64 executes on Linux Opteron/Xeon ® (AMD64/EM64).

tapedrv.linux.ia64 executes on Linux Itanium ® (IA64).

tapedrv.msg contains program text messages and must reside in the same directory as the tapedrv executable.

tapedrv.ini contains program configuration information and normally resides in the same directory as the tapedrv executable. Configuration information includes a list of backup device to firmware file correspondence specifications and other data.

<firmware_path> is a directory that contains firmware file images, used to update various backup device models.


Contents Previous Next  

Usage

tapedrv -- IBM Backup Device Firmware Update Utility - v1.12.01

usage: tapedrv command [ options ]

Commands:
--autoupdate Automatically updates backup device firmware
--autock Simulates --autoupdate for distribution CD-ROM testing
--autosim Simulates --autoupdate for interactive testing
--build Prints TAPEDRV software build number
--list Lists backup device targ-unit and serial numbers
--listsim Simulates --list
--status Reports firmware version status
--statussim Simulates --status
--identity Shows identities used to relocate devices after firmware update
--inquiry Shows Inquiry and VPD data for backup devices
--inick Checks tapedrv.ini and firmware files
--inireport Generates a report based on the content of tapedrv.ini
--msgck Checks tapedrv.msg message numbers
--updatealg_list Prints a list of update algorithms
--updatealg_attr Prints a list of update algorithms and attributes
--version Prints TAPEDRV version
Options:
-e Exit immediately without prompting "Press any key to continue ..." on Vista.
-g Prints additional debug information to log
-i <inifile> Specifies an .ini file to override the default tapedrv.ini.
-l [+]<logfile> Logs messages to file. If a + prefixes <logfile> the file is opened for appending.
-o [+]<outfile> Directs output to a file for non-interactive commands. If a + prefixes <outfile> the file is opened for appending.
-p <firmware_path> Specifies the directory in which firmware files are stored (for --autoupdate, --autosim, --inick). <firmware_path> is used as prefix for filename strings given by AutoFileName parameters in tapedrv.ini.
-r Prints additional program recognizable output (for status).
-s <serial> Selects a device with a Serial number that matches the case sensitive string, <serial>. <serial> may contain the wild-card characters * and ?. A list of Serial numbers is displayed by the command: tapedrv list.
Examples:
tapedrv --autoupdate -s US0MA00325
tapedrv --autoupdate -s "*325"
-t <targ-unit> Selects a device <targ-unit> number. A list of Targ-Unit numbers is displayed by the command: tapedrv --list.
Example:
tapedrv --autoupdate -t 1
Warning: <targ-unit> values change because of dynamic system reconfiguration resulting from hot plugging and, sometimes, firmware update.
-u {auto,text,cg}

Selects a user interface for the --autoupdate, --autosim and --autock commands. The arguments auto, text, and cg may be abbreviated. For example, -u c is the same as -u cg.

auto first attempts to open a CGUI, if this fails, the TextUI is used. auto is the default for DOS/Windows.

text selects a plain text user interface (TextUI). text is the default for linux.

cg selects the character graphics user interface (CGUI).

Example:
tapedrv --autoupdate -g cg
-z Restrict device search to LUN0 only.

Because of memory restrictions, the --identity, --inquiry, --inick, --inireport, --msgck, --updatealg_list, and --updatealg_attr commands are unavailable in 16-bit DOS mode.

Command and option names are case sensitive.

When a command is given as the first command line argument, the -- may be omitted. Only one command is allowed.

Space between an option and its argument is optional. For example, -p /drivemic and -p/drivemic are equivalvent.

Under Windows and DOS, forward-slash option ids may be substituted for hyphens. For example, //autoupdate instead of --autoupdate, or /z instead of -z. Directory separators may be either forward or back slashes (e.g., /drivemic or \drivemic).


Contents Previous Next  

--autoupdate Command

--autoupdate automatically updates supported backup devices with the latest firmware.

By way of example, the following command might be used to update backup devicess attached to a given computer:

   tapedrv --autoupdate -p /DRIVEMIC
In this example, /DRIVEMIC is the directory in which firmware files are stored.

During runtime, --autoupdate presents a character graphics display that shows a list of backup devices found on the system. Those tape devices that are marked "Out-of-date" and "Waiting" will be updated. A device marked in any other way is skipped. See --autoupdate Screen Examples

Beginning from the top of the displayed device list, and working downward, --autoupdate highlights the next device to be updated and starts a count down timer:

   Update pending.                 Update will start in in 25 seconds.
During the count down, you may choose to either quit the program by pressing <Q>, or select a different starting device by pressing the arrow keys followed by <Enter>. Once you select a device, the count down is restarted. When the count down expires and the highlighted device is marked "Out-of-date" and "Waiting", the latest firmware is transferred from a file to the device. A device marked in any other way is skipped.

After processing the final device in the list, --autoupdate displays status for a short period then exits.

In more detail, if no updatable devices are found, the initial device screen has one of the following messages in the second and third lines:

   Device-in-use by another program.           Will end in 10 seconds.
   Device needs DOS only mode update.          Will end in 10 seconds.
   Device needs alternate method update.       Will end in 10 seconds.
   Device inaccessible.                        Will end in 10 seconds.
   Device already up-to-date.                  Will end in 10 seconds.
   No updatable device found.                  Will end in 10 seconds.
   Press any key to end immediately.

   -- Backup Device List --
Otherwise if one or more devices need updating, then every screen displayed before device update provides you with an opportunity to quit before updating commences. The following prompts are shown:
   Update pending.                 Update will start in in 25 seconds.
   Press <Enter> to immediately update device, or <Q> to quit.

   -- Backup Device List --

   To quit program, press <Q>.
   To select a different starting device, use arrow keys, then press <Enter>.
Once the update process starts, the device list is redrawn to reflect the activity. You are shown the following message in the second and third lines:
   Update in progress for the highlighted device...
   % This will take approximately 2 minutes.   Do NOT power down!

   -- Backup Device List --
The %, in the above message, is a dynamic spinner that indicates activity. After the final update, the screen is again redrawn to show the final status. You are shown one of following messages in the second and third lines:
   Device-in-use by another program.           Will end in 10 seconds.
   Device needs DOS only mode update.          Will end in 10 seconds.
   Device needs alternate method update.       Will end in 10 seconds.
   Device inaccessible.                        Will end in 10 seconds.
   Update successful.                          Will end in 10 seconds.
   Device already up-to-date.                  Will end in 10 seconds.
   Update failed.                              Will end in 10 seconds.
   Press any key to end immediately.

   -- Backup Device List --
Information that controls backup device recognition and firmware file correspondence resides in the mandatory initialization file, tapedrv.ini. For details, see tapedrv.ini Syntax.


Contents Previous Next  

--autoupdate Screen Examples

Screen 1

Screen 1 gives an example of a system before update commences.

   Update pending.                 Update will start in in 25 seconds.
   Press <Enter> to immediately update device, or <Q> to quit.

   Device Address: Controller_Number/SCSI_Device_ID.Logical_Unit_Number

                                              Current            Update
   Targ Device                             Revi-             Revision
   Unit Address  Vendor   Product          sion  State        Old,New  Status
   ---- -------  -------- ---------------- ----------------  ------------------
 =>0    0/1.0    Seagate  STT8000A         5.48 Out-of-date  5.48,5.51 Waiting <
   1    1/0.0    IBM      ULTRIUM-TD1      09A1 Out-of-date  09A1,0BN1 Waiting 
   2    1/1.0    IBM      ULTRIUM-TD1      0BN1 Up-to-date   
   3    1/13.0   SEAGATE  AIT              04j9 Unrecognized-device

   To quit program, press <Q>.
   To select a different starting device, use arrow keys, then press <Enter>.
In Screens 1, 2, and 3, "=>...<" means "reverse video bar" and the % is a spinning indicator.

Screen 2

When update commences Screen 2 might look like this:

   Update in progress for the highlighted device...
   % This will take approximately 2 minutes.   Do NOT power down!

   Device Address: Controller_Number/SCSI_Device_ID.Logical_Unit_Number

                                              Current            Update
   Targ Device                             Revi-             Revision
   Unit Address  Vendor   Product          sion  State        Old,New  Status
   ---- -------  -------- ---------------- ----------------  ------------------
 =>0    0/1.0    Seagate  STT8000A         5.48 Out-of-date  5.48,5.51 Updating<
   1    1/0.0    IBM      ULTRIUM-TD1      09A1 Out-of-date  09A1,0BN1 Waiting 
   2    1/1.0    IBM      ULTRIUM-TD1      0BN1 Up-to-date   
   3    1/13.0   SEAGATE  AIT              04j9 Unrecognized-device

Screen 3

Screen 3 depicts the update of the second device.

   Update in progress for the highlighted device...
   % This will take approximately 2 minutes.   Do NOT power down!

   Device Address: Controller_Number/SCSI_Device_ID.Logical_Unit_Number

                                              Current            Update
   Targ Device                             Revi-             Revision
   Unit Address  Vendor   Product          sion  State        Old,New  Status
   ---- -------  -------- ---------------- ----------------  ------------------
   0    0/1.0    Seagate  STT8000A         5.51 Up-to-date   5.48,5.51 Success
 =>1    1/0.0    IBM      ULTRIUM-TD1      09A1 Out-of-date  09A1,0BN1 Updating<
   2    1/1.0    IBM      ULTRIUM-TD1      0BN1 Up-to-date   
   3    1/13.0   SEAGATE  AIT              04j9 Unrecognized-device

Screen 4

Screen 4 shows a successful completion.

   Update successful.                          Will end in 10 seconds.
   Press any key to end immediately.


   Device Address: Controller_Number/SCSI_Device_ID.Logical_Unit_Number

                                              Current            Update
   Targ Device                             Revi-             Revision
   Unit Address  Vendor   Product          sion  State        Old,New  Status
   ---- -------  -------- ---------------- ----------------  ------------------
   0    0/1.0    Seagate  STT8000A         5.51 Up-to-date   5.48,5.51 Success
   1    1/0.0    IBM      ULTRIUM-TD1      0BN1 Up-to-date   09A1,0BN1 Success
   2    1/1.0    IBM      ULTRIUM-TD1      0BN1 Up-to-date   
   3    1/13.0   SEAGATE  AIT              04j9 Unrecognized-device

   Update completed successfully.

Screen 5

Screen 5 depicts an abnormal completion.

   Update failed.                              Will end in 10 seconds.
   Press any key to end immediately.

   Device Address: Controller_Number/SCSI_Device_ID.Logical_Unit_Number

                                              Current            Update
   Targ Device                             Revi-             Revision
   Unit Address  Vendor   Product          sion  State        Old,New  Status
   ---- -------  -------- ---------------- ----------------  ------------------
   0    0/1.0    Seagate  STT8000A         5.51 Up-to-date   5.48,5.51 Success
 =>1    1/0.0    IBM      ULTRIUM-TD1      09A1 Out-of-date  09A1,0BN1 FAIL    <
   2    1/1.0    IBM      ULTRIUM-TD1      0BN1 Up-to-date   
   3    1/13.0   SEAGATE  AIT              04j9 Unrecognized-device

   TAPEDRV8580 error: An inquiry error occurred after Flashing firmware.
   Firmware update status unknown.

Contents Previous Next    

--autock Command
--autosim Command

The --autock and --autosim commands provide a means of testing both the character graphics interface and firmware file handling using simulated backup devices. A simulated backup device list is generated from [<Device_section>] data in tapedrv.ini.

Both commands are similar to --autoupdate in that inquiry strings are validated, and firmware file integrity is verified. If a log file is specified (using the -l [+]<logfile> option), then WriteBuffer commands that would be used transfer firmware to tape devices are recorded in the log file.

--autock is meant for use in verification of firmware update CD-ROMs. To speed the verification, a 2 second delay is used between simulated device updates rather than the normal delay specified by [autoupdate] UpdateDelay. So that all firmware files can be tested, simulated DOS mode only updates are performed under Windows.

--autosim is meant for interactive testing of the user interface. --autosim does not use the special conditions used by autock.

--autock and --autosim accept all --autoupdate options.

Example: tapedrv --autosim -p /drivemic

Contents Previous Next  

--build Command

tapedrv --build displays the tapedrv executable's software build number.

Example: tapedrv --build

Contents Previous Next  

--list Command

tapedrv --list shows a list of targ-unit and serial numbers.

By way of example, tapedrv --list might display the following output.
   Targ Device
   Unit Address  [Vendor   Product          Revs]  Type     Serial Number
   ---- -------  --------------------------------  ----     -------------
   0    1.0/0.0  [Seagate  STT3401A         310A]  Tape     TPT1090050
      OEM Number: 000

   1    2.0/1.0  [IBM     ULTRIUM-TD1       12U2]  Tape     6811050111
   2    2.0/0.0  [HP      C7200             140I]  Changer  US0MA00325

Targ-Unit is an arbritrary number assigned by tapedrv each time the program is run. Different invocations of tapedrv may have different Targ-Unit values. Targ-Unit values change because of dynamic system reconfiguration resulting from hot plugging and, sometimes, firmware update.

SCSI Address has the form: <controller>[.<bus>]/<target-id>.<lun>, or USB.

Serial Number gives the device's serial number as returned in Vital Product Data (VPD) page 0x80.

OEM Number is a one to three digit Quantum/Certance/Seagate specific value that identifies firmware configurations.

Targ-Unit and Serial numbers may be used in the -t <targ-unit> and/or -s <serial> options as backup device selection criteria for the --autoupdate, --list, --status, or --inquiry commands. For example: tapedrv --inquiry -t 1

Example: tapedrv --list > list.txt

Contents Previous Next  

--listsim Command

tapedrv --listsim simulates the tapedrv --list command without actually accessing a backup device.

--listsim generates a backup device list from device section data in tapedrv.ini. Serial numbers are device section names.

--listsim accepts all --list options.


Contents Previous Next  

--status Command

tapedrv --status reports firmware status. It is useful for determining which devices are "Out-of-date". Only those devices that indicate Out-of-date in the Device Firmware State field would be updated by a tapedrv --autoupdate command.

Example output for tapedrv --status:

   tapedrv -- IBM Backup Device Firmware Utility - v1.12.01
   Copyright (c) 2000-2005 IBM Corporation

   Device Address: Controller_Number/SCSI_Device_ID.Logical_Unit_Number

   Targ Device                                Revision
   Unit Address  Vendor   Product          Current Update Device Firmware State
   ---- -------  -------- ---------------- ------- ------ ---------------------
   1    0/5.0    SEAGATE  DAT    04106-XXX 7270    7550   Out-of-date

More easily parsed information may be obtained using the -r option. For example, tapedrv status -r, might print the following.

   ##Tapedrv_status=1
   tapedrv -- IBM Backup Device Firmware Utility - v1.12.01
   Copyright (c) 2000-2005 IBM Corporation

   Device Address: Controller_Number/SCSI_Device_ID.Logical_Unit_Number

   Targ Device                                Revision
   Unit Address  Vendor   Product          Current Update Device Firmware State
   ---- -------  -------- ---------------- ------- ------ ---------------------
   0    0/5.0    SEAGATE  DAT    04106-XXX 7270    7550   Out-of-date
   ##Device=0/5.0,Tape,SEAGATE DAT    04106-XXX,7270,7270,7550,9,Out-of-date
   ##FwStateUnrecognized=0
   ##FwStateInaccessible=0
   ##FwStateInUse=0
   ##FwStateIgnored=0
   ##FwStateCurrent=0
   ##FwStateNewer=0
   ##FwStateNeedsDOS=0
   ##FwStateNeedsAlternate=0
   ##FwStateOutOfDate=1

-r causes additional ## prefixed records to be added to the output stream. Each record is described below.

##Tapedrv_status=<format_version>
This is a signature record and is always the first ## prefixed record in the output. <format_version> is a positive integer indicating the formatting version for the following ## entries. <format_version> is currently 1 and may incremented if a subsequent change in format makes it necessary.

##Device=<device_address>,<peripheral_type>, <inquiry_vendor_product_id>,<inquiry_revision>, <current_version>,<update_version>, <device_firmware_state_number>, <device_firmware_state_text>
Device records are only present if backup devices are found. Each device record represents a device and has the following comma separated fields:

<device_address> has the SCSI device address.

<peripheral_type> is RmbDisk, Tape, CD-DVD, or Changer.

<inquiry_mfgr_product> always contains 24 characters which is the Inquiry data bytes 8 through 31 returned by the device. This includes the Vendor Identification field in the first 8 characters, and the Product Identification in the remaining 16 characters.

<inquiry_revision> always contains 4 characters which is the Inquiry data bytes 32 through 35, or Product Revision Level returned by the device.

<current_version> is variable in length and contains 0 through 4 characters giving the current device version.

<update_version> is variable in length and contains 0 through 4 characters giving the update version. That is, the version to which the device will be updated if out of date.

<device_firmware_state_number>

<device_firmware_state_text> Of these two fields, the first contains a positive integer value and the second the corresponding text describing the state of the device firmware. See Device Firmware States for a description of all possible values.


##FwStateUnrecognized=<count>
##FwStateInaccessible=<count>
##FwStateInUse=<count>
##FwStateIgnored=<count>
##FwStateCurrent=<count>
##FwStateNewer=<count>
##FwStateNeedsDOS=<count>
##FwStateNeedsAlternate=<count>
##FwStateOutOfDate=<count>

The above counter records are always present and follow all ##Device= records, if any. They summarize the number of devices found in each possible state. Each record corresponds to one of the states in Device Firmware States.


Contents Previous Next  

--statussim Command

tapedrv --statussim simulates the tapedrv status command without actually accessing a backup device.

--statussim generates a backup device list from device section data in tapedrv.ini. An attempt is made to simulate each possible value for Device Firmware State field,

--statussim accepts all --status options.


Contents Previous Next  

Device Firmware States

The table below defines Device Firmware States. tapedrv --autoupdate will update only backup devices in the State 9: "Out-of-date".

Device Firmware States
State Description tapedrv status Counter
1 Unrecognized-device ##FwStateUnrecognized=<count>
An "unrecognized-device" is a device that is unsupported. That is, a supported device type for which there is no matching device section in tapedrv.ini.
2 Inaccessible-device ##FwStateInaccessible=<count>
An "Inaccessible-device" is one that is recognized as being both present and supported, but cannot be accessed by the program. Under Windows NT/2000/XP/2003/Vista, an inaccessible device results when a supported device cannot be opened, using the CreateFile() system call, for a reason *other than* the "device is in use" (see state 3 Device-in-use), or the device can be opened, but an attempt to retrieve a vital device parameter fails.
3 Device-in-use ##FwStateInUse=<count>
A "Device-in-use" is one that is recognized as being both present and supported, but cannot be accessed by the program because another program is using the device. An attempt to open the device returns one the following system errors.

Under Windows NT/2000/XP/2003/Vista either:

  • 32 (ERROR_SHARING_VIOLATION) The process cannot access the file because it is being used by another process, or
  • 170 (ERROR_BUSY) The requested resource is in use.

Under Linux:

  • EBUSY Device busy

4 Ignored-device ##FwStateIgnored=<count>
An "Ignored-device" state indicates the device is recognized but a determination cannot be made as to whether the device is up-to-date. That is, the device matches a device section in tapedrv.ini but the section has either a missing or empty AutoFileVersion parameter.
5 Up-to-date ##FwStateCurrent=<count>
An "up-to-date" device state indicates no firmware update is necessary. The device both matches a device section, in tapedrv.ini, and matches the AutoFileVersion parameter within the section.
6 Newer-firmware ##FwStateNewer=<count>
A "Newer-firmware" device state means the device has firmware even more recent than the firmware required to be up-to-date. The command tapedrv --autoupdate will not update the device. That is, the device matches a device section in tapedrv.ini but has firmware that is newer than the version specified by AutoFileVersion parameter within the section.
7 Needs-DOS-mode-update ##FwStateNeedsDOS=<count>
A "Needs-DOS-mode-update" state indicates a device is "out-of-date" but cannot be updated in the current operating system environment because the maximum SCSI Write Buffer data transfer size is of insufficient capacity to meet the requirements of the device. Write buffer data transfer capacity may be limited by the operating system, device driver, host bus adapter, or a combination of these elements.

This firmware state is possible under Windows 95/98/Me/NT/2000/XP/2003/Vista. Neither DOS nor Linux reports this state.

Currently this state is possible when the associated UpdateAlgorithm parameter, in tapedrv.ini is set to "seagate_dds1", "seagate_dds2_256k", or "seagate_travan". As a practical matter this applies only to:

  • Seagate Travan TR-4 and TR-5 (not TR-7) tape drives.
  • Seagate DDS-1/DDS-2 with either a .HEX or 256K .BIN firmware file.

If possible, boot this machine under DOS (or Windows 95/98/Me in DOS command prompt only mode), or Linux, and run tapedrv --autoupdate to update firmware.
8 Needs-alternate-update-method ##FwStateNeedsAlternate=<count>
The "Needs-alternate-update-method" state indicates the device cannot be updated by tapedrv --autoupdate, but rather needs updating by an alternate method. Examples of alternate method update are 1) physical return of the device to a service center for "factory update" (perhaps ROM replacement), 2) update by a program other than TAPEDRV.

As a practical matter, this state is not seen for all previous and the current (v1.12.01) versions of TAPEDRV.

The "Needs-alternate-update-method" state is defined in case recognition is subsequently added for a device that cannot be updated by tapedrv --autoupdate.

In order for a drive to be recognized as being in the "Needs- alternate-update-method" state, the device must match a device section in tapedrv.ini and have a firmware version that is out-of-date when compared to the AutoFileVersion parameter within the device section, and have an empty or missing AutoFileName parameter.

9 Out-of-date ##FwStateOutOfDate=<count>
An "Out-of-date" device state indicates that tapedrv --autoupdate would update the device. That is, the device matches a device section in tapedrv.ini, has firmware that is Out-of-date when compared to the AutoFileVersion parameter within the section, and has a non-empty AutoFileName parameter.

Contents Previous Next  

--identity Command

--identity prints a list of backup device identities. An identity is used in relocation of a given backup device after firmware update. For a given device, plug-and-play processes will often change the system's devicefile name upon detecting a firmware update. An identity is constructed using the Vital Product Data (VPD) Identification (0x83) page. If VPD Identification is unavailable, then an identity is constructed using Standard Inquiry data and a Unit Serial Number when available. Because of memory restrictions, --identity is unavailable in 16-bit DOS mode.

Example: tapedrv --identity

Contents Previous Next  

--inquiry Command

--inquiry prints a hexdump style display of both Inquiry data and Vital Product Data, for all detected backup devices. This command is useful for examining data used to construct the InquiryStd, InquiryStdAscii, InquiryStdHex, VpdAscii, and VpdHex parameters in tapedrv.ini. Because of memory restrictions, --inquiry is unavailable in 16-bit DOS mode.

Example: tapedrv --inquiry > inquiry.txt

Contents Previous Next  

--inick Command

--inick checks certain parameters within tapedrv.ini [<Device_Section>]s for validity. Errors are printed to the standard output. Because of memory restrictions, --inick is unavailable in 16-bit DOS mode.

Using --inick reduces the likelihood of failure in the the field because of a syntax error in tapedrv.ini.

For each [<Device_Section>] listed in the [tapedrv] device<NN> list, the following parameters are checked;

Example: tapedrv --inick -p \drivemic > error.txt

Contents Previous Next  

--inireport Command

--inireport generates a report based on the content of tapedrv.ini. A -k option gives a different format.

Example: tapedrv --inireport > report.txt

Contents Previous Next  

--msgck Command

--msgck checks tapedrv.msg message numbers for duplicates and sequence. Because of memory restrictions, --msgck is unavailable in 16-bit DOS mode.

This utility command examines tapedrv.msg. Duplicate, out of sequence, excessively long messages, and messages for which there is no comparable number in an alternate language are reported. --msgck errors are formatted as follows:

.../tapedrv.msg(<line number>): <message number>: <error description>

Where <error description> is one of the following:

Excessive length
Message is too long (approaching 2K in length).
Duplicate
Message number duplicates a previous number. Message numbers must be unique.
Sequence
Message number is less than previous message number. Message numbers should be in sequence.
Warning: <N> entry message number save buffer full
The buffer tapedrv msgck uses for saving numbers for number checking is full. tapedrv.c needs to be modified.

Contents Previous Next  

--updatealg_list Command

--updatealg_list prints a list of update algorithms.

Example: tapedrv --updatealg_list

Contents Previous Next  

--updatealg_attr Command

--updatealg_attr prints a list of update algorithms and their attributes.

Example: tapedrv --updatealg_attr > upattr.txt

Contents Previous Next  

tapedrv.ini Syntax

tapedrv.ini is a mandatory file that contains initialization information and other data. A primary function of tapedrv.ini is to specify parameters used for backup device recognition and firmware file correspondence.

A -i <inifile> command line option may be given to explicitly specify an initialization file other than tapedrv.ini. For example,

tapedrv --autoupdate -i lto.ini

When a -i <inifile> option is not given, then at initial program load, tapedrv attempts to open and read tapedrv.ini from the following places in order given: First in the current directory, then the -p <firmware_path> option, if given, and finally the directory from which tapedrv was loaded.

tapedrv.ini may be modified with any text editor. There are three types of lines in tapedrv.ini: comment, section, and parameter.

Comment lines begin with a semicolon (;). Example:

; this is a comment line

Section lines mark the beginning of a group of parameters and are enclosed in brackets ([]). For example, the following marks the start of the tapedrv global initialization section:

[tapedrv]

Parameter lines are of the form <parameter>=<value>. By way of example, the following parameter shows where a firmware file may be found:

AutoFileName = v8???000.bin

Section and parameter names are case insensitive.

Parameter Values

Parameter values in the .ini are generally treated as lists of comma separated strings. For example
string1,"string2" , string3

For most parameters, only the first string in a list is significant. Thus, for most parameters, strings beyond the first are ignored.

Each string in a list, may be an unquoted, quoted, or a combination. For unquoted strings, leading and trailing white space is stripped. White space and commas within matching quotes are preserved. Unquoted and quoted strings, between commas, are concatenated. For example, the input string text string

"a", b, " c,d" e "fg", "z",,
is the same as the six comma separated string list
"a", "b", " c,defg", "z", "", ""

In order for a string to contain a literal comma (one that is not a string list separator), the comma must either appear between matching double quotes ("xx,yy") , or be escaped using a grave accent (xx`,yy). A literal double quote is represented using a grave accent (`"). A double grave accent (``) represents a literal grave accent. For example the input

a b`, c

is taken as the single string

"ab,c"

ASCII Patterns

String values for InquiryStd and AutoFileName are patterns. Patterns are matched with actual strings returned by the SCSI Inquiry command or by system file directory services.

A pattern is an ASCII string that may contain the control characters: ` [ ? * {

A pattern containing control characters may be capable of matching more than one actual string. Filename patterns are case insensitive. Other patterns are case sensitive.

Control characters are described in order precedence, highest first:

` Escape, (a grave accent) disables the special meaning (if any) of the character following (if any) so that it can be matched literally rather than being taken as a pattern control. Use a double grave accent (``) to match a single grave (`). The notation "`?" says match "?" literally.

[characters] Matches a single character with any in list of characters enclosed by brackets. A pair of characters separated by a "-" additionally matches any of the characters lexically between the two. Empty brackets ([]) and any unbalanced brackets are taken literally. The notation [ac-e] matches a c d or e. The notation [-ac-e{}?*`;``] matches - a c d e { } ? * ; or `

? Matches any single character.

* Matches any string including an empty string. The notation a*?[bd-x]z says match a string beginning with a, followed by zero or more undefined characters, and ending with three characters, the first being any single character, the second being either b, or d through x, and the final being z.

{pat1,pat2} Braces enclosing at least one comma, specifies a comma separated list of patterns. Braces may be nested. A final unbalanced {, or any unbalanced }, is taken literally. The notation {a,bc} is shorthand for a, or bc. The notation a{,b{c,de},{f}}g is shorthand for ag, abcg, abdeg, or a{f}g.

When directory separators are used in filename patterns, the forward slash, /, is preferred for compatibility with both Windows and Linux. Wild cards are disallowed for logical drive names (e.g., X:), and directory separators.


Contents Previous Next  

tapedrv.ini [tapedrv] Section

The [tapedrv] section contains global initializations for tapedrv.

magic=<magic_number>
magic is used for file format verification.

ide_search_length=<number_of_ide_channels_to_search>
This parameter controls the number of IDE adapters to search starting with ide0_*. ide_search_length is only meaningful in 16-bit DOS mode.

When ide_search_length=2, then ide0_* (the Primary IDE adapter) is searched first, ide1_* (the Secondary IDE adapter) is searched second, and ide2_* and ide3_* are ignored.

ide[0-3]_port=<base_ide_io_port>
ide[0-3]_irq=<ide_interrupt_request_number>
These parameters configure the IDE host adapter's I/O port address and IRQ. They are only meaningful in 16-bit DOS mode.

devices<NN>=<Device_Section>
device<NN> parameters, where <NN> is 00 through 99, lists the names of each [<Device_Section>] that follows. Any device section name not present within this list is ignored. During program initialization, all devices<NN> are read in in order from devices00 through devices99. The special <Device_Section> name, EndOfDevices, may be used to terminate the device section names list and improve initialization performance.

Contents Previous Next  

tapedrv.ini [autoupdate] Section

An [autoupdate] section has parameters used during execution of the --autoupdate command:
UpdateDelay = <seconds>
<seconds> gives the count down delay before device update.

SkipDelay = <seconds>
<seconds> gives the count down delay before an unupdatable device is skipped.

FinalDelay = <seconds>
<seconds> gives the count down delay after the final status display and before program exit.

Contents Previous Next  

tapedrv.ini [<Device_Section>] Sections

Each supported backup device has its own [<Device_Section>] In order to be used, a given [<Device_Section>] must be mentioned as a devices<NN> = <Device_Section> entry in the [tapedrv] section. A [<Device_Section>] has the following parameters:

Description = "<device description text>"
Description is optional. It has information that is printed by the scan command when a backup device is recognized.
Example:
Description = "IBM Hornet-8 SCSI TR-4"

ReferenceName = "<device reference name for documentation lists>"
ReferenceName is optional. If present, it gives a product reference name that may be used in building lists such as a supported backup devices list.
Example:
Description = "120/240GB SP DDS4 Autoloader"

InquiryStd = "<peripheral_type>:<inquiry_string>"
InquiryStd gives a string used to detect the make and model of the device associated with the device section. It consists of two strings separated by a ":".

<peripheral_type> has a string indicating which peripheral device type to match. The peripheral device type is a 5-bit binary field at Inquiry data byte 0, bits 4..0. Recognized ASCII values and binary mappings for <peripheral_type> are:

ASCII Binary
RmbDisk* 0
Tape 1
CD-DVD 5
Changer 8

* For RmbDisk, the RMB (ReMovable Block device) bit in Standard Inquiry data byte 0, bit 7 must also be set.

<inquiry_string> is an ASCII Pattern string that is compared against the ASCII field of standard Inquiry data returned by the device. Where the ASCII field is 28 character contiguous field beginning at byte 8 and includes the Vendor Identification, Product Identification, and Product Revision Level fields. <inquiry_string>s are case sensitive.

An InquiryStd string template may be generated using the command tapedrv --inquiry.

Examples:
InquiryStd = "Tape:CONNER  CTT8000-S       3???"
InquiryStd = "Changer:HP      C7145           ????"
InquiryStd = "Tape:{SEAGATE DAT   ,ARCHIVE Python} 04106-XXX[73]???"
InquiryStd = "CD-DVD:MATSHITADVD-ROM UJDA780 ????"
InquiryStd = "RmbDisk:{IBM    ,IMATION} RDX             2???"

InquiryStdAscii = "<byte offset>:<ascii pattern>"
InquiryStdHex = "<byte offset>:<hex pattern>"
InquiryStdAscii and InquiryStdHex may optionally be used to extend the matching of standard Inquiry data into the vendor specific data area (byte 36 and beyond). These parameters are used only after Inquiry data matches the InquiryStd parameter in the same [<Device_Section>].

InquiryStdHex is useful for identifying a Firmware Personality byte often kept in byte 41 of Inquiry data.

When the InquiryStdHex parameter is specified, all available standard Inquiry data (up to 255 bytes) is retrieved from the device. Then, the actual number data bytes read is converted into an ASCII hexadecimal string. This hex string is then used as the target of InquiryStdHex pattern matching.

InquiryStdAscii and InquiryStdHex values consists of an integer and a string separated by a ":".

<byte offset> is an integer value, in the range 0 through 254, giving the byte offset in the Inquiry data at which to begin <ascii pattern> or <hex pattern> matching. For example, 41 if we are interested in data starting at byte offset 41 of Inquiry data. This number may be expressed as decimal, hexadecimal (with an 0x prefix), or octal (with a 0 prefix). An empty <byte offset> is erroneous.

<ascii pattern> is an ASCII Pattern string that is compared against the ASCII Inquiry data returned by the device. The final character in <ascii pattern> should be a '*' when the remainder of Inquiry is not of interest. Pattern matching is case sensitive.

<hex pattern> is an ASCII Pattern string using characters from the set *?[-]{}0123456789ABCDEFabcdef. A <hex pattern> is compared against Inquiry data after the data is converted from binary to a hexadecimal ASCII string called the target string. Pattern matching begins at <byte offset> in the target string. Often the final character in <hex pattern> is an '*' when the remainder of the data is not of interest. Pattern matching is case insensitive.

For example, if a device returns the following 56 bytes of Inquiry data:

  0: 01 80 02 02 33 00 00 38 51 55 41 4e 54 55 4d 20  ....3..8QUANTUM 
 16: 44 4c 54 37 30 30 30 20 20 20 20 20 20 20 20 20  DLT7000         
 32: 32 35 36 30 71 60 00 07 32 0f 01 00 00 3f 00 00  2560q`..2....?..
 48: 00 00 00 02 41 30 30 33                          ....A003

The the data is converted to the following 112 character ASCII hexadecimal string (in actuality, all on one line):

"01800202330000385155414e54554d20
 444c5437303030202020202020202020
 3235363071600007320f0100003f0000
 0000000241303033"

Using the parameter

InquiryStdHex = "41:0f*"
specifies that Inquiry byte 41 must be a 0f hexadecimal. Using
InquiryStdHex = "41:[0-4]???{05,3c,99}*"
specifies that byte 41 must be in the range 00 through 4f, and byte 43 must be either 05, 3c, or 99.

InquiryStdHex Examples:
InquiryStdHex = "41:04*" For Quantum OEM personality
InquiryStdHex = "41:0f*" For Quantum OML personality
InquiryStdHex = "41:12*" For Quantum OMX personality

VpdAscii = "<page number>:<byte offset>:<ascii pattern>"
VpdHex = "<page number>:<byte offset>:<hex pattern>"
VpdAscii and VpdHex specify Vital Product Data (VPD) to match. VpdAscii is useful for matching ASCII data, and VpdHex is useful for matching binary data. These parameters are optional. When one or both are present, they further qualify a device whose standard Inquiry data matches the InquiryStd parameter in the same [<Device_Section>].

When these parameters are given, they cause the entire VPD page (upto 255 bytes) to be retrieved for the given VPD page number.

VpdAscii and VpdHex parameter values consists of three fields separated by colons (":").

<page number> is an integer value, in the range 0 through 255, giving the Inquiry Vital Product page number whose data is to be matched against the pattern data. This number may be expressed as decimal, hexadecimal (with an 0x prefix), or octal (with a 0 prefix). For example 193, 0xc1, and 0301 specify the same page. An empty <page number> field is erroneous.

<byte offset> is an integer value, in the range 0 through 254, giving the byte offset in the VPD data at which to begin <ascii pattern> or <hex pattern> matching. For example, 41 if we are interested in data starting at byte offset 41 of VPD data. This number may be expressed as decimal, hexadecimal (with an '0x' prefix), or octal (with a '0' prefix). An empty <byte offset> is erroneous.

<ascii pattern> is an ASCII Pattern string that is compared against the ASCII VPD returned by the device. The final character in <ascii pattern> should be a * when the remainder of VPD is not of interest. Pattern matching is case sensitive.

<hex pattern> is an ASCII Pattern string using characters from the set *?[-]{}0123456789ABCDEFabcdef. A <hex pattern> is compared against VPD after the data is converted from binary to a hexadecimal ASCII string called the target string. Pattern matching begins at <byte offset> in the target string. Often the final character in <hex pattern> is an '*' when the remainder of the data is not of interest. Pattern matching is case insensitive.

VpdAscii Example:
VpdAscii = "3:12:PIE[0-2]*"
says for VPD page 3, byte offset 12, match any ASCII string that begins with PIE0, PIE1, or PIE2.
VpdHex Example:
VpdHex = "0xc0:10:2f*"
says for VPD page 0xc0, byte offset 10, match the binary byte value 2f.

InquiryCFR_OEM = "<1 to 3 digit oem number>"
This optional parameter is needed for certain Seagate DAT drives. It further qualifies a device whose standard Inquiry data matches the InquiryStd parameter in the same [<Device_Section>]. When InquiryCFR_OEM is specified, then the Seagate Controller Firmware Revision (CFR) VPD Inquiry page (0xc0) is retrieved from the drive. The 1 to 3 digit OEM field (skipping the - prefix), contained within the CFR page is compared with an ASCII Pattern given by the parameter value.
Examples:
InquiryCFR_OEM = "0"
InquiryCFR_OEM = "547"
InquiryCFR_OEM = "{000,400}"

AutoFileName = "<firmware file>"
AutoFileName gives name of the firmware file with which to update an out-of-date device. If a -p <firmware_path> is specified on the command line, then <firmware_path> is prefixed to <firmware file>. <firmware file> is an ASCII Pattern. The pattern must represent a unique filename. If AutoFileName is empty or missing from a device section, and and a device is found to be "out-of-date" (when compared with AutoFileVersion), then TAPEDRV reports the device state as "Needs-alternate-update-method". That is, the device needs to be updated by a method other than using tapedrv --autoupdate.
Examples:
AutoFileName = "1234.img"
AutoFileName = "ti4s?3??.fls"

AutoFileVersion = "<4-character version>"
AutoFileVersion gives the version (or Product Revision Level) that would be returned by the device, in the 4-bytes, beginning at byte 32 of SCSI Inquiry data, after the firmware file, given by AutoFileName, is transferred and saved in the device's EEPROM. When any of the 4 characters has the special character "?", it is substituted with the corresponding version character currently present in the device.

If AutoFileVersion is missing or has an empty string, than the drive is displayed as Ignored device. Any non-empty <4-character version> having less than 4-characters is right padded with ? to 4 characters.

To assure correct New version display, "?" must be used when both these conditions occur: 1) the character will not change as a result of the update, and 2) the character is not "fixed" based on the make and model. For example for a Quantum DLT4000, the first and second characters indicate the "servo code level". The servo code level is neither altered by firmware update, nor fixed for the make and model. The third and fourth characters indicate the "firmware code level" and are altered by firmware update. Thus, for the DLT4000, if AutoFileName represents version 45 firmware, then set AutoFileVersion to the string, "??45".

Examples:
AutoFileVersion = "??10"
AutoFileVersion = "1.AB"

CompareControl = "<control>"
CompareControl controls the comparison of the device version (or 4-character Product Revision Level) with that of the file version given by the AutoFileVersion parameter. <control> is a 1 to 4 digit string with each digit being a unique selection from the list 0 1 2 or 3. Characters other than 0 1 2 or 3 are ignored. <control> specifies both the byte offsets of, and significance of version character comparison. That is, the value of each <control> digit is a byte offset in the 4-digit version, while the order of the <control> digits gives the significance of the compared version digits, with the left most <control> digit being the most significant. Version comparisons are case insensitive.

For example if <control> is "3210", all 4 characters of the version are compared in reverse order from right to left. If <control> is "23", than only the final 2 characters of the version are compared from left to right. The string "??23" is identical to "23" because "??" is ignored. If CompareControl is missing or has an empty <control> string, or contains no valid characters then the default value, "0123", is used.


ReplaceVersion = <4-character firmware version>
ReplaceVersion allows downgrading to older firmware. ReplaceVersion expresses one or more 4-character device reported firmware versions as a case sensitive ASCII Pattern. When a given device reports a firmware version that matches that specified by ReplaceVersion, then that device is considered "Out of date". As a result. --autoupdate transfers the firmware specified by AutoFileName regardless of firmware file's version given by AutoFileVersion.
Examples:
ReplaceVersion = "24L5"
ReplaceVersion = "{24L[5-9],24M?}"

UpdateAlgorithm = "<algorithm>"
UpdateAlgorithm selects the <algorithm> used to update the backup device firmware and must be one of the following:
"<algorithm>" Backup Device
"standard" Standard tape or changer
"exabyte_mammoth" Exabyte Mammoth
"exabyte_vxa" Exabyte VXA-2
"seagate_travan" Seagate Travan TR-4, TR-5
"seagate_tr7" Seagate Travan TR-7
"seagate_dds1" Seagate Piranha, Perigrine DDS-1, DDS2-2
"seagate_dds2_256k" Seagate Scorpion DDS-1, DDS-2 w/ 256K EEPROM
"seagate_dds2_512k" Seagate Scorpion DDS-1, DDS-2 w/ 512K EEPROM
"seagate_dds3" Seagate DDS-3
"seagate_dds4" Seagate DDS-4, DAT-72
"panasonic_ujda" Panasonic UJDA780, UJDA782
"panasonic_uj8" Panasonic UJ870
"prostor_rdx" ProStor RDX
"quantum_govault" Quantum GoVault
"quantum_dlt" Quantum/Benchmark DLT (w/ 4KB fw transfers)
"quantum_dlt_8k" Quantum/Benchmark DLT (w/ 8KB fw transfers)
"quantum_dltvs_8k" Quantum/Benchmark DLT-VS (w/ 8KB fw transfers)
"ibm_ultrium" IBM Ultrium
"ibm_library" IBM Library
"hp_dds" HP DDS
"hp_ultrium" HP Ultrium
"hp_library" HP Library/Autoloader
"adic_faststor" ADIC Autoloader
A list of update algorithm attributes is displayed by the command. tapedrv --updatealg_attr.

UpdateFlags = "<flagcharacters>"
<flagcharacters> is a string of case significant flags that control firmware update behavior for an associated device.
<flagcharacter> Meaning
c Skip post firmware update inquiry verification if supported Changer is detected.
Z Write firmware to LUN 0 of same SCSI Device ID.
Example:
UpdateFlags = "cZ"

UpdatePrepare = "<prep_command>" [ , "<prep_command>" ... ]
A list of preparation commands is sent to a backup device before commencing firmware update. Some backup devices do not permit firmware update while media is loaded. Often, backup devices are prepared by ejecting media first. UpdatePrepare gives a preparation command list that overrides the default list. The default list is UpdateAlgorithm dependent. To be effective, an UpdatePrepare parameter must specify one or more valid preparation commands. Each command is executed in the order given. To disable sending any preparation commands, use UpdatePrepare = "NoOp"
<prep_command> Description Device type
Rewind Rewinds tape Tape
Unload Unloads tape, or Dismounts, ejects disk Tape, RmbDisk, CD-DVD
Dismount Dismounts filesystem RmbDisk, CD-DVD
InitElementStatus Scans tape slots Tape, Changer
NoOp No operation All
Note: InitElementStatus may be sent to a tape device for certain integrated autoloaders (e.g., Seagate DAT Autoloader).
Example:
UpdatePrepare = "NoOp"
UpdatePrepare = "Rewind", "Unload"

UpdateSeconds = <seconds>
<seconds> gives a maximum number of seconds required to update firmware. If <seconds> is too small, a firmware update error may be erroneously reported. The default value is 120. Note that, on the display, the operator sees a message similar to Update will take up to <n> minutes where <n> is derived by rounding up <seconds> the nearest minute. The minimum displayed value for <n> is 2.
Example:
UpdateSeconds = 45

WriteBufferID = <byte_value>
WriteBufferID overrides the default Buffer ID byte (the third byte -- CDB[2]) value of SCSI Write Buffer commands used to transfer firmware. <byte_value> is an integer, in the range 0 through 255 (0x00 through 0xff).
Example:
WriteBufferID = 0x01

Contents Previous Next  

tapedrv.ini Example

; tapedrv.ini -- tapedrv initialization
;
; ide_search_length=<number of ide channels to search>
;    This parameter controls the number of IDE adapters to search 
;    starting with ide0_*.
;    When ide_search_length=2, ide0_* (the Primary IDE adapter) is 
;    searched first, ide1_* (the Secondary IDE adapter) is searched 
;    second, and ide2_* and ide3_ are ignored.
; ide[0-3]_port=<base ide io port>
; ide[0-3]_irq=<ide interrupt request number>
;
[tapedrv]
magic = 0x5400
ide_search_length=2
ide0_port=0x1f0
ide0_irq=14
ide1_port=0x170
ide1_irq=15
ide2_port=0x1e8
ide2_irq=11
ide3_port=0x168
ide3_irq=10
devices00 = IBM_Ultrium-TD1_SCSI
devices01 = Seagate_Scorpion-40
devices02 = EndOfDevices

[autoupdate]
UpdateDelay = 25
SkipDelay   = 5
FinalDelay  = 25

[IBM_Ultrium-TD1_SCSI]
Description     = "IBM Ultruim-1"
InquiryStd      = "Tape:IBM     ULTRIUM-TD1     ????"
AutoFileName    = "0BN1.fmr"
AutoFileVersion = "0BN1"
UpdateAlgorithm = "ibm_ultrium"
UpdateSeconds   = 121

[Seagate_Scorpion-40]
; Switch 7 On=SEAGATE..., Off=ARCHIVE...
; Scorpion-40 and Scorpion-240 use same file
Description     = "Seagate Scorpion-40 DDS-4: STDx401LW"
InquiryStd      = "Tape:{SEAGATE DAT   ,ARCHIVE Python} 06240-XXX8???"
AutoFileName    = "v8???000.bin"
AutoFileVersion = "8160"
CompareControl  = "?123"
UpdateAlgorithm = "seagate_dds4"
UpdateSeconds   = 60

Contents Previous Next  

tapedrv.msg Syntax

tapedrv.msg contains messages used by the tapedrv program. The message file is a text file which has message entries and comments. Each message entry consists of a message number and a message string.

Message numbers are positive hexadecimal integers.

Message strings are similar to strings in the C programming language. Each message string is double quoted. Multiple quoted strings are concatenated. That is, "string1" "string2" is the same as "string1string2". With in a message string, certain escape sequences are recognized. Escape sequences begin with a Backslash (\).
Escape Sequence Meaning
\a Alert (bell)
\b Backspace
\f Form feed
\n Newline
\r Carriage return
\t Tab
\v Vertical tab
\\ Backslash (\)
\" Double quote (")
\<ooo> <ooo> is a one through three digit octal number in the range 0 (or 000) through 377 octal (equivalent to 255 decimal) representing an ASCII code. For example, \101 is the same as the A character, and \40 or \040 is the same as the SPACE ( ) character.

Two types of comments are recognized, the double slash (//) and the traditional C language style slash-star star-slash (/**/).

A double slash (//) opens a comment which continues until end of line. For example:

      // This is a double slash comment

A slash-star star-slash (/**/) comment is opened by a slash-star (/*) and continues, possibly for several lines, until closed by a star-slash (*/). For example:

      /* This is a 
         slash-star star-slash comment */

Contents Previous Next  

tapedrv.msg Special Messages

0020 "<build_number>" must agree with the build number stored in the tapedrv executable. For example, 0020 "1067"


Contents Previous Next  

tapedrv.msg Runtime Error Checking

Each time tapedrv is invoked, it performs certain checks on the message file. The syntax of the tapedrv.msg is checked. If there is an error in syntax, one of following errors are shown:

   .../tapedrv.msg(<line number>): Message file syntax error: 
      Message number to large
      Unexpected end-of-file in c-string
      Unexpected end-of-file in comment begun on line <line number>
      '<character>': Unquoted character
tapedrv also checks tapedrv.msg for a special version message, message number 20, and may show one of these errors:
   ".../tapedrv.msg": Version message (20) not found
   ".../tapedrv.msg": Incorrect message file version
For most messages, when tapedrv cannot locate a given message number, one of these errors is shown:
   ".../tapedrv.msg": <message_number>: Message not found
See also msgck Command.
Contents Previous Next  

tapedrv Executable

For DOS/Windows, tapedrv.exe contains two program images -- a 16-bit DOS program called TAPEDRV16, and a 32-bit Win32 Intel platform program called TAPEDRV32. One of the two images is selected by the OS loader at runtime.

TAPEDRV16 executes in MS-DOS, or Windows 95/98/Me when booted in MS-DOS Only mode. The Video BIOS (int 10) API is used for screen updates.

TAPEDRV32 executes in Windows 95/98/Me in Graphics (normal) mode, or Windows NT 3.51/NT 4.0/2000/XP/2003/Vista. The Win32 Console I/O API is used for screen updates.

For Linux, a platform specific executable, tapedrv.linux.<arch>. <arch> is the name of a platform architecture. For example, i386, x86_64 or ia64. The ncurses library is used for screen updates.

Early during program initialization, a device enumeration phase is executed. The enumeration phase constructs a list of backup devices. When the --autoupdate command is given, a second phase steps through the list of backup devices and updates each 'Out-of-date' device with firmware from files specified in tapedrv.ini.

Interfaces Used for Accessing Backup Devices

TAPEDRV16, accesses SCSI backup devices via the DOS ASPI driver. The ASPI driver must have been loaded from CONFIG.SYS during boot. For ATAPI Travan drives, TAPEDRV16 finds and accesses the drives using a built-in ATAPI/IDE ASPI driver (no DOS ASPI driver is required for ATAPI Travan drives). Note: TAPEDRV cannot access Travan ATAPI tape drives while running Windows 3.1x (you must exit from Windows 3.1x to DOS.)

TAPEDRV32, when running in Windows 95/98/Me in Graphics mode, finds and accesses both SCSI and ATAPI backup devices via %SysetmRoot%\system\WNASPI32.DLL. WNASPI32.DLL provides a 32-bit ASPI interface and should be present in all Windows 95/98/Me installations.

TAPEDRV32, when running in Windows NT 3.51/NT 4.0/2000/XP/2003- /Vista/2008/7, access both ATAPI and SCSI backup device by the OS provided SCSI Pass Through Interface (SPTI). For Windows 2000 and later, TAPEDRV scans the Plug-and-Play enumeration using the SetupDi*() API. To locate Disk/CD-DVD devices, the drive letters C: through Z: are scanned. Finally, the registry's "HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi" tree is scanned for backup devices. Backup devices may be either "Claimed", by a Disk/CD-DVD/Tape/Changer Class driver, or "Unclaimed". For unclaimed Tape/Changer devices the SPTI is via a SCSI Port driver. For each claimed backup device, SPTI is via its associated Class driver. Beginning with Windows 2000, IOCTL_STORAGE_GET_DEVICE_NUMBER, is used to weed out duplicate device detections.

tapedrv.linux finds devices using enumeration information from /proc/scsi/sg/device_strs (for 2.4 and earlier kernels), /sys/class/scsi_generic (for 2.6 and later kernels), and /dev/hd<X> (where <X> is a through r) (for 2.4 and early 2.6 kernels). The ioctls SG_IO, or CDROM_SEND_PACKET are used to update device firmware.

Finding Backup Devices via ASPI 16/32

When using the ASPI 16 or 32-bit interfaces, TAPEDRV16/32 constructs a list of backup devices by first requesting ASPI to return the number of host adapters present. Then for each possible SCSI target ID (device address) on each host adapter, TAPEDRV sends a SCSI Inquiry command via ASPI. For each successful Inquiry command, TAPEDRV passes control to an enumeration algorithm. If the enumeration algorithm examines the device, and if it qualifies, it is added to a backup device list.

Device Enumeration

During enumeration, device Inquiry data is examined for each ATAPI and SCSI device. The device's standard Inquiry data, (meaning the Peripheral Device Type in byte 0 and the 28-character inquiry string at byte 8) are compared with each [<Device_Section>]'s InquiryStd parameter. For example:
      InquiryStd = "Tape:SEAGATE DAT    02779-XXX6???". 
If there is an InquiryStd match, then all other qualification parameters -- InquiryStdAscii, InquiryStdHex, VpdAscii, VpdHex, and InquiryCFR_OEM -- if present in the same [<Device_Section>], are compared with values returned by the device.
Contents Previous Next  

Exit Codes

On exit, tapedrv --autoupdate returns one of the following codes, sorted by priority, from lowest to highest:

Pri-
ority
Exit
Code
Description
10Backup device(s) either up-to-date, or successfully updated

One or more supported backup storage devices was identified, and these devices were either already up-to-date, or their firmware was successfully updated.

1171No supported backup device found

No supported backup storage device was identified. However, an unsupported backup storage device may be present.

29Bacup device is inaccessible

A backup storage device was either partially or fully recognized (e.g. appears in the Windows registry or Linux /proc/scsi/sg/device_strs). However, the device is inaccessible (for a reason other than exit code 8: "device-in-use"). Typical causes for inaccessibility are either a device driver is disabled or not installed. This exit code is also reported when a device fails to open for a reason other than "device- in-use".

36Backup device needs update by an alternate method

One or more supported devices was found to have out-of-date firmware. However, this program is incapable of updating the device. An alternate method of update is required. Alternate methods may include update using a different program, replacement of a EEPROM, or factory update.

47Backup device needs update in DOS only mode

A supported device was found to have out-of-date firmware. However, this program can only update the firmware while booted in 16-bit DOS only mode. Firmware cannot be updated from either Windows 95/98/Me in graphics mode or from Windows NT/2000/XP/2003/Vista.

55Operator canceled automatic update
58Backup device in use by another program

A supported device was either partially or fully recognized (e.g., the device appears in the Windows registry or Linux /proc/scsi/sg/device_strs). However, the device cannot be opened because as it is in use by another program.

61Backup device update failure

One or more supported devices were identified, and one or more of these devices required a firmware update. However, at least one device failed to be updated.

64Unrecoverable error unrelated to the backup device

These errors include
- Unable to open tapedrv.msg, tapedrv.ini, or firmware file
- Invalid or corrupt firmware file
- Insufficient memory

On exit, tapedrv status returns one of the following codes:
Exit
Code
Description
0Tape status successfully reported
4Unrecoverable error making it impossible to report status

Contents Previous Next  

Tapedrv Errors

The following lists tapedrv errors and commentary.

 

TAPEDRV8010 error: "<program function>": Out of memory

Comment:

There is likely a programming error in TAPEDRV. Contact technical support.

 

TAPEDRV8110: No IDE adapter found.

TAPEDRV8111: The DOS ASPI Manager was not found.

TAPEDRV8112: No IDE adapter found, and the DOS ASPI Manager was not found.

Comment:

If you have an ATAPI/IDE backup device and the message says "No IDE adapter found", verify that the appropriate IDE channel is enabled in the BIOS setup. If you have a SCSI backup device and the message says DOS ASPI Manager was not found", and you are booting from floppy or hard disk, you may need to install a DOS ASPI driver for the host adapter. A line similar to the following should appear in the CONFIG.SYS that resides on the floppy or hard disk from which DOS boots:

DEVICE=<aspi driver name>

An ASPI driver is usually supplied by the manufacturer of the SCSI host adapter (controller). Consult your SCSI host adapter manual for information on the ASPI driver. The Windows 98/Me Startup Diskette is pre-configured with ASPI drivers that support popular SCSI host adapters.

 

TAPEDRV8113: The Windows 95/98/Me ASPI Manager was not found.

Comment:

Normally all Windows 95/98/Me installations include an ASPI Manager, thus the Windows installation may be corrupt. Try rebooting in DOS only mode. If you have a SCSI backup device, you will need to have a DOS ASPI manager driver configured. See TAPEDRV8111 comment.

 

TAPEDRV8115: No {ATAPI/IDE,SCSI/FC} host adapters found.

Comment:

You may need to install an ATAPI/IDE or SCSI/FibreChannel driver for the host adapter (also called a controller) to which the backup device is attached.
For NT 4.0, click

Start -> Settings -> Control Panel -> SCSI -> Drivers

If you see that an adapter driver is installed but not started, then the driver is, likely, not recognizing the backup device. In this case, check the hardware installation.
See TAPEDRV8510 comment.
For Windows, check for the existence of an ATAPI/IDE or SCSI/FibreChannel controller in the Device Manager by right clicking on

My Computer -> Properties

then selecting the Device Manager tab, or the Hardware tab and Device Manager button. If the controller, to which the tape device is connected, is not present, use

Start -> Settings -> Control Panel -> Add/Remove Hardware

to detect and install a driver for the controller.

 

TAPEDRV8130 error: [<Device Section>]: "<filepattern>":
File find error: <error description>

Pattern syntax: Missing ]

Pattern syntax: Missing }

Insufficient stack memory

File not found

Filename not unique

Comment:

These errors indicate a failure to match or locate a file during an autoupdate operation. Typical causes of these errors include:

 

TAPEDRV8140 error: "<inquiry string>", "<firmware file>":
Firmware file open error: <system error>

TAPEDRV8142 error: "<inquiry string>", "<firmware file>":
Firmware file read error: <system error>

TAPEDRV8143 error: "<inquiry string>", "<firmware file>":
Firmware file seek error: <system error>

Comment:

Possible causes of these errors include:

TAPEDRV8150 error: "<inquiry string>", "<firmware file>"(<line>):
Hexfile record error: <error description>.

TAPEDRV8160 error: "<inquiry string>", "<firmware file>"(<line>):
Hexfile syntax error: <error description>.

TAPEDRV8170 error: "<inquiry string>", "<firmware file>":
Firmware file signature invalid.

TAPEDRV8180 error: "<inquiry string>", "<firmware file>":
<n> byte firmware image size: Invalid.

TAPEDRV8190 error: "<inquiry string>", "<firmware file>": <n> byte firmware file image size.
does not match <n> byte device requirement.

TAPEDRV8195 error: "<inquiry string>", "<firmware file>": <n> byte firmware file image size.
Firmware file incompatible with device hardware platform.

Comment:

The firmware file may be corrupt. Obtain a new copy of the firmware file intended for your backup device model then try again.

 

TAPEDRV8200 error: "<inquiry string>", "<firmware file>":
Insufficient memory for <n>K transfer buffer.

TAPEDRV8201 error: "<inquiry string>", "<firmware file>":
Insufficient memory for <n>K transfer buffer (additional <m>K needed).

Comment:

If using MS-DOS, Windows 3.1x or, Windows 95/98/Me in MS-DOS only mode, you may need to remove (or comment out) unnecessary drivers and/or "terminate-and-stay-resident" (TSR) programs from CONFIG.SYS and AUTOEXEC.BAT to increase available memory for TAPEDRV.

 

TAPEDRV8210: "<inquiry string>", "<firmware file>":
Cannot update device's firmware in Windows 95/98/Me Graphics mode
(within a DOS Box). Reboot your system into MS-DOS only mode.

TAPEDRV8220: "<inquiry string>", "<firmware file>":
Cannot update device's firmware from Windows NT/2000/XP.
Use MS-DOS or Windows 95/98/Me in MS-DOS Only mode.

Comment:

Backup device update require a Write Buffer data transfer with transfer size that exceeds the capability of Windows. Backup device update should be successful when the system is booted in DOS mode.

 

TAPEDRV8270 error: "<inquiry string>": Backup device inaccessible: Device cannot be accessed via either a class driver or a SCSI port driver. A class driver cannot be accessed as there is no 'DeviceName' in the registry. Possible causes: Device driver not installed, device service disabled, or device driver failed to load.

Comment:

For a given backup device, that was found to be attached to a SCSI port, and marked as "claimed by a Windows class driver", the DeviceName, by which the class driver is accessed, can not located through an examination of the registry. To recover, use Device Manager to remove the backup device, then use Device Manager's "Scan for hardware changes" rescan for the backup device. Then try firmware update again.

 

TAPEDRV8272 error: "<inquiry string>": Backup device inaccessible:
"<devicefile>": Open: <additional error information>

Comment:

Some other process may be using the backup device. This includes a backup application, diagnostic, agent, service, another instance of the firmware update program, or some other process. The process must be located and terminated to make the tape device accessible.
On Windows 2000/XP/2003/Vista, for a Library, Removable Storage Manager (RSM) may be using the Medium Changer component of the Library. One way to stop (or start) RSM is by way of the Service Control Manager:

Another way to stop or start the RSM service is by way of command prompt using the NET.EXE command. For example:

C:\> net stop ntmssvc
C:\> net start ntmssvc

On Windows you may be able to locate the process using <Ctrl><Alt><Del> to open the task manager and examining the task list or running processes list.
On Linux, you may be able to locate the process that has the device open using the command:

# ps -efl | fgrep <device-name>

Setting the run level to single user mode by

# telinit 1

might close any backup agent or other process that is using the backup device (and revert from a GUI to a character interface).

 

TAPEDRV8274 error: "<inquiry string>": Backup device inaccessible:
"<devicefile>": Get parameters: <additional error information>

TAPEDRV8276 error: "<inquiry string>": Backup device inaccessible:
"<devicefile>": SCSI Input/Output: <additional error information>

Comment:

There is likely a programming error in TAPEDRV. Contact technical support.

 

TAPEDRV8310 error: Backup device re-select failure:
<additional error information>

TAPEDRV8320 error: Backup re-inquiry mismatch:
Expected device identity: "<device identity>"
Got device identity "<device identity>"

TAPEDRV8330 error: Backup device is not responding:
<additional error information>
Firmware update not started.

TAPEDRV8340 error: Device communication error: Too many Unit Attentions: <additional error information> Firmware update not started.

TAPEDRV8350 error: Device communication error: Unexpected sense key:
<additional error information>
Firmware update not started.

Comment:

Verify that backup device's cables are securely connected.
See TAPEDRV8510 comment.

 

TAPEDRV8360 error: Timeout waiting device to become stable:
<additional error information>
Firmware update not started.

Comment:

When updating a medium changer, try inserting a tape in the first storage slot before running update procedure.
Verify that backup device's cables are securely connected.
See TAPEDRV8510 comment.

 

TAPEDRV8410 error: [<device section>]: UpdateAlgorithm "<algorithm name>":
Unrecognized or missing

Comment:

The UpdateAlgorithm parameter, for the named device section in tapedrv.ini, needs to be edited.

 

TAPEDRV8510: A backup device was NOT found.

Comment:

Verify that backup device's cables are securely connected.
If an ATAPI/IDE backup device is being used with another device (for example, CD-ROM) on the same IDE cable, make sure that one is configured as master and the other as slave.
If a SCSI backup device is being used, verify that the SCSI bus is properly terminated. Make sure the backup device's SCSI ID does not conflict with another device on the SCSI bus.

If you specified a particular backup device using -t <targ-unit> and/or -s <serial> command line options, then enter the command

tapedrv --list

(without the -t or -s options) then, examine the output to verify whether the <targ-unit> and/or <serial> parameters are correct.

 

TAPEDRV8561 error: "<device name>" "<inquiry string>": Failed to dismount volume. Retry firmware update after closing all windows and applications
context menu, or an eject button on the device.
that access the device.

TAPEDRV8562 error: "<device name>" "<inquiry string>": Failed to eject media. Retry firmware update after ejecting media via
context menu, or an eject button on the device.
If eject fails, use the (paper clip) emergency eject
method documented in the device owner's manual.

Comment:

Device requires dismounting of filesystem to avoid corruption, or ejection of medium before proceeding. Take appropriate action, then retry firmware update.

 

TAPEDRV8563 error: <ctlr>[.<bus>]/<targid>.<lun>, "<inquiry string>":
Can't locate LUN0 with same SCSI ID
Firmware update failed.

Comment:

The firmware for this device must be loaded through LUN 0 even though the device actually exists at some non-zero LUN (with the same SCSI target ID). However, LUN 0 cannot be located.

 

TAPEDRV8564 error: "<inquiry string>", "<firmware file>": image offset 0x<n>: WriteBuffer(mode=0x<n>, adrs=0x<n> length=<n>):
<additional error information>
Retry after inserting a write-enabled and password-unlocked
data cartridge.

Comment:

GoVault requires a write-enabled, and password-unlocked (if password protected) cartridge be inserted prior to firmware update.

 

TAPEDRV8565 error: "<inquiry string>", "<firmware file>":
image offset 0x<n>: WriteBuffer(mode=0x<n>, adrs=0x<n> length=<n>):
<additional error information>
The backup device rejected the firmware.
Try selecting a different firmware file.

TAPEDRV8566 error: "<inquiry string>", "<firmware file>":
Timeout waiting for firmware flash write operation to complete.
Firmware update status unknown.
-- For an external USB device, power-cycle the device.
-- Otherwise shutdown, power-cycle the computer and device, then reboot.
From "<tapedrv directory>", use the command, "tapedrv status" to determine
whether firmware was updated from "<xxxx>" to "<zzzz>".

TAPEDRV8570 error: "<inquiry string>", "<firmware file>":
image offset 0x<n>: WriteBuffer(mode=0x<n>, adrs=0x<n> length=<n>):
<additional error information>
An error occurred while downloading firmware.
Firmware update failed.

TAPEDRV8571 error: "<inquiry string>", "<firmware file>":
image offset 0x<n>: WriteBuffer(mode=0x<n>, adrs=0x<n> length=<n>):
<additional error information>
A device read error occurred while retrieving firmware during verification.
Firmware update failed.

TAPEDRV8572 error: "<inquiry string>", "<firmware file>":
image offset 0x<n>: WriteBuffer(mode=0x<n>, adrs=0x<n> length=<n>):
Firmware retrieved from device does not match the file during verification.
Firmware update failed.

 

TAPEDRV8573 error: "<inquiry string>", "<firmware file>":
RDX System Offload Processor (RSOP) image offset 0x<n>:
<additional error information>

Comment:

The backup device may have rejected the new firmware. The new firmware may be incorrect for the device.

 

TAPEDRV8575: "<devicefile>", "<inquiry string>":
Reopen after firmware update and bus re-scan:
<additional error information>
Firmware update status unknown.
-- For an external USB device, simply power-cycle the device.
-- Otherwise shutdown, power-cycle the computer and device, then reboot.
From "<tapedrv directory>", use the command, "tapedrv status" to determine
whether firmware was updated from "<xxxx>" to "<zzzz>".

TAPEDRV8576 error: "<devicefile>", "<inquiry string>":
Inquiry error after firmware update:
<additional error information>
Firmware update status unknown.
-- For an external USB device, simply power-cycle the device.
-- Otherwise shutdown, power-cycle the computer and device, then reboot.
From "<tapedrv directory>", use the command, "tapedrv status" to determine
whether firmware was updated from "<xxxx>" to "<zzzz>".

Comment:

Matsushita/Panasonic UJDA 780/782 on Linux 2.4 may report this error. After power-cycle, 'tapedrv status' should show the updated firmware version firmware update to be correct.

GoVault may also report this error. After power-cycle, 'tapedrv status' should show the updated firmware version to be correct.

These errors occur when either the device needs to be reset in order to respond, or a driver was not successfully reinstalled. For an external hot-pluggable device, either a device power-cycle, or a (USB/SAS/SATA) data cable plug re-insertion should start the device responding. You can try Device Manager's "Scan for hardware changes" to re-install the driver. Otherwise, power cycle the computer and attached devices, then reboot the system. Check for device response, and firmware version using the command 'tapedrv status'.

 

TAPEDRV8590 error: "<inquiry string>", "<firmware file>":
Old version "<xxxx>", Current version "<yyyy>", Expected new version "<zzzz>":
The version did not change to the expected.
-- For an external USB device, simply power-cycle the device.
-- Otherwise shutdown, power-cycle the computer and device, then reboot.
From "<tapedrv directory>", use the command, "tapedrv status" to determine
whether firmware was updated from "<xxxx>" to "<zzzz>".

Comment:

Possible causes include:

 

TAPEDRV8700 WARNING:
The above device(s) need power-cycling before media access.
-- For an external USB device, simply power-cycle the device.
-- Otherwise shutdown, power-cycle the computer and device, then reboot.

Comment:

Firmware update has either selected a device mode that can only be exited by power-cycle (e.g., Panasonic UJDA), or rendered an unstable device data bus state (e.g., GoVault).



Contents Previous Next  

Device Firmware Update Issues

3502-R14 Library with DLT7000 Tape Drives

Inquiry string: "QUANTUM DLT7000         ????" Tape

Inquiry string: "QUANTUM Powerstor L500  ????" Medium-changer

Firmware update fails for DLT7000 Drive in a 3502-R14 Library when a tape is present in the drive. Return any tapes loaded in tape drives, to storage slots before proceeding with firmware update. If the message

"TAPEDRV8360 error: Timeout waiting device to become stable"

is seen, try inserting a tape in the first storage slot.

3600 and 8502 Libraries

Inquiry string: "HP      C7200           ????" Medium-changer

Inquiry string: "HP      C7145           ????" Medium-changer

Both the 3600 and 8502 libraries need to be rebooted after Library firmware is updated. On autoupdate, Tape device firmware is updated prior to Library device firmware. This order of update is meant to reduce the number of reboots. On completion of Library firmware is update, a Library power cycle as well as a host system reboot is recommended.

GoVault SATAPI/USB Removable-Disk

Inquiry string: "IBM     GoVault         ????" Removable-disk

Reports "TAPEDRV8575: Reopen after firmware update and bus re-scan",
or "TAPEDRV8576: Inquiry error after firmware update",
but firmware update is actually successful.

After firmware update, the device needs to be power-cycled.

Firmware update success isn't be determined because either the device disappeared the system plug-and-play enumeration, or the device's Inquiry data can't be read after firmware update. After a device power-cycle, firmware update status may be determined by examining the output of the command:

tapedrv status

In the output, the "Device Firmware State" should be an "Up-to-date".

Panasonic/Matsushita UJDA 780/782 PATAPI/SATAPI CD-DVD

Inquiry string: "MATSHITADVD-ROM UJDA780 D???" CD-DVD

Reports "TAPEDRV8576 error: Inquiry error after firmware update", but firmware update is actually successful on Linux 2.4 kernels.

After firmware update, the device needs to be power-cycled.

Firmware update may fail because the device's Inquiry data can't be read after firmware update. After a device power-cycle, firmware update status may be determined by examining the output of the command:

tapedrv status

In the output, the "Device Firmware State" should be an "Up-to-date".

RDX Internal USB Removable-Disk

Inquiry string: "IBM     RDX             3???" Removable-disk

(The 3 in the revision identifies the RDX as an Internal USB device).

Reports "TAPEDRV8573 error" on firmware update on Linux 2.4 kernels when the firmware file contains an "RDX System Offload Processor" (RSOP) firmware image.

For successful update, Linux 2.6 or Windows should be used.

Travan TR4/TR5 PATAPI Tape Drives

Inquiry string: "CONNER  CTT8000-A       5???" Tape

Inquiry string: "Seagate STT8000A        5???" Tape

Inquiry string: "Seagate STT20000A       8???" Tape

Reports "TAPEDRV8201 error: Insufficient memory for 282K transfer buffer (additional 154K needed)" on later Linux 2.6 kernels (about 2.6.18 and later).

These devices need a single 288,768 byte WRITE BUFFER operation to transfer firmware. Newer kernels (about 2.6.18 and later) place a new restriction on the maximum transfer size. Somewhere in about kernel 2.6.18 a Bugzilla Bug 7026 was addressed to fix a 'cdrecord' issue by changing the sg ioctl SG_SET_RESERVED_SIZE to cap the buffer size at 131,072 (=512 * 255) bytes. Patch as857 implements the change. This change brakes firmware update for the above mentioned Travan TR4/TR5 PATAPI devices.

For successful firmware update, use a Linux kernel prior to 2.1.18, or MS-DOS. RedHat 7.2 32-bit (kernel 2.4.7-10) and Fedora Core 3 32-bit (kernel 2.6.9-1.667) are known to work.



Contents Previous Next  

DOS Notes

TAPEDRV8570 error under DOS using an IPSRASPI.SYS Driver

When using the IPSRASPI.SYS DOS mode ASPI raid driver on an IBM Netfinity server, the following error was observed during firmware update of a Seagate Scorpion-24:
TAPEDRV8570 error: WriteBuffer(mode=7, adrs=0x00180000 length=0) error.
Host adapter status 0x11
This error is reported when the IPSRASPI.SYS driver times out a firmware update (WriteBuffer) request before firmware update is actually completed. The firmware update actually completes successfully after the message appears.

This error is circumvented by increasing the timeout used by the IPSRASPI.SYS driver. IPSRASPI.SYS supports the following CONFIG.SYS line parameters.

/t:<ticks> Timeout in ticks (18.2 ticks/second)
/F Load even if no device is seen SCSI scan

For example, the following CONFIG.SYS line gives about a 6.4 minute timeout which is sufficient (5 minutes + 1.4 minute safety margin) for updating firmware in a Scorpion-240 loader.

DEVICE=IPSRASPI.SYS /t:7000 /F
Currently, the Seagate Scorpion-240 loader needs the longest timeout (about 5 minutes) of any supported backup device. Most ASPI drivers have an infinite timeout.

Contents Previous Next  

Windows Notes

Windows 2000/XP/2003/Vista -- Before Firmware Update

If the system contains a library (also called medium changers, robots, automation units, etc.) that is managed by Removable Storage Manager (RSM). Then RSM must be stopped to permit access to the library so that out-of-date firmware may be updated.

To determine whether the library is managed by RSM,

To Stop RSM: Another way to stop (or start) the RSM service is by way of command prompt using the NET.EXE command. For example:
C:\> net stop ntmssvc
C:\> net start ntmssvc

Windows 2000/XP/2003/Vista -- After Firmware Update

During firmware update, the following two system dialogs (typically, on Windows 2000 prior to Service Pack 2) may appear: If an "Unsafe Removal of Device" dialog appears, ignore and close the dialog.

If a "Files Needed" dialog appears asking you to supply the path to the backup device driver (.sys) file, then the currently installed backup device driver can be used by entering the path to the Windows driver directory as shown:

Files Needed
...
Copy files from:
[ C:\Winnt\System32\Drivers ] for Windows 2000
[ C:\Windows\System32\Drivers ] for Windows XP/2003/Vista
then click 'OK'.
Note: On some systems, Windows may be installed in a folder other than C:\Winnt or C:\Windows. You can find the Windows directory by opening a Command prompt and typing in the command:
C:\> set SystemRoot

Windows 2000/XP/2003/Vista Additional Information

Upon firmware update to a different version, Windows 2000/XP/2003/Vista considers the backup device to be a "new" device. When a "new" device appears, the device's class driver is removed then reinstalled.

Windows may or may not automatically reinstall the driver depending on the Windows version, device type, and bus type. Thus, the firmware update program attempts to insure driver reinstallation by performing the equivalent of two Device Manager "Scan for hardware changes" operations. One "Scan" uninstalls the driver, and the other reinstalls the driver.

If an "Unsafe Removal of Device" dialog appears, Device Manager has removed the backup device as it no longer "sees" the device as being present (because it no longer sees the old firmware version). Ignore and close the dialog.

For Windows 2000 prior to SP2, a "Files Needed" dialog may appear when Windows is reinstalling the backup device driver. Typically, "Files Needed" appears only when an add-on backup device driver was installed from removable media such as CD-ROM or floppy, (rather than from an installation folder on the hard disc). To avoid "Files Needed", in the future, copy driver installation files to the hard disc, then update the driver using the files from the installation folder.


Contents Previous Next  

Linux Notes

TAPEDRV works with most Linux 2.4 and 2.6 kernels. To find the kernel version, use the command: uname -r

For 2.4 and early 2.6 kernels, TAPEDRV can detect and update PATAPI/SATAPI CD-DVD devices via the IDE driver devices /dev/hda, ..., /dev/hdr.

Otherwise, TAPEDRV relies on the SCSI generic (sg) driver to access all other backup devices. By convention, the sg device file names are /dev/sg0, /dev/sg1, ...

For both 2.4 and 2.6 kernels, you can verify whether the sg driver is loaded as well as the presence of removable-disk, CD-DVD, tape (and other SCSI) devices using the command:

      # cat /proc/scsi/sg/device_strs

Each line in device_strs shows a device's standard Inquiry data and corresponds to a /dev/sg<N>.

PATAPI/SATAPI removable-disk not detected by TAPEDRV

If your system-board attached PATAPI/SATAPI removable-disk fails to be detected and does not appear in /proc/scsi/sg/device_strs, then possibly, system has failed to automatically load the ide-scsi driver required by these devices.

This procedure is meant for kernels that are configured to use IDE drivers (rather than the newer LIBATA drivers). For most distributions, this includes 2.4 kernels and early 2.6 kernels (about 2.6.20 and previous).

  1. Examine DMESG output to verify the kernel is configured with IDE drivers. For example:
          # dmesg | grep ^ide
          ide: Assuming 33MHz PCI bus speed for PIO modes; override with idebus=xx
          ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
          ide1 at 0x170-0x177,0x376 on irq 15
    

    If DEMSG output contains "ide" entries, then the kernel is configured with IDE drivers, and the remainder of the procedure should be successful. Otherwise, the kernel is likely using LIBATA meaning there is some other issue making it pointless to continue.

  2. From a Linux console, enter the following to make PATAPI/SATAPI or USB removable-disk appear as a SCSI device in /proc/scsi/sg/device_strs:
          # modprobe ide-scsi
          # modprobe sd_mod
          # modprobe sg
          # cat /proc/scsi/sg/device_strs
    
  3. If your device now appears in device_strs, update the device firmware.

PATAPI/SATAPI tape device not detected by TAPEDRV

If your system-board attached PATAPI/SATAPI tape device fails to be detected and does not appear in /proc/scsi/sg/device_strs, this procedure attempts to load the, driver stack required by TAPEDRV.

This procedure is meant for kernels that are configured to use IDE drivers (rather than the newer LIBATA drivers). For most distributions, this includes 2.4 kernels and early 2.6 kernels (about 2.6.20 and previous).

  1. Examine DMESG output to verify the kernel is configured with IDE drivers. For example:
          # dmesg | grep ^ide
          ide: Assuming 33MHz PCI bus speed for PIO modes; override with idebus=xx
          ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
          ide1 at 0x170-0x177,0x376 on irq 15
    

    If DEMSG output contains "ide" entries, then the kernel is configured with IDE drivers, and the remainder of the procedure should be successful. Otherwise, the kernel is likely using LIBATA making it pointless to continue.

  2. From a Linux console, enter the following to make a PATAPI/SATAPI tape device appear as a SCSI device in /proc/scsi/sg/device_strs:
          # rmmod ide-tape
          # modprobe ide-scsi
          # modprobe st
          # modprobe sg
          # cat /proc/scsi/sg/device_strs
    
  3. If your device now appears in device_strs, update the device firmware, then reboot to return to normal operation.

Additional Information

TAPEDRV makes use of the Linux UMOUNT and EJECT commands. UMOUNT may be used to dismount removable-disk or CD-DVD media. EJECT may be used to dismount and eject removable-disk, CD-DVD, or tape media.

2.4 Kernels

More information on Linux IDE and SCSI systems related to tape and CD-DVD drivers is found by searching the internet for:

Linux 2.4 SCSI subsystem HOWTO 9.2. CDROM driver (sr or scd)

or visiting:

http://tldp.org/HOWTO/SCSI-2.4-HOWTO/sr.html

Some Linux 2.4 kernels have a known driver bug that causes SCSI error messages to be displayed during backup device detection. Normally, this does not affect the firmware update operation and can be ignored.

If firmware update shows a failed status and the console shows 'parity errors', this is usually a result of a failure to renegotiate SCSI Synchronous Data Transfer, immediately after the update completes, by either the host adapter or SCSI driver. The firmware update is not affected.

2.6 Kernels

In 2.6 kernels, the sg driver, when loaded, breaks up standard Inquiry data and creates a series of single line text files, in the sysfs, for each device found:

/sys/class/scsi_generic/sg<N>/device/type -- SCSI peripheral device type number

/sys/class/scsi_generic/sg<N>/device/vendor -- Vendor string

/sys/class/scsi_generic/sg<N>/device/model -- Product string

/sys/class/scsi_generic/sg<N>/device/rev -- Revision string

For backward compatibility, the sg driver in 2.6 kernels also creates the (more easily read) procfs text file:

/proc/scsi/sg/device_strs



Contents Previous  

Supported Backup Devices

TAPEDRV supports the following incomplete list of backup devices. "Backup devices" includes tape drive, medium changer, removable-disk, and CD-DVD devices. Medium changers are also called loaders, libraries, and robots.

Description
60/120GB 8mm Mammoth 2
20/40GB 8mm Mammoth 1
4/8GB TR4 CTT
4/8GB TR4 STT
4/8GB TR4 Hornet 8 CTT
4/8GB TR4 IDE
10/20GB NS20
10/20GB IDE TR5
12/24GB DDS/3 4mm
20/40GB DDS/4 4mm
120/240GB DDS/4 Autoloader
20/40GB DLT4000
35/70GB DLT7000
40/80GB DLT8000
3502-108
3502-314, 3502-R14
3502-XXX Sled drive
40/80GB DLTVS
100/200GB IBM LTO Ultrium (full hight)
DDS/2 512K Archive
100/200GB HH LTO
110/220GB SDLT
3600 Library picker/robot
3600 Autoloader picker/robot
20/40GB DDS/4 LC
20/40GB TR7
3607-16X
4560-SLX
3580 IBM Ultrium
GoVault removable-disk
RDX removable-disk
UJDA 780/782 CD-DVD
UJ870 CD-DVD