[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: