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:
- 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).
- 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:
- 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.
- 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:
- 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.
- 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.
- 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.