Retro & Online – Connecting Psion’s MC400 & Series 3a machines to “the internet”

After recently becoming a Psion owner again I began to ponder the issue of connectivity – which for most people today means full internet with rich web content, email, messaging, social media apps, video and audio. Usually this is a pre-requisite in any current mobile device and easily supplied via (usually built-in) wireless comms – Bluetooth, wi-fi or cellular modem. But with their 16-bit architecture, limited memory, graphics, storage and 1990s design my Psion SIBO/EOPC16 machines (Series 3a 2M & MC400) are already at a massive disadvantage. Connectivity is limited to serial RS-232 at a blistering max. of 19200 baud!

This has turned into a long, rambling, messy brain-dump of a post. Sorry.

TL;DR > Old computers are slow and they don’t understand the content or the connection protocols that make up “the internet of today”. To get connected another device is required as a mediator/translator. NodeMCU & Raspberry Pi are your friends.

On with the brain-dump…

The MC400 is in the worst position; as a commercial failure it was more-or-less abandoned by Psion a few short years after its launch and although it features the OPL programming language it’s a text-only version that pre-dates the Series 3 so there’s limited scope for adding (nice-looking, integrated, graphical) features. The MC does feature a basic terminal application with some rudimentary controls for serial modems and Xmodem file transfer so it seems that NodeMCU with modem-emulation firmware is the best bet to get “online”. There’s no TCP/IP stack, so no chance of a native browser or email. You could of course try a text-based browser like lynx in a terminal window connected to another computer… but as the built-in terminal app doesn’t even do basic VT100 emulation there’s no chance of using “control codes” to graphically address the text space.

Accessing CiX – 26 years after I uploaded the file “MCMF10.ZIP” 🙂

The Series 3a fares a little better; in 1996 Psion released “PsiMail” – an internet suite featuring an email client and web browser so there is actual TCP/IP support but again it assumes connection via serial modem so it requires ppp over the serial link. The browser (credited to “Copyright Teleca Ltd 1996-1997” as it starts) is HTTP1.0 only – which means it’s severely crippled in compatibility with almost all of the web in use today. We can use WebOne or other “html2txt” proxies to make some modern sites more readable but results are patchy to say the least.
So for the 3a we have two options:
1. the Psion actually “properly networked” (i.e. running a TCP/IP stack) – run pppd on another (internet connected) computer and connect via 3Link–USB/serial to use the PsiMail suite or
2. the Psion connected via serial terminal to a networked computer:
(i) use the NodeMCU modem emulator and the in-built Comms app much like the MC for text-based BBS-like services
(ii) use a vt100-compatible terminal app like FreeVT and run a text-based browser like lynx on the other computer… I used the same Raspberry Pi that I’d used for pppd and configured a login session via the USB/Serial adapter:
sudo systemctl enable serial-getty@ttyUSB0.service
then edit the file /usr/lib/systemd/system/serial-getty@.service to set the baud rate to 9600 and then reboot. (Obviously you can’t use both pppd and serial console login at the same time on the same physical USB/serial adapter 😉 )

sooooo tiny – logging in to a Raspberry Pi from a Series 3a – FreeVT to a serial console


lynx display on the 3a (running on the Pi)


browsh (another text-based browser) needs more fiddling to get it to work…. still WIP

:: — ::

re-entrant: viewing this site with the PsiMail suite’s browser via serial/pppd/Raspberry Pi & html2txt

Getting PsiMail installed and configured:
The first hurdle is how to get the software onto the Psion – the PsiMail archives available online all assume a PsiWin install and getting PsiWin connected to a Psion is a task all in itself; the software itself is a little fickle (it needs to run on a 32-bit version of windows) and then on top of that it has some connectivity problems with certain serial port hardware/configs. Don’t give up, it will work eventually 🙂 . In the end I successfully used PsiWin 1.1 running in an XP virtual machine (virtualbox on MacOS) with prolific pl2303-based USB/Serial adapter. I couldn’t get PsiWin 2.3.3 to work at all. YMMV.
Assuming you’ve got PsiMail installed head to the “Setup” app and follow the excellent DQYDJ guide

The PsiMail suite assumes that the Psion is connected to some sort of dial up modem via the 3Link serial lead. I’ll be substituting the modem for a Raspberry Pi with USB/Serial converter running pppd. The DQYDJ guide lists what you need to do to strip away most of the commands that deal with actually dialling and leave just the commands that start the ppp link. Setting up pppd on the Raspberry Pi is also covered, so I won’t repeat that here.

Psion’s “ping” implementation also includes an actual sonar ping sound 😀
WHOOP WHOOP – Psion 3a surfing the World Wide Web in 2021
Javascript fail 😦 – even via the WebOne proxy

As well as the html2txt proxy at I also used the WebOne proxy running on another machine on my home LAN.
It was all p a i n f u l l y slooooooow ………. 😦

Getting NodeMCU up and running:
The Node MCU board is an ESP32-based microcontroller IoT platform with on-board wifi module and firmware exists to emulate some old AT-style modem commands. You’ll need the Arduino IDE and a USB cable to flash the NodeMCU but it’s very easy.
Once NodeMCU is up and running you can test the connectivity using the USB serial port – the two main commands you’ll need are
ATWI<WiFiSSID>,<password> ” and

The first command takes a few seconds but you should see a connect response and the second uses telnet by default (although HTTP GET is also supported).

For the physical connection to the Psion serial cable you’ll need an RS232/TTL converter – this converts the voltages of the RS232 protocol to the logic levels that the NodeMCU can use. You’ll probably need some sort of null modem and/or gender-changer connector too. (All of this serial RS232 stuff is 1960s-era tech – DTE vs. DCE etc.)

In the Psion comms/terminal app set the baud rate to match whatever you’ve set on the NoceMCU and type the commands to connect.
(The Series 3a contains a scripting language that can handle talking to modems and the built-in scripts can easily be edited to handle the NodeMCU).

Conclusions: it can be done, but only really for the sake of the challenge or the novelty & nostalgia factor. I had the best success with FreeVT/lynx with the Raspberry Pi doing most of the work and the Psion just acting as a dumb terminal. Much better to let a modern computer handle all the modern stuff (HTTPS etc.) and translate that to a much simpler vt100 display. In my opinion there’s no real utility in connecting these old machines to the internet – assuming you can find some useful text based or HTTP1.0 services, the speed and response time over the serial link is so frustratingly slow in a world that’s left these machines behind, a world where high definition video will stream instantly on the phone in your pocket… I had much more fun controlling my 1990s tape deck with the Series 3a 😀

* The excellent DQYDJ article from 2016,
* Richard Warrender’s page,
* Alex Brown’s “The Last Psion“,
* stardot’s article

Raspberry Pi (3B+) serial login via pl2303-based USB-serial adapter as /dev/ttyUSB0
PsiMail – as introduced in “Psion User” Summer 1996

Published by zedstarr

Chilled out human being, doing techy stuff.

One thought on “Retro & Online – Connecting Psion’s MC400 & Series 3a machines to “the internet”

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: