[Bug 1057824] Re: USB input device interfaces compete for the same symlink name in 60-persistent-input.rules
a7x
1057824 at bugs.launchpad.net
Fri Sep 28 16:39:02 UTC 2012
I'm attaching a debdiff for Quantal that contains a patch for this bug.
This version has been uploaded to my PPA
(<https://launchpad.net/~a7x/+archive/bug1057824>) and will be done
building in a few hours. To install:
sudo apt-add-repository ppa:a7x/bug1057824
sudo apt-get update
sudo apt-get upgrade
** Patch added: "debdiff for quantal"
https://bugs.launchpad.net/ubuntu/+source/udev/+bug/1057824/+attachment/3352479/+files/debdiff-quantal.patch
** Tags added: patch quantal
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to udev in Ubuntu.
https://bugs.launchpad.net/bugs/1057824
Title:
USB input device interfaces compete for the same symlink name in 60
-persistent-input.rules
Status in “udev” package in Ubuntu:
New
Bug description:
The current rules in 60-persistent-input.rules do not produce a usable
symlink for the interface 0 device in multi-interface USB input
devices.
These are the problematic rules:
KERNEL=="mouse*|js*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{.INPUT_CLASS}"
KERNEL=="event*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-event-$env{.INPUT_CLASS}"
The above rules can be matched by multiple devices if a USB input
device has multiple USB interfaces (such as the Microsoft Wired
Keyboard 600, which has two keyboard interfaces). Because the
generated symlink names do not include the USB interface number, the
multiple devices will compete over the same symlink name. According
to the udev man page, the device that wins is undefined unless the
devices are assigned different link_priority values (which they are
not).
There are other rules in 60-persistent-input.rules that do produce
per-interface symlinks. These rules were introduced in git commit
5e9eb15 [1] for bug #626449. Unfortunately, due to git commit 32567f8
[2], a symlink for interface 0 is not produced by these per-interface
rules. Thus, if an interface other than 0 wins the competition for
the colliding symlink names, there won't be a persistent symlink for
the interface 0 device. Even if device 0 does win the competition, it
may change, going against the intended persistence.
It seems like the correct fix is to give interface 0 a higher
link_priority value than the other interfaces. This would guarantee
that interface 0 always wins the competition.
[1] http://cgit.freedesktop.org/systemd/systemd/commit/?id=5e9eb156c003dc7f8f92287bfad0251d6c5d0ef9
[2] http://cgit.freedesktop.org/systemd/systemd/commit/?id=32567f8c95290a8819c0bc7d57849b8abfba9554
$ lsb_release -rd
Description: Ubuntu 12.04.1 LTS
Release: 12.04
$ apt-cache policy udev
udev:
Installed: 175-0ubuntu9.1
Candidate: 175-0ubuntu9.1
Version table:
*** 175-0ubuntu9.1 0
500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
100 /var/lib/dpkg/status
175-0ubuntu9 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/udev/+bug/1057824/+subscriptions
More information about the foundations-bugs
mailing list