In POSE, specifying "Serial Port" as "/dev/ttype" did not cause the pty to act in any meaningfully useful manner (neither master nor slave side seemed to work properly). In particular, none of the Palm desktop utilities could connect to the emulated Palm through the pty. Specifically, pilot-xfer(1), symptomized by such accurate but unhelpful messages as "PADP TX Unexpected packet, possible port speed problem?".
Use serial over TCP.
$ (while true; do socat TCP4-LISTEN:6416 PTY,raw,link=$HOME/.pose/poseserial; done)
$ export PILOTPORT=$HOME/.pose/poseserial"
Palm utilities that can already commnicate over TCP/IP can just ignore the whole pty getup.
Write up a special-purpose tcp-pty bridging program. The fact that the pty symlink appears and disappears with the tcp connection is slightly annoying (must ensure emulated Palm starts first). Would like the program to keep the pty active during its lifespan, and pump data to and from tcp stream as it exists. That is, decouple the pty symlink existence from the tcp stream's, so that a closed tcp stream doesn't cause a close of the pty on the master side.
This can also be doable with two socat(1) instances:
$ socat UDP4-LISTEN:6416 PTY,raw,link=$HOME/.pose/poseserial &
$ (while true; do socat TCP4-LISTEN:6416 UDP:localhost:6416; done) &
The first command binds a pty to a UDP connection. Since UDP is connectionless, it does not close in the same manner as TCP, so the symlink persists across "connection" lifetimes, much like a real serial port. The second command bridges a TCP connection to a UDP connection.
The end result is that the symlink remains persistent and acts similar to a real serial port, to the extent a utility can open the symlink at any time and keep it open across multiple HotSync sessions or what have you. In the case of pilot-xfer, pilot-xfer must be running first before the emulated Palm opens HotSync. Writing to the "device" while the emulated Palm is not ready causes the data to be lost (not buffered), just as with a real serial device. This is the sort of behavior expressed with my real Palm IIIxe on /dev/ttyS0 (serial-port cradle).
Some socat(1) adhackery can probably be used to emulate Palm-to-Palm (infrared) beaming.
- EOT -