I got my VT420 working

Many thanks to Steve Davidson. His blog post “Vintage Digital VT420 Terminal on Raspberry Pi” was very helpful in figuring this all out.

A little over a year ago, a strange bug bit me and suddenly I really wanted an amber VT420 terminal for that 80's UNIX mainframe feeling. I went on eBay, found an amber VT420 for $89 and pulled the trigger. I was assuming the terminal would come with a DB9 port, which would be easy to hook up. This turned out to be naive. The VT420 was produced in several variants for different regions, and the one I ordered was the North American version which comes without DB9 ports. It instead has two MMJ (Modified Modular Jack, sometimes referred to as DEC-423) ports—a proprietary cable/plug manufactured and sold by the now defunct Digital Equipment Corporation. These days it's only available at specialized cable companies. The few ones I found were US-based and quoted ludicrous amounts for cable and shipping.

The nice thing about MMJ is that it's essentially an RJ11 plug with a displaced locking pin to distinguish it from other RJ11-like ports. Another conveniently ubiquitous type of cable that uses RJ11-based plugs is LEGO Mindstorms cable, and I happened to still have one taking up (very little) space in my electronics drawer. After filing off the locking pin the plug fit into the MMJ port perfectly—if you ignore how easily it slips out. My “solution” to this problem is touching the setup as little as possible.

I then cut the other plug off the cable, removed the insulation and stuffed the wires into female-to-female jumper wires. I did this because the USB-to-serial adapter I ordered for this project had a male RS-232 connector on it. Putting wires on the pins was not feasible, but I also didn't want to order a female-to-female RS-232 adapter and wait another few days when I was so very close to success. I tried putting the jumper wires on the male DB9 plugs pins directly. The wires ended up holding surprisingly well.

Jumper wires on the serial adapter

Since the Mindstorms cable isn't configured as a null-modem cable, I essentially had to mirror the pins. Here's a table detailing the wiring:

MMJ Pin RJ11 Wire Color Male DB9 Pin
1 DTR White 6 DSR
2 TXD+ Black 2 RXD
3 TXD- Red 5 GND
4 RXD- Green 5 GND
5 RXD+ Yellow 3 TXD
6 DSR Blue 4 DTR

You can find some interesting diagrams for wiring MMJ adapters on this page. The diagram for the BC16E MMJ crossover cable was especially useful to me.

Soon after connecting the cables and starting a Getty instance for /dev/ttyUSB0 on my Raspberry Pi, beautiful results ensued.

Here's a YouTube playlist with videos of the terminal.

$ man man