Reverse Engineering a printer's USB Protocol

Oct 29, 2006 3 Replies

I have an old 486 linux box that I use for some serial rs232 data logging. I also have an *old* canon printer that worked with windows,that Id like to use with the logger, but it doesnt have any linux drivers.



So, I would like to make a linux driver for it, but Im not a usb expert... would such a project be too lofty a goal?? Is it reasonable to think that the protocol could be extracted and implemented in linux?? If not, how are (usb) windows device drivers normally ported to linux?



Just poking around, Ive installed some evaluation versions of software based usb analyzers, and have sent over a paper feed, reset, etc, and monitored the traffic spurts, although Im not exactly sure what Im looking at (or if its even meaningful)... if I posted some of the traffic I see, would someone be able to point me in the right direction as to how to proceed?



Thanks! Ben



Old and USB sounds strange.

If the printer is really old, it should contain a real character generator ROM, so you just send ASCII characters to it.

However, most new cheap printers are just WinPrinters without a character generator ROM and the driver is running on Windows is generating the bit maps and send them to printer. The bit map protocol is often proprietary and kept secret, so these printers are only usable with Windows machines, unless the printer manufacturer supplies the driver to other operating systems (unlikely).

Paul

I've taken to using an old windows2000 machine to handle this. I have the normal vendor-supplied driver installed. Then I create a postscript printer, loop it through ghostview which then outputs to the windows printer. It works pretty good and now any platform (even ones that don't know anything _but_ postscript) can use the printer.

Next time, however, I will probably not buy an HP.

There is a device called "kitty usb bus analyzer", I know of, that might help. (I never used it.)

-Michael

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required