Getting around the "no ID plug" problem


Joe Stegeman wrote me because he had a problem. He wanted to add another DSSI drive to his MicroVAX 3400 but he didn't have any ID plugs. He had blank ones but none of the numbered ones. DEC of course doesn't sell them any more and while some resellers will that's a pain, and he had blank ones after all. 

And yet, a similar problem occurs when people have a KFQSA (DSSI Qbus adapter) and they want to run a DSSI drive in a cabinet that DEC never really expected DSSI drives to inhabit. (The BA123 comes to mind.)

The fact is, the drive can, on its own, operate without a front panel, however you have to tell it that you want it to do that. If you have a KFQSA this is a fairly difficult task, however if you've got a KA640 or a KA660 its pretty easy (or other VAX with DSSI in the monitor).

So when I boot up TestVAX this is what I see when I type "SHO DSSI"

>>>sho dssi
DSSI Node 2 (RF30D)
-DIA2 (RF30)

DSSI Node 7 (*)
>>>

And as you can see from the picture, that's expected because I have the '2' plug in the drive control bulkhead. Now let's say I wanted to use that drive as UNIT 1 ? I don't have a plug that says UNIT 1, I've just got a #2 and two blanks.

This is where the secret power of DSSI comes into play. As it turns out DSSI drives are in fact embedded systems that you can talk to, run programs on, etc. You get to talk to that computer using something called the DUP protocol.

On the KA640 (MicroVAX 3300/3400) you type

SET HOST/DUP/DSSI <num>

Where <num> is the unit number you want to talk to, so on TestVAX I use unit 2 and this is what I get:

>>>set host/dup/dssi 2
Starting DUP server...
Copyright © 1988  Digital Equipment Corporation
DRVEXR V1.1  D  1-NOV-1988 13:39:09
DRVTST V1.1  D  1-NOV-1988 13:39:09
HISTRY V1.0  D  1-NOV-1988 13:39:09
ERASE  V1.3  D  1-NOV-1988 13:39:09
PARAMS V1.2  D  1-NOV-1988 13:39:09
DIRECT V1.0  D  1-NOV-1988 13:39:09
End of directory

Task Name? 

Is that cool or what? I've just logged into a disk drive and gotten a directory of a set of utilities that are stored in its firmware. What do they do you ask? Well some are obvious and some aren't.

Task Name
Description
DIRECT This task gives you a directory of the installed utilities. That is what you get by default.
DRVEXR This task is the drive Exerciser and can tell the drive to do seeks and such.
DRVTST This task is the drive tester, this actually runs on power up and when you get the 'fault' light it means that this program found something it didn't like.
HISTRY This task tells you about the history of the drive, when it was built, its drive type, and ECOs and such. It also tells you how many hours the drive has on it (next to last number) and how many times power has been cycled (last line).
ERASE Fairly obviously, this task just tells the drive to reformat itself. If you ever want to sell a drive but you don't want the person who gets it to have access to the data on it, then log in and run ERASE and that will clean it pretty effectively.
PARAMS This is the interesting one, these are parameters that control the drive and this is how we get the drive to do what we want.

Yup, what we want is to change the unit number and we want the drive to tell the DSSI controller what its unit number is, rather than have it respond to the one on the disk bulkhead. So we start up the PARAMs task and have it show us the MSCP parameters.

Task Name? params
Copyright © 1988 Digital Equipment Corporation

PARAMS> help
  EXIT
  HELP
  SET {parameter | .} value
  SHOW {parameter | . | /class}
    /ALL     /CONST   /DRIVE
    /SERVO   /SCS     /MSCP
    /DUP
  STATUS [type]
    CONFIG   LOGS     DATALINK
    PATHS
  WRITE

PARAMS> show /mscp

Parameter     Current           Default        Type     Radix
--------- ----------------  ----------------  --------  -----
MSCPNVR   2020202020202020  2020202020202020
          2020202020202020  2020202020202020
          2020202020202020  2020202020202020
          2020202020202020  2020202020202020    String    Hex   RO
UNITID    1502401184806919     0000000000000  Quadword    Hex   RO
ALLCLASS                 2                 0      Byte    Dec   B
MEDIAID           2264601E          2264601E  Longword    Hex   RO   U
UNITNUM                  0                 0      Word    Dec   U
FIVEDIME                 1                 1   Boolean    0/1   B
FORCEUNI                 1                 1   Boolean    0/1   U
FORCECID                 1                 1   Boolean    0/1   RO
CNT_TMO                 60                60      Word    Dec   RO

PARAMS>

As you can see from the printout above,  when you start the PARAMs task you get a new prompt of the form PARAMS>, one of the more useful commands here is HELP. The output from HELP shows what you can do. Since I'm focused on using a drive without the ID plug, this discussion will stick with the MSCP parameters of the drive (of which UNITNUM is one).

This output table from PARAMS defines the name of the unit in column 1, the current value, the factory default value, the type expected and the radix of the type. Then there is a flag (RO) which will tell you that the parameter is "read only", (U) updatable, and (B) which I've never quite figured out.

The above shows you that the UNITNUM defaults to 0 and is currently set to 0. However, the flag FORCEUNI is set to 1 (also its default)  Now if you can change UNITNUM and FORCEUNI with the SET command. This is shown below. Be sure and use the WRITE command to save your results before you exit the PARAMs program!

PARAMS> set unitnum 1

PARAMS> set forceuni 0

PARAMS> sho /mscp

Parameter     Current           Default        Type     Radix
--------- ----------------  ----------------  --------  -----
MSCPNVR   2020202020202020  2020202020202020
          2020202020202020  2020202020202020
          2020202020202020  2020202020202020
          2020202020202020  2020202020202020    String    Hex   RO
UNITID    1502401184806919     0000000000000  Quadword    Hex   RO
ALLCLASS                 2                 0      Byte    Dec   B
MEDIAID           2264601E          2264601E  Longword    Hex   RO   U
UNITNUM                  1                 0      Word    Dec   U
FIVEDIME                 1                 1   Boolean    0/1   B
FORCEUNI                 0                 1   Boolean    0/1   U
FORCECID                 1                 1   Boolean    0/1   RO
CNT_TMO                 60                60      Word    Dec   RO

PARAMS> write

PARAMS> exit
Exiting...

Task Name? 

Now that we've exited (see above) we're back to the DUP prompt of "Task?" type exit again to get back to the VAX console prompt as shown below and now look to see what DSSI drives are out there.

Task Name? exit

Stopping DUP server...
>>>sho dssi
DSSI Node 2 (RF30D)
-DIA1 (RF30)

DSSI Node 7 (*)
>>>

Notice that now the unit that shows up is DIA1, not DIA2 which was the case when it was forced to follow the ID plug in the front of the box. However that its still DSSI unit 2 to the controller! Well we can fix that too by pulling the 10 pin cable from the drive to the drive bulkhead. That prevents us from being able to set the drive online and offline, however when we rescan the DSSI bus ...

KA640-A V4.1, VMB 2.5
Performing normal system tests.
41..40..39..38..37..36..35..34..33..32..31..30..29..28..27..26..
25..24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..
09..08..07..06..05..04..03..
Tests completed.
>>>sho dssi 
DSSI Node 0 (RF30D)
-DIA1 (RF30)

DSSI Node 7 (*)
>>>            

You can see that the drive has now shown up as Node 0 (although still unit number 1  so VMS would still boot this as DIA1)

"But, but..." you say, "I've only got a "0" ID plug, if the unplugging the 10 pin cable makes it Node 0 I'm still screwed right? Nope, not at all.

All DSSI drives have a 3 bit SIP switch mounted on them. Generally its near the connectors, care to guess what this sets? Yup! The DSSI node number when there isn't a bulkhead with an ID plug present. So I pull out the drive, set the switch labeled as '1' (they are 1, 2, and 3)  to "up" and do the rescan.

KA640-A V4.1, VMB 2.5
Performing normal system tests.
41..40..39..38..37..36..35..34..33..32..31..30..29..28..27..26..
25..24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..
09..08..07..06..05..04..03..
Tests completed.
>>>sho dssi
DSSI Node 4 (RF30D)
-DIA1 (RF30)

DSSI Node 7 (*)
>>>

Voila, the drive now assigns itself node 4, and unit 1 on the DSSI bus! Problem solved.

Ok, so for closure, care to guess what happens if we turn FORCEUNI back off? Yup the drive then takes its unit number from the node number and shows up as unit 4.

>>>set host/dup/dssi 4
Starting DUP server...

DSSI Node 4 (RF30D)
Copyright © 1988  Digital Equipment Corporation
DRVEXR V1.1  D  1-NOV-1988 13:39:09
DRVTST V1.1  D  1-NOV-1988 13:39:09
HISTRY V1.0  D  1-NOV-1988 13:39:09
ERASE  V1.3  D  1-NOV-1988 13:39:09
PARAMS V1.2  D  1-NOV-1988 13:39:09
DIRECT V1.0  D  1-NOV-1988 13:39:09
End of directory

Task Name? params
Copyright © 1988  Digital Equipment Corporation

PARAMS> set forceuni 1

PARAMS> write

PARAMS> exit
Exiting...

Task Name? 

Stopping DUP server...
>>>sho dssi
DSSI Node 4 (RF30D)
-DIA4 (RF30)

DSSI Node 7 (*)
>>>

Summarizing

So what have we learned? We've learned that even if we don't have one of those little plastic ID things we can still use our DSSI drives.

We've learned that if we only have ID plugs 2 and 4 we can still make our drives appear as unit 0 and 1 to VMS by overriding their unit numbers.

And we've learned that you can run your DSSI drive with out a drive bulkhead at all and its ok.

Finally, we've learned that you can log into your drive and ask it things, as my RF30 here has over 66 thousand hours of on-time recorded (that's over seven and one half YEARs of continuous service) we know that these things are pretty damn reliable!

Back to the House of VAX