Matt J. Gumbley | Website:
Blog: On The Edge of Occam's Razor

plptools - Matt's work on User-Space UNIX-Psion tools

Table Of Contents

Busy Person at Work!

Please note: I no longer write software for the Psion series of handhelds, and at this time, do not use plptools, or contribute to it - please do not send me mail about plptools, since I cannot easily test your problems, or answer your questions. Please read the section marked Contacting me about plptools for "support" options.


1 Introduction

This project or information is dead. I cannot release any code or further information on it, other than what you'll find on this page. All communication regarding it will be silently deleted. Apologies.

I started writing a Linux-based User-Space PLP/NCP/RFSV stack, and also started investigating a kernel-based implementation. While working on this, Philip Proudman beat me to a working implementation (plp), which Fritz Elfert improved by merging with Rudolf Koenig's p3nfs/p5nfs, to produce plptools.

My initial efforts spawned scope, an RS-232 line analyser and capture tool, and ncpscope, a tool which takes this data, and interprets it as a PLP/NCP/RFSV data protocol trace.

Fritz removed the RFSV16 (Psion Series 3) support from plptools, and so I'm adding it back in.

I'm also investigating proxying - discussions about this are taking place on the mailing list. It will allow processes on the Psion to connect to processes on the UNIX system (and vice versa) via NCP, provided by plptools' ncpd NCP daemon.

2 Contacting me about plptools

Please do not send patches/queries to my home mail address, matt at gumbley dot demon dot co dot uk, as I cannot rapidly respond to these. Instead, please send them to the main developer mailing list, linux-psion at geekstuff dot co dot uk.

(Sorry I can't use mailto addresses, they're too easily harvested by imbeciles)

3 Contacting me about plp

I no longer work with the plp source code - please contact Philip Proudman for queries regarding this code.

4 Obtaining plptools

4.1 Fritz' Releases

Fritz' original plptools can be obtained from

The latest version (as I write this) is 0.6.

4.2 Patches Collection

The latest patch is against plptools-0.6, and can be downloaded here. It contains several patches, collected from the linux-psion mailing list, and also sent to me personally. Eventually it'll get rolled into plptools-0.7.

4.3 Applying the patches

You'll also need Fritz' 0.6 release, from the address above. Do the following:
  • Download plptools-0.6.tar.gz from Fritz, into some directory.
  • Uncompress this:
    tar xzvf plptools-0.6.tar.gz
  • This will create a plptools-0.6 directory.
  • Download the latest patch using the link above into your directory, and uncompress it:
    gunzip mjg-0.6.diff.gz
  • Apply the patch:
    patch -d plptools-0.6 -p1 < mjg-0.6.diff
    (That's dash pee one, not dash pee ell)
  • With luck, this will display a list of files it is creating/patching, in your plptools-0.6 directory.
  • Rename the plptools-0.6 directory to plptools-0.6-mjg, just to remind you that you're using a non-official version!
  • Change into your plptools-0.6-mjg directory
  • Run:
  • (You may not have autoconf / automake on your system - if this is the case, you'll be better off downloading the full source archive, from the link above. )
  • Run ./configure with whatever options you require, then make, make install, etc.

5 What These Patches Do

Patches to plptools-0.6, collected by Matt Gumbley

1) Compilation patches to enable builds on Solaris. and
2) Christof Meerwald's patches so that ncpd can autoterminate (-e option), and
   patch for mgetty PLP autodetection (in the new patches directory), also a
   patch to make the connection more stable.
3) Peter Cherriman's patch which fixes the "one hour out" bug, which " that
   a file timestamp is sometimes different when you do a "ls -l" on a mounted
   psion, than the timestamp listed by the properties box on the psion.

   My previous fix, no longer worked when the daylight saving changed. Linux 
   stores timestamps internally as the number of seconds since the EPOC in 
   UTC(GMT). However the psion seems stores timestamps as the number of seconds 
   since the EPOC. However the EPOC in defined relative to the currently set 
   timezone on the psion.

   My new fix takes into account the timezone and DST status provided by the 
   linux system, it now works in by GMT(UTC+0) and BST(UTC+0+DST), but I 
   haven't tested it very much in other timezones, but I think it works. 

   It provides the correct timestamps apart from files created within a hour 
   of a DST change, however this can't be helped due to the strange way the 
   psion stores timestamps and handles timezone and DST."
4) Added --with-mountdir option to configure to allow the plpnfsd mount point
   to be specified at build time. Default is /mnt/psion.
5) Added /dev/psion at the start of the serial ports probed for.
6) Peter Cherriman's patch that fixes compilation of on some platforms.
7) Jim Hague's patches for SIBO, and later Linux Kernels, from Feb 2000. 
   My apologies to Jim for not merging these sooner.  He says:

   "I've been doing a little work on getting plptools working with my 3a. ...
    I have plpftp working for file transfer and plpnsfd also working, at least 
    sufficiently to back up my 3a.

    I have also modified the include files required for the Linux build so 
    that it works with a 2.2 series kernels with the NFSv3 patch applied; 
    actually, all I've done is copy the relevant bits of the old NFSv2 headers.

    It all seems to work with my 3a, though compared to p3nfsd plpnsfd seems 
    very slow at listing directories - when time permits I shall take a 
    closer look.

    In addition to my English 3a (v3.22F) I have also tried it on an Italian 3a
    (v3.40F). The latter exhibits some curious behaviour - if you start ncpd, 
    run up plpftp and quit plpftp, the 3a closes its serial port down (drops 
    CTS and DSR) and seems to need a reset before it will re-open the serial 
    port. Again, when time permits I shall see if it does this when using 

    Other parts of Jim's patch:
    "Which reminds me - 0.6 doesn't seem to have working copyFromPsion and
     copyToPsion. I've fixed it up and tidied up the retrieval of Owner 
     Infomation a little - 3as anyway send lots of \0\0\0\0\0, each of which 
     was being displayed in plpftp as a blank line. "

    Jim's patch removes lots of diagnostics in the rfsv16 code, and looks like
    it fixes lots of stuff I hadn't got round to .

Last patch update: 18/07/00.

5.1 Earlier work

You can ignore this section, it's here for posterity.

RFSV16 support is still unfinished, but it moderately useable. Although I'm releasing a patch against Fritz' 0.4, it isn't quite ready to be merged (unless Fritz thinks otherwise!)

Until it's finished, you'll have to make do with these development snapshots:

plptools-0.4-mjg1.tar.gz, 23/09/99, 193598 bytes.
plptools-0.4-mjg2.tar.gz, 04/10/99, 198728 bytes.
plptools-0.4-mjg3.tar.gz, 07/10/99, 196654 bytes.
plptools-0.4-mjg4.tar.gz, 10/10/99, 186607 bytes.
plptools-0.4-mjg5.tar.gz, 21/10/99, 189843 bytes, and plptools-0.4-mjg5.patch.gz, 19222 bytes.

My changes are documented in the README.mjg file, reproduced below. This might be more up-to-date than the one in the above snapshot, as it gets built into this page from my development tree whenever my website gets autoregenerated.

(C) Matt J. Gumbley 1998-2005 - All Tights Reversed