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-unsubscr...@freebsd.org"


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

Reply via email to