Media Robot Utility software (MRU) is a multiplatform utility for controlling robotic media loaders and libraries. The MRU allows you to control operations at a very low level: injecting and ejecting cartridges, loading and unloading cartridges, and showing status and attributes of robotic loaders and libraries. CAUTION MRU provides no media management or cataloging capability. Use MRU in a managed media environment with care. Manipulating cartridges with MRU and without knowledge of the media management system could create inconsistency between the media management system's view and the physical status of the robot and cartridges.
1 – Privileges
Privileges required to operate MRU software depend on the robot connection to the host. This table outlines the privileges required for each of three different kinds of connections. Privilege Direct Connect HSJ Controller DSSI Required SCSI Connection Connection --------- -------------- -------------- ---------- SYSPRV X PHY_IO X X X DIAG X X READALL X
2 – Logical Names
CAUTION Define logical names only within the context of a user process if you use any Compaq Storage Management Software product that includes the Media and Device Management Services (MDMS) software. If you use MDMS software and define any of these logicals so they are set for any MDMS process (i.e. any group or system logical table accessible by MDMS, you could cause failures in MDMS operations. $ DEFINE MRU_LOG file_name Creates a log file of MRU operations named file_name in the current default directory. Deassign this logical if no log file is desired. $ DEFINE MRU_VERBOSE 1 Provides more detailed information in response to some MRU commands. Deassign this logical to disable this feature. When enabled, this option captures reports SCSI Sense Data. You must refer to the media robot hardware documentation to interpret this data. $ DEFINE MRU_OLD_STATUS 1 This causes MRU, Version 1.4-1 to exit using the Version 1.4 exit status behavior; success or failure. $ DEFINE MRU_ROBOT robot_name Defines a default robot against which all commands are executed, unless a different robot is specified as a parameter to a command. Deassign this logical if no default robot is needed. $ DEFINE MRU_WAIT n Defines the number of seconds delay you can tolerate waiting for a current robot operation to finish before taking action on a command you enter. Deassign this logical if an indefinite wait is acceptable. $ DEFINE MRU_UNLOAD_DELAY n Defines the number of times that an unload operation is tried. An unload retry can take from one to approximately seven seconds to complete depending on the media robot. The default value is 180 attempts. Define this logical if you want to change the number of unload attempts. $ DEFINE MRU_READY_DELAY n Defines the amount of time you will take to place a cartridge into a TL820 class ATL inport and close the inport door, after you issue the READY command. If you fail to close the inport door within the specified time, MRU may report an error on the following command. The default value is 65 seconds. $ DEFINE MRU_CASE_SENSITIVE 1 When defined to any value, this causes the volume tag comparisons used with the CARTRIDGE keyword to be made in a case senseitive manner. $ DEFINE MRU_OLD_STATUS 1 When defined to any value, this causes the ROBOT command to revert to the exit status behavior present in V1.2; a single success status and a single failure status.
3 – Command Parameters
When MRU executes commands, it examines the commands for the presence of parameters. If you do not specify parameters to the keywords slot, drive, or port, MRU supplies defaults, usually assuming a value of 0. slot_number: An integer value indicating a physical slot in the media robot. drv_number: An integer value indicating a physical drive in the media robot. port_number: An integer value indicating a physical port in the media robot. robot_name: The name for the media robot. cartridge_name: The name of the cartridge as identified by its external label. In the MRU system, drive, slot, and port numbering begins with 0. The default value for DRIVE, PORT, and SLOT is 0.
4 – INJECT
The INJECT command moves a cartridge from a port to a slot. Format INJECT [PORT port_number] SLOT slot_number [ROBOT robot_name]
4.1 – Parameters
port_number - An integer value indicating the robot port. slot_number - An integer value indicating the robot slot. robot_name - The name for the media robot.
4.2 – Example
The following MRU example injects a cartridge from the inport of a TL820 Automated Tape Library to slot 19: $ ROBOT INJECT PORT 0 SLOT 19 ROBOT $1$DUA0
5 – EJECT
The EJECT command moves a cartridge from a slot to a port. The EJECT command also moves a cartridge from the PTM of a TL82n Automated Tape Library system. The EJECT command used this way does not include a slot specification. Format (slot to port) EJECT SLOT slot_number [PORT port_number] [ROBOT robot_name] Format (PTM to port) EJECT [ROBOT robot_name] PORT [port_number]
5.1 – Parameters
slot_number - An integer value indicating the robot slot. port_number - An integer value indicating the robot port. robot_name - The name for the media robot.
5.2 – Examples
The following MRU example ejects a cartridge from slot 20 of a TL820 Automated Tape Library to the outport: $ ROBOT EJECT SLOT 20 PORT 1 ROBOT $1$DUA0 The following example ejects a cartridge from the PTM of a TL820 Automated Tape Library to the outport: $ ROBOT EJECT PORT 1 ROBOT $1$DUA0
6 – LOAD
The LOAD command moves a cartridge from a slot into a drive. Format LOAD SLOT slot_num [DRIVE drv_num] [ROBOT robot_name]
6.1 – Parameters
slot_num - An integer value indicating the robot slot. drv_num - An integer value indicating the physical drive in the robot. robot_name - The name for the media robot.
6.2 – Example
The following MRU example loads a cartridge from slot 1 to drive 0 in the robot device GKA401: $ ROBOT LOAD SLOT 1 DRIVE 0 ROBOT GKA401 LOADING SLOT 1 into DRIVE 0 using ROBOT GKA401
7 – UNLOAD
The UNLOAD command moves a cartridge from a drive into a slot. Note: To unload a cartridge from a drive in a TL8xx Automated Tape Library, you must first dismount the media before issuing the DISMOUNT command with the /UNLOAD qualifier. Format UNLOAD [DRIVE drv_number] SLOT slot_number [ROBOT robot_name]
7.1 – Parameters
drv_number - An integer value indicating the physical drive in the robot. slot_number - An integer value indicating the robot slot. robot_name - The name for the media robot.
7.2 – Examples
1. The following example unloads the cartridge from drive 0 and places the cartridge into slot 1 of robot device GKA401: $ ROBOT UNLOAD DRIVE 0 SLOT 1 ROBOT GKA401 UNLOAD DRIVE 0 into SLOT 1 using ROBOT GKA401 2. The following example shows the commands to unload a cartridge from a drive in the TL820 library. $ DISMOUNT/UNLOAD $1$MUA22: $ ROBOT UNLOAD DRIVE 1 SLOT 15 ROBOT $1$DUA0 UNLOAD DRIVE 1 into SLOT 15 using ROBOT $1$DUA0
8 – READY
The READY command enables the inport door release button on the TL82n Automated Tape Library system. The READY command allows you to place a cartridge into the inport prior to issuing the INJECT command. Format READY [port_number] [ROBOT robot_name]
8.1 – Parameters
port_number - An integer value indicating the robot port. robot_name - The name for the media robot.
8.2 – Example
The following MRU example enables the inport of a TL820 Automated Tape Library: $ ROBOT READY PORT 0 ROBOT $1$DUA0
9 – MOVE
The MOVE command moves a cartridge from a source location to a destination. Allowable actions with the MOVE command are determined by the specific library or loader. Format MOVE {SLOT slot_number | DRIVE drv_number | PORT port_number} {SLOT slot_number | DRIVE drv_number | PORT port_number} [ROBOT robot_name]
9.1 – Parameters
slot_number - An integer value indicating the robot slot. drv_number - An integer value indicating the physical drive in the robot. port_number - An integer value indicating the robot port. robot_name - The name for the media robot.
9.2 – Example
The following MRU example moves a cartridge from a drive to the outport of a TL820 Automated Tape Library system: $ ROBOT MOVE DRIVE 1 PORT 1 $1$DUA0
10 – HOME
The HOME command returns a cartridge from a specified location to its home (previous) location. NOTE: The home position varies between different media robots. To find out the home location on your media robot, consult your hardware documentation, or issue the command and observe the placement of the mechanism. Format HOME [ROBOT robot_name] {DRIVE drv_number | SLOT slot_number | PORT port_number | TRANSPORT transport_number}
10.1 – Parameter
robot_name - The name for the media robot.
10.2 – Example
The following MRU example places the mechanism to the home position in a tape library. $ ROBOT HOME ROBOT $1$DUA0
11 – POSITION
The POSITION command positions the cartridge manipulation mechanism to the specified location. Format POSITION {SLOT slot_number | DRIVE drv_number | PORT port_number} [ROBOT robot_name]
11.1 – Parameter
slot_number - An integer value indicating a physical slot in the media robot. drv_number - An integer value indicating a physical drive in the media robot. port_number - An integer value indicating a physical port in the media robot. robot_name - The name for the media robot.
11.2 – Example
The following MRU example places the mechanism slot 157 in a tape library. $ ROBOT POSITION SLOT 157 ROBOT $1$DUA1
12 – FIND_CARTRIDGE
The FIND CARTRIDGE command locates a named cartridge in any media robot which includes a vision system. If the named cartridge resides in the media robot, MRU software returns its location. NOTE: This command uses the name on the external label affixed to the cartridge, it DOES NOT use the name of the recorded label on the medium. Format FIND CARTRIDGE {cartridge_name} [ROBOT robot_name]
12.1 – Parameter
cartridge_name - The name of the external label on the cartridge. The cartridge name parameter is case sensitive. robot_name - The name for the media robot.
12.2 – Example
The following MRU example locates cartridge AQ1Z01 in a TL826 Automated Tape Library System. $ ROBOT FIND CARTRIDGE AQ1Z01 ROBOT $1$DUA0 MRU V1.4-1 allows wildcard names for this command as in the following examples: $ ROBOT FIND CARTRIDGE {"?*"} This command shows all elements namely: - slots - drives - transports - ports that are full. $ ROBOT FIND CARTRIDGE {"*"} This command shows all slots, drives, transports and ports. Irrespective of whether they are full or empty this command shows all the elements available in the library.
13 – LOCK
The LOCK command sends a SCSI Prevent Media Removal command to the media robot. Consult your hardware documentation for a description of the results of this command for your particular media robot. Format LOCK [ROBOT robot_name]
13.1 – Parameter
robot_name - The name for the media robot.
13.2 – Example
The following MRU example locks the door on a TLZ07 tape loader: $ ROBOT LOCK ROBOT GKA401
14 – UNLOCK
The UNLOCK command sends a SCSI Allow Media Removal command to the media robot. Consult your hardware documentation for a description of the results of this command for your particular media robot. Format UNLOCK [ROBOT robot_name]
14.1 – Parameter
robot_name - The name for the media robot.
14.2 – Example
The following MRU example unlocks the door on a TLZ07 tape loader: $ ROBOT UNLOCK ROBOT GKA401
15 – RESERVE
The RESERVE command sends a SCSI Reserve command to the media robot. This reserves the media robot for exclusive use on the host. This is useful in Fibre Channel environment where multiple hosts have access to same media robot. If a media robot is reserved on a host all other hosts will not be able to do any SCSI commands and they will get a message "SCSI Reservation Conflict". Format RESERVE [ROBOT robot_name]
15.1 – Parameter
robot_name - The name for the media robot.
15.2 – Example
The following MRU example reserves the media robot($2$GGA1:) on the calling host for exclusive use in a Fibre Channel environment: $ ROBOT RESERVE ROBOT $2$GGA1:
16 – RELEASE
The RELEASE command sends a SCSI Release command to the media robot. This releases the media robot from exclusive use on the host. This is used when a media robot is already Reserved and it is given from the same host which has reserved the media robot. Format RELEASE [ROBOT robot_name]
16.1 – Parameter
robot_name - The name for the media robot.
16.2 – Example
The following MRU example releases the media robot from exclusive use. This is given from the same host which has Reserved the media robot: $ ROBOT RELEASE ROBOT $2$GGA1:
17 – INITIALIZE
The INITIALIZE command inventories the robot and updates the MRU software's internal database of robot elements. The time it takes to complete the operation depends on the size of the robot. A small loader takes less time to inventory than does a multitower robot. Format INITIALIZE [ROBOT robot_name]
17.1 – Parameter
robot_name - The name for the media robot.
17.2 – Example
The following MRU example inventories a TLZ07 tape loader: $ ROBOT INITIALIZE ROBOT GKA401
18 – SHOW
The SHOW command displays information about a robot,and also displays specific information about slots, drives, ports, and the current version of MRU.
18.1 – ROBOT
The SHOW ROBOT command displays information about the specified robot, including: o Robot name o Robot type o Vendor model and firmware version o maximum number of cartridge storage locations o maximum number of drives o maximum number of ports Format SHOW ROBOT [robot_name]
18.1.1 – Parameters
robot_name - The name for the media robot.
18.1.2 – Example
The following example shows the status of a TZ media changer: $ ROBOT SHOW ROBOT Robot Name: GKA401 Type: SCSI Media Robot Identifier: DEC TZ Media Changer9A28 Slots: 5 Drives: 1 Inports: 0 Outports: 0 Transports: 1
18.2 – PORT
The SHOW PORT command displays information about a port. The output includes the type of port and one of these possible states: o Full or <barcode> -- The port contains a cartridge. The bar code value of the cartridge occupying the port appears if the media robot is capable of reading cartridge bar codes. o Empty -- The port contains no cartridge and is available for use. o Unavailable -- The port is unavailable for use. Format SHOW [ROBOT robot_name] PORT [[[port_number]|[port_number-port_number]],...]
18.2.1 – Parameters
robot_name - The name for the media robot. port_number - An integer value indicating the robot port.
18.2.2 – Example
The following example shows the ports of a TL820 Automated Tape Library system: $ ROBOT SHOW PORT ROBOT $1$DUA0 PORT: 1 Empty OUTPORT PORT: 0 Empty INPORT
18.3 – SLOT
The SHOW SLOT command shows the status of slots. One of these possible states is reported: o Full or <barcode> -- The slot contains a cartridge. The bar code value of the cartridge occupying the slot appears if the media robot is capable of reading cartridge bar codes. o Empty -- The slot contains no cartridge, and is available for use. o Unavailable -- The slot is unavailable for use. Format SHOW [ROBOT robot_name] SLOT [[[slot_number]|[slot_number-slot_number]],...]
18.3.1 – Parameters
robot_name - The name for the media robot. slot_number - An integer value indicating the robot slot.
18.3.2 – Examples
1. The following example shows the contents of separate slots: $ ROBOT SHOW SLOT 1,3 SLOT: 1 Empty SLOT: 3 Full 2. The following example shows the contents of a range of slots: $ ROBOT SHOW SLOT 1-3 SLOT: 1 Empty SLOT: 2 Full SLOT: 3 Full
18.4 – DRIVE
The SHOW DRIVE command shows the status of drives. One of these possible states is reported: o Full or <barcode> -- The drive contains a cartridge. The bar code value of the cartridge occupying the drive appears if the media robot is capable of reading cartridge bar codes. o Empty -- The drive contains no cartridge, and is available for use. o Unavailable -- The drive is unavailable for use. Format SHOW [ROBOT robot_name] DRIVE [[[drv_number]|[drv_number-drv_number]],...]
18.4.1 – Parameters
robot_name - The name for the media robot. drv_number - An integer value indicating the physical drive in the robot.
18.4.2 – Example
The following example shows the status of drive 0 in the default robot identified by the MRU_ROBOT logical: $ ROBOT SHOW DRIVE 0 DRIVE: 0 Empty
18.5 – VERSION
The SHOW VERSION command displays the software version of the Media Robot Utility software. Format SHOW VERSION
18.5.1 – Example
The following example shows the version of the currently accessible MRU program: $ ROBOT SHOW VERSION StorageWorks Media Robot Utility V1.4-1
19 – HELP
The HELP command displays information about the Media Robot Utility commands. Format HELP
19.1 – Example
The following example shows the result of issuing the MRU HELP command: $ ROBOT HELP usage: robot command [ parameters ] Commands: show, move, load, unload, eject, inject lock, unlock, reserve, release, ready and help Parameters: robot device, slot #, drive #, port # Logicals: MRU_LOG, MRU_VERBOSE, MRU_ROBOT, MRU_WAIT, MRU_UNLOAD_DELAY, MRU_READY_DELAY EXAMPLE COMMANDS: Drives, slots and ports are numbered from 0. LOAD robot GKA1 drive 0 slot 3 UNLOAD drive 0 slot 2 robot GKA1 INJECT port 0 slot 4 robot $1$dua100 EJECT robot $1$dua100 port 0 slot 4 READY robot GKB5 LOCK robot $1$dua100 UNLOCK robot $1$dua100 RESERVE robot $1$gga0 RELEASE robot $1$gga0 MOVE slot 5 drive 1 robot GKA1 Other commands: SHOW robot, SHOW slot 4, SHOW robot $1$dua0 drive 2 SHOW version
20 – Connectivity
Systems running under the OpenVMS operating system can connect to a media robot either directly, or through an SCSI or DSSI controller. If you connect through a controller with a DSSI interconnect, you need to be aware of some timing issues.
20.1 – Direct Connect SCSI Devices
Use the following procedure to create a tape robot unit: 1. For SCSI magazine loaders connected directly to an SCSI bus, enter the SYSGEN or SYSMAN command in the appropriate format: VAX system: $ MCR SYSGEN CONNECT GKannn:/DRIVER=GKDRIVER/NOADAPTER Alpha system: $ MCR SYSMAN IO CONNECT GKannn:/DRIVER=SYS$GKDRIVER/NOADAPTER Where: GKannn: is the robot device name. The robot device name for a loader is always the same as the tape drive name incremented by one, and without any prefixes (allocation class or NODE$ prefix) to the GK string. For example, a tape drive name of $1$MKA200: could use a robot device name of GKA201:. 2. Compaq recommends that you include the SYSGEN commands in your system startup command procedure.
20.2 – DLT and DAT Media Loaders
This information applies to TLZnx and TZ8nn classes of DLT and DAT loaders. DLT and DAT tape loaders treat their robotic devices and tape devices as logical units of the device target ID. The are four parts to the naming convention with this type of robotic loader: · The name begins with a prefix of MK for the tape device and GK for the robotic device. · The prefix is followed by a letter indicating the physical SCSI bus to which the device is connected to the host system. For devices connected to the first bus detected at boot time, the letter is A, for the second bus detected, B, and so on. · The next part is a number corresponding to the SCSI target ID. · The last part is a two-digit number corresponding to the SCSI target ID logical unit number. Because tape drives in a DLT or DAT loader are always at logical unit 0, the last two digits are 00. The last two digits for the robotic device are 01. MKA400 is the name of a tape device connected to the first SCSI bus seen at boot time, at target ID 4. GKA401 is the name of the robotic device, and the name of the robotic unit corresponding to the tape device MKA400.
20.3 – TL8nn Automated Libraries
This information applies to the TL81n, TL82n, and TL89n classes of libraries. With TL8nn tape libraries, the drives and robot units are separate. There are three parts to the naming convention for a TL8nn tape library: · The name begins with a prefix of MK for the tape device and GK for the robotic device. · The prefix is followed by a letter indicating the physical SCSI bus to which the device is connected to the host system. For devices connected to the first bus detected at boot time, the letter is A, for the second bus detected, B, and so on. · The next part is a number corresponding to the SCSI target ID. For example, with a TL810 library system with the robotic unit connected to the second bus detected at boot time at target ID 5, the name would be GKB500. When installing a TL8nn Automated Tape Library system, you need to keep track of the device names for the drives serviced by the particular robotic transport device. MRU software cannot unload a cartridge from a drive in a TL8nn Automated Tape Library system without first dismounting the cartridge. MRU software has no way of associating the drives with the robotic transport device. You must supply the device file name before unloading a cartridge.
20.4 – HSxnn Controller
When connecting a media robot to an HSJnn or HSDnn controller, you must associate the loader name with an internal passthrough name. After installing the media robot hardware, and connecting the cables between host, controller, and media robot, you can make the association at the controller console terminal. 1. Add the loader to the controller by identifying the loader name and SCSI port, target ID, and LUN. CLI> ADD LOADER loader_name p t l 2. Add the passthrough name to the controller, relating it to the loader name. CLI> ADD PASSTHROUGH pass_name loader_name 3. Add the unit name, relating it to the passthrough name. CLI> ADD UNIT unit_name pass_name This example shows the commands for connecting a TL810 Automated Tape Library system loader. The SCSI Port is 5, Target ID is 4, and LUN is 0. CLI> ADD LOADER TL810A 5 4 0 CLI> ADD PASSTHROUGH P810A TL810A CLI> ADD UNIT D810 P810A After establishing this connection, the OpenVMS system will show the device DUA810 with its allocation class. The MRU ROBOT name will be the OpenVMS allocation class name $1$DUA810.
20.5 – HSZxx Controller
[ Text to be provided later by our technical writer. ] The connection of a media changer to an HSZxx family controller is similar to the procedure used for the HSJxx and HSDxx. The main difference is that "ADD PASSTHROUGH" is used in place of the "ADD LOADER" command, but the port, target and logical numbers must be provided. The other difference is that pass- through device are associated with unit names beginning with the letter P instead of D. Example: For a four drive TL810 family library. CLI> ADD PASSTHROUGH TAPE0 5 2 0 CLI> ADD PASSTHROUGH TAPE1 5 3 0 CLI> ADD PASSTHROUGH TAPE2 5 4 0 CLI> ADD PASSTHROUGH TAPE3 5 5 0 CLI> ADD PASSTHROUGH TL810 5 6 0 CLI> ADD UNIT P0 TAPE0 CLI> ADD UNIT P100 TAPE1 CLI> ADD UNIT P200 TAPE2 CLI> ADD UNIT P300 TAPE3 CLI> ADD UNIT P1 TL810 For a single drive DLT loader with the loader at logical unit 1. CLI> ADD PASSTHROUGH DLTtape 6 1 0 CLI> ADD PASSTHROUGH LOADER 6 1 1 CLI> ADD UNIT P0 DLTtape CLI> ADD UNIT P1 LOADER
20.6 – DSSI Devices
Command Completion Time Commands issued to robotic devices connected with a DSSI may take a minute or more to complete. The delays in command completion occur to properly synchronize the DSSI loader device. Manual TF8x7 Operations Can Stop Automated Operations The TF8x7 does not respond to Media Robot Utility system ROBOT LOAD and ROBOT UNLOAD operations after an operator manually unloads a cartridge. Other MRU status commands respond correctly. After a manual unload is executed, the ROBOT LOAD or ROBOT UNLOAD commands complete immediately and give no error messages. The ROBOT SHOW DRIVE and ROBOT SHOW SLOT do properly reflect whether a cartridge is loaded in the drive or residing in the loader. The MRU software continues to provide proper status after manually loading and unloading various slots even though the MRU LOAD AND UNLOAD commands no longer execute properly. Restoring the communication path between the TF loader and the operating system requires a complete re-initialization of the DSSI server embedded in the TF loader. There are two ways in which this can be done. Cycle power to the TF loader: 1. Turn power to the TF loader OFF 2. Wait 10 seconds 3. Turn power to the TF loader ON Execute the following command sequence either maually through DCL, or programatically: $ SET HOST/DUP/SERVER=MSCP$DUP/TASK=PARAMS xxxx (where xxxx is the DSSI NODE name of the TF loader) PARAMS> SET INITWATERMARK 100 PARAMS> WRITE Parameter changes require controller initialization, ok?[Y/(N)] y Wait for the DSSI node to transition from HostUnavailable to Online (60 - 90 seconds).
20.7 – MUSL Verification
Verifying a MUSL Configuration You can use MRU to verify a successful Multi-Unit, Single LUN (MUSL) configuration. Use the SHOW ROBOT command to get information about the configuration: $robot show robot Scsi2:B0T2L2 Robot Name : Scsi2:B0T2L2 Type: SCSI Media Robot Identifier: DEC TL820 (C) DEC2A5A Slots: 176 Drives: 6 Inports: 1 Outports: 1 Transports: 2 MUSL control is available on firmware 2A5A or higher. This information appears on the Media Robot Identifier line of the SHOW ROBOT output. When MUSL is activated, the combined hardware units respond to a single medium changer unit. MRU shows this with a Transport count greater than 1.
21 – CLI Errors
When a CLI commands fails, a failure specific error status is returned. The value of this status can be interrogated in a DCL command procedure. Most of the possible errors are the result of failures in the MRU Application Programming Interface. A few errors are unique to the ROBOT command.
21.1 – CLI Specific Errors
21.1.1 – MRD_STATUS_CLI_COMMAND
Status Code %X07608282 Used when an unrecognized command is given on the command line. For example, there is no 'FRED' command. $ ROBOT FRED ROBOT $1$DUA704
21.1.2 – MRD_STATUS_CLI_PARAMETER
Status Code %X0760828A Used when an unrecognized parameter is given on the command line. For example, 'VAULT' has no relevance in this command: $ ROBOT SHOW ROBOT $1$DUA704 VAULT
21.1.3 – MRD_STATUS_CLI_BAD_ARG
Status Code %X07608292 Used for various errors where the argument to a parameter is wrong; a range where none is allowed, invalid element addresses, and similar errors. For example, 'RINGO' is a bad parameter for a slot spec- ification and the load command does not work with a range of slots or drives: $ ROBOT SHOW SLOT 7-RINGO $ ROBOT LOAD SLOT 3-4 DRIVE 1-2
21.1.4 – MRD_STATUS_CLI_NO_ROBOT
Status Code %X0760829A Used when the command does not include a robot name, and the default robot name is not known.
21.1.5 – MRD_STATUS_CLI_EXPECTS_PARAM
Status Code %X076082A2 Used when a command expects some parameter, and none was given. For example, this show command doesn't specify anything to show: $ ROBOT SHOW
21.1.6 – MRD_STATUS_CLI_EXPECTS_ARG
Status Code: %X076082AA Used when a command parameter expects some argument. For example, this show slot command does not specify which slot, or slots, to show: $ ROBOT SHOW SLOT
21.1.7 – MRD_STATUS_CLI_MANY
Status Code: %X076082B2 Used when a parameter accepts a default, but there are multiple elements that apply. The robot LOAD command allows a default drive, if there is only one drive in the robot. However, if there are two or more drives in the robot, you get this error. For example with a TL810, a robot with four drives, the following command fails with this error status: $ ROBOT LOAD SLOT 15 This error code is also used when multiple parameters are given and fewer are allowed: $ ROBOT POSITION SLOT 5 DRIVE 7
21.2 – Mapping CLI to MRD Errors
The ROBOT$_ codes translate to the listed values and the MRD_STATUS codes. The MRD_STATUS codes are documented with the MRD API calls from which they can be reported. Use HELP ROBOT MRD to find help for the calls. ROBOT$_FACILITY 1888 MRD_STATUS_FACILITY ROBOT$_INVALID %X0760800A MRD_STATUS_INVALID ROBOT$_SUCCESS %X07608011 MRD_STATUS_SUCCESS ROBOT$_NO_SENSE %X0760801A MRD_STATUS_NO_SENSE ROBOT$_RECOVERED_ERROR %X07608022 MRD_STATUS_RECOVERED_ERROR ROBOT$_ROBOT_NOT_READY %X0760802A MRD_STATUS_ROBOT_NOT_READY ROBOT$_MEDIUM_ERROR %X07608032 MRD_STATUS_MEDIUM_ERROR ROBOT$_ROBOT_HW_ERROR %X0760803A MRD_STATUS_ROBOT_HW_ERROR ROBOT$_ROBOT_ILLEGAL_REQUEST %X07608042 MRD_STATUS_ROBOT_ILLEGAL_REQUEST ROBOT$_ROBOT_ATTENTION %X0760804A MRD_STATUS_ROBOT_ATTENTION ROBOT$_DATA_PROTECT %X07608052 MRD_STATUS_DATA_PROTECT ROBOT$_BLANK_CHECK %X0760805A MRD_STATUS_BLANK_CHECK ROBOT$_VENDOR_UNIQUE_ERROR %X07608062 MRD_STATUS_VENDOR_UNIQUE_ERROR ROBOT$_COPY_ABORTED %X0760806A MRD_STATUS_COPY_ABORTED ROBOT$_SENSE_EQUAL %X07608072 MRD_STATUS_SENSE_EQUAL ROBOT$_ROBOT_CMD_ABORTED %X0760807A MRD_STATUS_ROBOT_CMD_ABORTED ROBOT$_VOLUME_OVERFLOW %X07608082 MRD_STATUS_VOLUME_OVERFLOW ROBOT$_MISCOMPARE %X0760808A MRD_STATUS_MISCOMPARE ROBOT$_SENSE_RESERVED %X07608092 MRD_STATUS_SENSE_RESERVED ROBOT$_ROBOT_COMM_ERROR %X0760809A MRD_STATUS_ROBOT_COMM_ERROR ROBOT$_ROBOT_MECH_ERROR %X076080A2 MRD_STATUS_ROBOT_MECH_ERROR ROBOT$_ROBOT_DOOR_OPENED %X076080AA MRD_STATUS_ROBOT_DOOR_OPENED ROBOT$_STARTUP_ERROR %X076080B2 MRD_STATUS_STARTUP_ERROR ROBOT$_CANCEL %X076080BA MRD_STATUS_CANCEL ROBOT$_CMD_NOT_SUPPORTED %X076080C2 MRD_STATUS_CMD_NOT_SUPPORTED ROBOT$_SOURCE_EMPTY %X076080CA MRD_STATUS_SOURCE_EMPTY ROBOT$_DESTINATION_FULL %X076080D2 MRD_STATUS_DESTINATION_FULL ROBOT$_CART_INVALID %X076080DA MRD_STATUS_CART_INVALID ROBOT$_CART_DAMAGED %X076080E2 MRD_STATUS_CART_DAMAGED ROBOT$_CART_NOT_AVAIL %X076080EA MRD_STATUS_CART_NOT_AVAIL ROBOT$_CART_ALRDY_LOADED %X076080F2 MRD_STATUS_CART_ALRDY_LOADED ROBOT$_CART_SIDE_INVALID %X076080FA MRD_STATUS_CART_SIDE_INVALID ROBOT$_DEVICE_INVALID %X07608102 MRD_STATUS_DEVICE_INVALID ROBOT$_DEVICE_DAMAGED %X0760810A MRD_STATUS_DEVICE_DAMAGED ROBOT$_DEVICE_FULL %X07608112 MRD_STATUS_DEVICE_FULL ROBOT$_DEVICE_EMPTY %X0760811A MRD_STATUS_DEVICE_EMPTY ROBOT$_VOLUME_VALID %X07608122 MRD_STATUS_VOLUME_VALID ROBOT$_VOLUME_MOUNTED %X0760812A MRD_STATUS_VOLUME_MOUNTED ROBOT$_ELEMENT_INVALID %X07608132 MRD_STATUS_ELEMENT_INVALID ROBOT$_INVALID_TYPE %X0760813A MRD_STATUS_INVALID_TYPE ROBOT$_SLOT_INVALID %X07608142 MRD_STATUS_SLOT_INVALID ROBOT$_PORT_INVALID %X0760814A MRD_STATUS_PORT_INVALID ROBOT$_CELL_INVALID %X07608152 MRD_STATUS_CELL_INVALID ROBOT$_PORT_FULL %X0760815A MRD_STATUS_PORT_FULL ROBOT$_PORT_EMPTY %X07608162 MRD_STATUS_PORT_EMPTY ROBOT$_CELL_FULL %X0760816A MRD_STATUS_CELL_FULL ROBOT$_CELL_EMPTY %X07608172 MRD_STATUS_CELL_EMPTY ROBOT$_SLOT_FULL %X0760817A MRD_STATUS_SLOT_FULL ROBOT$_SLOT_EMPTY %X07608182 MRD_STATUS_SLOT_EMPTY ROBOT$_AUTOCLEAN %X0760818A MRD_STATUS_AUTOCLEAN ROBOT$_RES_FAILED %X07608192 MRD_STATUS_RES_FAILED ROBOT$_INSFMEM %X0760819A MRD_STATUS_INSFMEM ROBOT$_NO_ELEMENTS %X076081A2 MRD_STATUS_NO_ELEMENTS ROBOT$_ACCVIO %X076081AA MRD_STATUS_ACCVIO ROBOT$_DEVOFFLINE %X076081B2 MRD_STATUS_DEVOFFLINE ROBOT$_EXQUOTA %X076081BA MRD_STATUS_EXQUOTA ROBOT$_ILLEFC %X076081C2 MRD_STATUS_ILLEFC ROBOT$_IVCHAN %X076081CA MRD_STATUS_IVCHAN ROBOT$_NOPRIV %X076081D2 MRD_STATUS_NOPRIV ROBOT$_UNASEFC %X076081DA MRD_STATUS_UNASEFC ROBOT$_MOUNTED %X076081E2 MRD_STATUS_MOUNTED ROBOT$_NO_SUCH_DEVICE %X076081EA MRD_STATUS_NO_SUCH_DEVICE ROBOT$_EBUSY %X076081F2 MRD_STATUS_EBUSY ROBOT$_EINTR %X076081FA MRD_STATUS_EINTR ROBOT$_EIO %X07608202 MRD_STATUS_EIO ROBOT$_ENOENT %X0760820A MRD_STATUS_ENOENT ROBOT$_EACCES %X07608212 MRD_STATUS_EACCES ROBOT$_EINVAL %X0760821A MRD_STATUS_EINVAL ROBOT$_EBADF %X07608222 MRD_STATUS_EBADF ROBOT$_OS_ERROR %X0760822A MRD_STATUS_OS_ERROR ROBOT$_PARAM %X07608232 MRD_STATUS_PARAM ROBOT$_TRANSPORT_INVALID %X0760823A MRD_STATUS_TRANSPORT_INVALID ROBOT$_NO_VISION %X07608242 MRD_STATUS_NO_VISION ROBOT$_RES_INVALID %X0760824A MRD_STATUS_RES_INVALID ROBOT$_SOURCE_INVALID %X07608252 MRD_STATUS_SOURCE_INVALID ROBOT$_PORT_ACCESSED %X0760825A MRD_STATUS_PORT_ACCESSED ROBOT$_CART_NOT_FOUND %X07608262 MRD_STATUS_CART_NOT_FOUND ROBOT$_BAD_DATES %X0760826A MRD_STATUS_BAD_DATES ROBOT$_PAGE_CODE %X07608272 MRD_STATUS_PAGE_CODE ROBOT$_NOT_CHANGER %X0760827A MRD_STATUS_NOT_CHANGER ROBOT$_CLI_COMMAND %X07608282 ROBOT$_CLI_PARAMETER %X0760828A ROBOT$_CLI_BAD_ARG %X07608292 ROBOT$_CLI_NO_ROBOT %X0760829A ROBOT$_CLI_EXPECTS_PARAM %X076082A2 ROBOT$_CLI_EXPECTS_ARG %X076082AA ROBOT$_CLI_MANY %X076082B2 ROBOT$_SCSI_CHECK %X076082BA MRD_STATUS_SCSI_CHECK ROBOT$_SCSI_CONDMET %X076082C2 MRD_STATUS_SCSI_CONDMET ROBOT$_SCSI_BUSY %X076082CA MRD_STATUS_SCSI_BUSY ROBOT$_SCSI_INTER %X076082D2 MRD_STATUS_SCSI_INTER ROBOT$_SCSI_INTER_CONDMET %X076082DA MRD_STATUS_SCSI_INTER_CONDMET ROBOT$_SCSI_RESCON %X076082E2 MRD_STATUS_SCSI_RESCON ROBOT$_SCSI_TERM %X076082EA MRD_STATUS_SCSI_TERM ROBOT$_SCSI_QUEUE %X076082F2 MRD_STATUS_SCSI_QUEUE ROBOT$_SCSI_RESERVED %X076082FA MRD_STATUS_SCSI_RESERVED ROBOT$_INIT_REQUIRED %X07608302 MRD_STATUS_INIT_REQUIRED ROBOT$_DIAG_FAILED %X0760830A MRD_STATUS_DIAG_FAILED ROBOT$_IDE %X07608312 MRD_STATUS_IDE ROBOT$_OPERATOR %X0760831A MRD_STATUS_OPERATOR ROBOT$_LOG_ERROR %X07608322 MRD_STATUS_LOG_ERROR ROBOT$_ELOG_OVERFLOW %X0760832A MRD_STATUS_ELOG_OVERFLOW ROBOT$_SYNC_XFER_ERROR %X07608332 MRD_STATUS_SYNC_XFER_ERROR