Usblp

From Bashlinux
Revision as of 03:23, 11 June 2015 by Manpaz (talk | contribs) (Created page with "__NOTOC__ === How to enable USB printers (usblp) === The usblp module available at Bashlinux repo has been modified in order to create a usblp device for USB printer Epson M12...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

How to enable USB printers (usblp)

The usblp module available at Bashlinux repo has been modified in order to create a usblp device for USB printer Epson M129 series.

The patch is based on kernel 2.6.21

diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
index 63e50a1..6584cf0 100644
--- a/drivers/usb/class/usblp.c
+++ b/drivers/usb/class/usblp.c
@@ -202,6 +202,7 @@ struct quirk_printer_struct {

 #define USBLP_QUIRK_BIDIR   0x1   /* reports bidir but requires unidirectional mode (no INs/reads) */
 #define USBLP_QUIRK_USB_INIT   0x2   /* needs vendor USB init string */
+#define USBLP_QUIRK_BAD_CLASS   0x4   /* descriptor uses vendor-specific Class or SubClass */

 static const struct quirk_printer_struct quirk_printers[] = {
    { 0x03f0, 0x0004, USBLP_QUIRK_BIDIR }, /* HP DeskJet 895C */
@@ -218,6 +219,7 @@ static const struct quirk_printer_struct quirk_printers[] = {
    { 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */
    { 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
    { 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820, by zut <[email protected]> */
+   { 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt Printer M129C */
    { 0, 0 }
 };

@@ -1048,7 +1050,8 @@ static int usblp_select_alts(struct usblp *usblp)
       ifd = &if_alt->altsetting[i];

       if (ifd->desc.bInterfaceClass != 7 || ifd->desc.bInterfaceSubClass != 1)
-         continue;
+         if (!(usblp->quirks & USBLP_QUIRK_BAD_CLASS))
+            continue; 

       if (ifd->desc.bInterfaceProtocol < USBLP_FIRST_PROTOCOL ||
           ifd->desc.bInterfaceProtocol > USBLP_LAST_PROTOCOL)
@@ -1232,6 +1235,7 @@ static struct usb_device_id usblp_ids [] = {
    { USB_INTERFACE_INFO(7, 1, 1) },
    { USB_INTERFACE_INFO(7, 1, 2) },
    { USB_INTERFACE_INFO(7, 1, 3) },
+   { USB_DEVICE(0x04b8, 0x0202) },   /* Seiko Epson Receipt Printer M129C */
    { }                  /* Terminating entry */
 };

Macros and variables

Some macros and variable names that are being renamed on recent kernel versions

  • Kernel 2.6.35
usb_buffer_alloc => usb_alloc_coherent
usb_buffer_free => usb_free_coherent