mike@atc.SP.Unisys.COM (Mike Grenier) (06/19/91)
I've been trying to get the Exabyte 8200 and 8500 tapes drives to work under AIX Rev 3.003 on an RS6000/320. IBM claims to support the Exabyte 8200 as their 8mm tape drive (see IBM Item No. IXZL8) but I've been unable to get it to work. I have no problem doing a mkdev from within smit and making the 8200 available but the scsi driver seems to mess up. When doing an open/read system calls, the driver issues a Reserve UNIT scsi command which the Exabyte does not understand resulting in the failure. I don't understand how IBM can claim to support this device unless it has modified firmware running in the Exabyte which understands the commands. The driver would not need to issue this since it is the only initiator. On a different front, configuring the 8500 was an interesting challenge (mainly due to the rather poor documentation) in modifing the various ODM database classes - namely PdAt, PdDv, and the NLS catalog. Once done, I was able to do a: 'mkdev -c tape -s scsi -t exa8500 -p scsi0 -w 20' to make /dev/rmt1 available on scsi target 2. However, when doing an open and a read system call, the kernel will issue a Mode Sense command to figure out the block size of the tape that was inserted. Unfortunately, it issues the command asking for vendor speific parameters and it asks for more bytes than the Exabyte can give resulting in a illegal argument status from the device. I can not find anyway to modify the mode sense command that AIX executes. Why would AIX want to see the vedor specific parameters anyway? I sure wish System V Release 4 was available for this machine. Even a decent customer rep would be helpful (He thought it was a SMIT problem!) -Mike Grenier 612-456-7869 mike@sp.unisys.com SCSI Bus Analyzer traces follow. ----cut---- #!/bin/sh # This is a shell archive (shar 3.32) # made 06/18/1991 17:40 UTC by mike@atc # Source directory /usr3/mike # # existing files WILL be overwritten # # This shar contains: # length mode name # ------ ---------- ------------------------------------------ # 2545 -rw-rw-r-- session.8200 # 2532 -rw-rw-r-- session.8500 # if touch 2>&1 | fgrep 'amc' > /dev/null then TOUCH=touch else TOUCH=true fi # ============= session.8200 ============== echo "x - extracting session.8200 (Text)" sed 's/^X//' << 'SHAR_EOF' > session.8200 && X XProblem trace of an Exabyte 8200 on an IBM RS6000/320 Xrunning AIX 3.003 X XTrace of the command 'od -c /dev/rmt1' where /dev/rmt1 has been Xdefined using 'mkdev -c tape -s scsi -t 8mm -p scsi0 -w 20'. XThe 'od' command will fail with 'Can not access a device'. X XI can not understand how IBM claims to support this device! X(see IBM Item No IXZL8) X XText in curly braces below are my comments. X -Mike Grenier mike@sp.unisys.com X X> display trace memory [in structured format] X Xenter starting addr(Hex): X0038: Bus free X003A: Arbitration /80 X003B: Arbitration w.ATN /84 { 84 is bit encoded for initiator (bit 7) and scsi target 2} X003D: Select w.ATN /84 X0040: Message-Out/C0(Identify) X0041: Command /00(Test_U_Rdy) 00 00 00 00 00 X0047: Status /00 X0048: Message-In /00 X0049: Bus free X004B: Arbitration /80 X004C: Arbitration w.ATN /84 X004E: Select w.ATN /84 X0051: Message-Out/C0(Identify) X0052: Command /16(Resv_Unit) 00 00 00 00 00 X0058: Status /02 {<---- THIS IS THE FAILURE, The 8200 does not support the Reserve Unit command!} X0059: Message-In /00 X005A: Bus free X005C: Arbitration /80 X005D: Arbitration w.ATN /84 X005F: Select w.ATN /84 X0061: Message-Out w.ATN /C0(Identify) X0062: Message-Out w.ATN /01(Ext_Msg) X0063: **AE/07 <<< Not recognized ! X0065: /08(Length) X0066: Command /03(Req_Sen) 00 00 00 FF 00 X006C: Data-In /70 00 45 00 00 00 00 12 00 00 00 00 00 00 00 00 { Sense Key indicates Illegal Request} X007C: 00 00 00 01 00 00 00 22 FC 21 X0086: Status /00 X0087: Message-In /00(Modify_Dat_Ptr) X0088: Bus free X008A: Arbitration /80 X008B: Arbitration w.ATN /84 X008D: Select w.ATN /84 X0090: Message-Out/C0(Identify) X0091: Command /17(Rels_Unit) 00 00 00 00 00 X0097: Status /02 X0098: Message-In /00 X0099: Bus free X009B: Arbitration /80 X009C: Arbitration w.ATN /84 X009E: Select w.ATN /84 X00A0: Message-Out w.ATN /C0(Identify) X00A1: Message-Out w.ATN /01(Ext_Msg) X00A2: **AE/07 <<< Not recognized ! X00A4: /08(Length) X00A5: Command /03(Req_Sen) 00 00 00 FF 00 X00AB: Data-In /70 00 45 00 00 00 00 12 00 00 00 00 00 00 00 00 X00BB: 00 00 00 01 00 00 00 22 FC 21 X00C5: Status /00 X00C6: Message-In /00(Modify_Dat_Ptr) X00C7: Bus free X---- end of recording ---- SHAR_EOF $TOUCH -am 0618124091 session.8200 && chmod 0664 session.8200 || echo "restore of session.8200 failed" set `wc -c session.8200`;Wc_c=$1 if test "$Wc_c" != "2545"; then echo original size 2545, current size $Wc_c fi # ============= session.8500 ============== echo "x - extracting session.8500 (Text)" sed 's/^X//' << 'SHAR_EOF' > session.8500 && X XProblem trace of an Exabyte 8500 on an IBM RS6000/320 Xrunning AIX 3.003 X XTrace of the command 'od -c /dev/rmt1' where /dev/rmt1 has been Xdefined using 'mkdev -c tape -s scsi -t exa8500 -p scsi0 -w 20'. XThe 'od' command will fail with 'Illegal argument'. Device type X'exa8500' was created in the ODM classes PdAt and PdDv (and of course Xthe NLS catalog). X XText in curly braces below are my comments. X -Mike Grenier mike@sp.unisys.com X X0650: Bus free X0652: Arbitration /80 X0653: Arbitration w.ATN /84 X0655: Select w.ATN /84 X0658: Message-Out/C0(Identify) X0659: Command /00(Test_U_Rdy) 00 00 00 00 00 X065F: Status /00 X0660: Message-In /00 X0661: Bus free X0663: Arbitration /80 X0664: Arbitration w.ATN /84 X0666: Select w.ATN /84 X0669: Message-Out/C0(Identify) X066A: Command /16(Resv_Unit) 00 00 00 00 00 X0670: Status /00 X0671: Message-In /00 X0672: Bus free X0674: Arbitration /80 X0675: Arbitration w.ATN /84 X0677: Select w.ATN /84 X067A: Message-Out/C0(Identify) X067B: Command /1A(Mode_Sense) 10 00 00 12 00 X0681: Status /02 {<***** THIS IS THE FAILURE, the 12 in the above X mode sense command is incorrect - it should have been 11 if vendor specific X parameters are really needed.} X0682: Message-In /00 X0683: Bus free X0685: Arbitration /80 X0686: Arbitration w.ATN /84 X0688: Select w.ATN /84 X068A: Message-Out w.ATN /C0(Identify) X068B: Message-Out w.ATN /01(Ext_Msg) X068C: /03(Length) X068D: /01(Synchr_Dat_Tx_Req) X068E: /32(Tx_Period=32Hex*4 nsec) X0690: /0C X0691: Message-In /01(Ext_Msg) X0692: /03(Length) X0693: /01(Synchr_Dat_Tx_Req) X0694: /7D(Tx_Period=7DHex*4 nsec) X0695: /0C X0696: Command /03(Req_Sen) 00 00 00 FF 00 X069C: Data-In /70 00 45 00 00 00 00 15 00 00 00 00 24 00 00 00 {** Sense key reports Illegal request} X06AC: 00 00 00 01 00 00 00 45 F8 40 00 00 7F X06B9: Status /00 X06BA: Message-In /00 X06BB: Bus free X06BD: Arbitration /80 X06BE: Arbitration w.ATN /84 X06C0: Select w.ATN /84 X06C3: Message-Out/C0(Identify) X06C4: Command /17(Rels_Unit) 00 00 00 00 00 X06CA: Status /00 X06CB: Message-In /00 X06CC: Bus free SHAR_EOF $TOUCH -am 0618123991 session.8500 && chmod 0664 session.8500 || echo "restore of session.8500 failed" set `wc -c session.8500`;Wc_c=$1 if test "$Wc_c" != "2532"; then echo original size 2532, current size $Wc_c fi exit 0