Multifunction USB devices

Bernd Walter ticso at
Thu Nov 20 03:22:27 PST 2003

On Tue, Nov 18, 2003 at 08:12:49PM -0500, Jeff Walters wrote:
> I have an Epson printer/scanner combo device (CX5200) which works just 
> fine either as a printer or as a scanner (when I add the vendor and 
> product codes to usbdevs and uscanner.c) but not both simultaneously.  
> Currently I compile ulpt and my customized uscanner as modules, and 
> to switch functions I power the device off, unload/load the 
> appropriate kernel module, and power the device back on.
> I'm assuming a patch to add the CX5200 vendor/device codes to usbdevs 
> and uscanner.c in the way I'm doing wouldn't be accepted into CURRENT 
> since the resulting usage of it is a bit of a hack.  Is that right?

The right fix would be to convert uscanner into a function level driver
for scanner combinations - currently it's a device level driver.
ulpt does the right thing.
Compare USB_MATCH and USB_ATTACH functions to get an idea about the
Adding device identification to uscanner is required anyway, because
there is no class definition for scanners.

> I wouldn't mind doing work over the next few months to create proper 
> simultaneous support for both devices if it can be done with a 
> reasonable level of effort and I can find some sources of 
> information, and I can get some guidance from an experienced 
> committer or architect to help do it right the first time.  Where 
> should I go for discussion?  I'd like to learn ie. should I work to 
> combine ulpt and uscanner into some kind of single umulti type of 
> device driver, or should a virtual hub device of some kind be created 
> to support both ulpt and uscanner simultaneously as-is (one USB 
> endpoint, multiple interfaces), or should the system simply continue 
> searching after matching a USB device, or will this be OBE with some 
> other USB work going on, etc.

B.Walter                   BWCT      
ticso at                                  info at

More information about the freebsd-current mailing list