...but this USB device is more than a printer!

Julian Elischer julian at freebsd.org
Sun Oct 3 22:47:04 UTC 2010


  On 10/3/10 1:19 AM, Hans Petter Selasky wrote:
> On Sunday 03 October 2010 01:19:18 dan wrote:
>> Hi all,
>>
>> I'll go straight to the point.
>> Here's  the output from "usbconfig dump_device_desc"
>>
>> #*
>> ugen0.3:<Samsung SCX-4100 Series Samsung>  at usbus0, cfg=0 md=HOST
>> spd=FULL (12Mbps) pwr=ON
>>
>>     bLength = 0x0012
>>     bDescriptorType = 0x0001
>>     bcdUSB = 0x0110
>>     bDeviceClass = 0x0000
>>     bDeviceSubClass = 0x0000
>>     bDeviceProtocol = 0x0000
>>     bMaxPacketSize0 = 0x0008
>>     idVendor = 0x04e8
>>     idProduct = 0x3413
>>     bcdDevice = 0x0100
>>     iManufacturer = 0x0001<Samsung>
>>     iProduct = 0x0002<Samsung SCX-4100 Series>
>>     iSerialNumber = 0x0003<8J21BAKYB28091W.>
>>     bNumConfigurations = 0x0001
>> #*
>>
>> and here's the output from "usbconfig dump_curr_config_desc"
>>
>> #*
>> ugen0.3:<Samsung SCX-4100 Series Samsung>  at usbus0, cfg=0 md=HOST
>> spd=FULL (12Mbps) pwr=ON
>>
>>
>>    Configuration index 0
>>
>>       bLength = 0x0009
>>       bDescriptorType = 0x0002
>>       wTotalLength = 0x0020
>>       bNumInterfaces = 0x0001
>>       bConfigurationValue = 0x0001
>>       iConfiguration = 0x0000<no string>
>>       bmAttributes = 0x00c0
>>       bMaxPower = 0x0000
>>
>>       Interface 0
>>         bLength = 0x0009
>>         bDescriptorType = 0x0004
>>         bInterfaceNumber = 0x0000
>>         bAlternateSetting = 0x0000
>>         bNumEndpoints = 0x0002
>>         bInterfaceClass = 0x0007
>>         bInterfaceSubClass = 0x0001
>>         bInterfaceProtocol = 0x0002
>>         iInterface = 0x0000<no string>
>>
>>        Endpoint 0
>>           bLength = 0x0007
>>           bDescriptorType = 0x0005
>>           bEndpointAddress = 0x0003<OUT>
>>           bmAttributes = 0x0002<BULK>
>>           wMaxPacketSize = 0x0040
>>           bInterval = 0x0000
>>           bRefresh = 0x0000
>>           bSynchAddress = 0x0000
>>
>>        Endpoint 1
>>           bLength = 0x0007
>>           bDescriptorType = 0x0005
>>           bEndpointAddress = 0x0081<IN>
>>           bmAttributes = 0x0002<BULK>
>>           wMaxPacketSize = 0x0040
>>           bInterval = 0x0000
>>           bRefresh = 0x0000
>>           bSynchAddress = 0x0000
>> #*
>>
>> Userland software, such as sane-find-scanner, is currently sure this is
>> is just a printer. I would like this device to introduce itself for what
>> it is ... a printer + a color scanner.
>> Is it feasible? Are there any well-established techniques to (try to)
>> reach the goal?
>>
>> Thanks for any link/suggestion
>>
> Hi,
>
> Maybe you have to switch some button on the printer. Only one driver can use a
> set of IN and OUT endpoints at a time in an interface. Maybe the original
> driver has a multiplexer on top?
I've seen quite a bit of this sort of thing.
usually there are separate interface descriptors (can we handle that?) 
but I've also seen examples of this
where there appear to be setups that would normally require a separate 
driver.
maybe there should be a way to split out an endpoint and provide it 
with a virtual separate interface.
(speaking in USB terms)

> --HPS
> _______________________________________________
> freebsd-usb at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-usb
> To unsubscribe, send any mail to "freebsd-usb-unsubscribe at freebsd.org"
>



More information about the freebsd-usb mailing list