How to connect your Psion or Palm PDA to the internet in 2024

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.

My testing setup

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.

E-mail

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.

Posted

in

, ,

by

Tags:

Comments

3 responses to “How to connect your Psion or Palm PDA to the internet in 2024”

  1. Nick Avatar

    > For example, Xiino browser gives a “Host not found” error, even if I enter an IP address directly to get around DNS issues.

    This isn’t a DNS issue, but is caused by Xiino trying to phone home to the Mobirus “data server”, which hasn’t existed in a long time. You can mitigate this in one of two ways:

    – Turn off images – Menu > Options > Prefs… > change “Image Quality” to “Text Only”
    – Use a third-party dataserver like OpenXiino – which, incidentally, is where I found this blog post from!

    I’ll warn you now – I haven’t worked on OpenXiino in a long time, and it was flaky even at the best of times. The main purpose of OX was just to see if I could get images to render in Xiino – I was never able to get the HTML-parsing working quite right, so a lot of pages will render weirdly (if at all).

    Nice work on the Psion by the way – I used to have a 3a a long time ago, but I’d love to get my hands on a 5/mx at some point. I’m a sucker for handheld computers, especially the ones with keyboards…

    1. Björn Avatar
      Björn

      “– Use a third-party dataserver like OpenXiino – which, incidentally, is where I found this blog post from!”

      I found out about the dataserver this morning, so that how I ended up at OpenXiino haha

      When and if I get OpenXiino to work on the Pi I’ll add it to this tutorial so people with a Palm can use this as well.

      I’m also trying to get stunnel working on the client to be able to connect to current (TLS/STARTLS) mail services but thus far no luck.

    2. Björn Avatar
      Björn

      I finally got OpenXiino to run on my Raspberry Pi 3B. Python 3.10 is not available as pre-build package for the Pi 3, so I had to build it myself. Also I needed to manually install the requirements for Wheeled(?), but in the end I succeeded 😃
      And you were right, it’s not working perfectly, but it’s something! Thanks for making OpenXiino.
      I’ll update this blog later to point to OpenXiino and might make another post on how to get it running on the Pi (3).

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.