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.
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.
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.)
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.
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.
opkg install tailscale
has a hidden dependency on opkg install iptables-nft
. Newer Tailscale packages don’t seem to have this problem.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
.