Mouse devices gone after suspend-to-ram
Hi,
Posted this a couple of days ago on debian-user but no joy, so I'm trying
here; to those on both lists: sorry for the cross-post.
After upgrading to a 2.6.16 etch kernel on a whitebox Centrino, S3 suspend (to
ram) is now almost working using the hibernate script.
On resume, however, I find that the devices for my touchpad have not been
created, so it doesn't function.
Xorg.0.log reports:
(EE) xf86OpenSerial: No Device specified.
(EE) PreInit failed for input device "Synaptics Touchpad"
(**) |-->Input Device "Synaptics Touchpad"
(II) Synaptics touchpad driver version 0.14.5 (1405)
Synaptics Touchpad no synaptics event device found (checked 12 nodes)
Synaptics driver unable to open device
(EE) PreInit failed for input device "Synaptics Touchpad"
A normal ls -R /dev/input:
by-path
event0
event1
event3 #note: sometimes this is event2
mice
mouse0
/dev/input/by-path:
platform-i8042-serio-3-event-mouse
platform-i8042-serio-3-mouse
platform-i8042-serio-4-event-kbd
platform-pcspkr-event-spkr
But after resume:
/dev/input:
by-path
event0
event1
mice
/dev/input/by-path:
platform-i8042-serio-4-event-kbd
platform-pcspkr-event-spkr
So far I have tried reloading the psmouse module (which succeeds but does not
create the required devices), restarting udev and restarting X (same result).
Reloading evdev is not allowed ("in use"), and I have mousedev compiled in.
Rebooting fixes the problem, but I am hoping there is a less drastic way!
Would it be possible, for example to write a udev rule to ensure that udev
will create /dev/input/mouse0, or whatever is required, on resume, ensuring
that the device is actually used by the touchpad?
I've been looking at /etc/udevz20_persistent-input-rules, but I can't see why
it wouldn't be working. I've pasted it below for udev experts.
Also, why do devices disappear during suspend-to-ram? Could this be a module
ordering issue? Why can't you tickle yourself? etc., etc...
Any help appreciated,
John
P.S Worked around a "fan stuck on after resume" bug:
echo 0 > proc/acpi/fan/FAN/state
echo 0 > proc/acpi/fan/FAN/state
echo 3 > proc/acpi/fan/FAN/state
echo 3 > proc/acpi/fan/FAN/state
The repeats seem to be necessary.
/etc/udevz20_persistent-input-rules:
BUS=="usb", SYSFS{bInterfaceClass}=="03", SYSFS{bInterfaceProtocol}=="02", \
ENV{ID_CLASS}="mouse"
# other devices
DRIVER=="pcspkr", ENV{ID_CLASS}="spkr"
DRIVER=="atkbd", ENV{ID_CLASS}="kbd"
DRIVER=="psmouse", ENV{ID_CLASS}="mouse"
SYSFS{name}=="*dvb*|*DVB*|* IR *", ENV{ID_CLASS}="ir"
ENV{ID_SERIAL}=="", ENV{ID_SERIAL}="noserial"
# by-id links, generic and for the event devices
KERNEL=="mouse*", \
ENV{ID_BUS}=="?*", ENV{ID_SERIAL}=="?*", ENV{ID_CLASS}=="?*", \
SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_CLASS}"
KERNEL=="event*", \
ENV{ID_BUS}=="?*", ENV{ID_SERIAL}=="?*", ENV{ID_CLASS}=="?*", \
SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-event-$env{ID_CLASS}"
# by-path links
IMPORT{program}="path_id %p"
KERNEL=="mouse*", ENV{ID_PATH}=="?*", \
SYMLINK+="input/by-path/$env{ID_PATH}-$env{ID_CLASS}"
KERNEL=="event*", ENV{ID_PATH}=="?*", \
SYMLINK+="input/by-path/$env{ID_PATH}-event-$env{ID_CLASS}"
LABEL="persistent_input_end"
Reply to: