DECserver 200

  Uncategorized

ds200-front-view

What is it?

The DECserver 200 is a “terminal server”. It enables up to 8 terminals to login to various DEC computer systems over an Ethernet link.

Back in the day a DECserver it was used to connect terminals and printers to DEC systems.  Typically these were VAX machines, though some PDP-11 systems also supported them.

DECservers were a welcome development for two reasons:

  1. You no longer needed to have machine-specific terminal multiplexers in the computer itself. The computer now needed to have only one serial port (for the system console) and an Ethernet interface. You could add as many user terminals and printers as needed by adding one or more DECservers to the network. Each DECserver 200 supports 8 devices (terminals or printers).
  2. From the one terminal on your desk you could now connect to any computer on your network that supports DEC’s LAT protocol. This includes VAX computers running VMS and PDP-11 computers running RSX-11M.  So you could now switch between computers (and switch between multiple “sessions” on the one computer) on the one terminal without unplugging any cables.

Very conveniently, Linux also has great support for DECservers.

So a VT100, VT220 or other terminal connected to a DECserver can also connect to all the Linux computers on your network. And from the one terminal you can switch between Linux machines and/or between multiple sessions on the one Linux computer.

DECservers work over the LAT protocol. No other network protocols (such as DECnet or TCP/IP) are required. So another nice thing is that you can connect to a Linux box via a DECserver without knowing its IP address – or even if the Linux box doesn’t have an IP address assigned to it.

The LAT protocol does however have two significant limitations:

  1. It won’t pass through a router. So the DECserver needs to be connected to the same Ethernet segment as the computers you want to connect to. It will pass through repeaters and hubs just fine though. If you are using say a 4-port router at home to connect to the Internet, you should find that it works fine connected to one port on your router, with the Linux box connected to a different port.
  2. It generally won’t work over a WiFi connection.  Apparently WLAN is not “true Ethernet”. From the little I know about this topic, I gather that the WLAN specification allows WiFi devices to discard (rather than transmit) non-IP packets, in order to avoid unnecessary congestion of the radio link.  LAT is a non-IP protocol, and therefore can be discarded. So its best to connect both the DECserver and the target computer to your network over wired Ethernet connections.

Hooking up the DECserver 200

Connecting up the DECserver is a pretty simple process.  Here’s a picture of the rear panel:

We just need to connect 3 cables:

  1. Connect the Ethernet port (15-pin AUI conenctor) to your LAN. You’ll need an AUI-to-10baseT converter, The CentreCOM 210T (as shown in the picture) works great.
  2. Connect Port 1 (the DB25M connector labelled J1) to a terminal or terminal emulator. You’ll need a “null modem” cable to connect each port to a terminal (such as a VT220) or a PC’s serial port. Only 3 wires are needed: TXD, RXD and GND. The TXD and RXD wires need to be “crossed” in the null-modem cable. Port 1 is the only port that shows console messages, such as the boot messages.
  3. Connect power. There is no power on/off switch, presumably because a DECserver was intended to be always on.

The console

With a terminal connected up to Port 1 and the DS connected to a properly configured network, the initial display on the terminal looks like this:

Local -901- Initializing DECserver "08-00-2B-0B-46-B4" -- ROM BL20, H/W Rev A.A
Local -902- Waiting for image load
Local -903- Loading from host "98-4B-E1-08-85-82"
Local -904- Image load complete

When a DECserver is powered up, it needs to download its firmware from a server on the network. It does this by requesting the file “PR0801ENG.SYS” using the MOP protocol. The dialog above shows us that it succesfully loaded the firmware image from a network host with MAC address 98-4B-E1-08-85-82 (this is an Ubuntu 14.04 system on my LAN).

At this point, nothing more will be displayed on the console until you press ENTER twice. Doing so allows the DS to determine the baud rate of your terminal. You will then be greeted by a username prompt. Type in anything you like here – this does not need to be a valid login name on any system. Here’s what you can expect to see:

DECserver 200 Terminal Server V3.1 (BL37) - LAT V5.1

Please type HELP if you need assistance

Enter username> PUTTY

Local>

Showing available services

A DS200 enables terminals plugged in to the Ports of the DECserver to connect to computers or other services (such as printers connected to a DECserver) on the network. Each computer that you can login to broadcasts (on the network) the name of its “service” using the LAT protocol. DECservers listen to these broadcasts and maintain a list of the currently available services.

To see the available services we use the SHOW SERVICES command, which can be abbreviated to SHOW SERV:

Local> show serv

Service Name        Status       Identification

ASR33               Available    ASR33 Teletype on Port 8
LA50                Available    LA50 printer on Port 2
N36L                Available    Linux 3.2.0-23-generic
RPI-SD              Available    Linux 4.1.17-v7+

Local>

In the list above we can see two services that are being offered by a DECserver: an ASR33 Teletype and an LA50 printer. We can also see two computers that are offering a login service: N36L is a HP Microserver N36L running Ubuntu 14.04, and RPI-SD is a Raspberry Pi running Raspbian Jessie.

Connecting to a service

We can connect to any of these services using the CONNECT command. Here’s an example:

Local> CONNECT RPI-SD
Local -010- Session 1 to RPI-SD established

rpi-sd login: pi
Password:
Last login: Sun May  8 12:01:46 AEST 2016 on tty1
Linux rpi-sd 4.1.17-v7+ #838 SMP Tue Feb 9 13:15:09 GMT 2016 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
pi@rpi-sd:~$

You can keep the connection open and drop back to the DS200’s “LOCAL>” prompt by forcing the terminal to send a BREAK signal on the RS232 line. On a VT-series terminal with an LK201 keyboard this is done by pressing F5 on the top row of the keyboard. In PUTTY you can do this by pressing CTRL-BREAK.

Once back at the “LOCAL>” prompt you can get a list of all your active sessions using the SHOW SESSIONS command:

Local> SHOW SESSIONS
Port 1:  PUTTY               Local Mode    Current Session: 1
- Session 1: Connected       Interactive   RPI-SD


Local>

From here you can open new connections (without disturbing your existing sessions) using the CONNECT command again.

You can resume an existing session using the RESUME command. You can use “RESUME” by itself if only one session is active. Otherwise you need to specify the number of the session that you want to resume:

Local> RESUME 1
Local -012- RPI-SD session 1 resumed

When you resume a session you won’t see any obvious output from the host system, until you enter text on the keyboard. This is because the host system is unaware that you had temporarily disconnected from it. If you want to permanently disconnect, just issue the appropriate “logout” command on the host system:

pi@rpi-sd:~$ logout

Local -011- Session 1 disconnected from RPI-SD
Local>

If you were connected to a device (such as a printer) rather than a computer, you can disconnect from the service using the DISCONNECT command:

Local> DISCONNECT SESSION 1
Local -011- Session 1 disconnected from ASR33
Local>

Privileged mode

When the DECserver is first powered up you will be using it as an ordinary user. This will enable you to examine and change some DECserver settings (not many) and connect to a computer on your network that is running the LAT protocol. You need to change to “privileged” mode if you want to change other DECserver settings. Once you are in privileged mode you will find that the help screens also show many more options that are not visible to an ordinary user.

Here’s how we change to privileged mode (the default password to enter privileged more is SYSTEM):

Local> SET PRIV
Password>
Local>

Help

The DS200 has a fairly comprehensive built-in help system. The layout and use of the DECserver help system is very similar to the help system in VMS.

Although not a full substitute for the written manuals, you will be able to solve many problems just using the online help.

Here’s an example of its use:

Local> HELP SET PORT
DEFINE/SET PORT

Use DEFINE PORT to change the port characteristics that  take  effect  when  the
port  is  next  logged in.  Use SET PORT to change the port characteristics that
you wish to take effect immediately,  but only stay in effect until port logout.

{DEFINE} PORT [ALL      ] port-characteristic(s)
{SET   }      [port-list]

ALL & port-list           determines whether the command affects all ports
                          or a specific list of ports.

Additional HELP is available for the port-characteristics:

ACCESS             DEDICATED SERVICE      INTERRUPTS         PREFERED SERVICE
ALTERNATE SPEED    DIALUP                 LIMITED VIEW       QUEUING
AUTHORIZED GROUPS  DSRLOGOUT              LOCAL SWITCH       REMOTE MODIFICATION
AUTOBAUD           DTRWAIT                LOSS NOTIFICATION  RING
AUTOCONNECT        FLOW CONTROL           MESSAGE CODES      SECURITY
AUTOPROMPT         {INPUT } FLOW CONTROL  MODEM CONTROL      SESSION LIMIT
BACKWARD SWITCH    {OUTPUT}               MULTISESSIONS      {INPUT } SPEED
BREAK              FORWARD SWITCH         NAME               {OUTPUT}

Enter <CTRL/Z> to exit HELP or press  to continue...
BROADCAST          GROUPS                 ON-DEMAND LOADING  SIGNAL CHECK
CHARACTER SIZE     INACTIVITY LOGOUT      PARITY             TYPE
                                          PASSWORD           USERNAME

DEFINE/SET PORT Subtopic? ACCESS
DEFINE/SET PORT ACCESS

Use the ACCESS port characteristic to control connection access to the port.

ACCESS {DYNAMIC}
       {LOCAL  }  *
       {NONE   }
       {REMOTE }

DYNAMIC allows a port to alternate between operating as a local access port  and
a remote access port.

LOCAL allows a port user to log in to the DECserver,  initiate  connections  and
use the server commands.

NONE disables the port completely.

REMOTE allows the port to be accessed only by remote connection requests.

DEFINE/SET PORT Subtopic? DEDICATED
DEFINE/SET PORT DEDICATED

Use DEDICATED to set up a service  to  which  the  port  automatically  connects
at port login.  The  port is dedicated to this  service  and  its  users  cannot
enter any local mode commands.

DEDICATED {service-name} [NODE {node-name}] [DESTINATION {port-name}]
          {NONE        } [     {NONE     }] [            {NONE     }]

service-name            is the name of the preferred service

NODE node-name          specifies a service node offering the preferred service

DESTINATION port-name   specifies a port that offers the service

Enter NONE to cancel a previous service-name, node-name, or port-name entry.

DEFINE/SET PORT Subtopic?
SET Subtopic?
Topic?
Local>

Reverse LAT

A DECserver can also offer (and broadcast) a “service”. This is sometimes referred to as “reverse LAT”

Once the DECserver has been configured to offer a service, the name of the service will be broadcast by the DECserver over the network (using the LAT protocol). For example, we could define a service called “ASR33” on Port 8 of our DECserver 200. Once this has been done, it will show up in the list of services (when the SHOW SERV) command is used. Terminal users on this DECserver (or on any other DECserver) will be able to connect to it. And a computer on the network will be able to connect to it by name and use it as a network printer.

Local> DEFINE SERVICE ASR33 IDENTIFICATION "ASR33 Teletype on Port 8" PORTS 8
Local> SET SERVICE ASR33 IDENTIFICATION "ASR33 Teletype on Port 8" PORTS 8
Local>

Let’s use the SHOW SERV command to see the list of available services

Local> SHOW SERV

Service Name        Status       Identification

ASR33               Available    ASR33 Teletype on Port 8
LA50                Available    LA50 printer on Port 7
N36L                Available    Linux 3.2.0-23-generic
RPI-SD              Available    Linux 4.1.17-v7+

Local>

In the above list we can see the “ASR33” service that we’ve just defined. We can also see another service (LA50) that I’ve previously defined for Port 7, as well as the two computers mentioned earlier.

We now use the DEF PORT and SET PORT commands to setup port 8 appropriately. The main things we need to do are: (a) set the baud rate to suit the connected device; (2) disable auto-baud detection so that our selected baud rate is used; and (3) set access to “remote” or “dynaic”. The access mode “remote” is appropriate for a device such as a printer) that should not be able to initiate connections through the DECserver. “Dynamic” is appropriate for a device such as an ASR33 that should be accessible remotely (as a printer) but also permitted to initiate a connection to a computer.

Local> SET PRIV
Password>
Local> DEF PORT 8 ACCESS DYNAMIC
Local> SET PORT 8 ACCESS DYNAMIC
Local> DEF PORT 8 AUTOBAUD DISABLED
Local> SET PORT 8 AUTOBAUD DISABLED
Local> DEF PORT 8 SPEED 110
Local> SET PORT 8 SPEED 110
Local>

We can now see the new setting using the SHOW PORT command:

Local> SHOW PORT 8


Port 8:                                Server: DS-TOMAS

Character Size:            8           Input Speed:         110
Flow Control:            XON           Output Speed:        110
Parity:                 None           Modem Control:  Disabled

Access:              Dynamic           Local Switch:       None
Backwards Switch:       None           Name:             PORT_8
Break:                 Local           Session Limit:         4
Forwards Switch:        None           Type:               Soft

Preferred Service: None

Authorized Groups:   0
(Current)  Groups:   0

Enabled Characteristics:

Autoprompt,  Broadcast,  Input Flow Control,  Loss Notification,
Message Codes,  Output Flow Control,  Verification

Local>

Note that if we had not disabled autobaud, the word “Autobaud” would have appeared at the start of the list of “Enabled Characteristics” in the above output.

You may also want to DEF/SET “BROADCAST DISABLED” on the port, to stop DECserver broadcast messages from appearing on the printed output of your device.

Useful links

Here are some links to relevant material that I discovered when writing this post:

DECserver 200MC via Linux Focus is mainly on getting mopd to work in Linux. Also discusses using Linux to remotely manage a DECserver.

Setting up the mop server, Diskless NetBSD HOW-TO Setting up mopd on netBSD, OpenNSD, FreeBSD and Linux.

Connecting a DECserver to modern Linux

Ubuntu man page for mopd The definitive (but brief) explanation of the Linux mopd service, including command-line switches.

Getting a DECserver 200/MC Working Excellent article on setting up VAX/VMS tobe able to connect in via a DECserver 200

DECnet for Linux Very helpful guide to some of the more complicated aspects of the LAT driver in Linux

An Introduction to the Decserver 200 Appears to be a hacker’s guide to navigating around and through DECserver VMS systems

What is a terminal type or terminal emulation, and how do I set it? Some snippets of information about setting the terminal type in Unix and VMS systems

Commands to set up a DECserver using DECnet Phase IV MOP Guide to setting up VMS systems to serve up DESserver firmware via MOP

Where to from here?

In a future post soon, we’ll look at what’s needed to configure a Linux machine (such as a RPi) or a VAX machine to offer a login service over LAT.