Bug#690982: Acknowledgement (Printouts are incomplete)

2012-10-23 Thread Michael Biebl
On 20.10.2012 11:48, Didier 'OdyX' Raboud wrote:
 Hi Michael, and thanks for your very detailed bugreport, it's greatly 
 appreciated.
 
 Without much insight into your specific problem, would the (quite invasive) 
 attached patch solve your problem ? It's the backport of latest upstream 
 CUPS libusb backend over 1.5.3-2.3 .
 
 Le samedi, 20 octobre 2012 01.03:40, Michael Biebl a écrit :
 On a different note: I don't quite understand, by you modprobe the usblp
 module on upgrades, but not in the init script

 If the module is needed, shouldn't you also load it when you reboot?
 If it's not needed, why the modprobe?
 
 Well... As far as I understand it (and I'm a young cups bird), the module 
 should either be loaded by default or on-demand. It has been blacklisted for 
 a 
 while so the postinst ensures that a non-rebooted system upgraded through 
 these versions would get a loaded module. I think (but might be wrong), that 
 the module would otherwise be loaded.

You're right. It seems after a reboot the module was loaded
automatically / on-demand.

 
 Looking forward for the results of the attached patch!

It seems the patch does the trick for me. I get complete printouts
again. Thanks!

For completeness sake, the relevant lsusb output is
Bus 003 Device 008: ID 04a9:1725 Canon, Inc. MP610 ser


Cheers,
Michael


-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?



signature.asc
Description: OpenPGP digital signature


Bug#690982: Acknowledgement (Printouts are incomplete)

2012-10-20 Thread Didier 'OdyX' Raboud
Hi Michael, and thanks for your very detailed bugreport, it's greatly 
appreciated.

Without much insight into your specific problem, would the (quite invasive) 
attached patch solve your problem ? It's the backport of latest upstream 
CUPS libusb backend over 1.5.3-2.3 .

Le samedi, 20 octobre 2012 01.03:40, Michael Biebl a écrit :
 On a different note: I don't quite understand, by you modprobe the usblp
 module on upgrades, but not in the init script
 
 If the module is needed, shouldn't you also load it when you reboot?
 If it's not needed, why the modprobe?

Well... As far as I understand it (and I'm a young cups bird), the module 
should either be loaded by default or on-demand. It has been blacklisted for a 
while so the postinst ensures that a non-rebooted system upgraded through 
these versions would get a loaded module. I think (but might be wrong), that 
the module would otherwise be loaded.

Looking forward for the results of the attached patch!

Cheers, 

OdyX
--- a/backend/usb-libusb.c
+++ b/backend/usb-libusb.c
@@ -70,7 +70,7 @@
 			read_endp,	/* Read endpoint */
 			protocol,	/* Protocol: 1 = Uni-di, 2 = Bi-di. */
 			usblp_attached,	/* usblp kernel module attached? */
-			opened_for_job;	/* Set to 1 by print_device() */
+			reset_after_job; /* Set to 1 by print_device() */
   unsigned int		quirks;		/* Quirks flags */
   struct libusb_device_handle *handle;	/* Open handle to device */
 } usb_printer_t;
@@ -122,6 +122,8 @@
 #define USBLP_QUIRK_USB_INIT	0x2	/* needs vendor USB init string */
 #define USBLP_QUIRK_BAD_CLASS	0x4	/* descriptor uses vendor-specific
 	   Class or SubClass */
+#define USBLP_QUIRK_RESET	0x4000	/* After printing do a reset
+	   for clean-up */
 #define USBLP_QUIRK_NO_REATTACH	0x8000	/* After printing we cannot re-attach
 	   the usblp kernel module */
 
@@ -141,15 +143,41 @@
 	{ 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
 	{ 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820,
 		  by zut ker...@zut.de */
+	{ 0x04a9, 0x10a2, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4200
+			Printer, http://www.cups.org/str.php?L4155 */
+	{ 0x04a9, 0x10b6, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4300
+			Printer, https://bugs.launchpad.net/bugs/1032385 */
+	{ 0x04a9, 0x170c, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP500
+			Printer, https://bugs.launchpad.net/bugs/1032456 */
+	{ 0x04a9, 0x1717, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP510
+			Printer, https://bugs.launchpad.net/bugs/1050009 */
+	{ 0x04a9, 0x173d, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP550
+			Printer, http://www.cups.org/str.php?L4155 */
+	{ 0x04a9, 0x173e, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP560
+			Printer, http://www.cups.org/str.php?L4155 */
+	{ 0x04f9, 0x001a, USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
+		  HL-1430 Laser Printer,
+ https://bugs.launchpad.net/bugs/1038695 */
 	{ 0x04f9, 0x000d, USBLP_QUIRK_BIDIR |
 			  USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
-		  HL-1440 Laser Printer */
+		  HL-1440 Laser Printer,
+ https://bugs.launchpad.net/bugs/1000253 */
+	{ 0x06bc, 0x000b, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp.
+		  Okipage 14ex Printer,
+ https://bugs.launchpad.net/bugs/872483 */
+	{ 0x06bc, 0x01c7, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp. B410d,
+ https://bugs.launchpad.net/bugs/872483 */
 	{ 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt
 		  Printer M129C */
 	{ 0x067b, 0x2305, USBLP_QUIRK_BIDIR |
-			  USBLP_QUIRK_NO_REATTACH },
+			  USBLP_QUIRK_NO_REATTACH |
+	  USBLP_QUIRK_RESET },
 	/* Prolific Technology, Inc. PL2305 Parallel Port
-	   (USB - Parallel adapter) */
+	   (USB - Parallel adapter), https://bugs.launchpad.net/bugs/987485 */
+	{ 0x04e8, 0x, USBLP_QUIRK_RESET }, /* All Samsung devices,
+ https://bugs.launchpad.net/bugs/1032456 */
+	{ 0x0a5f, 0x, USBLP_QUIRK_BIDIR }, /* All Zebra devices,
+ https://bugs.launchpad.net/bugs/1001028 */
 	{ 0, 0 }
 };
 
@@ -256,7 +284,12 @@
   }
 
   g.print_fd = print_fd;
-  g.printer-opened_for_job = 1;
+
+ /*
+  * Some devices need a reset after finishing a job, these devices are
+  * marked with the USBLP_QUIRK_RESET quirk.
+  */
+  g.printer-reset_after_job = (g.printer-quirks  USBLP_QUIRK_RESET ? 1 : 0);
 
  /*
   * If we are printing data from a print driver on stdin, ignore SIGTERM
@@ -772,7 +805,7 @@
 * Reset the device to clean up after the job
 */
 
-if (printer-opened_for_job == 1)
+if (printer-reset_after_job == 1)
 {
   if ((errcode = libusb_reset_device(printer-handle))  0)
 	fprintf(stderr,
@@ -1288,7 +1321,7 @@
   }
 
   printer-usblp_attached = 0;
-  printer-opened_for_job = 0;
+  printer-reset_after_job = 0;
 
   if (verbose)
 fputs(STATE: +connecting-to-device\n, stderr);
@@ -1586,7 +1619,8 @@
   for (i = 0; quirk_printers[i].vendorId; i++)
   {
 if (vendor == quirk_printers[i].vendorId 
-	

Bug#690982: Acknowledgement (Printouts are incomplete)

2012-10-19 Thread Michael Biebl
Some additional information:

I'm using a Canon PIXMA MP610 printer, attached via USB.

So looking through the diff between -1 and -2.3 the patch
debian/patches/usb-backend-further-enhancements.patch might
indeed by the culprit here. Reading through the patch header

 - Added the command line option usb-no-reattach. With the option set
the usblp kernel module does not get reattached after a job has been
printed. Some printers cut off the end of the job or even crash by
re-attaching the module. This is a development/debug mode to test
whether re-attaching was the culprit of a problem. Users should
report such issues so that their printers can get added to the quirk
list.
- USB backend: Do a printer reset after each job, this makes the
Prolific USB - Parallel adapter finally work (LP: #987485) and
makes it unnecessary to blacklist the usblp kernel module for some
printers (LP: #997040).


I've tried  lp -d Canon_MP610_series -o usb-no-reattach=off test.pdf,
but that didn't seem to help.
I'm not sure though, if I have passed the usb-no-reattach option the
right way.

In the kernel I still got an entry like
Oct 20 00:39:39 pluto kernel: [ 2641.104790] usb 1-1.1.3: reset
high-speed USB device number 9 using ehci_hcd



On a different note: I don't quite understand, by you modprobe the usblp
module on upgrades, but not in the init script
.
If the module is needed, shouldn't you also load it when you reboot?
If it's not needed, why the modprobe?

Michael

-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?



signature.asc
Description: OpenPGP digital signature