CUPS Dyesub Backends

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

IDTask TypeCategorySummaryStatus  ascLast Edited
 566 TODOMitsubishi CP-Dxx family Dig up firmware update package for CP-K60DW-S 1.04 Closed2017-07-19 Task Description

Then add the checksum to the backend so we can complain if the firmware is out of date.

 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.

 574 TODOOther printers S6145 -- don't generate an OC layer if not needed Closed2017-03-30 Task Description

And don't bother sending it over unless it's a matte print.


Actually I think the library already handles this okay, but we still have to allocate the space and generate things regardless.  A waste of CPU cycles, but otherwise harmless.  Probably not worth doing without direct access.

 575 TODOOther printers Investigate Sony B&W Thermal MedSci models  Closed2019-03-26 Task Description

UPD-897MD, UP-X898MD, and so forth

the UP-D898MD appears to be superficially similar to the Mitsubishi models, complete with the 1280 pixel print head (maxing out at 1280x4000ish) and similar adjustment knobs. They may have the same engine under the hood, but they're not likely to be semi-compatible with the Mitsubishi models.

 577 Feature RequestMitsubishi MedSci Add ability to query status from cmdline Closed2018-01-08 Task Description

We don't get much info, but we can at least find out if any errors are pending, and if the printer is busy..

 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.

 584 Feature RequestOther printers Support Magicard Card printers Closed2017-11-24 Task Description

A backend's in place that can read the printer status but it doesn't parse/send over jobs yet.  Still haven't figured out the image dara format.

 589 Bug ReportMagicard family Fix 8bpp->6bpp color scaling Closed2018-01-04 Task Description

Right now we just shift the color data over by 2bits.  It looks like that's naive; it looks like we need some sort of gamma-aware 8->6 mapping on a per-channel basis.  This may require Gutenprint to spit out RGB data, and we perform the YMC conversion at the same time we apply gamma?  (not unlike the Mitsu D70 family..)

The printer's "gamma curve" settings don't seem to have any major effect.

It's also possible that my printer's head is just plain shot (there's already a bad row of pixels..), and that everything is actually fine.

 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.

 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.


 599 Feature RequestMagicard family Enhance Magicard driver to allow for different options  ...Closed2018-03-18 Task Description

At minimum, the overcoat hole is different on front vs back (eg smartcard vs magstripe).

Magstripe probably only belongs on the back, smartcard on the front.

Holokote and holopatch likely need to be different too.

 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.

 603 Feature RequestMitsubishi MedSci Support using external LUT Closed2018-12-16 Task Description

The official drivers come with a file called 'P95D.lut' that consists of a 16-byte header followed by 34 bytes of LUT that neatly fit into the "gamma" header.  I see two approaches:

  1. Add another gamma enumeration, for "external LUT"
    • Have the backend read the file and fil the job at runtime
    • Permanently store the file in the backend, fill job at runtime
  2. Have Gutenprint fill in the gamma table from hardcoded value
  3. Allow gutenprint's gamma table to be overridden.

I'm thinking that pushing this into Gutenprint (hardcoded, but overridable via an option) is the right way to do this.

 611 Feature RequestOther printers Support Kodak 6900 (aka HiTi M610 / X610) Closed2019-05-13 Task Description

The Kodak 6900 looks to be a rebadged HiTi M610, which itself is closely related to the X610.

Figure out the spool format to get preliminary support!

 476 Bug ReportShinko CHC-S2145 s2145 hangs on subsequent requests Closed2013-07-16 Task Description

The first request succeeds, but subsequent requests hang when trying to talk to the printer.

I suspect what's going on here is that the response buffers we're posting are simply too small and the printer loses its mind.

 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.

 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.

 489 Feature RequestShinko CHC-S2145 Update s2145 'read tone' command to return binary blob Closed2013-07-09 Task Description

The 'read tone' command returns formatted, human-readable output. Fix this to use a similar binary blob as the 'write tone' command expects.

 493 Feature RequestShinko CHC-S2145 Use 'unique string' in lieu of serial number Closed2013-07-25 Task Description

The Shinko S2145 doesn't return a serial number in its USB descriptor. Unfortunately this means there is no way to distinguish between multiple printers on a single system.

The printer does have a user-configurable string; the backend allows for this to be queried and set. Perhaps we could add the ability to use this string in lieu of the serial number?

 495 TODOOther printers Investigate Sony UP-DR150 Closed2013-07-14 Task Description

We have a report of the UP-DR150 not working.

I'm working on obtaining sniffs so we can actually see what's going on. Maybe it'll need a backend too.

 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.

 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.

 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?)

 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:

 525 Bug ReportMitsubishi CP-Dxx family Output on CP-D70 is way too dark Closed2015-07-23 Task Description

This suggests we need to apply a correction curve to the raw 16-bit data sent to the printer.

Uncertain if user was using the ICC profile.

Unfortunately it'll probably take some careful analysis of printing calibration targets to come up with an appropriate correction factor.

 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.

 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.

 560 Bug ReportMitsubishi MedSci P95: Failure to parse printjob when 'clear memory' is e ...Closed2017-02-12 Task Description

The problem is that two commands of different length use the same 2-byte prefix.  To distinguish between them we'll need to read the third byte, but only in that case as there are some commands that are only 2 bytes.


Or re-architect the command parser to handle this without extra hacks.

 587 Feature RequestMagicard family Figure out Magicard Duplex and Mag-stripe encoding. Closed2017-12-16 Task Description

Support is in for basic stuff, but it's not clear how to proceed with Duplex and Mag-stripe stuffs.

 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.

 530 Feature RequestMitsubishi CP-Dxx family Reverse-engineer color scaling/dithering algorithm Closed2016-10-07 Task Description

Mitsubishi CP-D70, D707, K60, D80, and their siblings (Kodak 305, Fuji ASK300) all rely on the driver to dither/scale their output data based on an unknown algorithm.

Figure out what this is, so that these printers can be properly supported.

 534 Feature RequestOther printers Write backend for S6145 Closed2015-12-06 Task Description

This is a sibling of the Mitsu D70 family, but differing in that it uses Shinko's own protocol that's similar to the other Shinko models.

It will need its own backend; however the backend needs to deal with color scaling/dithering. I have binary x86/x86_64 libraries that implement this algorithm, but that is not acceptible for use with GPL code.

 562 Bug ReportMitsubishi CP-Dxx family Quality problem with the D70 family image processing li ...Closed2017-03-19 Task Description

It's most obvious when printing something with a deep black; you'll see it bleed past a bit.

It's worse in Fine, better in SuperFine/UltraFine.


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

Without it, we can't add support.

 491 TODOSony UP-D printers Investigate Sony UP-DR200 Closed2014-02-03 Task Description

On the gutenprint mailing list, a user reported partial success using the UP-DP10 driver. They claimed it worked, except for the presence of margins.

No feedback yet if they had borderless turned on.

Investigate the windows spooler on this printer to see if the format is similar, and if so, just add an entry to gutenprint so we formally support this printer.

 498 TODOOther printers Add support for Kodak 605 Closed2013-07-20 Task Description

It's the replacement for the 68x0 family. Uses a slightly different spool format, so probably isn't directly compatible.

 501 TODOOther printers Add support for various Mitsubishi printers Closed2013-10-18 Task Description

Specifically, the CP9810, CP70, CP707, CP9550 and CP3020-series.

Update: The CP9810 has a positive report, though the lamination and color curves are different than windows (as expected)

 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. 

 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.

 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.

 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.

 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.

Showing tasks 51 - 100 of 116 Page 2 of 3 - 1 - 2 - 3 -

Available keyboard shortcuts


Task Details

Task Editing