CUPS Dyesub Backends

This is my personal to-do list for printer-related tasks, encompassing both changes to Gutenprint ( and the CUPS backends (

IDTask TypeCategory  ascSummaryStatusLast Edited
479TODOCanon Selphy CP/ESVerify ES20, CP-220, CP530, CP600, CP810Requires testing2014-01-30 Task Description

All are supposedly supported, but nobody's reported test results.

580Bug ReportCanon Selphy CP/ESDetect when on battery power and handle it gracefullyNew2017-04-11 Task Description

User reported the CP800 failed to print when on battery power, turns out one of the status fields changed causing us to fail.  I believe that's resovled for the older SELPHY CP models, but the newer ones (including the CP790) and the ES series are likely to have a similar problem.

Not sure what can be done about this without getting the battery and experimenting...

 477 TODOCanon Selphy CP/ES Need USB ID for SELPHY CP520 Closed2014-05-18 Task Description

Unknown USB IDs.

 480 TODOCanon Selphy CP/ES Verify CP-220 Closed2014-01-30 Task Description

CP-220 is supported but untested.

 481 TODOCanon Selphy CP/ES Verify CP530 Closed2014-01-30 Task Description

CP530 is supported but untested.

 482 TODOCanon Selphy CP/ES Verify CP600 Closed2014-01-30 Task Description

CP600 is supported but untested

 483 TODOCanon Selphy CP/ES Verify CP810 Closed2014-01-30 Task Description

CP810 is supported but untested.

 484 Bug ReportCanon Selphy CP/ES CP-10 hangs after first print Closed2014-01-28 Task Description

Not sure why. Perhaps a USB sniff under Windows would be helpful.

 478 TODOCanon Selphy CP/ES Need USB ID for SELPHY CP790 Closed2014-01-27 Task Description

Without it, we can't add support.

 554 Feature RequestCanon Selphy CP/ES Get USB IDs for Canon SELPHY CP820 Closed2017-03-27 Task Description

They're needed by the 'canonselphyneo' backend, and I've been unsuccessful in scrounging them up. 

 518 Feature RequestCanon Selphy CP/ES Recover from Error conditions (ES models) Closed2014-03-12 Task Description

There's a special command the driver sends to clear the printer's error state.

We know this for the CP-series, but none of the ES-series.

The backend supports this just fine now, but we don't know how the ES models recover.

 526 Bug ReportCanon Selphy CP/ES CP900 not printing properly. Closed2014-10-30 Task Description

it prints the first page successfully, then keels over.

 552 Feature RequestCanon Selphy CP/ES Write network backend for CPnP printers Closed2019-01-30 Task Description

The 'selphy_go' code showed how to detect CPnP models and send JPGs over to be printed..

Using the CP900, I discovered how to send raw YMC data over CPnP.  This means we can write a native CPnP CUPS+Gutenprint backend for that model.

Unfortunately we won't know if the newer selphyneo models support non-jpeg CPnP printing -- The Windows driver uses WSA/WSD and Macs appear to use AirPrint.  The only way to find out is to write it first.

 499 Feature RequestCanon Selphy CP/ES Better error detection & handling Closed2014-01-30 Task Description

The remaining chunk of the patch set Ake Koomsin sent over considerably improves error detection, handling, and recovery from the CP-XXX handler. (The other models are TBD)

Wade through the patch set to make sure everything relevant is integrated.

(FWIW, this is a lot easier now that the backend is unified; it simplified the code quite a bit)

 545 Bug ReportCanon Selphy CP/ES Figure out how to make the CP820/CP910/CP1000/CP1200 ac ...Closed2017-04-21 Task Description

It would be *really* nice if we could figure out a way to ditch the component Y'CbCr output and use native YMC, but it's likely that only Canon ultimately knows if that's possible, and how.

 553 Bug ReportCanon Selphy CP/ES Back-to-back CP1200 prints hang the printer Closed2016-12-03 Task Description

User repors that back-to-back prints cause the printer to hang.  This is with the stock USB backend that relies on standard flow control.

Fixing this will first require printing stuff back-to-back under Windows and sniffing it to see if there's any flow control in use.  Bleh

 581 Feature RequestCanon Selphy CP/ES Add status query to Canon Selphy backends Closed2018-01-04 Task Description

Query printer status -- eg loaded paper type, error codes, and whatnot.

The raw data is already there, but it would require a different code path to parse things for human output.

602Feature RequestCommon CodeSupport combining print jobsAssigned2018-06-21 Task Description

As a way to prevent wasting media, when using 6x8" media, automagically combine consecutive 4x6" jobs to a single 8x6" print and submit that to the printer behind the scenes.

The D90 and Kodak 68xx do this automatically in the printer, and others (eg Mitsu D70 family) do this in the driver.

Extend the backend core to support this generically, and try to add specific support to printers/families that can use this feature.

561Feature RequestCommon CodeUse USB VID/PID instead of 'UNKNOWN' when we can't dete...New2017-03-12 Task Description

563TODOCommon CodeSupport more printer attributesNew2018-02-16 Task Description

...especially the printing started/finished stuff.


586TODOCommon CodeAdd JSON outputNew2017-11-24 Task Description

This might not be feasible in a general sense due to the need to interact with CUPS.  But it's worth investigating.

608TODOCommon CodeMake Gutenprint more cross-compile friendlyNew2019-01-17 Task Description

The problem is that, at compile time, we rely on some host-compiled stuff to generate data files and whatnot. We need to compile the same stuff for the target.

I wonder if it may be worth moving to a more unified Make environment..

 497 TODOCommon Code Unify all backends into one. Closed2013-07-19 Task Description

We'll call it 'gutenprint+usb' or something like that, and it will handle all printers.

This means we'll have two independent invocation methods; when called via CUPS, we'll have a URI and will consequently know the spool format to match.

When called directly, we'll need to specify the printer type somehow (symlink and $0 detection?) and use that as a filter for printer format.

This has to be carefully planned. Sigh.

 517 Feature RequestCommon Code Support multi-page print jobs Closed2014-01-20 Task Description

The backends should handle multi-page jobs by splitting it into individual prints. This is presumably handled by concatenating multiple spool files together...

The entire structure of the backends are designed around single-page operation.

Many of the backends are smart enough to tell when a page ends, but some aren't. Extend the backend core so that it can handle this when the backend supports it.

 523 Feature RequestCommon Code Proper media/ribbon status messages Closed2016-08-21 Task Description

CUPS has a standard reporting mechanism for attributes, including media/ribbon/etc levels. The general syntax is:

ATTR: foo=bar[,baz,etc]

There's also the notion of state that can be reported in a unified manner:

STATE: +media-empty [reasontext]
STATE: -media-empty


1) Altering backends to report media empty using this mechanism
2) Alter backends to report remaining media, if known, using this mechanism.

For further details:

 559 TODOCommon Code Pull copy generation out of backend Closed2017-11-09 Task Description

Gutenprint 5.2.12 now supports generating multiple copies.  The backend shouldn't do it internally (nor should it print hte PAGE output)

 * Printers that have a copy count in the job header -- use the printjob number if it's >= the cmdline copy one.

 * Otherwise, backend should loop and generate copies.

 * If *not* invoked from within CUPS, print the PAGE output.

 595 Feature RequestCommon Code When trying to enumerate printers, don't block for a lo ...Closed2019-01-17 Task Description

This is a particular problem when we have more than one model of the same printer family attached, and one or more of them are busy doing something -- but we can't query the serial number when the printer is claimed.

This may require a two pass approach -- first try to probe everything with minimal timeouts.  If we don't succeed in finding the one we want, re-try the probe with longer timeouts.  In both cases, we shouldn't report a failure until we finish walking the entire list.

 601 Feature RequestCommon Code Figure out a way to add a generic test harness for file ...Closed2018-05-13 Task Description

Right now there's no way to parse the input files without the printer being attached first.

Would require shimming libusb...

 604 Feature RequestCommon Code Use a simpler URI scheme Closed2018-09-18 Task Description

Currently the URI scheme is a little convoluted:


I'd like to move to something much simpler:


Now that the core code returns a unique, per-model string that can be used to look up the backend, this is a far simpler approach to take.  We'll have to support the old scheme indefinitely though.

 494 Feature RequestCommon Code Improve detection to include printer status Closed2014-02-18 Task Description

When you have more than one printer in the system, how about ignoring the ones that are busy when trying to service a print job?

For printers that support multiple media types, it would be handy to be able to return which media the printer has loaded, so we
can more intelligently route print jobs.

This is probably beyond the scope of a CUPS backend, but may be handy for standalone operation.

Just a WIBNI.

 536 TODOCommon Code Consolidate Shinko backend code Closed2016-01-14 Task Description

Shinko S1245 and Kodak 68x0 (very closely related)

Shinko S2145
Shinko S6245
Shinko S6145 (sort of a special case due to the image library)

Kodak 605 (AKA Shinko S1545) (similar to S2145?)

And for those not yet written:

Brava 21 (AKA Shinko S6145!)
Kodak 8810 (AKA Shinko S1845) (similar to S6245?)
Kodak 70xx (AKA Shinko S1645)
Kodak D4000 (Aka Shinko DP-1045)

 546 Feature RequestCommon Code Extend Gutenprint's option infrastructure to allow for  ...Closed2016-09-09 Task Description

The work's done, but it's not merged yet.

 547 Feature RequestCommon Code Add printer icons to Gutenprint Closed2016-10-13 Task Description

*OPIcon Manufacturer: "...."

*OPIcon ModelName: "...."

The data is UUEncoded/Base64 64x64 PNG or an SVG image.


I see printers.xml gaining a reference to the image files, and the PPD generation code reading the image, encoding it, and shoving it into the PPD.  It's a minor thing, but nice to have.


 570 TODOCommon Code Iterate through all printer interfaces and altsettings  ...Closed2017-11-08 Task Description

We assume that the first interface/altsetting is what we need.  And, for that matter, that the first set of endpoints is what we want.

 597 Feature RequestCommon Code Allow for aliases in backend names? Closed2018-03-16 Task Description

That would allow us to present a 'modern' name for the backend but still provide backwards compatibility.

eg: dnpds40 -> dnp_citizen or mitsu9550 -> mitsu9xxx or mitsup95d->mitsu_p9x

Another approach would be to make things more fine-grained.


 600 Feature RequestCommon Code Add support for CUPS Command files Closed2018-04-28 Task Description

CUPS defines a "command filter" that gives the ability to perform some actions and queries.

  • ReportLevels -- marker-levels and whatnot.  Highly useful.
  • ReportStatus -- Once we get unified reporting in place, will be handy.
  • AutoConfigure -- Allows the PPD defaults to be updated based on printer configuration.  (!!)
  • PrintSelfTestPage -- For printers that support it
  • [and others that don't matter]

There appears to be no way to distinguish betwen a command filter vs print filter via the cmdline or environment.  traditionally these are seperate executables that expect different input data.  I'd like to figure out a way to make the backends detect the command stream vs the normal backend data, and do it all in one executable.

538Feature RequestDNP/CitizenAdd support for DS80DXRequires testing2018-10-02 Task Description

It has all the joy of the DS80, but also supports sheet-fed simplex and duplex operation. It's a veritable mess to support cleanly.

 507 TODODNP/Citizen Get USB IDs for Citizen OP900/OP900II Closed2016-07-17 Task Description

DNP DS80 and Mitsu 3800 are rebadged Citizen CX-W models. (8" wide media)

The others use 6" wide media:

DNP DS40 is a rebadged Citizen CX.
DNP DS-RX1 is a rebadged Citizen CY.
The Citizen CW-02/OP900II are updated CW-01/OP900.

The CY and its derivatives don't support 6x9 prints, but otherwise all of these printers are identical from a software perspective.

With the additions of their USB IDs to the backend, they are expected to JustWork!

We have:
DNP DS40 / Citizen CX
DNP DS80 / Citizen CX-W / Mitsubishi CP-3800DW
DNP DSRX1 / Citizen CY

Citizen CW-01 and Citizen CW-02

We need:
Citizen OP900/OP900II

 512 Feature RequestDNP/Citizen Enhance DS40/DS80 backend Closed2013-12-17 Task Description

There's now a backend for the DS40/DS80 that will handle things like multiple copies and whatnot.

Verify it works with both a DS40 and an DS80.

Enhance it so it properly reads the printer status, buffer state, and whatnot to ensure we're good to submit a new print job.

 539 TODODNP/Citizen Consolidate CW-01 and DNP backends Closed2018-09-18 Task Description

There's a great deal of overlap; the main difference is the format of the print job. It may make sense to fold the CW-01 stuff into the DNP backend (including the spool format), but alternatively perhaps just a shared library?

 544 Feature RequestDNP/Citizen Investigate and support new RX1HS Closed2016-10-07 Task Description

DNP's introduced the RX1HS to replace the RX1.  I'm told it's the same hardware, but requires different media.

Initial investigation shows it's added some features that were first introduced in the DS620.  (iSerial support, maybe more).  Backend changes will likely be minimal, but Gutenprint may require a tweak to expose any new features.

Further work will have to work until I get documentation or access to a printer.

 596 TODODNP/Citizen Figure out if Citizen CW-02/OP900II are closer to CX or ...Closed2018-03-27 Task Description

...or if they need their own designation in Gutenprint and selphy_print.

It looks like they don't map entirely cleanly to either for avialable print options, but the real question is the firmware version tests for features.

 488 Feature RequestKodak 1400/805 Add support for setting tone curves Closed2013-10-18 Task Description

The raw format and command structure are already known. Add backend support for setting tone curves, not unlike what s2145 backend provides.

 485 Feature RequestKodak 1400/805 Add support for the Kodak 805 Closed2013-07-18 Task Description

The 805 uses an identical spool format as the 1400, and is phyiscally an updated model.

Obtain a sniff of a print under Windows, and update the backend to work as appropriate, or write a new spooler if the format is radically different.

 487 TODOKodak 605 Verify support for Kodak 605 Closed2013-11-23 Task Description

The Kodak 605 is the successor of the 68x0 series. It uses a slightly different spool format.

If access to a '605 can be obtained, obtain a sniff and see about adding a backend.

 571 Feature RequestKodak 605 Check for error statuses in the Kodak 605 processing lo ...Closed2019-01-30 Task Description

We don't check any error codes at all.  In part because I don't know what's an error and what isn't.  With access to a printer this would be a lot easier..

 486 Feature RequestKodak 6800/6850 Add support for Kodak 6850 Closed2013-07-27 Task Description

The Kodak 6850 uses an identical spool format. Somehow obtain sniffs of the printing sequence and update the spooler as necessary.

 492 Feature RequestKodak 6800/6850 Add support for setting tone curves Closed2013-10-18 Task Description

The Kodak 6800 is supported by Kodak's "visual profiler" tool; get a USB sniff of what it does and use that to add support to the backend.

 522 Feature RequestKodak 6800/6850 Better status reporting Closed2014-06-04 Task Description

Need to detect media type, number of remaining prints, error conditions, and whatever else is possible given our lack of documentation of the printer internals.

(Maybe decompiling the driver would help?)

588Bug ReportMagicard familyRegistration/Alignment issue with Black planeNew2018-01-04 Task Description

K extraction appears to work well, but when printing there's a registration problem.  The black layer appears to print several pixels higher than the color layers.

I'm not sure if this is something that needs a fixed offset applied, or is something that can vary printer-printer.

Showing tasks 1 - 50 of 113 Page 1 of 31 - 2 - 3 -

Available keyboard shortcuts


Task Details

Task Editing