linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeremy Nickurak <atrus@sf.spam.rifetech.com>
To: linux-hotplug@vger.kernel.org
Subject: udev and Logitech Elite USB keyboard
Date: Mon, 01 May 2006 21:17:08 +0000	[thread overview]
Message-ID: <20060501211708.GA24629@agaeris.rifetech.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 7891 bytes --]

I'm having some trouble with udev under debian sid, as discussed at http:/bugs.debian.org/365444 .

I'm using a Logitech Elite USB keyboard. which has several additional buttons, as well as a mouse scroll-wheel, which appears as a usb mouse. The evdev node for the keyboard works mostly, but missing some keyboard keys.

The missing keys, as well as the scroll wheel, show up under the mouse's evdev node. Some of them show up as mouse buttons, some of them as keyboard keys.

I had problems with debian's persistent-input.rules, which looks for a keyboard with SYSFS{bInterfaceProtocol}=="01" (which works fine), and a mouse with SYSFS{bInterfaceProtocol}=="02". This fails, as the mouse/keyboard device has  SYSFS{bInterfaceProtocol}=="00".

I've also had substantial trouble writing my own custom rule that reliably matches this model's hardware, and sees the evdev nodes for the mouse and scroller seperate, because afaict, the information required to do so spans two sysfs sections.

MD suggested I ask here for further information:
> Are you sure that this is really the mouse device and not something else
> this keyboard provides? Do you get only these two devices when you
> connect the keyboard? We probably can't assume that "00" is a mouse, cause
> according the HID spec it mean "no protocol" which can be anything. We may
> need to work around this, but I don't know what's the right fix here.

Any help would be appreciated.

The SYSFS info for the two evdev devices is as follows:

Keyboard:

atrus@agaeris:~$ udevinfo -a -p /class/input/input1/event1

udevinfo starts with the device the node belongs to and then walks up the
device chain, to print for every device found, all possibly useful attributes
in the udev key format.
Only attributes within one device section may be used together in one rule,
to match the device for which the node will be created.

  looking at device '/class/input/input1/event1':
    KERNEL=="event1"
    SUBSYSTEM=="input"
    SYSFS{dev}=="13:65"

  looking at device '/class/input/input1':
    ID=="input1"
    BUS=="input"
    DRIVER==""
    SYSFS{uniq}==""
    SYSFS{phys}=="usb-0000:00:07.2-1/input0"
    SYSFS{name}=="Logitech Logitech USB Keyboard"

  looking at device '/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1:1.0':
    ID=="1-1:1.0"
    BUS=="usb"
    DRIVER=="usbhid"
    SYSFS{modalias}=="usb:v046DpC30Ad1500dc00dsc00dp00ic03isc01ip01"
    SYSFS{bInterfaceProtocol}=="01"
    SYSFS{bInterfaceSubClass}=="01"
    SYSFS{bInterfaceClass}=="03"
    SYSFS{bNumEndpoints}=="01"
    SYSFS{bAlternateSetting}==" 0"
    SYSFS{bInterfaceNumber}=="00"

  looking at device '/devices/pci0000:00/0000:00:07.2/usb1/1-1':
    ID=="1-1"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{product}=="Logitech USB Keyboard"
    SYSFS{manufacturer}=="Logitech"
    SYSFS{maxchild}=="0"
    SYSFS{version}==" 1.10"
    SYSFS{devnum}=="2"
    SYSFS{speed}=="1.5"
    SYSFS{bMaxPacketSize0}=="8"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bDeviceClass}=="00"
    SYSFS{bcdDevice}=="1500"
    SYSFS{idProduct}=="c30a"
    SYSFS{idVendor}=="046d"
    SYSFS{bMaxPower}=="100mA"
    SYSFS{bmAttributes}=="a0"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 2"

  looking at device '/devices/pci0000:00/0000:00:07.2/usb1':
    ID=="usb1"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{serial}=="0000:00:07.2"
    SYSFS{product}=="UHCI Host Controller"
    SYSFS{manufacturer}=="Linux 2.6.16 uhci_hcd"
    SYSFS{maxchild}=="2"
    SYSFS{version}==" 1.10"
    SYSFS{devnum}=="1"
    SYSFS{speed}=="12"
    SYSFS{bMaxPacketSize0}=="64"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bDeviceClass}=="09"
    SYSFS{bcdDevice}=="0206"
    SYSFS{idProduct}=="0000"
    SYSFS{idVendor}=="0000"
    SYSFS{bMaxPower}=="  0mA"
    SYSFS{bmAttributes}=="c0"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 1"

  looking at device '/devices/pci0000:00/0000:00:07.2':
    ID=="0000:00:07.2"
    BUS=="pci"
    DRIVER=="uhci_hcd"
    SYSFS{modalias}=="pci:v00001106d00003038sv00000925sd00001234bc0Csc03i00"
    SYSFS{local_cpus}=="1"
    SYSFS{irq}=="12"
    SYSFS{class}=="0x0c0300"
    SYSFS{subsystem_device}=="0x1234"
    SYSFS{subsystem_vendor}=="0x0925"
    SYSFS{device}=="0x3038"
    SYSFS{vendor}=="0x1106"

  looking at device '/devices/pci0000:00':
    ID=="pci0000:00"
    BUS==""
    DRIVER==""


Scroll wheel:
 
atrus@agaeris:~$ udevinfo -a -p /class/input/input2/event2

udevinfo starts with the device the node belongs to and then walks up the
device chain, to print for every device found, all possibly useful attributes
in the udev key format.
Only attributes within one device section may be used together in one rule,
to match the device for which the node will be created.

  looking at device '/class/input/input2/event2':
    KERNEL=="event2"
    SUBSYSTEM=="input"
    SYSFS{dev}=="13:66"

  looking at device '/class/input/input2':
    ID=="input2"
    BUS=="input"
    DRIVER==""
    SYSFS{uniq}==""
    SYSFS{phys}=="usb-0000:00:07.2-1/input1"
    SYSFS{name}=="Logitech Logitech USB Keyboard"

  looking at device '/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1:1.1':
    ID=="1-1:1.1"
    BUS=="usb"
    DRIVER=="usbhid"
    SYSFS{modalias}=="usb:v046DpC30Ad1500dc00dsc00dp00ic03isc00ip00"
    SYSFS{bInterfaceProtocol}=="00"
    SYSFS{bInterfaceSubClass}=="00"
    SYSFS{bInterfaceClass}=="03"
    SYSFS{bNumEndpoints}=="01"
    SYSFS{bAlternateSetting}==" 0"
    SYSFS{bInterfaceNumber}=="01"

  looking at device '/devices/pci0000:00/0000:00:07.2/usb1/1-1':
    ID=="1-1"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{product}=="Logitech USB Keyboard"
    SYSFS{manufacturer}=="Logitech"
    SYSFS{maxchild}=="0"
    SYSFS{version}==" 1.10"
    SYSFS{devnum}=="2"
    SYSFS{speed}=="1.5"
    SYSFS{bMaxPacketSize0}=="8"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bDeviceClass}=="00"
    SYSFS{bcdDevice}=="1500"
    SYSFS{idProduct}=="c30a"
    SYSFS{idVendor}=="046d"
    SYSFS{bMaxPower}=="100mA"
    SYSFS{bmAttributes}=="a0"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 2"

  looking at device '/devices/pci0000:00/0000:00:07.2/usb1':
    ID=="usb1"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{serial}=="0000:00:07.2"
    SYSFS{product}=="UHCI Host Controller"
    SYSFS{manufacturer}=="Linux 2.6.16 uhci_hcd"
    SYSFS{maxchild}=="2"
    SYSFS{version}==" 1.10"
    SYSFS{devnum}=="1"
    SYSFS{speed}=="12"
    SYSFS{bMaxPacketSize0}=="64"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bDeviceClass}=="09"
    SYSFS{bcdDevice}=="0206"
    SYSFS{idProduct}=="0000"
    SYSFS{idVendor}=="0000"
    SYSFS{bMaxPower}=="  0mA"
    SYSFS{bmAttributes}=="c0"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 1"

  looking at device '/devices/pci0000:00/0000:00:07.2':
    ID=="0000:00:07.2"
    BUS=="pci"
    DRIVER=="uhci_hcd"
    SYSFS{modalias}=="pci:v00001106d00003038sv00000925sd00001234bc0Csc03i00"
    SYSFS{local_cpus}=="1"
    SYSFS{irq}=="12"
    SYSFS{class}=="0x0c0300"
    SYSFS{subsystem_device}=="0x1234"
    SYSFS{subsystem_vendor}=="0x0925"
    SYSFS{device}=="0x3038"
    SYSFS{vendor}=="0x1106"

  looking at device '/devices/pci0000:00':
    ID=="pci0000:00"
    BUS==""
    DRIVER==""





-- 
Jeremy Nickurak -= Email/Jabber: atrus@rifetech.com =-

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

                 reply	other threads:[~2006-05-01 21:17 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060501211708.GA24629@agaeris.rifetech.com \
    --to=atrus@sf.spam.rifetech.com \
    --cc=linux-hotplug@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).