# Printing with lpr(1)/lpd(8) and a PPD



## jrm@ (Aug 18, 2016)

Hello,

I'm attempting to print to a Konica Minolta bizhub 454e.  According to the spec sheet it supports postscript.  Our department administrator supplied us with a modified PPD file where we have to enter our login credentials.  I believe my login credentials are correct, because I can log in to the printer's web interface.

After reading the Handbook section on printing and reading through old threads, I've come up with this entry in /etc/printcap.


```
chase-211a:\
                           :af=/etc/ppd/KO554eUX.ppd:\
                           :lf=/var/log/lpd-errs:\
                           :lp=:\
			   :mx#0:\
                           :rm=working-hostname-here:\
                           :rp=raw:\
			   :sd=/var/spool/lpd/chase-211a:\
			   :sh:
```

Through the printer's web interface, I can see the jobs make it to the printer, but they don't print.  The vague error message is Deleted Due To Error.

Am I specifying the PPD file correctly in /etc/printcap?  Can lpr(1)/lpd(8) even be used with the PPD, or am I going to have bite the bullet and try CUPS?


----------



## shepper (Aug 19, 2016)

Using a ppd gives you the flexibility of easily passing options to the print job.  A ppd is not absolutely necessary and can be added later once you are sure of the printers network address.

I am using lpr with a brother supplied ppd via foomatic-rip in OpenBSD and have used the same setup in FreeBSD.  The instructions for OpenBSD are here

The  spool directories have different names in OpenBSD and FreeBSD prefers using a hostname rather than a numeric I.P. address.

It also sounds like the Konica is a network printer.  For me, using port 9100 (jetdirect) has been reliable.

/etc/printcap

```
# $OpenBSD: printcap,v 1.1 2014/07/12 03:52:39 deraadt Exp $

# Default Network printer US letter
lp:\
    :lp=9100@192.168.1.2:\
    :if=/usr/local/libexec/br_script:\
    :sd=/var/spool/output:\
    :lf=/var/log/lpd-errs:\
    :mx#0:\
    :sh:
# Same Network printer Duplex
duplex:\
    :lp=9100@192.168.1.2:\
    :if=/usr/local/libexec/br_script_duplex:\
    :sd=/var/spool/output-duplex:\
    :lf=/var/log/lpd-errs:\
    :mx#0:\
    :sh:
#
```
/usr/local/libexec/br_script

```
#!/bin/sh

/usr/local/bin/a2ps -BRq --columns=1 -o - | \
/usr/local/bin/foomatic-rip -P brother-hl5450DN \
-o PageSize=Letter
```


----------



## wblock@ (Aug 19, 2016)

jrm said:


> Can lpr(1)/lpd(8) even be used with the PPD


No, that is a CUPS thing.  But shepper is using a PPD with an external input filter.

Some printers might want job control statements before print jobs.  HP uses PJL, others might have invented their own.  The PPD ought to handle that, though.


----------



## jrm@ (Aug 19, 2016)

I installed print/foomatic-filters [1], and set up a similar filter that called foomatic-rip with the PPD.  Jobs made it to the printer (as before), but they still didn't print.  The more detailed logging at the printer console said something about being unable to authenticate my account.  Maybe foomatic-rip and the PPD don't get along or the PPD in some other way wasn't being applied properly.  I ended up installing print/cups and everything just works™.  It's improved in the years since I last tried it.

[1] I noticed print/foomatic-filters depends on devel/dbus.  There is an upstream option to turn this off, so I submitted a port option to turn it off.


----------

