Palm PPP networking using OpenWRT

You can use OpenWRT and one of its supported devices to connect a Palm device to the Internet/LAN. This allows you to use network Hotsync as well as various networked apps (web, email, IRC, etc) on Palms which are not equipped with wifi/cell connections. On this page I’ll focus on connecting a USB Palm, but with minor tweaks you can use a serial Palm.

This guide was tested on OpenWRT version 22.03.5.

What you’ll need

Configuring OpenWRT

Install OpenWRT and connect it to the Internet using the user guide. I’ll assume your Internet-connected interface is called “wan” (the default.)

All the following steps require CLI access to OpenWRT, whether through SSH or serial console.

Run opkg install ppp kmod-usb-serial-visor to install the extra packages we need.

Make the following changes to config files. This lets connections from the Palm get through the firewall. Also, make sure your “wan” zone in the firewall has “masq”/NAT enabled.

# /etc/config/network
config interface 'palm'
    option device 'ppp0'

# /etc/config/firewall
config zone
    option name palm
    list network 'palm'
    option input ACCEPT
    option output ACCEPT
    option forward ACCEPT

config forwarding
    option src palm
    option dest wan

Finally, paste the following script into /etc/hotplug.d/usb/99-palm. (You’ll likely need to create the usb folder.) Its purpose is to set up the PPP connection automatically when the Palm is plugged in to USB.

if [ "${PRODUCT::4}" = "830/" ] && [ "${DEVTYPE}" = "usb_device" ]; then
    if [ "${ACTION}" = "add" ]; then
        logger -t hotplug "palm connected"
        pppd /dev/ttyUSB1 57600 \
            192.168.32.1:192.168.32.2 \
            ms-dns 8.8.8.8 \
            linkname palm
    fi
    if [ "${ACTION}" = "remove" ]; then
        logger -t hotplug "palm disconnected"
    fi
fi

You may want to adjust the ms-dns 8.8.8.8 line to match your local DNS server. The 192.168.32.x addresses shouldn’t need to be adjusted unless they conflict with something on the same router; these addresses will be NATed away and never leak outside the OpenWRT-to-Palm connection.

Limitations

Putting the Palm behind a NAT is a simple way to get the connection working in many different network environments. It should be good enough for nearly all use cases, but it does prevent you from running any sort of server on your Palm. (If you’re enough of a madman to want to do that, you probably don’t need this guide anyway.)

Configuring Palm OS

Open Prefs on your Palm and choose Network. Create a new service or reuse one of the existing ones. (I named mine “Pi”.) Leave the username and password blank (the password field will say -Prompt-) and choose “Cradle/Cable” as the connection. Then, tap “Details…” at the bottom. On this screen, “Connection type” should be PPP, “Query DNS” should be enabled, and “IP Address” should be “Automatic”. Finally, tap “Script…” at the bottom, and change the first entry to “End” if it isn’t already (which clears the whole script.) Tap OK twice to exit back to Network Preferences.

Now, you should be able to plug your Palm into your OpenWRT device, tap Connect, and see the “Established” message after a moment. This means your Palm is at least talking to OpenWRT properly, but doesn’t guarantee that it’s connected to the Internet. If your Palm reports an error instead, go back to the OpenWRT CLI, run logread -f, and try connecting again to see if pppd is actually starting and whether it’s complaining of any errors.

Next you can try whatever networked Palm app you’ve been wanting to use, or you can test the connection without any extra software: when your Palm is connected and still on the Network Preferences screen, open the menu, choose Options and then View Log. A hidden feature of this log is that you can type commands at the end of it. Try ping 8.8.8.8 to see if you can reach Google DNS. If you get Reply from 8.8.8.8, then it worked. (If you get Reply from 192.168.32.1, the reply was probably “Unreachable” – the Palm doesn’t actually tell you what the response code was.) You can also try ping google.com to see if DNS is working.

Adding Tailscale

If you’re using network Hotsync, it’s a good idea to connect it through a VPN like Tailscale instead of over the Internet.

On OpenWRT, run opkg install tailscale, or find a newer version under the appropriate snapshots folder.

Add the following to /etc/config/firewall:

config zone
    option name tailscale
    list device 'tailscale0'
    option input ACCEPT
    option output ACCEPT
    option forward ACCEPT
    option masq 1
    option mtu_fix 1

config forwarding
    option src palm
    option dest tailscale

Run tailscale up --netfilter-mode=off and log in. You may want to disable key expiration in the Tailscale dashboard, since this will be a headless/unattended device.

Also, if you have Magic DNS enabled in Tailscale settings, you should edit /etc/hotplug.d/usb/99-palm and set the DNS to 100.100.100.100.