Mitsubishi CP-M1 and other developments

Since my last update, a lot has landed in the wonderful world of dye sublimation printing, but I have this annoying habit of preferring to write more code than talk about it as I go along. C'est la vie...

New models added, and confirmed working:

  • Citizen CX-02W
  • Mitsubishi CP-M1
  • Sony UP-DR80MD
  • Stryker SDP1000

Models that have seen notable enhancements:

  • HiTi P520L / P525L
  • Mitsubishi CP-D70/D80/K60 family
  • Mitsubishi CP-D90DW
  • Mitsubishi CP-D9800DW / CP-D9810DW
  • DNP DS820

Other noteworthy bug fixes or enhancements:

  • More robust error handling
  • Use larger of CUPS or job-specified number of copies
  • Ability to restrict printer enumeration to a specific model
  • Build system improvements
  • Print combining (see below)
  • Standardized status query, in text or JSON format (see below)
  • Preliminary support for running backend under Windows

Further notes:

  • The Mitsubishi CP-M1 family, like most other recent Mitsubishi models, requires lib70x and data tables bundled with selphy_print. It is feature complete but detailed quality tests have not been performed, and sharpening has not been tested at all.
  • The Mitsubishi CP9800 family should now be usable, with all features implemented except for image sharpening, but remains completely untested. It also requires lib70x and its data tables.

Print combining:

When a printer is loaded with a larger media size (eg 6x8") but the user wants to print a smaller size (eg 4x6"), traditionally this has resulted in the unused portion of the dye ribbon being wasted. Some models are able to rewind the media so that the unused portion can be reused. Other models can automatically combine two prints into a larger panel, print them as one, then cut the panel in half at the end. The rest can do neither.

For models that allow sufficient control over their cutter, the backend can now automatically combine multiple prints to speed up printing and reduce ribbon waste. Here is the list of models that can utilize this backend feature, at least for some print size/media combinations:

  • All DNP models
  • Shinko/Sinfonia CS2/S6145 and Ciaat Brava 21
  • Mitsubishi D70/D707/D80, Kodak 305, and Fujifilm ASK300

This feature is enabled for multi-page and/or multi-copy print jobs, but due to limitations with the CUPS print job model, it cannot combine prints between print jobs.

Status queries

Most models supported by the backend support some sort of media and status reporting. When available, this information is reported to CUPS via its standard marker attribute messages, but that is only updated when prints are made, and is also very limited in what information that can be returned.

While each backend family driver has already supported dumping pretty much everything a given printer reports, I had never defined a standard subset of information or a model-independent way to extract it. That has now finally changed. Here's an example of the output:

$ BACKEND=dnp-ds820 BACKEND_STATS_ONLY=2 ./dyesub_backend
        "backend": "DNP DS-series / Citizen C-series",
        "version": "0.105 / 0.132",
        "timestamp": "2020-03-17 21:19:58",
        "manufacturer": "Dai Nippon Printing",
        "model": "DS820A",
        "serial": "12345678",
        "firmware": "DS820A 01.05",
        "decks": {
                "Roll": {
                        "status": "Idle",
                        "mediatype": "8x10 SD",
                        "medialevel": "OK",
                        "medialevelnow": 95,
                        "medialevelmax": 110,
                        "counters": {
                                "lifetime": 162

At this point, more models than not support this generic query method:

  • All DNP / Citizen models
  • All HiTi models
  • Kodak 605 and 7000 series
  • Kodak 6800 series
  • Mitsubishi CP-D70/D707/D80/K60, Kodak 305, and Fujifilm ASK-300
  • All Shinko/Sinfonia models
  • Mitsubishi CP-D90 and CP-M1 family (partial)

Anyway. I'll try to be more diligent in posting new developments.

Comments, feedback, and material support welcome!