From owner-freebsd-hackers@FreeBSD.ORG Sat Nov 24 13:24:17 2012 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 564AEF91 for ; Sat, 24 Nov 2012 13:24:17 +0000 (UTC) (envelope-from zeising+freebsd@daemonic.se) Received: from mail.lysator.liu.se (mail.lysator.liu.se [IPv6:2001:6b0:17:f0a0::3]) by mx1.freebsd.org (Postfix) with ESMTP id 87D478FC12 for ; Sat, 24 Nov 2012 13:24:14 +0000 (UTC) Received: from mail.lysator.liu.se (localhost [127.0.0.1]) by mail.lysator.liu.se (Postfix) with ESMTP id A721B40004 for ; Sat, 24 Nov 2012 14:24:12 +0100 (CET) Received: by mail.lysator.liu.se (Postfix, from userid 1004) id 9903A40007; Sat, 24 Nov 2012 14:24:12 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on bernadotte.lysator.liu.se X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.3.1 X-Spam-Score: 0.0 Received: from mx.daemonic.se (h-45-105.a163.priv.bahnhof.se [94.254.45.105]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.lysator.liu.se (Postfix) with ESMTPSA id 94EB240004; Sat, 24 Nov 2012 14:24:10 +0100 (CET) Received: from mailscanner.daemonic.se (mailscanner.daemonic.se [IPv6:2001:470:dca9:0:1::6]) by mx.daemonic.se (Postfix) with ESMTPS id 3Y7w8V1wlSz8hVn; Sat, 24 Nov 2012 14:24:10 +0100 (CET) X-Virus-Scanned: amavisd-new at daemonic.se Received: from mx.daemonic.se ([IPv6:2001:470:dca9:0:1::3]) (using TLS with cipher CAMELLIA256-SHA) by mailscanner.daemonic.se (mailscanner.daemonic.se [IPv6:2001:470:dca9:0:1::6]) (amavisd-new, port 10025) with ESMTPS id bVAqYbpXmHSG; Sat, 24 Nov 2012 14:24:07 +0100 (CET) Received: from mail.daemonic.se (mail.daemonic.se [10.1.0.4]) by mx.daemonic.se (Postfix) with ESMTPS id 3Y7w8R5BgSz8hVm; Sat, 24 Nov 2012 14:24:07 +0100 (CET) Received: from tifa.daemonic.se (tifa.daemonic.se [IPv6:2001:470:dca9:1::6]) by mail.daemonic.se (Postfix) with ESMTPSA id 3Y7w8R49Gnz9Ctj; Sat, 24 Nov 2012 14:24:07 +0100 (CET) Received: from tifa.daemonic.se (localhost [IPv6:::1]) by tifa.daemonic.se (Postfix) with ESMTP id 4607022AFA; Sat, 24 Nov 2012 14:24:07 +0100 (CET) Message-ID: <50B0CA77.90501@daemonic.se> Date: Sat, 24 Nov 2012 14:24:07 +0100 From: Niclas Zeising User-Agent: Mutt/1.5.21 MIME-Version: 1.0 To: Hans Petter Selasky Subject: Re: Questions about USB, uhid, ukbd and quirks References: <50B0001C.6050202@daemonic.se> <50B0BC44.2090609@daemonic.se> <50B0C395.8060809@daemonic.se> <201211241419.29050.hselasky@c2i.net> In-Reply-To: <201211241419.29050.hselasky@c2i.net> Content-Type: multipart/mixed; boundary="------------060407040706040803090501" X-Virus-Scanned: ClamAV using ClamSMTP Cc: freebsd-hackers@freebsd.org X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Nov 2012 13:24:17 -0000 This is a multi-part message in MIME format. --------------060407040706040803090501 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 11/24/12 14:19, Hans Petter Selasky wrote: > On Saturday 24 November 2012 13:54:45 Niclas Zeising wrote: >> On 11/24/12 13:23, Niclas Zeising wrote: >>> On 11/24/12 13:17, Hans Petter Selasky wrote: >>>> On Saturday 24 November 2012 12:13:49 Hans Petter Selasky wrote: >>>>> On Saturday 24 November 2012 00:00:44 Niclas Zeising wrote: >>>>>> Hi! >>>>>> I have a couple of questions about USB. >>>>>> I recently bought a new USB keyboard, a Logitech K120. When attaching >>>>>> this to a FreeBSD system, however, it is detected as a hid device >>>>>> (attaching to uhid) rather than a keyboard (attaching to ukbd). The >>>>>> keyboard works fine, but I'm just curious as to why it doesn't use >>>>>> ukbd. >>>>> >>>>>> The output from usbconfig for this keyboard is: >>>>> Hi, >>>>> >>>>> It seems the UHID driver needs to be synced with UMS and UKBD >>>>> regarding the >>>>> detection logic. Can you try the attached patch and report back. >>>>> >>>>> --HPS >>>> >>>> One more thing to check: >>>> >>>> /etc/devd/usb.conf >>>> >>>> Is perhaps auto-loading uhid before ukbd, and that might also be part >>>> of the >>>> issue. >>> >>> Hi! >>> Having ukbd in the kernel, and not uhid, makes uhid load as a module >>> during boot and attach to the keyboard, even with your patch. I'm >>> recompiling the kernel now with uhid as part of the kernel to see if it >>> makes a difference. I'm not too confortable hacking /etc/devd/usb.conf, >>> but if you can point me in the right direction I'll have a go at it. >>> Regards! >> >> Having uhid in the kernel did not make a difference, it attached to the >> keyboard (or rather, the keyboard attached to the uhid driver, I guess). >> Regards! > > Could you dump the configuration descriptor of your device using usbconfig? > > usbconfig -d X.Y dump_curr_config_desc > > --HPS Attached patch contains the dump. From my reading of the USB spec, it seems that this keyboard has two interfaces, one that detects as a keyboard, and might be the boot device, and one that's just a regular hid. I might also be very wrong in this. :) I have a dump from a keyboard that only attaches to ukbd, if you need something to compare to. That keyboard, however, believes it's a liteon keyboard, rather than a logitech keyboard. That, however, is probably Logitech's fault. Thank you for helping out! Regards! -- Niclas --------------060407040706040803090501 Content-Type: text/plain; name="usbkeyboard.dump" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="usbkeyboard.dump" ugen2.3: at usbus2, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON Configuration index 0 bLength = 0x0009 bDescriptorType = 0x0002 wTotalLength = 0x003b bNumInterfaces = 0x0002 bConfigurationValue = 0x0001 iConfiguration = 0x0003 bmAttributes = 0x00a0 bMaxPower = 0x002d Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0000 bAlternateSetting = 0x0000 bNumEndpoints = 0x0001 bInterfaceClass = 0x0003 bInterfaceSubClass = 0x0001 bInterfaceProtocol = 0x0001 iInterface = 0x0002 Additional Descriptor bLength = 0x09 bDescriptorType = 0x21 bDescriptorSubType = 0x10 RAW dump: 0x00 | 0x09, 0x21, 0x10, 0x01, 0x00, 0x01, 0x22, 0x41, 0x08 | 0x00 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 bmAttributes = 0x0003 wMaxPacketSize = 0x0008 bInterval = 0x000a bRefresh = 0x0000 bSynchAddress = 0x0000 Interface 1 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0001 bAlternateSetting = 0x0000 bNumEndpoints = 0x0001 bInterfaceClass = 0x0003 bInterfaceSubClass = 0x0000 bInterfaceProtocol = 0x0000 iInterface = 0x0002 Additional Descriptor bLength = 0x09 bDescriptorType = 0x21 bDescriptorSubType = 0x10 RAW dump: 0x00 | 0x09, 0x21, 0x10, 0x01, 0x00, 0x01, 0x22, 0x9f, 0x08 | 0x00 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0082 bmAttributes = 0x0003 wMaxPacketSize = 0x0004 bInterval = 0x00ff bRefresh = 0x0000 bSynchAddress = 0x0000 --------------060407040706040803090501--