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

dan glimp at live.com
Sun Oct 3 10:41:07 UTC 2010


On 03.10.2010 10:19, 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?
>
> --HPS
>
>
Thanks Hans Petter,

the device has no physical switch anywhere.
Probably multiplexing is involved. It's worth to note then, if I 
understand it correctly, that this device does not follow this 
recommendation I read somewhere:

"Important: Do not implement multiplexing over a single USB channel. 
Software multiplexing is fragile, and the native capabilities of USB 
should be used for communicating with multiple functions."

d


More information about the freebsd-usb mailing list