The PLP Compatibility Guide
---------------------------

Send additions to this file to <jmason@iona.ie>. Use any
info in here at your own risk!

* Using PLP with programs that use the BSD frontends (lpr, lpq)
* Using PLP to Send Jobs to Other LPD Implementations
* Using PLP to Receive Jobs from Other Printer Spooling Implementations
* Replacing other LPD implementations with PLP
* Using BSD filters with PLP

Using PLP with programs that use the BSD frontends (lpr, lpq)
-------------------------------------------------------------

1. The SAMBA SMB daemon

1. The SAMBA SMB daemon

    To allow SAMBA to read PLP's lpq output, you should use lpq
    with the "-O" option, which causes it to emulate BSD lpq's
    output.

Using PLP to Send Jobs to Other LPD Implementations
---------------------------------------------------

1. SunOS LPD
2. HP JetDirect cards
3. WSLPD (Windows Sockets LPD)

1. SunOS LPD

    SunOS LPD, and some other BSD-derived LPDs, are fussy about the
    order their control file records arrive in; you should set the
    "bk" flag in the PLP printcap entries in order to allow
    your printer queues to send jobs to them.

2. HP JetDirect cards

    These will accept only one connection at a time, print an
    annoying banner page continually (although apparently there's
    a PCL string to switch this off -- I don't know it though),
    won't allow you to remove printing jobs, and won't queue
    incoming requests on a first-come first-served basis like
    a proper lpd. You're better off using the LP-pipes written
    to talk to these cards, namely "hpnp-lp", or preferably
    "tcp-lp". See the file "doc/README.lp-pipes" for more
    details.

    To use these, you should put "rt#0" in your printcap entries,
    so PLP will retry opening the connection forever.

    Note that you should make a "funnel queue" for the jobs to
    pass through; this'll probably help keep the retrying down,
    and it'll ensure the first job spooled will be the first
    job printed. RTFM for an explanation of why you should do this.

    This should not interfere with your setup too much, as
    PLP does not limit the number of remote queues a job passes
    through.

3. WSLPD (Windows Sockets LPD)

    This really ought to become an lp-pipe, as it's even worse
    than the HP JetDirect cards.

    To use these, you should put "rt#0" in your printcap entries,
    so PLP will retry opening the connection (and sending jobs)
    forever. Also, if you want multiple queues sending jobs to one
    printer, make a queue on the PLP host and have all the other
    queues sending their jobs to this queue.

    You will probably see logged messages along the lines of
    "wslpd: error from remote site stream - Interrupted system call".
    This is WSLPD refusing to acknowledge successful transfers,
    which is in violation of the LPD protocol (RFC 1179). Bummer.

    Note that you should make a "funnel queue" for the jobs to
    pass through; this'll probably help keep the retrying down,
    and it'll ensure the first job spooled will be the first
    job printed. RTFM for an explanation of why you should do this.

Using PLP to Receive Jobs from Other Printer Spooling Implementations
---------------------------------------------------------------------

1. MS Windows NT 3.5

    PLP supports the "should be able to receive data file first" rule
    of RFC-1179, which is what NT does that some other lpd servers
    don't like.  You can set up a PLP server as a "TCP/IP Printer
    Server" from the NT Print Manager; it's in the "Other ports..."
    section of the Ports pulldown menu.

Replacing other LPD implementations with PLP
--------------------------------------------

1. BSD lpd

    There shouldn't be too much trouble replacing your existing BSD
    setup with a PLP setup -- however, one particularly hairy problem
    exists. The "fc", "fs", "xc" and "xs" parameters are used by BSD
    lpd to set the flag bits in the serial line discipline words, and
    are VERY unportable; they should be obsolete by now due to the
    creation of the "ms" and "ty" parameters, but unfortunately,
    they're not. :(

    I'm working on a kludge to get PLP to decode these flag bits in the
    same way as a BSD machine would, regardless of architecture, but in
    the meantime, you may find the "doc/fc,fs,xc,xs" file useful for
    some tips.

2. Older versions of PLP (pre-3.4)

    Users of the Annex or TCP/IP output device functionality:
    since PLP-3.4.6, this functionality has been moved into LP-pipe
    programs. LP-pipes are documented in the PLP Manual and the
    file doc/README.lp-pipes.


Using BSD Filters with PLP
--------------------------

1. lprps

    To use the lprps "psof" filter, you will need to enable the "fb"
    printcap parameter.

    Also, due to lprps' dependency on the BSD short-banner format, you
    will need to use lprps 2.6plp, which is available from the PLP
    ftp site, and also includes support for System V and a new banner
    page:
		ftp://ftp.iona.ie/pub/plp/contrib/lprps-2.6plp.tar.gz

