[cups.development] RFC: Adding smarts to handle Canon Sephy dyesub printers

Michael Sweet msweet at apple.com
Sun Jan 8 09:46:02 PST 2012


Solomon,

On Jan 7, 2012, at 8:22 AM, Stuffed Crust wrote:
> Michael R Sweet <msweet at apple.com> wrote:
>> You'll need a custom USB backend for this. Future versions of the 
>> libusb-based backend should add support for backchannel data but given 
>> that these printers do not actually correctly implement the USB print 
>> class I doubt that it will help - you backend would seem to need to 
>> know the details of each model... :(
> 
> "Each model" meaning I'd have to explicitly track the USB vendor/model 
> IDs or are you talking about something else?

Right, track the vendor/model IDs (if necessary).

> So going forward it seems that the correct way to proceed is to convert 
> my tool into a proper CUPS filter that assumes proper backchannel 
> support, and fork the current usb-unix backend so that it'll support 
> backchannel operations on the SELPHY printers. 

As I understand it, the SELPHY printers don't actually support the standard USB print class properly and won't work with the usual constant-polling that the standard USB backend will do.  Instead, you have to coordinate reads and writes according to the print data stream. (but then I haven't written a driver or seen the actual specs, I'm just going off of some of the Gutenprint developer list posts on the printers)

> How would I specify to the rest of CUPS to preferentially use the forked 
> backend instead of the standard USB one?

Right now there is no good answer for this - if the printers report themselves as supporting the USB print class they will be reported by the standard USB backend.

Most vendors in this situation provide their own setup application that finds and adds the printer using the custom backend - fragile, but probably the best that can be done at this point...

> Can I assume (for now) that the usb-darwin backend supports the 
> backchannel?  Canon's complete lack of support for 10.7/Lion is what 
> inspired this recent push, and I don't have access to an OSX box of any 
> flavor to test on.

Yes, the OS X USB backend supports backchannel and something called "class drivers" which are dynamically-loaded modules that provide vendor/model-specific USB IO as part of the USB backend.  I've looked at providing something similar for the libusb-based backend but a) we'll need to invent a class driver registration method (OS X has IOKit for that) and b) the class driver model has its issues, too.

_________________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair





More information about the cups-devel mailing list