Re: ...but this USB device is more than a printer!
On 10/04/10 00:35, Julian Elischer wrote: 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: at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x bDeviceSubClass = 0x bDeviceProtocol = 0x bMaxPacketSize0 = 0x0008 idVendor = 0x04e8 idProduct = 0x3413 bcdDevice = 0x0100 iManufacturer = 0x0001 iProduct = 0x0002 iSerialNumber = 0x0003<8J21BAKYB28091W.> bNumConfigurations = 0x0001 #* and here's the output from "usbconfig dump_curr_config_desc" #* ugen0.3: 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 = 0x bmAttributes = 0x00c0 bMaxPower = 0x Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x bAlternateSetting = 0x bNumEndpoints = 0x0002 bInterfaceClass = 0x0007 bInterfaceSubClass = 0x0001 bInterfaceProtocol = 0x0002 iInterface = 0x Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0003 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x #* 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. Thank you for the feedback. Later I inspected pieces of code in SANE and, as I don't have pure printers, I let it grab this device as a candidate for scanning. As any expert would expect (I suppose), I got an I/O error when a SANE backend (xerox_mfp*), using libusb, tried to start scanning. d * it is reported to work with Samsung SCX-4200, that seems not to differ from SCX-4100 at least for printing. ___ 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"
Re: ...but this USB device is more than a printer!
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: at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x bDeviceSubClass = 0x bDeviceProtocol = 0x bMaxPacketSize0 = 0x0008 idVendor = 0x04e8 idProduct = 0x3413 bcdDevice = 0x0100 iManufacturer = 0x0001 iProduct = 0x0002 iSerialNumber = 0x0003<8J21BAKYB28091W.> bNumConfigurations = 0x0001 #* and here's the output from "usbconfig dump_curr_config_desc" #* ugen0.3: 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 = 0x bmAttributes = 0x00c0 bMaxPower = 0x Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x bAlternateSetting = 0x bNumEndpoints = 0x0002 bInterfaceClass = 0x0007 bInterfaceSubClass = 0x0001 bInterfaceProtocol = 0x0002 iInterface = 0x Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0003 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x #* 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"
Re: ...but this USB device is more than a printer!
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: at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x bDeviceSubClass = 0x bDeviceProtocol = 0x bMaxPacketSize0 = 0x0008 idVendor = 0x04e8 idProduct = 0x3413 bcdDevice = 0x0100 iManufacturer = 0x0001 iProduct = 0x0002 iSerialNumber = 0x0003<8J21BAKYB28091W.> bNumConfigurations = 0x0001 #* and here's the output from "usbconfig dump_curr_config_desc" #* ugen0.3: 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 = 0x bmAttributes = 0x00c0 bMaxPower = 0x Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x bAlternateSetting = 0x bNumEndpoints = 0x0002 bInterfaceClass = 0x0007 bInterfaceSubClass = 0x0001 bInterfaceProtocol = 0x0002 iInterface = 0x Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0003 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x #* 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@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"
Re: ...but this USB device is more than a printer!
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: at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x bDeviceSubClass = 0x bDeviceProtocol = 0x bMaxPacketSize0 = 0x0008 idVendor = 0x04e8 idProduct = 0x3413 bcdDevice = 0x0100 iManufacturer = 0x0001 iProduct = 0x0002 iSerialNumber = 0x0003<8J21BAKYB28091W.> bNumConfigurations = 0x0001 #* and here's the output from "usbconfig dump_curr_config_desc" #* ugen0.3: 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 = 0x bmAttributes = 0x00c0 bMaxPower = 0x Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x bAlternateSetting = 0x bNumEndpoints = 0x0002 bInterfaceClass = 0x0007 bInterfaceSubClass = 0x0001 bInterfaceProtocol = 0x0002 iInterface = 0x Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0003 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x #* 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 ___ 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"
Re: ...but this USB device is more than a printer!
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: at usbus0, cfg=0 md=HOST > spd=FULL (12Mbps) pwr=ON > >bLength = 0x0012 >bDescriptorType = 0x0001 >bcdUSB = 0x0110 >bDeviceClass = 0x >bDeviceSubClass = 0x >bDeviceProtocol = 0x >bMaxPacketSize0 = 0x0008 >idVendor = 0x04e8 >idProduct = 0x3413 >bcdDevice = 0x0100 >iManufacturer = 0x0001 >iProduct = 0x0002 >iSerialNumber = 0x0003 <8J21BAKYB28091W.> >bNumConfigurations = 0x0001 > #* > > and here's the output from "usbconfig dump_curr_config_desc" > > #* > ugen0.3: 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 = 0x > bmAttributes = 0x00c0 > bMaxPower = 0x > > Interface 0 >bLength = 0x0009 >bDescriptorType = 0x0004 >bInterfaceNumber = 0x >bAlternateSetting = 0x >bNumEndpoints = 0x0002 >bInterfaceClass = 0x0007 >bInterfaceSubClass = 0x0001 >bInterfaceProtocol = 0x0002 >iInterface = 0x > > Endpoint 0 > bLength = 0x0007 > bDescriptorType = 0x0005 > bEndpointAddress = 0x0003 > bmAttributes = 0x0002 > wMaxPacketSize = 0x0040 > bInterval = 0x > bRefresh = 0x > bSynchAddress = 0x > > Endpoint 1 > bLength = 0x0007 > bDescriptorType = 0x0005 > bEndpointAddress = 0x0081 > bmAttributes = 0x0002 > wMaxPacketSize = 0x0040 > bInterval = 0x > bRefresh = 0x > bSynchAddress = 0x > #* > > 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 ___ 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"
...but this USB device is more than a printer!
Hi all, I'll go straight to the point. Here's the output from "usbconfig dump_device_desc" #* ugen0.3: at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x bDeviceSubClass = 0x bDeviceProtocol = 0x bMaxPacketSize0 = 0x0008 idVendor = 0x04e8 idProduct = 0x3413 bcdDevice = 0x0100 iManufacturer = 0x0001 iProduct = 0x0002 iSerialNumber = 0x0003 <8J21BAKYB28091W.> bNumConfigurations = 0x0001 #* and here's the output from "usbconfig dump_curr_config_desc" #* ugen0.3: 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 = 0x bmAttributes = 0x00c0 bMaxPower = 0x Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x bAlternateSetting = 0x bNumEndpoints = 0x0002 bInterfaceClass = 0x0007 bInterfaceSubClass = 0x0001 bInterfaceProtocol = 0x0002 iInterface = 0x Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0003 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x bRefresh = 0x bSynchAddress = 0x #* 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 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"