Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 03 Oct 2010 15:35:21 -0700
From:      Julian Elischer <julian@freebsd.org>
To:        dan <glimp@live.com>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: ...but this USB device is more than a printer!
Message-ID:  <4CA90529.6080301@freebsd.org>
In-Reply-To: <BLU0-SMTP103A3A540FC05372CCBB08BDC6B0@phx.gbl>
References:  <BLU0-SMTP11017EECAE4E191CB096840DC6A0@phx.gbl>	<201010031019.20329.hselasky@c2i.net> <BLU0-SMTP103A3A540FC05372CCBB08BDC6B0@phx.gbl>

next in thread | previous in thread | raw e-mail | index | archive | help
  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@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-usb
> To unsubscribe, send any mail to "freebsd-usb-unsubscribe@freebsd.org"
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CA90529.6080301>