...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 3:34 AM, dan wrote:
> 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."
Well they are not multiplexing on a single endpoint, and are using
separate endpoints to do this but they are doing it at the wrong level
in order to keep the entire device under the control of a single
(their) driver rather than have to risk having a separate driver usurp
part of it.
>
> d
> _______________________________________________
> 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