370 lines
12 KiB
Plaintext
370 lines
12 KiB
Plaintext
***************************************************************************
|
|
|
|
Unified Gutenprint/CUPS Backend for various Dye-Sublimation photo printers
|
|
|
|
(c) 2007-2014 Solomon Peachy <pizza@shaftnet.org>
|
|
|
|
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
|
|
|
|
***************************************************************************
|
|
|
|
Supported Printers:
|
|
|
|
Canon SELPHY ES series
|
|
Canon SELPHY CP series (except CP520, 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
|
|
DNP DS40
|
|
DNP DS80
|
|
|
|
Work-in-progress printers:
|
|
|
|
Mitsubishi CP-D70DW, CP-D707DW and CP-K60DW
|
|
Sony UP-DR200
|
|
|
|
***************************************************************************
|
|
|
|
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
|
|
two-way communications in order to successfully print.
|
|
|
|
If you do not have one of the printers listed above, this backend is
|
|
not relevant for you and you can just ignore everything below.
|
|
|
|
In order to properly utilize this backend, you must have an up-to-date
|
|
version of Gutenprint (5.2.10) installed.
|
|
|
|
Once Gutenprint and this backend are installed, if you are using up-to-date
|
|
versions of CUPS (1.6.4 or newer) on Linux, then your system will
|
|
automatically select this backend if you plug in one of its supported
|
|
printers. No further intervention on the user's part should be necessary.
|
|
|
|
Unfortunately, if you are using an older version of CUPS or a non-Linux
|
|
system (particularly OSX) then you will probably need to manually
|
|
configure the use of this backend, as the system may attempt to use the
|
|
default usb backend which does not work properly with these printers.
|
|
|
|
To check which backend your printers are using, run the 'lpstat -s' command.
|
|
Below is an example of its output:
|
|
|
|
device for Canon_SELPHY_ES1: gutenprint52+usb://Canon/SELPHY%20ES1?serial=221CD10131&backend=canonselphy
|
|
device for Canon_SELPHY_ES3: usb://Canon/Canon%20SELPHY%20ES3
|
|
|
|
In this example, the SELPHY ES1 is using the correct gutenprint backend, but
|
|
the ES3 is using the incorrect 'usb' backend. In order for the ES3 to
|
|
function properly, you need to configure it to use the correct backend.
|
|
|
|
The most expedient way to accomplish this is to remove the printer via your
|
|
system's printer configuration interface, then manually add a new one, taking
|
|
care to select the correct backend ("gutenprint52+usb"). This backend name
|
|
is present in the device URI for the printer, as demonstrated in the above
|
|
example. An alternative to the system printer configuration interface is to
|
|
use your local system's CUPS web interface, if it is enabled. Step-by-step
|
|
instructions for using any of these interfaces is beyond the scope of this
|
|
document.
|
|
|
|
Once the printer is properly configured, this backend will be automatically
|
|
invoked as needed; the user will never invoke the backend directly.
|
|
|
|
***************************************************************************
|
|
|
|
This backend also supports a "standalone" mode that performs various
|
|
utility functions for selected printers, such as querying status.
|
|
The exact commands supported for each printer are documented below.
|
|
|
|
***************************************************************************
|
|
Compilation:
|
|
|
|
You will need libusbx to build this tool.
|
|
|
|
Fedora/RedHat:
|
|
yum install libusbx-devel
|
|
Debian/Ubuntu
|
|
apt-get install libusbx-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:
|
|
|
|
BACKEND=backend \
|
|
gutenprint52+usb [ args ]
|
|
|
|
(OR)
|
|
|
|
backend [ args ]
|
|
|
|
That said, all internal backends support these invocation options
|
|
|
|
backend filename
|
|
backend - < filename
|
|
somecommand | backend -
|
|
backend [ backend-specific-argument ]
|
|
|
|
The 'filename' here refers to the raw spool data generated by
|
|
Gutenprint (eg via its gimp plugin) or the Windows print-to-file
|
|
output.
|
|
|
|
You can enable full data dumps by defining the DYESUB_DEBUG
|
|
environment variable.
|
|
|
|
If there is more than one device present that the backend handles,
|
|
the backend will choose the first supported device it finds. If you
|
|
wish to specify the specific device when operating in standalone
|
|
mode, set the 'DEVICE' environment variable to the target device's
|
|
serial number. For example:
|
|
|
|
DEVICE=N782 backend filename
|
|
|
|
All backends support an additional operational mode, to test out
|
|
unknown models. To use this mode, specify the VID, PID and its
|
|
type as environment variables. For example:
|
|
|
|
EXTRA_VID=04a9 EXTRA_PID=3ab1 EXTRA_TYPE=3 backend filename
|
|
|
|
EXTRA_VID is the USB VID, in hex
|
|
EXTRA_PID is the USB PID, in hex
|
|
EXTRA_TYPE is: 4 for SELPHY CP520/820/910 (or other CP-series model)
|
|
(See P_ANY enum in backend_common.h for more types)
|
|
|
|
If you have a model the spooler doesn't recognize but it works with
|
|
a VID/PID/TYPE specification, please let me know via e-mail.
|
|
|
|
Finally, some backends may 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:
|
|
|
|
ES20, CP-220, CP530, CP600, CP810
|
|
|
|
NOT currently supported by libusb backend: (USB PIDs unknown)
|
|
|
|
CP520, CP820, CP910
|
|
|
|
This backend does not support additional commands
|
|
|
|
***************************************************************************
|
|
BACKEND=kodak1400
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 1400
|
|
Kodak 805
|
|
|
|
This backend supports additional commands:
|
|
|
|
kodak1400 [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-stc 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
|
|
|
|
This backend supports additional commands:
|
|
|
|
kodak6800 [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-qtc filename Query tone curve [1]
|
|
-stc 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 16383
|
|
(ie 14-bit)
|
|
|
|
***************************************************************************
|
|
BACKEND=kodak605
|
|
|
|
Verified supported printers:
|
|
|
|
Kodak 605
|
|
|
|
Valid commands:
|
|
|
|
-qs Query printer status (Not fully decoded yet)
|
|
-qm Query supported media (Not fully decoded yet)
|
|
-stc 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=shinkos2145
|
|
|
|
Verified supported printers:
|
|
|
|
Shinko/Sinfonia CHC-S2145 (aka "S2")
|
|
|
|
Development was 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.
|
|
|
|
This backend supports additional commands:
|
|
|
|
shinkos2145 [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-qs Query printer status
|
|
-qm Query media information
|
|
-qf Query firmware version
|
|
-qe Query Error log
|
|
-qu Query User String
|
|
-qtu filename Query User tone curve (stored in flash) [2]
|
|
-qtc filename Query Current tone curve (stored in RAM) [2]
|
|
-su somestring Set User String to 'somestring'
|
|
-stu filename Set User tone curve (stored in flash) [2]
|
|
-stc filename Set Current tone curve (stored in RAM) [2]
|
|
-pc id Cancel print job 'id' [1]
|
|
-fl Flash printer LEDs for five seconds.
|
|
-ru Reset User tone curve to default [3]
|
|
-rp Reset printer to factory defaults
|
|
-b1 Enable printer control panel buttons
|
|
-b0 Disable printer control panel buttons
|
|
-f Enable fast return [4]
|
|
|
|
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
|
|
'-qs' command, specifically the 'Bank' output.
|
|
|
|
[2] 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] Default printer tone curve is a linear 'val << 3'
|
|
|
|
[4] 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.
|
|
|
|
***************************************************************************
|
|
BACKEND=sonyupdr150
|
|
|
|
Verified supported printers:
|
|
|
|
Sony UP-DR150
|
|
|
|
Theoretically supportable printers: (Unknown USB PID)
|
|
|
|
Sony UP-DR200
|
|
|
|
This backend does not support additional commands
|
|
|
|
***************************************************************************
|
|
BACKEND=mitsu70x
|
|
|
|
NOTE: This backend is not yet present in mainline Gutenprint
|
|
|
|
Theoretically supported printers: (Untested)
|
|
|
|
Mitsubishi CP-D70DW
|
|
Mitsubishi CP-D707DW
|
|
|
|
Theoretically supportable printers: (Unknown USB PID)
|
|
|
|
Mitsubishi CP-K60DW-S
|
|
|
|
This backend supports additional commands:
|
|
|
|
mitsu70x [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-qs Query printer status (Not fully decoded yet)
|
|
|
|
***************************************************************************
|
|
BACKEND=dnpds40
|
|
|
|
Verified supported printers:
|
|
|
|
DNP DS40
|
|
DNP DS80
|
|
|
|
Development was sponsored by:
|
|
|
|
Marco Di Antonio and ilgruppodigitale.com
|
|
|
|
This backend supports additional commands:
|
|
|
|
dnpds40 [command [arg] ]
|
|
|
|
Valid commands:
|
|
|
|
-qs Query printer status
|
|
-qi Query printer info (resolution, etc)
|
|
-qc Query printer counters
|
|
-cca Clear 'A' Counter
|
|
-ccb Clear 'B' Counter
|
|
-ccm Clear 'M' Counter
|
|
-scp num Set 'P' Counter to 'num'
|
|
|