"Device or resource busy" under Intrepid
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Pystromo |
Confirmed
|
High
|
Raumkraut |
Bug Description
Under Ubuntu Intrepid (beta), and potentially also many other recent Linux distro releases, running the Pystromo remapper fails with a traceback similar to the following:
sudo ./pystromo-remap.py -m config/wow.map --v
Using output: <lib.devices.
Loading mappings
Traceback (most recent call last):
File "./pystromo-
inputs = getInputs(keymap, output)
File "./pystromo-
dev = devices.
File "/home/
node.grab()
File "/home/
fcntl.
IOError: [Errno 16] Device or resource busy
At issue is a apparently a conflict between Pystromo and xorg-input-evdev, both of which attempt to "grab" the input device nodes.
== Possible workarounds ==
A) When you need to, run pystromo-remap under a virtual terminal (ctrl+alt+f1). This seems to be reliable, but requires you to start pystromo manually after each boot.
B) Put the following into your xorg.conf file:
Section "ServerFlags"
Option "AutoAddDevices" "false"
EndSection
C) Follow the procedure in the first bug-comment (below). This worked in my Intrepid VM (and still does), but some people seemed to have problems. Workaround B, above, is probably a more reliable solution.
Changed in pystromo: | |
assignee: | nobody → raumkraut |
importance: | Undecided → High |
status: | New → Confirmed |
description: | updated |
I've now managed to replicate the behaviour using 8.10 in a virtual machine (now that I've *finally* got USB working in Virtualbox). Consequently, I've also developed a workaround that gets Pystromo working.
Basically, you need to stop Xorg from using its evdev driver for input devices. We do this by modifying what HAL (Hardware Abstraction Layer) has to say about such devices:
1. Modify your /etc/X11/xorg.conf to add InputDevice sections for keyboard and mouse. I copied these sections from my current Hardy install, so you may not need all the keyboard Options, or may need to change some:
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "gb"
EndSection
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
EndSection
2. Place the attached 52-pystromo.fdi file in /usr/share/ hal/fdi/ policy/ 20thirdparty/
3. `sudo /etc/init.d/hal restart`
4. Log out (which will restart X), and when you log back in Pystromo should be able to grab the device nodes it needs.
NB: Be prepared to boot/switch to a console to revert any changes, in case this doesn't work and X doesn't start! I've done a lot of rooting around and messing about on my VM install, but AFAICT these four steps *should be* all that you need to do.