I wanted to connect my Psion 5mx to the internet without using a computer. I have used an old Nokia with IR port, but that needed a data sim card, so not an ideal solution. I was looking for a solution using a Raspberry Pi as a modem.
I found several tutorials online, but I could not get any of them to actually work. After trying several tutorials, I distilled the commands that seemed to do the trick and finally succeeded. Now I am not a Linux expert by any stretch of the imagination, just good at copy-pasting, so my solution might not be the prettiest, but it works.
My solution is creating a direct serial to PPP connection, so without dial-up. It works great and pretty fast with my Psion 5mx. It also works with my Palm devices and should also work with other devices that can use a direct PPP connection.
This is what worked for me:
Configuring the Raspberry Pi
You need a Raspberry Pi and a USB to serial adapter. I used a Pi 3B and a Prolific PL2303 USB to serial adapter. A display for the Pi is not required.
Install Raspbian Lite on your pi using Raspberry Pi Imager. You will find the light version under the Raspberry Pi OS – Other category. Make sure you enable SSH and enter your Wifi credentials in the custom settings before flashing. Also maybe choose your own password.
The first time you boot the Pi with Raspbian it will take quite some time. Just give it a couple of minutes before you continue.
SSH into the Pi. On windows you can install Putty or use the built in terminal and on Mac / Linux you can use the built in terminal and use
ssh pi@raspberrypi.local
to ssh into the Pi.
Now enter this command (copy & paste will work):
sudo apt update
sudo apt upgrade -y
sudo apt install -y ppp pppoe telnetd
This will install the required packages. When asked, confirm installation.
After installation has finished open /etc/rc.local in Nano by entering
sudo nano /etc/rc.local
You will now see an editor. Copy and paste the following code right before the last line which should be ‘exit 0’.
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo pppd /dev/ttyUSB0 115200 192.168.99.1:192.168.99.2 ms-dns 8.8.8.8 passive local noauth updetach persist crtscts lock silent holdoff 1 &
echo default-on | sudo tee /sys/class/leds/PWR/trigger
Save the file by pressing CTRL+X and then confirm overwriting by pressing Y and enter.
Then open /boot/config.txt with
sudo nano /boot/config.txt
and add the following line at the beginning:
dtparam=pwr_led_trigger=heartbeat
This commands makes the power led of the raspberry pi blink in a heartbeat pattern while booting, and the last command in rc.local turns it solid on. That way you can see from the leds when booting is ready. Just a little quality of life addon.
Ctrl+x, y and enter to save and close.
Now plug the USB to serial cable in your pi and reboot the pi with
sudo reboot
Optional but recommended: Install 68kproxy
If you us a Psion or some other device with a very limited browser, it can be a nice to install this proxy. The proxy uses a readability feature to strip websites down to their bare minimum, and also changes https into http so your old browser can open them. If you use a Palm device with PalmOS 4.1 or lower, please note that you don’t need this but rather OpenXiino. See below.
Log back into your pi as before.
First we need to install some requirements:
sudo apt update
sudo apt install -y imagemagick git npm
sudo su
curl -fsSL https://deb.nodesource.com/setup_21.x | bash - &&\
apt-get install -y nodejs
su pi
This will take quite a while. You can probably get yourself a cup of coffee.
Then download and install the 68kproxy:
git clone https://github.com/danielscottjames/68kproxy.git
cd 68kproxy
sudo npm install
Finally, we have to make sure to start the proxy at boot. To do this use
sudo nano /etc/rc.local
And add the lines below right before the line
echo default-on | sudo tee /sys/class/leds/PWR/trigger
cd /home/pi/68kproxy
sudo npm run start&
Ctrl+x, y and enter to save and close.
After this you can reboot the Pi. During boot the red led should blink and when ready it should stop blinking.
Configure your Psion 5(MX)
On my Psion I installed the “Mobile Connectivity Update 3.10” but I don’t know if you actually need it. I don’t think so, but it can’t hurt to install it anyway. Or try without and comment below if it worked anyway 🙂
By default the serial port is in use for the Remote Link of the Psion 5m so we have to disable that. Go to settings (bottom left icon on the screen bezel) and then open the dropdown menu (top-left icon on the screen bezel). Click Tools and then Remote Link and set it to Off.
Then, open the control panel on the right of the settings screen and click “Dialing” and set your location. In my case the default settings were fine but you need to open this window once or you will get an error like “Connection information not found, please check if connection and location are set”.
Open Modems in the Psion settings, create a new modem and call it whatever you like.
Then configure it as follows (I’m translating this from a Dutch version of the Psion OS so things might be called slightly different).
- Tab “Modem”
- 115200 baud
- Serial
- Auto
- Tab “Options”
- Leave as is
- Tab “Initializing”
- Init string AT
- Tab “Advanced”
- Flow control “Hardware (RTS/CTS)”
- Terminal detect and carrier detect unchecked
- Modem type “Fixed line”
Then go to Network settings on the Psion and create a new service.
Click “Edit” and configure as follows:
- Tab “Service”
- Give it any name you like
- Select Direct
- Tab “Account”
- Uncheck Manual Login and enter “user” in the user field. Leave the rest empty
- Tab “Addresses”
- Check get IP from server
- Check get dns from server
- Tab “Login”
- Leave as is
- Tab “Advanced”
- Check only “Accept flat text” and uncheck the rest
Now you need a web browser, so you can install “Web” Or “Opera” and you might want to install the “Hermes” terminal program that you can use to add wifi networks to your pi if needed or to connect to BBS’ses.
Obviously now plugin the Psion’s serial cable into the USB to serial adapter and enter a non-ssl website like frogfind.com in the browser address bar. It should ask you to connect and if you do the page should load.
When using the optional 68kproxy:
Open the browser settings and add the proxy. For “Web” you go to Tools -> Proxy server settings and use 192.168.99.1 as proxy server and 8080 as port number. Check the box for Use proxy server.
and for Opera you go to Preferences -> Connections and then click the Proxies button. Add 192.168.99.1 with port 8080 in both the HTTP and HTTPS settings and check the box behind “Use proxy server” for both.
Since there are still a lot of nice websites around like theoldnet.com that are especially made and maintained for old devices, I like to access those without using the proxy. For that reason I have both Web and Opera installed, but only in Opera I’ve added the proxy, so for those old sites or if the proxy is giving strange results I can simply switch to Web.
Configure your Palm device
Go to Prefs -> Connection and add a new connection. Then edit it.
Connection – Edit
Give it any name,
- Connect to: PC
- Via: Serial
Connection – Edit – Details
- Speed: 115200kbps
- Flow Ctl: Automatic
Go to Prefs -> Network and choose a service to edit. Give it a name you like.
- Username: empty
- Password: -Prompt-
- Connection: the connection you just created
Network – Details:
- Connection type: PPP
- Idle Timeout: Never
- Query DNS checked
- IP address Automatic checked
Network – Details – Script
Change the top line to End so the script only says End.
Now you can connect and it should say “Established” pretty fast.
So what can you do with this internet connection?
To be honest, not much. The technology and requirements for the internet have changed a lot since these devices were mainstream, so there are many limitations.
Web browsing
If you didn’t install the 69kproxy your browsing experience might be very limited.
The browsers for vintage computers usually don’t work with SSL (HTTPS), so you can’t open the majority of current websites since they require SSL. There are a couple of ways around this. You can browse via frogfind.com, which is a search engine, but also a webbased proxy for vintage computers. It strips SSL and converts the website to something your Psion can handle. If you run a browser that supports a proxy in the settings, you can use the proxy of theoldnet.com or protoweb.org to browse websites, but those are limited to the sites that they have available.
If you did install the 68kproxy you can more or less browse the web normally. Most websites will open and their content will be readable. Images will also mostly show.
Web browsing on PalmOS 4.1 or lower
Special note on Palm web browsing: If you have a PalmOS version under PalmOS 5, the only browser you can use as far as I know is Xiino. This browser used a dataserver hosted by the makers to resize images and optimize html. This server is long gone, so this functionality doesn’t work anymore. Xiino will simply give a “Host not found” error when you try to open a website. You can still use the browser in text-only mode though: Open Xiino, go to Options, prefs and change “Images quality” to text only.
You can also install OpenXiino on a server and enter that as dataserver. This works but is far from perfect according to the maker (see comments below). I managed to get it running on the same Raspberry Pi I use as modem, but it was a lot of work since the required Python version wasn’t available and I had to compile it myself. I might add a separate tutorial on this subject later.
In the days of these devices it was common practice to connect to mailservers using unsecure connections and most of the mail clients on these devices don’t even understand TLS and similar encryption standards. So you can use email, but only if your email provider works over unsecure connections and you are willing to do so. IE. Microsoft o365 email doesn’t allow unsecure connections.
Also, by default the Psion client for example only allows Pop3 and SMTP without authentication. You can add imap support and SMTP authentication support though, but mainly the latter is quite a challenge. If you want to give it a try you can download those mail addons here:
Visit oldschool BBS’ses
You can also use a TCP capable Telnet client like Hermes on the Psion to connect to BBS’ by changing the host and port to a BBS. You can find a long list here.
IRC
Yes, IRC still exists and there are clients for the Psion 5mx and PalmOS.
You can download a Palm IRC client here.
How to add a wifi network?
For this you need to SSH into the Pi, but if you need to add another network, it probably means your pi is not connected at that moment so you can’t ssh into it using your computer. Luckily you can do it from your old device as well, as long as there is a TCP capable Telnet client available for it.
Configure wifi using a Psion 5mx
Open Hermes on your Psion, and press CTRL+K to get the connection dialog. Use the “Switch to TCP/IP” button and configure as follows:
Now press Connect and the Raspberry Pi login prompt should appear. Login and type
sudo raspi-config
to enter the configuration tool.
It seems the enter key on the Psion keyboard doesn’t work in raspi-config. A work around is pressing CTRL+Y to bring up the on-screen numerical keyboard and use the enter key on that. If someone knows a better way please let me know.
Go to System Options and add a wifi network.
Configure Wifi using Palm OS
You need a TCP capable Telnet client like PalmTelnet and in theory follow the instructions above. In practice I’ve tried this and although you can open raspi-config I couldn’t find a way to actually use the raspi-config menu. If you use a Palm you might need to add networks while you are connected to a known network.
The Raspberry Pi enclosure
For my own version, which is a Raspberry Pi 3B, I remixed an existing enclosure to add space for an 18650 battery and USB-C charge board. You can find this design on Printables. This is obviously completely optional.
What’s next?
- I am expecting a USB to IR adapter in the mail. I want to try to get this to work over IR as well to make the setup more compact.
- I’d like to use a somewhat prettier way to boot all the required software than simply dumping it in rc.local, but that’s why I said I’m no linux expert 😉
Version History
- March 2nd 2024: Initial version
- March 5th 2024: Rewrote structure and enclosure
- March 6th 2024: Whoops forgot to mention to disable remote link. My bad. Added.
- March 8th 2024: Added info on Palm devices.
Also added 68kproxy and blinking leds.
Double checked all Raspberry Pi installation steps.
Leave a Reply