linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* udev and Logitech Elite USB keyboard
@ 2006-05-01 21:17 Jeremy Nickurak
  0 siblings, 0 replies; only message in thread
From: Jeremy Nickurak @ 2006-05-01 21:17 UTC (permalink / raw)
  To: linux-hotplug

[-- 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 --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-05-01 21:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-01 21:17 udev and Logitech Elite USB keyboard Jeremy Nickurak

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).