<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - udev 208 classifying USB Pro Pedals (CH Products) as ID_INPUT_ACCELEROMETER"
href="https://bugs.freedesktop.org/show_bug.cgi?id=81889">81889</a>
</td>
</tr>
<tr>
<th>Assignee</th>
<td>systemd-bugs@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Summary</th>
<td>udev 208 classifying USB Pro Pedals (CH Products) as ID_INPUT_ACCELEROMETER
</td>
</tr>
<tr>
<th>QA Contact</th>
<td>systemd-bugs@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Reporter</th>
<td>twhitehead@gmail.com
</td>
</tr>
<tr>
<th>Hardware</th>
<td>Other
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Component</th>
<td>general
</td>
</tr>
<tr>
<th>Product</th>
<td>systemd
</td>
</tr></table>
<p>
<div>
<pre>I'm running Debian testing systemd 208-6 amd64 and have run into a problem.
The permissions under /dev/input are being set by udev such that the logged in
user can access the USB CH Products Flight Yoke but not their Pro Pedals.
$ lsusb
...
Bus 004 Device 003: ID 068e:00f2 CH Products, Inc. Flight Sim Pedals
...
Bus 003 Device 006: ID 068e:00ff CH Products, Inc. Flight Sim Yoke
...
$ lsinput
...
/dev/input/event15
bustype : BUS_USB
vendor : 0x68e
product : 0xf2
version : 256
name : "CH PRODUCTS CH PRO PEDALS USB "
phys : "usb-0000:00:1d.1-1/input0"
uniq : ""
bits ev : EV_SYN EV_ABS
/dev/input/event16
bustype : BUS_USB
vendor : 0x68e
product : 0xff
version : 256
name : "CH PRODUCTS CH FLIGHT SIM YOKE U"
phys : "usb-0000:00:1d.0-1/input0"
uniq : ""
bits ev : EV_SYN EV_KEY EV_ABS EV_MSC
$ ls -l /dev/input/event{15,16}
crw------- 1 root root 13, 79 Jul 29 20:59 /dev/input/event15
crw-rw----+ 1 root root 13, 80 Jul 29 20:58 /dev/input/event16
After digging around a bit, I've come to the conclusion that the source of the
problem is that the builtin input_id program is classifying the Flight Yoke as
ID_INPUT_JOYSTICK, which triggers udev rules to change the permissions,
$ udevadm info --export-db
...
P:
/devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1:1.0/0003:068E:00FF.0008/input/input35/event16
N: input/event16
S: input/by-id/usb-CH_PRODUCTS_CH_FLIGHT_SIM_YOKE_USB-event-joystick
S: input/by-path/pci-0000:00:1d.0-usb-0:1:1.0-event-joystick
E:
DEVLINKS=/dev/input/by-id/usb-CH_PRODUCTS_CH_FLIGHT_SIM_YOKE_USB-event-joystick
/dev/input/by-path/pci-0000:00:1d.0-usb-0:1:1.0-event-joystick
E: DEVNAME=/dev/input/event16
E:
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1:1.0/0003:068E:00FF.0008/input/input35/event16
E: ID_BUS=usb
E: ID_FOR_SEAT=input-pci-0000_00_1d_0-usb-0_1_1_0
E: ID_INPUT=1
E: ID_INPUT_JOYSTICK=1
E: ID_MODEL=CH_FLIGHT_SIM_YOKE_USB
E: ID_MODEL_ENC=CH\x20FLIGHT\x20SIM\x20YOKE\x20USB\x20
E: ID_MODEL_ID=00ff
E: ID_PATH=pci-0000:00:1d.0-usb-0:1:1.0
E: ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_1_0
E: ID_REVISION=0000
E: ID_SERIAL=CH_PRODUCTS_CH_FLIGHT_SIM_YOKE_USB
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=CH_PRODUCTS
E: ID_VENDOR_ENC=CH\x20PRODUCTS
E: ID_VENDOR_ID=068e
E: MAJOR=13
E: MINOR=80
E: SUBSYSTEM=input
E: TAGS=:seat:uaccess:
E: USEC_INITIALIZED=803708633
...
but the Pro Pedals as ID_INPUT_ACCELEROMETER, which doesn't trigger any udev
rules to change the permissions,
$ udevadm info --export-db
...
P:
/devices/pci0000:00/0000:00:1d.1/usb4/4-1/4-1:1.0/0003:068E:00F2.0007/input/input34
E: ABS=7
E:
DEVPATH=/devices/pci0000:00/0000:00:1d.1/usb4/4-1/4-1:1.0/0003:068E:00F2.0007/input/input34
E: EV=9
E: ID_BUS=usb
E: ID_FOR_SEAT=input-pci-0000_00_1d_1-usb-0_1_1_0
E: ID_INPUT=1
E: ID_INPUT_ACCELEROMETER=1
E: ID_MODEL=CH_PRO_PEDALS_USB
E: ID_MODEL_ENC=CH\x20PRO\x20PEDALS\x20USB\x20
E: ID_MODEL_ID=00f2
E: ID_PATH=pci-0000:00:1d.1-usb-0:1:1.0
E: ID_PATH_TAG=pci-0000_00_1d_1-usb-0_1_1_0
E: ID_REVISION=0000
E: ID_SERIAL=CH_PRODUCTS_CH_PRO_PEDALS_USB
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=CH_PRODUCTS
E: ID_VENDOR_ENC=CH\x20PRODUCTS
E: ID_VENDOR_ID=068e
E: MODALIAS=input:b0003v068Ep00F2e0100-e0,3,kra0,1,2,mlsfw
E: NAME="CH PRODUCTS CH PRO PEDALS USB "
E: PHYS="usb-0000:00:1d.1-1/input0"
E: PRODUCT=3/68e/f2/100
E: PROP=0
E: SUBSYSTEM=input
E: TAGS=:seat:
E: UNIQ=""
E: USEC_INITIALIZED=802906306
The capabilities for the Flight Yoke are
$ for i in
/sys/devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1:1.0/0003:068E:00FF.0008/input/input35/capabilities/*;
do echo -n "${i##*/}: "; cat $i; done
abs: 3001f
ev: 1b
ff: 0
key: fff00000000 0 0 0 0
led: 0
msc: 10
rel: 0
snd: 0
sw: 0
and likewise for the Pro Pedals
$ for i in
/sys//devices/pci0000:00/0000:00:1d.1/usb4/4-1/4-1:1.0/0003:068E:00F2.0007/input/input34/capabilities/*;
do echo -n "${i##*/}: "; cat $i; done
abs: 7
ev: 9
ff: 0
key: 0
led: 0
msc: 0
rel: 0
snd: 0
sw: 0
It seems evident that this trips up the "test_pointers" code in
"udev-builtin-input_id.c"
if (!test_bit (EV_KEY, bitmask_ev)) {
if (test_bit (EV_ABS, bitmask_ev) &&
test_bit (ABS_X, bitmask_abs) &&
test_bit (ABS_Y, bitmask_abs) &&
test_bit (ABS_Z, bitmask_abs))
udev_builtin_add_property(dev, test, "ID_INPUT_ACCELEROMETER",
"1");
return;
}
as just because it has three axis and no buttons doesn't mean it is an
accelerometer (in this case it is a rudder and a pair of of toe bakes). I
would provide a patch, but it is unclear to me what the correct thing to do is.
I imagine it isn't much of a problem for you experts though.
Thanks! -Tyson</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>