[cups] ippeveprinter - how to set up with real printer?
Till Kamppeter
till.kamppeter at gmail.com
Tue Oct 8 14:09:11 PDT 2019
On 08/10/2019 22:41, Kurt Pfeifle wrote:
> Am Di., 8. Okt. 2019 um 16:18 Uhr schrieb Zdenek Dohnal zdohnal at redhat.com
> <http://mailto:zdohnal@redhat.com>:
>
>
>> I'm trying to test ippeveprinter printer application which comes with
>> CUPS-2.3.0:
>>
>> # ippeveprinter -D socket://<printer-ipv4-addr>:9100 -c
>> /usr/lib/cups/command/ippeveps -P /etc/cups/ppd/BRQ-TPBC-1D124-North.ppd
>> -d /var/spool/cups brno4-tpbc-1st-north -v
>>
> Why do you connect an *IPP Everywhere* printer to a *socket://* backend?
> Any reason which I’m not aware of?
Kurt, Zdenek does not want to speak IPP through an AppSocket connection
here.
ippeveprinter is a so-called Printer Application, a daemon which
emulates an IPP printer on localhost. The print jobs it takes it passes
on to a physical printer and this physical printer does not necessarily
need to be an IPP printer. The -D option tells how to communicate with
the printer via a CUPS URI which determines the CUPS backend and its
arguments, -C defines a command to be called to convert the input into
the printer's native language, -P is a PPD file describing the printer
(the content will be converted to the answer to a get-printer-attributes
IPP request from the client).
The printer in this example is a PostScript printer. The PPD comes from
the printer manufacturer. the ippeveps command turns incoming PDF into
PostScript. To get the output onto the printer the "socket" backend of
CUPS is called.
IPP is only spoken by clients to communicate with the IPP printer
emulated by ippeveprinter. Once ippeveprinter is running you find the
URI of the emulated printer with the ippfind command, something like
ipp://localhost:PORT/ipp/print
PORT is some port which is not 631 (as 631 is occupied by CUPS), see
documentation of ippeveprinter what gets auto-selected here. Note that
this URI is generated automatically by ippeveprinter and does not need
to be specified on its command line.
A client (print dialog, cups-browsed, or CUPS) starts to send a
get-printer-attributes IPP request to know about the printer's
capabilities. ippeveprinter will then read the PPD file supplied to it
via -P to generate the answer. The client, in case of a print dialog
will then diaplay appropriate options, in case of cups-browsed or CUPS,
generate a PPD file and create a temporary CUPS queue. If the client
sends a job ippeveprinter receives it, converts it with the utility
specified by -C and the calls the backend specified by -D to send it off
to the printers.
The problem here is most probably that ippeveprinter has a bug and
therefore does not answer the get-printer-attributes IPP requests from
the clients correctly.
Till
More information about the cups
mailing list