[cups-devel] cupsEnumDests(): Does it distinguish between IPP printers which are driverless-capable and which are not, and how?

Michael Sweet msweet at apple.com
Tue May 16 11:04:55 PDT 2017


Till,

> On May 16, 2017, at 1:20 PM, Till Kamppeter <till.kamppeter at gmail.com> wrote:
> 
> Hi,
> 
> mentoring GSoC students on new interfaces between printers and print dialogs I have done some testing with the cupsEnumDests() function and found out that it also lists IPP printers in the network, discovered via DNS-SD, for which there is no CUPS queue set up.
> 
> I have also found out that only the printers which support driverless printing are listed. So my HP DeskJet Ink Advantage 2540 is listed, also my HP Officejet Pro 8500 A910, both supporting Apple AirPrint (IPP 2.x + Apple Raster), but my HP Color LaserJet CM3530 MFP is not listed. It is AFAIK only IPP 1.x and it does not advertise any of the driverless printing PDLs PWG Raster, Apple Raster, or PDF in its DNS-SD record.
> 
> Now I want to know about this mechanism. Which printers does cupsEnumDests() exactly list and how does it find out whether to list or not to list a given printer?

cupsEnumDests lists printers that can be printed to.  Officially this means other CUPS shared printers as well as IPP Everywhere printers.  Unofficially (and purely for testing purposes) you should also be able to print to AirPrint, Wi-Fi Direct, and other IPP/2.0 or better printers that support one of the standard print file formats.  Any printer that does not support a standard print file format will be excluded from the list of destinations returned because such a printer would require a print driver and some amount of manual setup/configuration.

> Does it also mean that I can print to any printer which cupsEnumDests() lists and CUPS will for sure create a temporary print queue for driverless printing?

Yes, that is explicitly the intent.

> I have also already seen a problem:
> 
> I run cupsEnumDests(), get a list, select a DNS-SD discovered IPP printer, print on it, then run cupsEnumDests() again, and now I get two entries for this printer, one for the discovered printer and another for the auto-generated, temporary CUPS queue. Is there a way to suppress this, as it would irritate the user. Or should I file a bug on this?

This is already fixed in Github master for CUPS 2.2.4, which I plan on releasing in the near future.

(The latest code also provides a number of performance enhancements when using Avahi...)

_________________________________________________________
Michael Sweet, Senior Printing System Engineer



More information about the cups-devel mailing list