--- Begin Message ---
Package: ptouch-driver
Version: 1.3-7
Severity: important
Tags: patch
User: ubuntu-devel@lists.ubuntu.com
Usertags: origin-ubuntu trusty ubuntu-patch
Dear Maintainer,
In Ubuntu, the attached patch was applied to achieve the following:
The attached patch resolves an issue whereby ptouch-driver sends a
QL-specific command (ESC i A "Enable Cutter") to all printers, not just
QL-series devices. This causes printing to fail on the PT-2450DX (with
an Interface Error shown on the panel) and probably other printers in
the Brother P-Touch series too.
* Add patch send-esc-i-A-for-QL-only.patch
Thanks for considering the patch.
-- System Information:
Debian Release: wheezy/sid
APT prefers saucy-updates
APT policy: (500, 'saucy-updates'), (500, 'saucy-security'), (500, 'saucy'), (100, 'saucy-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.11.0-17-generic (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
=== modified file '.pc/applied-patches'
--- .pc/applied-patches 2011-08-29 12:27:35 +0000
+++ .pc/applied-patches 2014-03-04 22:51:59 +0000
@@ -1,2 +1,3 @@
foomatic-data-fixes.patch
send-esc-i-A.patch
+send-esc-i-A-for-QL-only.patch
=== modified file 'debian/changelog'
=== modified file 'debian/control'
--- debian/control 2012-09-26 14:34:28 +0000
+++ debian/control 2014-03-04 22:50:44 +0000
@@ -9,7 +9,7 @@
libcups2-dev,
libcupsimage2-dev,
foomatic-db-engine,
- pyppd (>= 0.4.9-6~)
+ pyppd (>= 1.0.1)
Vcs-Git: git://anonscm.debian.org/collab-maint/ptouch-driver.git
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/ptouch-driver.git
Homepage: http://www.diku.dk/hjemmesider/ansatte/panic/P-touch/
=== added file 'debian/patches/send-esc-i-A-for-QL-only.patch'
--- debian/patches/send-esc-i-A-for-QL-only.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/send-esc-i-A-for-QL-only.patch 2014-03-04 20:27:25 +0000
@@ -0,0 +1,50 @@
+Index: ptouch-driver/rastertoptch.c
+===================================================================
+--- ptouch-driver.orig/rastertoptch.c 2014-03-04 20:06:59.000000000 +0000
++++ ptouch-driver/rastertoptch.c 2014-03-04 20:27:19.000000000 +0000
+@@ -685,7 +685,8 @@
+ inline void
+ emit_feed_cut_mirror (bool do_feed, unsigned feed,
+ bool do_cut,
+- bool do_mirror) {
++ bool do_mirror,
++ bool is_ulp) {
+ /* Determine feed nibble */
+ unsigned feed_nibble;
+ if (do_feed) {
+@@ -698,7 +699,14 @@
+ /* Determine mirror print bit*/
+ unsigned char mirror_bit = do_mirror ? 0x80 : 0x00;
+ /* Combine & emit printer command code */
+- putchar (ESC); putchar ('i'); putchar ('A'); putchar ((char) (do_cut ? 0x01 : 0x00));
++ if (is_ulp) {
++ /* ESC i A is Enable Cutter -- used for QL-560 only, according to
++ * <http://www.undocprint.org/formats/page_description_languages/brother_p-touch>
++ * The QL-560 (actually the whole QL series) uses ULP mode, so we check for that.
++ * The PT2450DX uses RLE and throw an INTERFACE ERROR if it sees this command.
++ */
++ putchar (ESC); putchar ('i'); putchar ('A'); putchar ((char) (do_cut ? 0x01 : 0x00));
++ }
+ putchar (ESC); putchar ('i'); putchar ('M');
+ putchar ((char) (feed & 0x1f) | auto_cut_bit | mirror_bit);
+ }
+@@ -807,7 +815,8 @@
+ /* We only know how to feed after each page */
+ emit_feed_cut_mirror (perform_feed == CUPS_ADVANCE_PAGE, feed,
+ cut_media == CUPS_CUT_PAGE,
+- mirror == CUPS_TRUE);
++ mirror == CUPS_TRUE,
++ job_options->pixel_xfer == ULP);
+ /* Set media and quality if label preamble is requested */
+ unsigned page_size_y = new_page_options->page_size [1];
+ unsigned image_height_px = lrint (page_size_y * vres / 72.0);
+@@ -1527,7 +1536,8 @@
+ perform_feed == CUPS_ADVANCE_JOB,
+ new_page_options->feed,
+ cut_media == CUPS_CUT_PAGE || cut_media == CUPS_CUT_JOB,
+- new_page_options->mirror == CUPS_TRUE);
++ new_page_options->mirror == CUPS_TRUE,
++ job_options->pixel_xfer == ULP);
+ /* Emit eject marker */
+ putchar (PTC_EJECT);
+ }
=== modified file 'debian/patches/series'
--- debian/patches/series 2010-09-13 10:00:00 +0000
+++ debian/patches/series 2014-03-04 22:51:47 +0000
@@ -1,2 +1,3 @@
foomatic-data-fixes.patch
send-esc-i-A.patch
+send-esc-i-A-for-QL-only.patch
=== modified file 'rastertoptch.c'
--- rastertoptch.c 2011-08-29 12:27:35 +0000
+++ rastertoptch.c 2014-03-04 22:51:59 +0000
@@ -685,7 +685,8 @@
inline void
emit_feed_cut_mirror (bool do_feed, unsigned feed,
bool do_cut,
- bool do_mirror) {
+ bool do_mirror,
+ bool is_ulp) {
/* Determine feed nibble */
unsigned feed_nibble;
if (do_feed) {
@@ -698,7 +699,14 @@
/* Determine mirror print bit*/
unsigned char mirror_bit = do_mirror ? 0x80 : 0x00;
/* Combine & emit printer command code */
- putchar (ESC); putchar ('i'); putchar ('A'); putchar ((char) (do_cut ? 0x01 : 0x00));
+ if (is_ulp) {
+ /* ESC i A is Enable Cutter -- used for QL-560 only, according to
+ * <http://www.undocprint.org/formats/page_description_languages/brother_p-touch>
+ * The QL-560 (actually the whole QL series) uses ULP mode, so we check for that.
+ * The PT2450DX uses RLE and throw an INTERFACE ERROR if it sees this command.
+ */
+ putchar (ESC); putchar ('i'); putchar ('A'); putchar ((char) (do_cut ? 0x01 : 0x00));
+ }
putchar (ESC); putchar ('i'); putchar ('M');
putchar ((char) (feed & 0x1f) | auto_cut_bit | mirror_bit);
}
@@ -807,7 +815,8 @@
/* We only know how to feed after each page */
emit_feed_cut_mirror (perform_feed == CUPS_ADVANCE_PAGE, feed,
cut_media == CUPS_CUT_PAGE,
- mirror == CUPS_TRUE);
+ mirror == CUPS_TRUE,
+ job_options->pixel_xfer == ULP);
/* Set media and quality if label preamble is requested */
unsigned page_size_y = new_page_options->page_size [1];
unsigned image_height_px = lrint (page_size_y * vres / 72.0);
@@ -1527,7 +1536,8 @@
perform_feed == CUPS_ADVANCE_JOB,
new_page_options->feed,
cut_media == CUPS_CUT_PAGE || cut_media == CUPS_CUT_JOB,
- new_page_options->mirror == CUPS_TRUE);
+ new_page_options->mirror == CUPS_TRUE,
+ job_options->pixel_xfer == ULP);
/* Emit eject marker */
putchar (PTC_EJECT);
}
--- End Message ---