Wow your trick save my life :), it works like a charm, it detects now and print very well in cups hehehe, many thanks Alan. The problem i have now it is that i will have to patch any new kernel version with this hack and i will have to admin about 70 Debian machines with different hardware, i think that without debian binary kernels can be like live in the hell. Do you know any way to try that it would be patched in mainstream linux kernel?
Regards, Miguel Angel. El jue, 08-03-2007 a las 13:45 -0500, Alan Stern escribió: > 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