From owner-freebsd-usb@FreeBSD.ORG Tue Oct 5 15:05:19 2010 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DFFDB1065674 for ; Tue, 5 Oct 2010 15:05:19 +0000 (UTC) (envelope-from glimp@live.com) Received: from blu0-omc1-s16.blu0.hotmail.com (blu0-omc1-s16.blu0.hotmail.com [65.55.116.27]) by mx1.freebsd.org (Postfix) with ESMTP id A0B898FC1C for ; Tue, 5 Oct 2010 15:05:19 +0000 (UTC) Received: from BLU0-SMTP200 ([65.55.116.9]) by blu0-omc1-s16.blu0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 5 Oct 2010 08:05:19 -0700 X-Originating-IP: [151.49.234.145] X-Originating-Email: [glimp@live.com] Message-ID: Received: from genki.collidiamo.net ([151.49.234.145]) by BLU0-SMTP200.phx.gbl over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Tue, 5 Oct 2010 08:05:17 -0700 Date: Tue, 5 Oct 2010 16:58:16 +0200 From: dan User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.2.9) Gecko/20101005 Thunderbird/3.1.4 MIME-Version: 1.0 To: freebsd-usb@freebsd.org References: <201010031019.20329.hselasky@c2i.net> <4CA90529.6080301@freebsd.org> In-Reply-To: <4CA90529.6080301@freebsd.org> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 05 Oct 2010 15:05:18.0064 (UTC) FILETIME=[B8F18F00:01CB649E] Cc: Subject: Re: ...but this USB device is more than a printer! X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Oct 2010 15:05:20 -0000 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 = 0x0000 >>>> bDeviceSubClass = 0x0000 >>>> bDeviceProtocol = 0x0000 >>>> 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 = 0x0000 >>>> bmAttributes = 0x00c0 >>>> bMaxPower = 0x0000 >>>> >>>> Interface 0 >>>> bLength = 0x0009 >>>> bDescriptorType = 0x0004 >>>> bInterfaceNumber = 0x0000 >>>> bAlternateSetting = 0x0000 >>>> bNumEndpoints = 0x0002 >>>> bInterfaceClass = 0x0007 >>>> bInterfaceSubClass = 0x0001 >>>> bInterfaceProtocol = 0x0002 >>>> iInterface = 0x0000 >>>> >>>> Endpoint 0 >>>> bLength = 0x0007 >>>> bDescriptorType = 0x0005 >>>> bEndpointAddress = 0x0003 >>>> bmAttributes = 0x0002 >>>> wMaxPacketSize = 0x0040 >>>> bInterval = 0x0000 >>>> bRefresh = 0x0000 >>>> bSynchAddress = 0x0000 >>>> >>>> Endpoint 1 >>>> bLength = 0x0007 >>>> bDescriptorType = 0x0005 >>>> bEndpointAddress = 0x0081 >>>> bmAttributes = 0x0002 >>>> 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. 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.