Connecting a Palm via USB

The computer to which I had been synchronizing my Palm Tungsten E died a while ago. I explored the two options for connecting to my Ubuntu system using a USB cable. The fastest is to use a direct USB connection. However, I wanted to ensure I could synchronize over a network connection. I also configured and tested setting up a PPP connection over USB. The configurations were tested with both JPilot and Gnome-Pilot.  These have different capabilities and use different tools to access the data.  The installations were done on Ubuntu Lucid.

Direct USB Connection

The default installation includes the required libusb package.   Access to the ttyUSB1 device requires that the user be added to the dialout group. This can be done with the useradd command. sudo useradd user dialout. Configure your chosen tool to use the usb: device.  For JPilot, this is done from the preferences menu (crtl-s) .  For Gnome-Pilot, this is done in the PalmOS Devices item in the System Preferences menu.  Setup your preferences and prepare to synchronize your palm. Synchronize your Palm as you would for the Windows Desktop software:

  • Select HotSync;
  • Select Local;
  • Select Cradle/Cable; and
  • Select the HotSync icon.

Network Connection over PPP

Using a network connection over PPP enables you to also use various tools which connect using the TCP/IP stack without a conduit. IT should also allow you to synchronize with a remote desktop.   This configuration allows any user to run the server software. Configure  a udev rules file.   I created /etc/udev/rules.d/82-palm.rules.   The first rule ensures that the visor driver is installed, as it is blacklisted.  You can omit this rule if you ensure that the visor driver is always loaded, or is not blacklisted.  The idVendor value may be different for  your device.  If you connect a variety of devices from the same vendor add an additional attribute.  The second rule runs pppd whenever the link comes up.

# If no driver has claimed the interface yet, load visor ignoring blacklist
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", \
ATTRS{idVendor}=="0830", DRIVER=="", \
RUN+="/sbin/modprobe visor"

# Startup PPP on connection; allow for multiple ttyUSB devices
KERNEL=="ttyUSB[13579]"\
ATTRS{product}=="Palm Handheld*|Handspring *|palmOne Handheld", \
RUN+="/usr/sbin/pppd /dev/%k call palm"

Create /etc/ppp/peers/palm with the following contents.  This file contains the pppd options to connect properly to the palm.  Provide your DNS servers in place of the ones I have used for the ms-dns parameters.  The configuration I am using provides no authorization.

115200
# IP for Palm (Works around byte reversal on some devices)
:192.168.168.192
ms-dns 192.0.2.2
ms-dns 192.0.2.3
silent
persist
local
noauth
noccp

Setup your Palm Pilot for PPP.

Setting your Palm up for PPP is relatively simple but involves a number of screens.  Alternatives and options are in italics. Define the PPP connection.  This can be used by multiple applications. From the Preferences application select Network.

  • Preferences Network (Screen 1) defines the connection
    • Service: Unix
    • User Name: Your id
    • Password:  For  User Name, optional
    • Connection: Cradle/Cable
  • Detail (Screen 2)
    • Connection Type: PPP
    • Idle timeout:  Never
    • Query DNS: Checked or enter your DNS data
    • Ip Address: Checked (Automatic)
  • Script (Screen 3) is a minimal script
    • End:

Setup HotSync to use the network connection.  From the HotSync Application select the Primary Pc Setup menu.  Enter the name and address of the PC you will be synchronizing to.

Synchronizing over PPP

Setup your desktop application to use the network.  For JPilot, set the Serial Port to other, and enter net: in the address field.  For Gnome-Pilot, set the Device Type to Network.  Prepare to synchronize.  On the Palm, perform the HotSync as follows:

  • Select HotSync;
  • Select Modem;
  • Ensure the Service is Unix; and
  • Select the HotSync icon.

Enabling Network access with Shorewall

I use Shorewall to configure my firewall.  It is configured with a number of easy to understand configuration files.  The following steps will provide access to the Internet using NAT (Network Address Translation) on the Linux server.  The configuration files are all in /etc/shorewall.   If you are setting up Shorewall, get Shorewall working for the server first.   The one-interface example is a nice starting point.   These additions allow the palm to access the Internet.

  • Edit shorewall.conf and ensure that  IP_FORWARDING = YES.
  • Edit zones to add a zone reading palm  ipv4.
  • If you are not already using PPP interfaces edit interfaces to add a line reading  -   ppp+.
  • Edit hosts to add a line reading palm  ppp+:192.168.168.192
  • Edit masq to ad a line reading eth0  192.168.168.192.  (Substitute your network interface for eth0 if necessary.
  • Edit rules, and add rules to allow the palm to access the desired services and/or
  • Edit policy to allow the palm to access the desired networks.

Check your Shorewall configuration (shorewall check), and reload your Shorewall configuration (shorewall restart)