On Fri, Jan 25, 2013 at 03:11:57PM +0100, Stefan Sperling wrote: > If this diff goes > in I'll later add more printers listed at > http://www.openprinting.org/driver/foo2zjs/ > once I've obtained their device IDs.
It seems only 4 HP printers really need this quirk, so that's easy enough to do right away. Device IDs obtained from http://www.linux-usb.org/usb.ids Index: ulpt.c =================================================================== RCS file: /cvs/src/sys/dev/usb/ulpt.c,v retrieving revision 1.40 diff -u -p -r1.40 ulpt.c --- ulpt.c 17 Sep 2011 08:36:06 -0000 1.40 +++ ulpt.c 25 Jan 2013 13:13:58 -0000 @@ -146,6 +146,8 @@ ulpt_match(struct device *parent, void * DPRINTFN(10,("ulpt_match\n")); if (uaa->iface == NULL) return (UMATCH_NONE); + if (usbd_get_quirks(uaa->device)->uq_flags & UQ_BAD_ULTP) + return (UMATCH_NONE); id = usbd_get_interface_descriptor(uaa->iface); if (id != NULL && id->bInterfaceClass == UICLASS_PRINTER && Index: usb_quirks.c =================================================================== RCS file: /cvs/src/sys/dev/usb/usb_quirks.c,v retrieving revision 1.66 diff -u -p -r1.66 usb_quirks.c --- usb_quirks.c 31 Jan 2012 21:13:32 -0000 1.66 +++ usb_quirks.c 25 Jan 2013 14:30:31 -0000 @@ -172,6 +172,12 @@ const struct usbd_quirk_entry { { USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLNOTEBOOK2, ANY, { UQ_MS_BAD_CLASS | UQ_MS_LEADING_BYTE }}, + /* printers that must attach as ugen(4) not ulpt(4) (need firmware download) */ + { USB_VENDOR_HP, USB_PRODUCT_HP_1000, ANY, { UQ_BAD_ULTP }}, + { USB_VENDOR_HP, USB_PRODUCT_HP_1005, ANY, { UQ_BAD_ULTP }}, + { USB_VENDOR_HP, USB_PRODUCT_HP_1018, ANY, { UQ_BAD_ULTP }}, + { USB_VENDOR_HP, USB_PRODUCT_HP_1020, ANY, { UQ_BAD_ULTP }}, + { 0, 0, 0, { 0 } } }; Index: usb_quirks.h =================================================================== RCS file: /cvs/src/sys/dev/usb/usb_quirks.h,v retrieving revision 1.16 diff -u -p -r1.16 usb_quirks.h --- usb_quirks.h 19 Jul 2010 05:08:37 -0000 1.16 +++ usb_quirks.h 25 Jan 2013 13:15:42 -0000 @@ -49,6 +49,7 @@ struct usbd_quirks { #define UQ_MS_LEADING_BYTE 0x00010000 /* mouse sends unknown leading byte */ #define UQ_EHCI_NEEDTO_DISOWN 0x00020000 /* must hand device over to USB 1.1 if attached to EHCI */ +#define UQ_BAD_ULTP 0x00040000 /* printer must be ugen not ulpt */ }; extern const struct usbd_quirks usbd_no_quirk; Index: usbdevs =================================================================== RCS file: /cvs/src/sys/dev/usb/usbdevs,v retrieving revision 1.595 diff -u -p -r1.595 usbdevs --- usbdevs 4 Jan 2013 02:47:46 -0000 1.595 +++ usbdevs 25 Jan 2013 14:29:06 -0000 @@ -2032,6 +2032,7 @@ product HP 5200C 0x0401 Scanjet 5200C product HP 830C 0x0404 DeskJet 830C product HP 3400CSE 0x0405 ScanJet 3400cse product HP 885C 0x0504 DeskJet 885C +product HP 1000 0x0517 LaserJet 1000 product HP 6300C 0x0601 Scanjet 6300C product HP 840C 0x0604 DeskJet 840c product HP 2200C 0x0605 ScanJet 2200C @@ -2043,6 +2044,7 @@ product HP 2215 0x1016 iPAQ 22xx/Jorn product HP 959C 0x1104 Deskjet 959C product HP 568J 0x1116 Jornada 568 product HP 930C 0x1204 DeskJet 930c +product HP 1005 0x1317 LaserJet 1005 product HP P2000U 0x1801 Inkjet P-2000U product HP HS2300 0x1e1d HS2300 product HP T750 0x1f06 T750 UPS @@ -2052,7 +2054,9 @@ product HP RT2200 0x1f0a R/T2200 UPS product HP R1500G2 0x1fe0 R1500 G2 UPS product HP T750G2 0x1fe1 T750 G2 UPS product HP 640C 0x2004 DeskJet 640c +product HP 1020 0x2b17 LaserJet 1020 product HP P1100 0x3102 Photosmart P1100 +product HP 1018 0x4117 LaserJet 1018 product HP HN210E 0x811c HN210E Ethernet /* HP products */ Index: usbdevs.h =================================================================== RCS file: /cvs/src/sys/dev/usb/usbdevs.h,v retrieving revision 1.605 diff -u -p -r1.605 usbdevs.h --- usbdevs.h 4 Jan 2013 02:48:27 -0000 1.605 +++ usbdevs.h 25 Jan 2013 14:29:59 -0000 @@ -2039,6 +2039,7 @@ #define USB_PRODUCT_HP_830C 0x0404 /* DeskJet 830C */ #define USB_PRODUCT_HP_3400CSE 0x0405 /* ScanJet 3400cse */ #define USB_PRODUCT_HP_885C 0x0504 /* DeskJet 885C */ +#define USB_PRODUCT_HP_1000 0x0517 /* LaserJet 1000 */ #define USB_PRODUCT_HP_6300C 0x0601 /* Scanjet 6300C */ #define USB_PRODUCT_HP_840C 0x0604 /* DeskJet 840c */ #define USB_PRODUCT_HP_2200C 0x0605 /* ScanJet 2200C */ @@ -2050,6 +2051,7 @@ #define USB_PRODUCT_HP_959C 0x1104 /* Deskjet 959C */ #define USB_PRODUCT_HP_568J 0x1116 /* Jornada 568 */ #define USB_PRODUCT_HP_930C 0x1204 /* DeskJet 930c */ +#define USB_PRODUCT_HP_1005 0x1317 /* LaserJet 1005 */ #define USB_PRODUCT_HP_P2000U 0x1801 /* Inkjet P-2000U */ #define USB_PRODUCT_HP_HS2300 0x1e1d /* HS2300 */ #define USB_PRODUCT_HP_T750 0x1f06 /* T750 UPS */ @@ -2059,7 +2061,9 @@ #define USB_PRODUCT_HP_R1500G2 0x1fe0 /* R1500 G2 UPS */ #define USB_PRODUCT_HP_T750G2 0x1fe1 /* T750 G2 UPS */ #define USB_PRODUCT_HP_640C 0x2004 /* DeskJet 640c */ +#define USB_PRODUCT_HP_1020 0x2b17 /* LaserJet 1020 */ #define USB_PRODUCT_HP_P1100 0x3102 /* Photosmart P1100 */ +#define USB_PRODUCT_HP_1018 0x4117 /* LaserJet 1018 */ #define USB_PRODUCT_HP_HN210E 0x811c /* HN210E Ethernet */ /* HP products */ Index: usbdevs_data.h =================================================================== RCS file: /cvs/src/sys/dev/usb/usbdevs_data.h,v retrieving revision 1.599 diff -u -p -r1.599 usbdevs_data.h --- usbdevs_data.h 4 Jan 2013 02:48:27 -0000 1.599 +++ usbdevs_data.h 25 Jan 2013 14:29:59 -0000 @@ -4150,6 +4150,10 @@ const struct usb_known_product usb_known "DeskJet 885C", }, { + USB_VENDOR_HP, USB_PRODUCT_HP_1000, + "LaserJet 1000", + }, + { USB_VENDOR_HP, USB_PRODUCT_HP_6300C, "Scanjet 6300C", }, @@ -4194,6 +4198,10 @@ const struct usb_known_product usb_known "DeskJet 930c", }, { + USB_VENDOR_HP, USB_PRODUCT_HP_1005, + "LaserJet 1005", + }, + { USB_VENDOR_HP, USB_PRODUCT_HP_P2000U, "Inkjet P-2000U", }, @@ -4230,8 +4238,16 @@ const struct usb_known_product usb_known "DeskJet 640c", }, { + USB_VENDOR_HP, USB_PRODUCT_HP_1020, + "LaserJet 1020", + }, + { USB_VENDOR_HP, USB_PRODUCT_HP_P1100, "Photosmart P1100", + }, + { + USB_VENDOR_HP, USB_PRODUCT_HP_1018, + "LaserJet 1018", }, { USB_VENDOR_HP, USB_PRODUCT_HP_HN210E,
