211 lines
8.3 KiB
Plaintext
211 lines
8.3 KiB
Plaintext
***************************************************************************
|
|
|
|
Canon SELPHY ES series print assister
|
|
|
|
(c) 2007-2012 Solomon Peachy <pizza@shaftnet.org>
|
|
|
|
The latest version of this program can be found at
|
|
|
|
http://git.shaftnet.org/git/gitweb.cgi?p=selphy_print.git
|
|
|
|
***************************************************************************
|
|
|
|
The SELPHY ES-series printers from Canon requires intelligent buffering
|
|
of the raw print data in order to keep the printer from locking up.
|
|
|
|
Known supported & tested printers:
|
|
|
|
SELPHY ES1, ES2, ES30
|
|
|
|
Supported but untested:
|
|
|
|
SELPHY ES20, ES3
|
|
SELPHY CP10, CP100, CP200, CP220, CP300, CP330, CP400, CP500, CP510,
|
|
CP520, CP530, CP600, CP710, CP720, CP730, CP740, CP750, CP760,
|
|
CP770, CP780
|
|
|
|
NOT currently supported:
|
|
|
|
SELPHY ES40, CP-790
|
|
I need the readback codes for these printers in order to proceed.
|
|
SELPHY CP-810, CP-900
|
|
Currently unknown stream format (and possibly unknown readback codes)
|
|
|
|
***************************************************************************
|
|
Selphy ES1:
|
|
|
|
Init func: 40 00 [typeA] [pgcode] 00 00 00 00 00 00 00 00
|
|
Plane func: 40 01 [typeB] [plane] [length, 32-bit LE] 00 00 00 00
|
|
|
|
TypeA codes are 0x10 for Color papers, 0x20 for B&W papers.
|
|
TypeB codes are 0x01 for Color papers, 0x02 for B&W papers.
|
|
|
|
Plane codes are 0x01, 0x03, 0x07 for Y, M, and C, respectively.
|
|
B&W Jobs have a single plane code of 0x01.
|
|
|
|
'P' papers pgcode of 0x11 and a plane length of 2227456 bytes
|
|
'CP_L' pgcode of 0x12 and a plane length of 1601600 bytes.
|
|
'Card' pgcode of 0x13 and a plane length of 698880 bytes.
|
|
|
|
Readback values seen:
|
|
|
|
02 00 00 00 02 01 [pg] 01 00 00 00 00 [idle, waiting for init seq]
|
|
04 00 00 00 02 01 [pg] 01 00 00 00 00 [init received, not ready..]
|
|
04 00 01 00 02 01 [pg] 01 00 00 00 00 [waiting for Y data]
|
|
04 00 03 00 02 01 [pg] 01 00 00 00 00 [waiting for M data]
|
|
04 00 07 00 02 01 [pg] 01 00 00 00 00 [waiting for C data]
|
|
04 00 00 00 02 01 [pg] 01 00 00 00 00 [all data sent; not ready..]
|
|
05 00 00 00 02 01 [pg] 01 00 00 00 00 [?? transitions to this]
|
|
06 00 00 00 02 01 [pg] 01 00 00 00 00 [?? transitions to this]
|
|
02 00 00 00 02 01 [pg] 01 00 00 00 00 [..transitions back to idle]
|
|
|
|
Known paper types for all ES printers: P, Pbw, C, Cl
|
|
Additional types for ES3/30/40: Pg, Ps
|
|
|
|
Known pg codes: 0x01 -- P-size
|
|
0x03 -- C-size
|
|
|
|
Readbacks for other paper types are currently unknown.
|
|
|
|
P* sizes are 100x148mm "postcards"
|
|
CP_L sizes are 89x119mm "labels"
|
|
Card sizes are 54x86mm "cards"
|
|
|
|
***************************************************************************
|
|
Selphy ES2/20:
|
|
|
|
Init func: 40 00 [pgcode] 00 02 00 00 [type] 00 00 00 [pg2] [length, 32-bit LE]
|
|
Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00
|
|
|
|
Type codes are 0x00 for Color papers, 0x01 for B&W papers.
|
|
|
|
Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively.
|
|
B&W Jobs have a single plane code of 0x01.
|
|
|
|
'P' papers pgcode of 0x01 and a plane length of 2227456 bytes
|
|
'CP_L' pgcode of 0x02 and a plane length of 1601600 bytes.
|
|
'Card' pgcode of 0x03 and a plane length of 698880 bytes.
|
|
|
|
pg2 is 0x00 for all media types except for 'Card', which is 0x01.
|
|
|
|
Readback values seen:
|
|
|
|
02 00 00 00 [pg] 00 [pg2] [xx] 00 00 00 00 [idle, waiting for init seq]
|
|
03 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [init complete, ready for Y]
|
|
04 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? paper loaded]
|
|
05 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? transitions to this]
|
|
06 00 03 00 [pg] 00 [pg2] [xx] 00 00 00 00 [ready for M]
|
|
08 00 03 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? transitions to this]
|
|
09 00 07 00 [pg] 00 [pg2] [xx] 00 00 00 00 [ready for C]
|
|
09 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this]
|
|
0b 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transisions to this]
|
|
0c 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this]
|
|
0f 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this]
|
|
13 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this]
|
|
02 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [back to idle, waiting for init seq]
|
|
|
|
[xx] can be 0x00 or 0xff, depending on if a print job has completed or not.
|
|
|
|
14 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [out of paper/ink]
|
|
14 00 01 00 [pg] 00 [pg2] 00 01 00 00 00 [out of paper/ink]
|
|
|
|
[pg] is: 0x01 for P-paper
|
|
0x03 for C-paper
|
|
|
|
[pg2] is: 0x00 for P-paper
|
|
0x01 for C-paper (label)
|
|
|
|
***************************************************************************
|
|
Selphy ES3/30:
|
|
|
|
Init func: 40 00 [pgcode] [type] 00 00 00 00 00 00 00 00 [length, 32-bit LE]
|
|
Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00
|
|
|
|
End func: 40 20 00 00 00 00 00 00 00 00 00 00
|
|
|
|
Type codes are 0x00 for Color papers, 0x01 for B&W papers.
|
|
|
|
Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively.
|
|
B&W Jobs have a single plane code of 0x01.
|
|
|
|
'P' papers pgcode of 0x01 and a plane length of 2227456 bytes.
|
|
'CP_L' pgcode of 0x02 and a plane length of 1601600 bytes.
|
|
'Card' pgcode of 0x03 and a plane length of 698880 bytes.
|
|
|
|
Readback values seen with standard 'P-Color' and 'C-Label' cartridges:
|
|
|
|
00 ff 00 00 ff ff ff ff 00 00 00 00 [idle, waiting for init seq]
|
|
01 ff 01 00 ff ff ff ff 00 00 00 00 [init complete, ready for Y]
|
|
03 ff 01 00 ff ff ff ff 00 00 00 00 [?]
|
|
03 ff 02 00 ff ff ff ff 00 00 00 00 [ready for M]
|
|
05 ff 02 00 ff ff ff ff 00 00 00 00 [?]
|
|
05 ff 03 00 ff ff ff ff 00 00 00 00 [ready for C]
|
|
07 ff 03 00 ff ff ff ff 00 00 00 00 [?]
|
|
0b ff 03 00 ff ff ff ff 00 00 00 00 [?]
|
|
13 ff 03 00 ff ff ff ff 00 00 00 00 [?]
|
|
00 ff 10 00 ff ff ff ff 00 00 00 00 [done, ready for footer]
|
|
|
|
***************************************************************************
|
|
Selphy ES40:
|
|
|
|
Init func: 40 00 [pgcode] [type] 00 00 00 00 00 00 00 00 [length, 32-bit LE]
|
|
Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00
|
|
|
|
End func: 40 20 00 00 00 00 00 00 00 00 00 00
|
|
|
|
Type codes are 0x00 for Color papers, 0x01 for B&W papers.
|
|
|
|
Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively.
|
|
B&W Jobs have a single plane code of 0x01.
|
|
|
|
'P' papers pgcode of 0x00 and a plane length of 2227456 bytes.
|
|
'CP_L' pgcode of 0x01 and a plane length of 1601600 bytes.
|
|
'Card' pgcode of 0x02 and a plane length of 698880 bytes.
|
|
|
|
Readback codes are unknown.
|
|
|
|
***************************************************************************
|
|
Selphy CP790:
|
|
|
|
Init func: 40 00 [pgcode] 00 00 00 00 00 00 00 00 00 [length, 32-bit LE]
|
|
Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00
|
|
|
|
End func: 40 20 00 00 00 00 00 00 00 00 00 00
|
|
|
|
Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively.
|
|
B&W Jobs have a single plane code of 0x01.
|
|
|
|
'P' papers pgcode of 0x00 and a plane length of 2227456 bytes.
|
|
'CP_L' pgcode of 0x01 and a plane length of 1601600 bytes.
|
|
'Card' pgcode of 0x02 and a plane length of 698880 bytes.
|
|
'Wide' pgcode of 0x03 and a plane length of 2976512 bytes.
|
|
|
|
Readback codes are unknown.
|
|
|
|
***************************************************************************
|
|
Selphy CP-series (except for CP-790, CP-810, CP-900):
|
|
|
|
Init func: 40 00 00 [pgcode] 00 00 00 00 00 00 00 00
|
|
Plane func: 40 01 00 [plane] [length, 32-bit LE] 00 00 00 00
|
|
|
|
plane codes are 0x00, 0x01, 0x02 for Y, M, and C, respectively.
|
|
|
|
'P' paper pgcode 0x01 plane length 2227456 bytes.
|
|
'CP_L' pgcode 0x02 plane length 1601600 bytes.
|
|
'Card' paper pgcode 0x03 plane length 698880 bytes.
|
|
'Wide' paper pgcode 0x04 plane length 2976512 bytes.
|
|
|
|
Known readback values (From a SELPHY CP-760)
|
|
|
|
01 00 00 00 00 00 [pg] 00 00 00 00 00 [idle, waiting for init]
|
|
02 00 00 00 70 00 [pg] 00 00 00 00 00 [waiting for Y data]
|
|
04 00 00 00 00 00 [pg] 00 00 00 00 00 [waiting for M data]
|
|
08 00 00 00 00 00 [pg] 00 00 00 00 00 [waiting for C data]
|
|
10 00 00 00 00 00 [pg] 00 00 00 00 00 [?]
|
|
20 00 00 00 00 00 [pg] 00 00 00 00 00 [?]
|
|
|
|
'P' paper has a code of 0x11
|
|
'CP_L' paper has a code of 0x22
|
|
|
|
Readback codes for other paper types are unknown.
|