1215 lines
39 KiB
Plaintext
1215 lines
39 KiB
Plaintext
***************************************************************************
|
|
|
|
Unified Gutenprint/CUPS backend for various Dye-Sublimation photo printers
|
|
|
|
Copyright (c) 2007-2020 Solomon Peachy <pizza@shaftnet.org>
|
|
|
|
This free software comes with ABSOLUTELY NO WARRANTY and is licensed under
|
|
the GNU GPL (v3 or later); see the 'COPYING' file for more details.
|
|
|
|
SPDX-License-Identifier: GPL-3.0+
|
|
|
|
The latest version can be found at
|
|
|
|
http://git.shaftnet.org/cgit/selphy_print.git
|
|
|
|
For a list of known bugs and development plans, see:
|
|
|
|
http://bugs.shaftnet.org/index.php?project=4
|
|
|
|
***************************************************************************
|
|
|
|
If you do not have one of the printers listed below, this backend is
|
|
not relevant for you and you can just ignore all of this.
|
|
|
|
Supported Printers:
|
|
|
|
Canon SELPHY ES series
|
|
Canon SELPHY CP series
|
|
Ciaat Brava 21
|
|
Citizen CW-01
|
|
Citizen CW-02 / OP900II
|
|
DNP DS40 / Citizen CX
|
|
DNP DS80 / Citizen CX-W
|
|
DNP DS80DX
|
|
DNP DS-RX1 / DS-RX1HS / Citizen CY / CY-02
|
|
DNP DS620 / DS620A / Citizen CX-02
|
|
DNP DS820 / DS820A / Citizen CX-02W
|
|
Fujifilm ASK-300
|
|
HiTi P520L
|
|
Kodak Professional 1400
|
|
Kodak 305 Photo Printer
|
|
Kodak 605 Photo Printer
|
|
Kodak 805 Photo Printer
|
|
Kodak 6800 Photo Printer
|
|
Kodak 6850 Photo Printer
|
|
Kodak 7000 Photo Printer
|
|
Kodak 8810 Photo Printer
|
|
Magicard Tango 2E
|
|
Mitsubishi CP-3800DW
|
|
Mitsubishi CP-9550D/DW/DW-S/DZ/DZ-S
|
|
Mitsubishi CP-9600D/DW
|
|
Mitsubishi CP-D70DW and CP-D707DW
|
|
Mitsubishi CP-D80DW
|
|
Mitsubishi CP-K60DW-S
|
|
Mitsubishi CP-D90DW
|
|
Mitsubishi P95DW
|
|
Mitsubishi P93DW
|
|
Shinko CHC-S1245 (aka Sinfonia E1)
|
|
Shinko CHC-S2145 (aka Sinfonia S2)
|
|
Shinko CHC-S6145 (aka Sinfonia CS2)
|
|
Sony UP-CR10L (aka DNP DS-SL10)
|
|
Sony UP-DR80MD
|
|
Sony UP-DR150
|
|
Sony UP-DR200
|
|
Sony UP-D895
|
|
Sony UP-D897
|
|
|
|
Work-in-progress Printers:
|
|
|
|
HiTi M610 (not X610!)
|
|
HiTi P525L
|
|
HiTi P720L
|
|
HiTi P750L
|
|
HiTi P910L
|
|
HiTi CS-200e
|
|
HiTi CS-220e
|
|
ICI Imagedata OP900
|
|
Kodak 6900
|
|
Kodak 7010 / 7015
|
|
Magicard Rio 2E (and other Magicard models)
|
|
Mitsubishi CP-3020D/DE and CP-3020DA/DAE
|
|
Mitsubishi CP-9000DW, CP-9500DW, and CP-9600DW-S
|
|
Mitsubishi CP-9800DW, CP-9800DW-S, CP-9810DW, and CP-9820DW-S
|
|
Mitsubishi CP-M1A / CP-M1E
|
|
Olmec OP900
|
|
Shinko CHC-S2245 (aka Sinfonia S3)
|
|
Shinko CHC-S6145-5A (aka Sinfonia CS2-c)
|
|
Shinko CHC-S6245 (aka Sinfonia CE1)
|
|
Sony UP-CR20L (aka DNP DS-SL20)
|
|
Sony UP-D898 series
|
|
Sony UP-DR80
|
|
|
|
***************************************************************************
|
|
|
|
This intelligent backend is needed to utilize many common dye-sublimation
|
|
photo printers under Linux, OSX, and other UNIX-like operating systems.
|
|
|
|
Although these printers advertise themselves as standard USB Printer Class
|
|
devices, they do not actually obey those specifications and require
|
|
special two-way handshaking in order to successfully print.
|
|
|
|
This backend can only be used in conjunction with Gutenprint 5.2.10 or
|
|
newer. Please see the Gutenprint README file (section II D) for more
|
|
information on use of this backend and integration into CUPS.
|
|
|
|
While this repository is considered the canonical upstream source for
|
|
this code, code snapshots are bundled with each Gutenprint release.
|
|
Generally speaking, the code in this repository will require the current
|
|
Gutenprint release (or pre-release) to generate the actual print jobs.
|
|
|
|
As such, when compared to any given Gutenprint release, the code found
|
|
here is usually newer, with additional features, device support, and
|
|
bugfixes. At the same time, it may have half-developed features that
|
|
don't quite work, with giant bugs that come out at midnight to eat
|
|
your cat.
|
|
|
|
With few exceptions, all printer support in selphy_print (and Gutenprint)
|
|
was developed without any assistance from the printer manufactuers,
|
|
relying on reverse-engineering and a great deal of experimentation.
|
|
|
|
On that note, please keep in mind that this software distributed
|
|
in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER.
|
|
|
|
***************************************************************************
|
|
|
|
This backend also supports a "standalone" mode that performs various
|
|
utility functions for most models, such as querying status and
|
|
configuring parameters. The exact commands supported for each
|
|
printer are documented below.
|
|
|
|
***************************************************************************
|
|
Compilation:
|
|
|
|
This tool requires libusb 1.0 to build. We highly recommend
|
|
v1.0.16 or newer due to general stability improvements. Versions
|
|
older than 1.0.10 will require -DLIBUSB_PRE_1_0_10 to be defined
|
|
(see the Makefile).
|
|
|
|
To further complicate things, libusb-1.0 had a temporary fork called
|
|
libusbx, but that was merged back into libusb as of v1.0.18.
|
|
Consequently, your distribution package for libusb-1.0 may be
|
|
called libusbx instead.
|
|
|
|
Additionally, you will need the CUPS development packages installed,
|
|
so we can figure out how the local CUPS instance is configured.
|
|
|
|
Lastly, in order to integrate the backend into an existing Gutenprint
|
|
installation you will need to install the Gutenprint development
|
|
headers.
|
|
|
|
Fedora/RedHat:
|
|
yum install libusbx-devel libusb1-devel cups-devel gutenprint-devel
|
|
Debian/Ubuntu
|
|
apt-get install libusbx-dev libusb-1.0-0-dev libcups2-dev gutenprint-dev
|
|
|
|
All you need to do after that is type 'make'
|
|
|
|
Compilation for Windows:
|
|
|
|
This is highly experimental.
|
|
|
|
Currently only MinGW is supported. You will need the 'libltdl' and
|
|
'libusbx' MinGW packages.
|
|
|
|
Once the necessary packages are installed, run 'mingw64-make' and
|
|
everything should compile cleanly.
|
|
|
|
***************************************************************************
|
|
CUPS backend usage:
|
|
|
|
DEVICE_URI=someuri \
|
|
gutenprint52+usb job-id user title num-copies options [ filename ]
|
|
|
|
The backend generates output for CUPS to parse, including logging
|
|
print counts, reporting loaded media types, and remaining media counts.
|
|
|
|
Please note that this backend merely handles the low-level
|
|
communication with the printer! Actually generating print jobs requires
|
|
use of Gutenprint compiled with support for CUPS.
|
|
|
|
DEVICE_URI=someuri FINAL_CONTENT_TYPE=application/vnd.cups-command \
|
|
gutenprint52+usb job-id user title num-copies options [ filename ]
|
|
|
|
This parses a CUPS command file and performs actions listed in the file.
|
|
|
|
Implemented commands:
|
|
|
|
ReportLevels Report the marker (ie media) type and levels.
|
|
|
|
Other commands may be implemented in the future. Individual printer
|
|
models may not implement these commands.
|
|
|
|
Other Notes:
|
|
|
|
'someuri' is the URI returned by the backend when it probes for supported
|
|
devices. is invoked by calling the backend with no arguments.
|
|
|
|
The backend supports multiple URI schemes. First, the "modern" one:
|
|
|
|
gutenprint53+usb://backendname/serialnum
|
|
|
|
And the old/legacy/classic one:
|
|
|
|
gutenprint52+usb://manufacturer/model/?backend=backendname&serial=serialnum
|
|
|
|
The URI scheme generated at device probing depends on the version of
|
|
gutenprint installed. By default, the modern scheme is used when compiled
|
|
against Gutenprint 5.3 or newer, and the legacy scheme is used with
|
|
Gutenprint 5.2.
|
|
|
|
Regardless of the scheme generated at probe time, the backend will continue
|
|
to detect and parse both schemes indefinitely as to not break backwards
|
|
compatibility with existing deployments. To manually switch the URI
|
|
scheme type generated at runtime, set the OLD_URI_SCHEME environment
|
|
variable to either 0 or 1, as appropriate.
|
|
|
|
***************************************************************************
|
|
Standalone usage:
|
|
|
|
This backend is set up as a multi-call executable; that is to say
|
|
behaivor changes based on the name used to invoke the executable.
|
|
When compiled, a set of symlinks are created, corresponding to the generic
|
|
name of each of the internal backends. Alternatively you may set
|
|
the BACKEND environment variable to force a specific backend to be used.
|
|
These commands are equivalent:
|
|
|
|
BACKEND=backend ./gutenprint52+usb [ arguments ]
|
|
./backend [ arguments ]
|
|
|
|
The 'backend' name is any one of the names listed when invoking the
|
|
executable with no arguments. For example:
|
|
|
|
./dnpds40
|
|
DEBUG: Multi-Call Dye-sublimation CUPS Backend version 0.88
|
|
[ ... ]
|
|
DEBUG: Standalone DNP DS-series / Citizen C-series backend version 0.106
|
|
DEBUG: supporting: dnp_citizen dnpds40 dnpds80 dnpds80dx dnpds620 dnpds820 dnprx1 citizencw01 citizencw02 citizencx02
|
|
[ ... ]
|
|
|
|
The first entry after 'supporting' is the generic backend name, while
|
|
the others correspond to specific models the backend supports. Any one
|
|
can be used as the 'backend' name.
|
|
|
|
All backends support the following invocations:
|
|
|
|
backend [ arguments ]
|
|
backend [ arguments ] filename
|
|
backend [ arguments ] - < filename
|
|
somecommand | backend [ arguments ] -
|
|
|
|
The 'filename' here refers to the raw spool data generated by
|
|
Gutenprint (eg via its gimp plugin) or the Windows print-to-file
|
|
output.
|
|
|
|
All global arguments:
|
|
|
|
-D Increment debug level [1]
|
|
-G Display GPL text
|
|
-f Enable fast return mode if possible [2]
|
|
-d numcopies Print 'numcopies' of the supplied job
|
|
-v Silence all output except for warnings/errors
|
|
|
|
[1] This argument can be repeated to increase the debug level.
|
|
Alternatively, the 'DYESUB_DEBUG' environment variable can be
|
|
used. For example, '-DDD' and 'DYESUB_DEBUG=3' are equivalent.
|
|
|
|
DYESUB_DEBUG=1 Enable debug output
|
|
DYESUB_DEBUG=2 Dump contents of short messges
|
|
DYESUB_DEBUG=3 Dump contents of all messages
|
|
|
|
[2] This terminates the backend as soon as the printer has
|
|
accepted the print job, without waiting for the print job
|
|
to complete. Not all printers support this feature. This
|
|
can also be enabled by setting the 'FAST_RETURN' environment
|
|
variable. This is the default behavior when using this backend
|
|
with CUPS.
|
|
|
|
Finally, some backends support additional arguments; see their details
|
|
below.
|
|
|
|
***************************************************************************
|
|
Other Environment Variables:
|
|
|
|
If you have multiple models of the same printer family connected
|
|
simultaneously, the backend will choose the first one it finds.
|
|
If you wish to target a specific device, you may specify its
|
|
serial number using the 'SERIAL' environment variable. For example:
|
|
|
|
SERIAL=N782 backend filename [ arguments ]
|
|
|
|
All backends support an additional operational mode, to test out
|
|
unknown models. To use this mode, specify the VID, PID and its
|
|
internal device type as environment variables:
|
|
|
|
EXTRA_VID=04a9 EXTRA_PID=3ab1 EXTRA_TYPE=7 backend filename
|
|
|
|
The VID and PID are specified in hexidecimal, and the TYPE is
|
|
the P_XXX enumeration defined in backend_common.h. The '7' in this
|
|
example corresponds to most Canon SELPHY CP models, and is what you
|
|
would use if you were trying to get the backend to detect an
|
|
otherwise unrecognized SELPHY CP model.
|
|
|
|
If you are able to successfuly print using this technique,
|
|
please let us know so we can add the apppriate entry to the
|
|
internal database.
|
|
|
|
For debugging USB operation, there following environment variables
|
|
can be set:
|
|
|
|
MAX_XFER_SIZE Maximum transfer size, in bytes.
|
|
XFER_TIMEOUT Timeout, in milliseconds, for all USB operations
|
|
|
|
for example:
|
|
|
|
MAX_XFER_SIZE=32768 XFER_TIMEOUT=30000 backend filename
|
|
|
|
Finally, BACKEND_QUIET can be set to a non-zero value to silence all
|
|
output other than warnings and errors.
|
|
|
|
***************************************************************************
|
|
Standalone status queries:
|
|
|
|
If you just want to query the printer and media status in a
|
|
printer-independent manner, the backend supports reporting a standard
|
|
set of data in either textual or JSON format. This is used with the
|
|
BACKEND_STATS_ONLY environment variable:
|
|
|
|
BACKEND_STATS_ONLY=? BACKEND=backend [SERIAL=??] ./gutenprint53+usb
|
|
BACKEND_STATS_ONLY=? [SERIAL=??] ./backend
|
|
|
|
BACKEND_STATS_ONLY=1 will report in textual format, for example:
|
|
|
|
Backend: HiTi Photo Printers
|
|
Version: 0.100 / 0.16
|
|
Timestamp: 2019-1 2-13 14:54:28
|
|
Manufacturer: HiTi
|
|
Model: HiTi:Usb Photo Printer:HiTi P520L
|
|
Serial Number: 2WC4A1013968279
|
|
Firmware Version: 1.21.0.i
|
|
Printer Status: Idle
|
|
Lifetime Prints: 194
|
|
Media 0 Type: 4x6
|
|
Media 0 Level: 313 / 500
|
|
|
|
BACKEND_STATS_ONLY=2 will report in JSON format, for example:
|
|
|
|
{
|
|
"backend": "HiTi Photo Printers",
|
|
"version": "0.100 / 0.16",
|
|
"timestamp": "2019-12-13 14:57:38",
|
|
"manufacturer": "HiTi",
|
|
"model": "HiTi:Usb Photo Printer:HiTi P520L",
|
|
"serial": "2WC4A1013968279",
|
|
"firmware": "1.21.0.i",
|
|
"status": "Idle",
|
|
"counters": {
|
|
"lifetime": 194
|
|
},
|
|
"media": [
|
|
{
|
|
"type": "4x6",
|
|
"level": "OK",
|
|
"levelnow": 313,
|
|
"levelmax": 500
|
|
}
|
|
]
|
|
}
|
|
|
|
***************************************************************************
|
|
BACKEND=canonselphy
|
|
|
|
Model IDs recognized:
|
|
|
|
canon-cp10 canon-cp100 canon-cp200 canon-cp220 canon-cp300 canon-cp330
|
|
canon-cp400 canon-cp500 canon-cp510 canon-cp520 canon-cp530 canon-cp600
|
|
canon-cp710 canon-cp720 canon-cp730 canon-cp740 canon-cp750 canon-cp760
|
|
canon-cp770 canon-cp780 canon-cp790 canon-cp800 canon-cp810 canon-cp900
|
|
canon-es1 canon-es2 canon-es20 canon-es3 canon-es30 canon-es40
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
selphycp10 selphycp100 selphycp200 selphycp220 selphycp300 selphycp330
|
|
selphycp400 selphycp500 selphycp510 selphycp520 selphycp530 selphycp600
|
|
selphycp710 selphycp720 selphycp730 selphycp740 selphycp750 selphycp760
|
|
selphycp770 selphycp780 selphycp790 selphycp800 selphycp810 selphycp900
|
|
selphyes1 selphyes2 selphyes20 selphyes3 selphyes30 selphyes40
|
|
|
|
Verified supported printers:
|
|
|
|
ES1, ES2, ES3, ES30, ES40, CP-10, CP-100, CP-200, CP-300, CP-330,
|
|
CP400, CP500, CP510, CP710, CP720, CP730, CP740, CP750, CP760, CP770,
|
|
CP780, CP790, CP800, CP900
|
|
|
|
Unverified/untested, but should work: (let us know, please!)
|
|
|
|
ES20, CP-220, CP520, CP530, CP600, CP810
|
|
|
|
Valid commands:
|
|
|
|
-R Reset printer to factory defaults
|
|
-s Query printer status
|
|
|
|
Notes:
|
|
|
|
* The SELPHY ES3 and ES30 cannot report the loaded media type
|
|
* All models can report media empty, but not quantity remaining
|
|
|
|
***************************************************************************
|
|
BACKEND=canonselphyneo
|
|
|
|
Model IDs recognized:
|
|
|
|
canon-cp820 canon-cp910 canon-cp1000 canon-cp1200 canon-cp1300
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
selphycp820 selphycp910 selphycp1000 selphycp1200 selphycp1300
|
|
|
|
Verified supported printers:
|
|
|
|
CP1000, CP1200, CP1300
|
|
|
|
Untested, but expected to work:
|
|
|
|
CP820, CP910
|
|
|
|
Valid commands:
|
|
|
|
-R Reset printer to factory defaults
|
|
-s Query printer status
|
|
|
|
Notes:
|
|
|
|
* All models can report media empty, but not quantity remaining
|
|
|
|
***************************************************************************
|
|
BACKEND=kodak1400
|
|
|
|
Additional model IDs recognized:
|
|
|
|
kodak-1400 kodak-805
|
|
mitsubishi-3020d mitsubishi-3020da, mitsubishi-3020dae mitsubishi-3020de
|
|
mitsubishi-3020du
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
kodak1400 kodak805 mitsu3020d mitsu3020da
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 1400
|
|
Kodak 805
|
|
|
|
Work-in-progress printers:
|
|
|
|
Mitsubishi CP3020D/DE
|
|
Mitsubishi CP3020DA/DAE
|
|
|
|
Valid commands:
|
|
|
|
-C filename Set tone curve [1]
|
|
|
|
Notes:
|
|
|
|
* These models cannot report media type or remaining levels,
|
|
but are able to report out of media conditions.
|
|
|
|
[1] Format of curvedata file:
|
|
|
|
256 entries each of Yellow, Magenta, Cyan mappings:
|
|
Values are unsigned 16-bit big endian, between 0 and ???
|
|
(unsure as to the bit usage)
|
|
|
|
***************************************************************************
|
|
BACKEND=kodak68x0
|
|
|
|
Model IDs recognized:
|
|
|
|
kodak-6800 kodak-6850
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
kodak6800 kodak6850
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 6800
|
|
Kodak 6850
|
|
|
|
Development was sponsored in part by:
|
|
|
|
LiveLink Technology [ www.livelinktechnology.net ]
|
|
|
|
Valid commands:
|
|
|
|
-c filename Query tone curve [1]
|
|
-C filename Set tone curve [1]
|
|
-l filename Query Current tone curve from RAM [1]
|
|
-L filename Store Current tone curve in RAM [1]
|
|
-m Query media information
|
|
-s Query printer status
|
|
-R Reset printer to factory defaults
|
|
-X id Cancel print job 'id' [2]
|
|
|
|
Notes:
|
|
|
|
[1] Format of curvedata file:
|
|
|
|
256 entries each of Yellow, Magenta, Cyan mappings:
|
|
Values are unsigned 16-bit big endian, between 0 and 16383
|
|
(ie 14-bit)
|
|
|
|
[2] Job ID is the Internal Job ID (reported via status)
|
|
This cancels a multi-copy print job.
|
|
To see which jobs are active/pending, see the output of the
|
|
'-s' command, specifically the 'Bank' output.
|
|
|
|
***************************************************************************
|
|
BACKEND=kodak605
|
|
|
|
Additional model IDs recognized:
|
|
|
|
kodak-605, kodak-7000, kodak-7010, kodak-7015,
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 605
|
|
Kodak 7000
|
|
|
|
Work-in-progress printers:
|
|
|
|
Kodak 7010/7015
|
|
|
|
Valid commands:
|
|
|
|
-b [ 0 | 1 ] Disable or Enable the printer control panel
|
|
-c filename Query User tone curve from flash [1]
|
|
-C filename Store User tone curve in flash [1]
|
|
-e Query error log
|
|
-F Flash printer LEDs for 5 seconds
|
|
-i Query printer firmware information
|
|
-l filename Query Current tone curve from RAM [1]
|
|
-L filename Store Current tone curve in RAM [1]
|
|
-m Query media information
|
|
-r Reset User tone curve to default [3]
|
|
-R Reset printer to factory defaults
|
|
-s Query printer status
|
|
-X id Cancel print job 'id' [2]
|
|
|
|
Notes:
|
|
|
|
[1] Format of curvedata file:
|
|
|
|
256 entries each of Yellow, Magenta, Cyan mappings:
|
|
Values are unsigned 16-bit big endian, between 0 and ???
|
|
(unsure as to the bit usage)
|
|
|
|
[2] Job ID is the Internal Job ID (reported via status)
|
|
This cancels a multi-copy print job.
|
|
To see which jobs are active/pending, see the output of the
|
|
'-s' command, specifically the 'Bank' output.
|
|
|
|
[3] Default printer tone curve is a linear 'val << 3'
|
|
|
|
***************************************************************************
|
|
BACKEND=shinkos2145
|
|
|
|
Model IDs recognized:
|
|
|
|
shinko-chcs2145 sinfonia-chcs2145
|
|
|
|
Verified supported printers:
|
|
|
|
Shinko CHC-S2145 (aka "Sinfonia S2")
|
|
|
|
Development was sponsored in part by:
|
|
|
|
LiveLink Technology [ www.livelinktechnology.net ]
|
|
|
|
In order to use this backend, you will need to ensure the printer is
|
|
configured to use the 'DRV' (as opposed to 'DLL') operating mode. See
|
|
the printer documentation for details on how to set this.
|
|
|
|
Valid commands:
|
|
|
|
-b [ 0 | 1 ] Disable or Enable the printer control panel
|
|
-c filename Query User tone curve from flash [1]
|
|
-C filename Store User tone curve in flash [1]
|
|
-e Query Error log
|
|
-F Flash printer LEDs for 5 seconds
|
|
-i Query printer firmware information
|
|
-l filename Query Current tone curve from RAM [1]
|
|
-L filename Store Current tone curve in RAM [1]
|
|
-m Query media information
|
|
-r Reset User tone curve to default [4]
|
|
-R Reset printer to factory defaults
|
|
-s Query printer status
|
|
-u Query user string
|
|
-U somestring Set user string to 'somestring'
|
|
-X id Cancel print job 'id' [3]
|
|
|
|
Notes:
|
|
|
|
[1] Format of curvedata file:
|
|
|
|
256 entries each of Yellow, Magenta, Cyan mappings:
|
|
Values are unsigned 16-bit big endian, between 0 and 2047
|
|
(ie only 11 bits used)
|
|
|
|
[3] Job ID is the Internal Job ID (reported via status)
|
|
This cancels a multi-copy print job.
|
|
To see which jobs are active/pending, see the output of the
|
|
'-s' command, specifically the 'Bank' output.
|
|
|
|
[4] Default printer tone curve is a linear 'val << 3'
|
|
|
|
***************************************************************************
|
|
BACKEND=shinkos1245
|
|
|
|
Low-level documentation was provided by Sinfonia, Inc. Thank you!
|
|
|
|
Model IDs recognized:
|
|
|
|
shinko-chcs1245 sinfonia-chcs1245
|
|
|
|
Verified supported printers:
|
|
|
|
Shinko CHC-S1245 (aka "Sinfonia E1")
|
|
|
|
Valid commands:
|
|
|
|
-s Query printer status
|
|
-m Query media information
|
|
-u Query user string
|
|
-U somestring Set user string to 'somestring'
|
|
-X id Cancel print job 'id' [1]
|
|
-R Reset printer to factory defaults
|
|
-F Tone curve commands affect FINE table
|
|
-c filename Query User tone curve from flash [2]
|
|
-C filename Store User tone curve in flash [2]
|
|
-l filename Query Current tone curve from RAM [2]
|
|
-L filename Store Current tone curve in RAM [2]
|
|
|
|
Notes:
|
|
|
|
[1] Job ID is the Internal Job ID (reported via status)
|
|
This cancels a multi-copy print job.
|
|
To see which jobs are active/pending, see the output of the
|
|
'-s' command, specifically the 'Bank' output.
|
|
|
|
[2] Format of tone curve file:
|
|
|
|
256 entries each of Yellow, Magenta, Cyan mappings:
|
|
Values are unsigned 16-bit big endian, between 0 and 16383
|
|
(ie only 14 bits used)
|
|
|
|
***************************************************************************
|
|
BACKEND=shinkos6145
|
|
|
|
Low-level documentation was provided by Sinfonia and CIAAT. Thank you!
|
|
|
|
Model IDs recognized:
|
|
|
|
sinfonia-chcs6145 ciaat-brava-21 shinko-chcs6145
|
|
sinfonia-chcs2245 hiti-m610
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
shinks6145 brava21
|
|
|
|
Verified supported printers:
|
|
|
|
Ciaat Brava 21
|
|
Shinko CHC-S6145 (aka "Sinfonia CS2")
|
|
|
|
Work-in-progress printers:
|
|
|
|
HiTi M610
|
|
Kodak 6900
|
|
Sinfonia CHC-S2245 (aka "S3")
|
|
|
|
*** VERY IMPORTANT ***
|
|
|
|
In order to generate usable output, the Sinfonia CHC-S6145 printer
|
|
(and its siblings listed above) require the input data to be
|
|
transformed using specific image processing algorithms.
|
|
|
|
The library that implements this processing is dynamically loaded
|
|
at runtime. There are three options:
|
|
|
|
* libS6145ImageProcess -- Supported by Sinfonia, this is a proprietary
|
|
library only available for x86 and x86_64 linux targets. It can be
|
|
obtained by politely contacting your local Sinfonia distributor.
|
|
|
|
If you have the appropriate permission fron Sinfonia and its
|
|
technical and legal limitations are acceptible to you, we recommend
|
|
you use the supported libS6145ImageProcess library, as it will
|
|
generate the highest quality output.
|
|
|
|
* libS6145ImageReProcess -- GPL'd re-implementation of the Sinfonia
|
|
algorithms, available as source. It is a drop-in replacement
|
|
that appears to generate identical output to the proprietary
|
|
Sinfonia library.
|
|
|
|
DISCLAIMER: Sinfonia Inc was not involved in the creation of
|
|
libS6145ImageReProcess and is not responsible in any way for any
|
|
deficiencies in its output. They will provide no support if it is
|
|
used.
|
|
|
|
Do *NOT* contact Sinfonia for support if you are using
|
|
libS6146ImageReProcess!
|
|
|
|
(Please see the full disclaimer in libS6145ImageReProcess.c)
|
|
|
|
* If neither of the above libraries are found, the backend will
|
|
fall back to a very crude algorithm that generates low-quality
|
|
results not suitable for photographic output
|
|
|
|
As selphy_print is released under the terms of the GPL, it cannot
|
|
normally be combined with proprietary libraries.
|
|
|
|
Therefore, the authors of selphy_print grant its users an additional
|
|
permission (under section 7 of the GPLv3) to combine and/or redistribute
|
|
it with the libS6145ImageProcess library. For the full text of this
|
|
license exception, please see the header of backend_shinkos6145.c
|
|
|
|
Valid commands:
|
|
|
|
-c filename Query User tone curve from flash [1]
|
|
-C filename Store User tone curve in flash [1]
|
|
-e Query Error log
|
|
-F Flash printer LEDs for 5 seconds
|
|
-i Query printer firmware information
|
|
-k num Specify standby delay (5-240 minutes)
|
|
-l filename Query Current tone curve from RAM [1]
|
|
-L filename Store Current tone curve in RAM [1]
|
|
-m Query media information
|
|
-q filename Dump eeprom data [4]
|
|
-Q filename Dump image correction data [4]
|
|
-r Reset User tone curve to default [3]
|
|
-R Reset printer to factory defaults
|
|
-s Query printer status
|
|
-X id Cancel print job 'id' [2]
|
|
|
|
Notes:
|
|
|
|
[1] Format of curvedata file:
|
|
|
|
256 entries each of Yellow, Magenta, Cyan mappings:
|
|
Values are unsigned 16-bit big endian, between 0 and 2047
|
|
(ie only 11 bits used)
|
|
|
|
[2] Job ID is the Internal Job ID (reported via status)
|
|
This cancels a multi-copy print job.
|
|
To see which jobs are active/pending, see the output of the
|
|
'-s' command, specifically the 'Bank' output.
|
|
|
|
[3] Default printer tone curve is a linear 'val << 3'
|
|
|
|
[4] This is used as an input to the image processing code, and is
|
|
only useful for debugging purposes.
|
|
|
|
***************************************************************************
|
|
BACKEND=shinkos6245
|
|
|
|
Low-level documentation was provided by Sinfonia, Inc. Thank you!
|
|
|
|
Model IDs recognized:
|
|
|
|
sinfonia-chcs6245 hiti-p910l shinko-chcs6245
|
|
kodak-8810
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
shinkos6245 hitip910
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 8810
|
|
|
|
Work-in-process printers:
|
|
|
|
HiTi P910L
|
|
Shinko CHC-S6245 (aka "Sinfonia CE1")
|
|
|
|
Valid commands:
|
|
|
|
-b [ 0 | 1 ] Disable or Enable the printer control panel [4]
|
|
-c filename Query User tone curve from flash [1]
|
|
-C filename Store User tone curve in flash [1]
|
|
-e Query Error log
|
|
-F Flash printer LEDs for 5 seconds
|
|
-i Query printer firmware information
|
|
-k num Specify standby delay (5-240 minutes)
|
|
-l filename Query Current tone curve from RAM [1]
|
|
-L filename Store Current tone curve in RAM [1]
|
|
-m Query media information
|
|
-r Reset User tone curve to default [3]
|
|
-R Reset printer to factory defaults
|
|
-s Query printer status
|
|
-X id Cancel print job 'id' [2]
|
|
|
|
Notes:
|
|
|
|
[1] Format of curvedata file:
|
|
|
|
256 entries each of Yellow, Magenta, Cyan mappings:
|
|
Values are unsigned 16-bit big endian, between 0 and 2047
|
|
(ie only 11 bits used)
|
|
|
|
[2] Job ID is the Internal Job ID (reported via status)
|
|
This cancels a multi-copy print job.
|
|
To see which jobs are active/pending, see the output of the
|
|
'-s' command, specifically the 'Bank' output.
|
|
|
|
[3] Default printer tone curve is a linear 'val << 3'
|
|
|
|
[4] Kodak 8810 only
|
|
|
|
***************************************************************************
|
|
BACKEND=sonyupd
|
|
|
|
Additional model IDs recognized:
|
|
sony-updr150 sony-updr200 sony-upcr10l
|
|
sony-upd895 sony-upd897 dnp-sl10
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
sonyupdr150 sonyupdr200 sonyupcr10
|
|
|
|
Verified supported printers:
|
|
|
|
Sony UP-CR10L
|
|
Sony UP-D895
|
|
Sony UP-D897
|
|
Sony UP-DR150
|
|
Sony UP-DR200
|
|
|
|
Unverified/untested, but should work:
|
|
|
|
DNP DS-SL10
|
|
|
|
Valid commands:
|
|
|
|
-s Query printer status
|
|
|
|
Notes:
|
|
|
|
* These models cannot report media type or remaining levels,
|
|
but are able to report out of media conditions.
|
|
|
|
***************************************************************************
|
|
BACKEND=sonyupdneo
|
|
|
|
Model IDs recognized:
|
|
|
|
sony-upcr20l sony-upd898 sony-updr80 sony-updr80md dnp-sl20
|
|
|
|
Verified supported printers:
|
|
|
|
Sony UP-DR80MD
|
|
|
|
Work-in-progress printers
|
|
|
|
Sony UP-DR80
|
|
|
|
Work-in-progress printers (Lack USB PIDs)
|
|
|
|
Sony UP-D898 / UP-X898
|
|
Sony UP-CR20L
|
|
DNP DS-SL20
|
|
|
|
Valid commands:
|
|
|
|
-s Query printer status
|
|
|
|
Notes:
|
|
|
|
* The UP-D89x series is unable to report media type or levels, but
|
|
can report media empty conditions.
|
|
|
|
***************************************************************************
|
|
BACKEND=mitsu70x
|
|
|
|
Model IDs recognized:
|
|
|
|
mitsubishi-d70dw mitsubishi-d80dw mitsubishi-k60dw
|
|
fujifilm-ask-300 mitsubishi-d707dw mitsubishi-k60dws
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
kodak-305 mitsud80 mitsuk60 kodak305 fujiask300
|
|
|
|
Supported and tested printers:
|
|
|
|
Fujifilm ASK-300
|
|
Kodak 305
|
|
Mitsubishi CP-D70DW
|
|
Mitsubishi CP-D707DW
|
|
Mitsubishi CP-D80DW
|
|
Mitsubishi CP-K60DW-S
|
|
|
|
Unsupported printers (Unknown VID/PID):
|
|
|
|
Mitsubishi CP-D70DW-S
|
|
Mitsubishi CP-D707DW-S
|
|
Mitsubishi CP-D80DW-S
|
|
|
|
Development was sponsored in part by:
|
|
|
|
Schreiber & Freunde GmbH & Co. KG
|
|
A generous benefactor who wishes to remain anonymous
|
|
|
|
*** VERY IMPORTANT ***
|
|
|
|
In order to generate usable output, this family of printers require
|
|
the input data to be transformed using specific image processing
|
|
algorithms.
|
|
|
|
The library that implements this processing is dynamically loaded
|
|
at runtime. There is currently only one option:
|
|
|
|
* libMitsuD70ImageReProcess -- GPL'd re-implementation of the
|
|
Mitsubishi algorithms, available as source. No guaranteees are
|
|
made about its output quality versus Mitsubishi's
|
|
proprietary drivers, but is generally considerd quite good.
|
|
|
|
DISCLAIMER: Mitsubishi was not involved in the creation of
|
|
libMitsuD70ImageReProcess and is not responsible in any way for
|
|
any deficiencies in its output. They will provide no support if
|
|
it is used.
|
|
|
|
Do *NOT* contact Mitsubishi for support if you are using
|
|
any combination of gutenprint, selphy_print or libMitsuD70ImageReProcess.
|
|
|
|
(Please see the full disclaimer in libMitsuD70ImageReProcess.c)
|
|
|
|
Valid commands:
|
|
|
|
-j Query Job status
|
|
-k num Specify standby delay (1-60 minutes, 0 disables)
|
|
-s Query printer status
|
|
-w Wake up printer
|
|
-W Wake up printer (and wait)
|
|
-x num Set USB iSerialNumber reporting (1 yes, 0 no) [1]
|
|
-X id Cancel print job 'id' [2]
|
|
|
|
[1] Printer will need to be power-cycled for this to take effect.
|
|
[2] Job ID is the Internal Job ID (reported via job status query)
|
|
|
|
***************************************************************************
|
|
BACKEND=mitsud90
|
|
|
|
Model IDs recognized:
|
|
|
|
mitsubishi-d90dw
|
|
|
|
Supported and tested printers:
|
|
|
|
Mitsubishi CP-D90DW
|
|
|
|
Work-in-progress printers:
|
|
|
|
Mitsubishi CP-M1A / CP-M1E
|
|
|
|
Unsupported printers (Unknown VID/PID):
|
|
|
|
Mitsubishi CP-D90DW-P
|
|
|
|
*** VERY IMPORTANT ***
|
|
|
|
In order to generate usable output, the Mitsubishi CP-M1 family
|
|
requires the input data to be transformed using specific image
|
|
processing algorithms. These are currently only implemented within
|
|
Mitsubishi's proprietary drivers, and will require a substantial
|
|
amount of effort to re-implement. Some progress has been made, but
|
|
there is no specific roadmap or timeline.
|
|
|
|
Valid commands:
|
|
|
|
-i Query printer information
|
|
-j jobid Query job status [1]
|
|
-k num Specify standby delay (1-255 minutes, 0 disables)
|
|
-m Query printer media
|
|
-s Query printer status
|
|
-x num Set USB iSerialNumber reporting (1 yes, 0 no) [2]
|
|
|
|
[1] Job ID is the Internal Job ID (reported via job status query)
|
|
[2] Printer will need to be power-cycled for this to take effect.
|
|
|
|
***************************************************************************
|
|
BACKEND=mitsu9xxx
|
|
|
|
Model IDs recognized:
|
|
|
|
mitsubishi-9000dw mitsubishi-9500dw mitsubishi-9550dw mitsubishi-9550dw-s
|
|
mitsubishi-9600dw mitsubishi-9800dw mitsubishi-9800dw-s mitsubishi-9810dw
|
|
mitsubishi-9550d mitsubishi-9550dz mitsubishi-9800d mitsubishi-9800dz
|
|
mitsubishi-9810d
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
mitsu9000 mitsu9500 mitsu9550 mitsu9600 mitsu9800 mitsu9810
|
|
|
|
Supported and tested printers:
|
|
|
|
Mitsubishi CP-9550D/DW and CP-9550DZ/DZS/DW-S
|
|
Mitsubishi CP-9600D/DW
|
|
Mitsubishi CP-9800DZ/DZS/DW-S [1]
|
|
|
|
Unverified/untested, but should work: (let us know, please!)
|
|
|
|
Mitsubishi CP-9800D/DW [1]
|
|
Mitsubishi CP-9810D/DW [1]
|
|
Mitsubishi CP-9820DW-S [1]
|
|
|
|
Work-in-progress printers:
|
|
|
|
Mitsubishi CP-9000D/DW
|
|
Mitsubishi CP-9500D/DW
|
|
|
|
Unsupported (unknown VID/PID):
|
|
|
|
Mitsubishi CP-9600DW-S/DZ/DZ-S
|
|
|
|
Valid commands:
|
|
|
|
-s Query printer status
|
|
-m Query printer media
|
|
-X Cancel current job
|
|
|
|
Notes:
|
|
|
|
[1] **** VERY IMPORTANT ****
|
|
|
|
The CP-98xx family is similar to the CP-D70 family in that it requires
|
|
the input data to be gamma corrected (and likely transformed in other
|
|
ways) before it is sent to the printer.
|
|
|
|
Unlike the D70 family, the data tables used are embedded into the driver
|
|
instead of being bundled separately, further complicating the process
|
|
of figuring out how everything works. Some progress has been made,
|
|
allowing for proper gamma correction/linearization that generates
|
|
usable prints, although the quality is still sub-par when compared to
|
|
Mitsubishi's proprietary drivers.
|
|
|
|
***************************************************************************
|
|
BACKEND=mitsup9x
|
|
|
|
Model IDs recognized:
|
|
|
|
mitsubishi-p95d mitsubishi-p93d
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
mitsup95d mitsup93d
|
|
|
|
Development was sponsored by:
|
|
|
|
A benefactor who wishes to remain anonymous
|
|
|
|
Verified supported printers:
|
|
|
|
Mitsubishi P95DW
|
|
Mitsubishi P93DW
|
|
|
|
Valid commands:
|
|
|
|
-s Query printer status
|
|
|
|
Notes:
|
|
|
|
* These models cannot report media type or remaining levels,
|
|
but are able to report out of media conditions.
|
|
|
|
***************************************************************************
|
|
BACKEND=dnp_citizen
|
|
|
|
Model IDs recognized:
|
|
|
|
dnp-ds40 dnp-ds80 dnp-ds80dx dnp-ds620 dnp-ds820 dnp-dsrx1 dnp-ds620
|
|
citizen-cw-01 citizen-cw-02 citizen-cx-02 citizen-cx citizen-cx-w citizen-cy
|
|
citizen-cy-02 citizen-op900 citizen-op900ii citicen-cx-02w
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
dnpds40 dnpds90 dnpds80dx dnpds620 dnpds820 dnpdsrx1
|
|
citizencw01 citizencw02 citizencx02
|
|
|
|
Verified supported printers:
|
|
|
|
DNP DS40 (aka Citizen CX)
|
|
DNP DS80 (aka Citizen CX-W)
|
|
DNP DS80DX
|
|
DNP DS620 / DS620A (aka Citizen CX-02)
|
|
DNP DS820 / DS820A (aka Citizen CX-02W)
|
|
DNP DS-RX1 / DNP DS-RX1HS (aka Citizen CY and CY-02)
|
|
|
|
Theoretically supported printers: (Untested)
|
|
|
|
Citizen CW-01 / OP900
|
|
Citizen CW-02 / OP900II
|
|
Citizen CX-02
|
|
Mitsubishi CP-3800DW
|
|
|
|
Work-in-progress printers: (USB PIDs unknown)
|
|
|
|
Olmec OP900
|
|
ICI Imagedata OP900
|
|
|
|
Development was sponsored in part by:
|
|
|
|
Marco Di Antonio
|
|
LiveLink Technology [ www.livelinktechnology.net ]
|
|
Multiple generous benefactors who whish to remain anonymous
|
|
|
|
This backend supports additional commands:
|
|
|
|
-i Query printer information (resolution, etc)
|
|
-I Query printer sensor information
|
|
-n Query printer counters
|
|
-N [ A | B | M ] Reset Counter A/B/M [2]
|
|
-p num Set 'P' counter to 'num' [2]
|
|
-s Query printer status
|
|
-k num Specify standby delay (1-99 minutes, 0 disables) [1]
|
|
-K num Keep Media Status Across Power Cycles (1 yes, 0 no) [1]
|
|
-x num Set USB iSerialNumber reporting (1 yes, 0 no) [3]
|
|
-X Cancel current job
|
|
-R Reset printer to defaults
|
|
|
|
Notes:
|
|
|
|
[1] Only supported by DS620 and DS820
|
|
[2] Certain printer features may require updating the printer firmware
|
|
[3] Only supported by RX1HS, DS620, and DS820
|
|
|
|
***************************************************************************
|
|
BACKEND=magicard
|
|
|
|
Model IDs recognized:
|
|
|
|
magicard-tango-2e magicard-enduro magicard-enduroplus magicard-rio-2e
|
|
|
|
Model IDs for backwards compatibility with older releases:
|
|
|
|
tango2e enduro enduroplus
|
|
|
|
Verified supported printers:
|
|
|
|
Tango 2E
|
|
|
|
Work-in-progress printers:
|
|
|
|
Rio 2E
|
|
Tango +L
|
|
Enduro
|
|
Enduro+
|
|
(And all others)
|
|
|
|
This backend supports additional commands:
|
|
|
|
magicard [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-s Query printer status
|
|
-q Generate printer information dump
|
|
-I Query printer sensors
|
|
-T Print self-test card
|
|
-E Eject card in printer
|
|
-R Reset printer
|
|
|
|
Notes:
|
|
|
|
* These models cannot report media type or remaining levels,
|
|
but are able to report out of media conditions.
|
|
|
|
***************************************************************************
|
|
BACKEND=hiti
|
|
|
|
Model IDs recognized:
|
|
|
|
hiti-p520l hiti-p525l hiti-p52x
|
|
hiti-p720l hiti-p750l
|
|
|
|
Verified supported printers:
|
|
|
|
HiTi P520L
|
|
|
|
Theoretically supported printers (Untested)
|
|
|
|
HiTi P525L
|
|
HiTi P720L
|
|
HiTi P750L
|
|
|
|
This backend supports additional commands:
|
|
|
|
hiti [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-i Query printer information
|
|
-r Soft reset printer
|
|
-R Reset printer to factory defaults
|
|
-s Query printer status
|
|
|
|
Notes:
|
|
|
|
* Firmware v1.19-v1.21 for the P520L and P525L have a major issue
|
|
that results in bulk data transfers not functioning under Linux.
|
|
This problem also affected HiTi's semi-official Linux drivers, and
|
|
was finally fixed in v1.22.
|
|
|
|
***************************************************************************
|