On Thu, 8 Mar 2007, Linos wrote: > lsusb -v shows this for the Epson Printer: > > Bus 002 Device 003: ID 04b8:0202 Seiko Epson Corp. Receipt Printer M129C ... > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 255 Vendor Specific Subclass > bInterfaceProtocol 2
Those values mean this printer uses a vendor-specific communication protocol, not the standard USB printer protocol. As a result, usblp is unwilling to drive it. > ---------------------------------------------------------------------- > > I have been able to do usblp recognize it changing this more lines in > usblp.c. > > > /* Analyze and pick initial alternate settings and endpoints. */ > protocol = usblp_select_alts(usblp); > if (protocol < 0) { > dbg("incompatible printer-class device 0x%4.4X/0x%4.4X", > le16_to_cpu(dev->descriptor.idVendor), > le16_to_cpu(dev->descriptor.idProduct)); > goto abort; > } > > here i change "if (protocol < 0) {" for "if (protocol < -2000) {" > > ---------------------------------------------------------------------- > > /* Setup the selected alternate setting and endpoints. */ > if (usblp_set_protocol(usblp, protocol) < 0) > goto abort; > > here i change "(usblp_set_protocol(usblp, protocol) < 0)" for > "(usblp_set_protocol(usblp, protocol) < -2000)" > > ---------------------------------------------------------------------- No, those are not the right changes to make. I don't know if usblp will work with that printer at all. To find out, you should remove these two lines near the top of usblp_select_alts(): if (ifd->desc.bInterfaceClass != 7 || ifd->desc.bInterfaceSubClass != 1) continue; > when i compile the module and install with insmod dmesg gives me this > output. > > drivers/usb/class/usblp.c: usblp0: USB Unidirectional printer dev 3 if 0 > alt -1 proto 0 vid 0x04B8 pid 0x0202 > usbcore: registered new driver usblp > drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver > > > and i have the "/dev/usb/lp0" device but when i try to print anything. > > > "echo test > /dev/usb/lp0" it fails and gives me this errors in dmesg: > > BUG: unable to handle kernel NULL pointer dereference at virtual address > 00000000 ... > hehehe i would be better long away from kernel code i think :). Probably. :-) Try making the change above and see what happens. Alan Stern ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel