480 lines
15 KiB
Plaintext
480 lines
15 KiB
Plaintext
***************************************************************************
|
|
|
|
Unified Gutenprint/CUPS backend for various Dye-Sublimation photo printers
|
|
|
|
Copyright (c) 2007-2015 Solomon Peachy <pizza@shaftnet.org>
|
|
|
|
This free software comes with ABSOLUTELY NO WARRANTY!
|
|
Licensed under the GNU GPL, see the 'COPYING' file for more details.
|
|
|
|
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 (except CP820, and CP910)
|
|
Kodak Professional 1400
|
|
Kodak 605 Photo Printer
|
|
Kodak 805 Photo Printer
|
|
Kodak 6800 Photo Printer
|
|
Kodak 6850 Photo Printer
|
|
Shinko CHC-S2145 (aka "Sinfonia S2")
|
|
Sony UP-DR150
|
|
Sony UP-DR200
|
|
DNP DS40/DS80/DS-RX1
|
|
Citizen CX/CX-W/CY
|
|
Citizen CW-01
|
|
Mitsubishi CP-9550D/DW/DW-S/DZ/DZ-S
|
|
|
|
Work-in-progress Printers:
|
|
|
|
Mitsubishi CP-D70DW, CP-D707DW, CP-K60DW-S, and CP-D80DW
|
|
Kodak 305
|
|
Citizen CW-02
|
|
Olmec OP900/OP900II
|
|
ICI Imagedata OP900
|
|
Mitsubishi CP-3800DW
|
|
Sony UP-CR10L (aka DNP DS-SL10)
|
|
Shinko CHC-S1245 (aka Sinfonia E1)
|
|
Shinko CHC-S6245 (aka Sinfonia CE1)
|
|
Shinko CHC-S6145 (aka Sinfonia CS2)
|
|
Shinko CHC-S6145-5A (aka Sinfonia CS2-c)
|
|
Ciaat Brava 21 (Rebadged S6145)
|
|
|
|
***************************************************************************
|
|
|
|
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.
|
|
|
|
Although this backend is bundled with Gutenprint, this repository is
|
|
considered the canonical upstream source where all development occurs.
|
|
As such, when compared to the current Gutenprint release, the code found
|
|
here is often newer, with additional features or device support. 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.
|
|
|
|
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 selected printers, such as querying status and
|
|
configuring various 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.
|
|
|
|
Fedora/RedHat:
|
|
yum install libusbx-devel libusb1-devel
|
|
Debian/Ubuntu
|
|
apt-get install libusbx-dev libusb-1.0-0-dev
|
|
|
|
And all you need to do after that is type 'make'
|
|
|
|
***************************************************************************
|
|
CUPS backend usage:
|
|
|
|
DEVICE_URI=someuri \
|
|
gutenprint52+usb job-id user title num-copies options [ filename ]
|
|
|
|
***************************************************************************
|
|
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 each
|
|
of the internal backends. Alternatively you may set the BACKEND
|
|
environment variable to force a specific backend to be used. These
|
|
commands are all equivalent:
|
|
|
|
BACKEND=backend gutenprint52+usb [ arguments ]
|
|
gutenprint52+usb -B backend [ arguments ]
|
|
backend [ arguments ]
|
|
|
|
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.
|
|
|
|
Extra debugging output can be enabled by setting the DYESUB_DEBUG
|
|
environment variable or passing the '-D' argument on the command line.
|
|
|
|
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
|
|
in the 'DEVICE' environment variable or by passing the '-S serialnum'
|
|
argument on the command line. For example, these are equivalent:
|
|
|
|
DEVICE=N782 backend filename [ arguments ]
|
|
backend -S N782 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 arguments or environment variables:
|
|
|
|
EXTRA_VID=04a9 EXTRA_PID=3ab1 EXTRA_TYPE=7 backend filename
|
|
backend -V 04a9 -P 3ab1 -T 7 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.
|
|
|
|
Finally, some backends support additional arguments; see below:
|
|
|
|
***************************************************************************
|
|
BACKEND=canonselphy
|
|
|
|
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
|
|
|
|
NOT supported: (Printer does not need a backend)
|
|
|
|
CP820, CP910
|
|
|
|
This backend does not support additional commands.
|
|
|
|
***************************************************************************
|
|
BACKEND=kodak1400
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 1400
|
|
Kodak 805
|
|
|
|
Valid commands:
|
|
|
|
-C filename Set tone curve [1]
|
|
|
|
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)
|
|
|
|
***************************************************************************
|
|
BACKEND=kodak6800
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 6800
|
|
Kodak 6850
|
|
|
|
Development was sponsored by:
|
|
|
|
LiveLink Technology [ www.livelinktechnology.net ]
|
|
|
|
Valid commands:
|
|
|
|
-c filename Query tone curve [1]
|
|
-C filename Set tone curve [1]
|
|
-m Query supported media
|
|
-s Query printer status (not fully decoded)
|
|
|
|
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)
|
|
|
|
***************************************************************************
|
|
BACKEND=kodak605
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 605
|
|
|
|
Valid commands:
|
|
|
|
-C filename Set tone curve [1]
|
|
-m Query supported media (not fully decoded)
|
|
-s Query printer status (not fully decoded)
|
|
|
|
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)
|
|
|
|
***************************************************************************
|
|
BACKEND=shinkos2145
|
|
|
|
Verified supported printers:
|
|
|
|
Shinko CHC-S2145 (aka "Sinfonia S2")
|
|
|
|
Work-in-process printers:
|
|
|
|
Shinko CHC-S6245 (aka "Sinfonia CE1")
|
|
Shinko CHC-S6145 (aka "Sinfonia CS2")
|
|
Shinko CHC-S6145-5A (aka "Sinfonia CS2-c")
|
|
Ciaat Brava 21
|
|
|
|
Development was initially sponsored 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 Enable Fast return from prints [2]
|
|
-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)
|
|
|
|
[2] This terminates the backend as soon as the printer has acknowledged
|
|
the print job, without waiting for the print job to complete.
|
|
This can also be enabled by setting the 'FAST_RETURN' environment
|
|
variable. This is the default behavior when using this backend
|
|
with CUPS.
|
|
|
|
[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!
|
|
|
|
Work-in-process printers:
|
|
|
|
Shinko CHC-S1245 (aka "Sinfonia E1")
|
|
|
|
Valid commands:
|
|
|
|
-f Enable Fast return from prints [1]
|
|
-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' [2]
|
|
-F Tone curve commands affect FINE table
|
|
-c filename Query User tone curve from flash [3]
|
|
-C filename Store User tone curve in flash [3]
|
|
-l filename Query Current tone curve from RAM [3]
|
|
-L filename Store Current tone curve in RAM [3]
|
|
|
|
[1] This terminates the backend as soon as the printer has acknowledged
|
|
the print job, without waiting for the print job to complete.
|
|
This can also be enabled by setting the 'FAST_RETURN' environment
|
|
variable. This is the default behavior when using this backend
|
|
with CUPS.
|
|
|
|
[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] 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=sonyupdr150
|
|
|
|
Verified supported printers:
|
|
|
|
Sony UP-DR150
|
|
Sony UP-DR200
|
|
|
|
Unverified/untested, but should work: (Need USB PIDs)
|
|
|
|
Sony UP-CR10L
|
|
DNP DS-SL10
|
|
|
|
This backend does not support additional commands.
|
|
|
|
***************************************************************************
|
|
BACKEND=mitsu70x
|
|
|
|
Supported and tested printers:
|
|
|
|
Mitsubishi CP-D70DW
|
|
Mitsubishi CP-D707DW
|
|
|
|
Work-in-progress printers (bugs):
|
|
|
|
Mitsubishi CP-K60DW-S
|
|
Kodak 305
|
|
|
|
Unsupported printers (Unknown VID/PID):
|
|
|
|
Mitsubishi CP-D80DW
|
|
|
|
Valid commands:
|
|
|
|
-s Query printer status (Only partially decoded)
|
|
|
|
***************************************************************************
|
|
BACKEND=mitsu9550
|
|
|
|
Supported and tested printers:
|
|
|
|
Mitsubishi CP-9550DZ/DZS/DW-S
|
|
|
|
Work-in-progress printers:
|
|
|
|
Mitsubishi CP-9550D/DW
|
|
|
|
Valid commands:
|
|
|
|
-m Query printer media status
|
|
-f Enable Fast return from prints [1]
|
|
|
|
[1] This terminates the backend as soon as the printer has acknowledged
|
|
the print job, without waiting for the print job to complete.
|
|
This can also be enabled by setting the 'FAST_RETURN' environment
|
|
variable. This is the default behavior when using this backend
|
|
with CUPS.
|
|
|
|
***************************************************************************
|
|
BACKEND=dnpds40
|
|
|
|
Verified supported printers:
|
|
|
|
DNP DS40
|
|
DNP DS80
|
|
DNP DS-RX1
|
|
Citizen CX
|
|
Citizen CX-W
|
|
Citizen CY
|
|
|
|
Theoretically supported printers: (Untested)
|
|
|
|
Mitsubishi CP-3800DW
|
|
|
|
Work-in-progress printers: (USB PIDs unknown)
|
|
|
|
Citizen CW-02/OP900II
|
|
DNP DS80DX
|
|
DNP DS620
|
|
|
|
Development was sponsored by:
|
|
|
|
Marco Di Antonio
|
|
LiveLink Technology [ www.livelinktechnology.net ]
|
|
|
|
This backend supports additional commands:
|
|
|
|
dnpds40 [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-i Query printer information (resolution, etc)
|
|
-n Query printer counters
|
|
-N [ A | B | M ] Reset Counter A/B/M
|
|
-p num Set 'P' counter to 'num'
|
|
-s Query printer status
|
|
|
|
Notes:
|
|
|
|
* DS40, DS80, CX, and CX-W printers require firmware 1.30 or newer
|
|
|
|
***************************************************************************
|
|
BACKEND=citizencw01
|
|
|
|
Verified supported printers:
|
|
|
|
Citizen CW-01
|
|
|
|
Work-in-progress printers: (USB PIDs unknown)
|
|
|
|
Olmec OP900
|
|
ICI Imagedata OP900
|
|
|
|
This backend supports additional commands:
|
|
|
|
cw01 [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-i Query printer information (resolution, etc)
|
|
-n Query printer counters
|
|
-s Query printer status
|
|
-N [ A | B ] Reset Counter A/B
|
|
|
|
***************************************************************************
|