Bug 43058 - i8042 PS/2 mouse not working
i8042 PS/2 mouse not working
Status: NEW
Product: Drivers
Classification: Unclassified
Component: Input Devices
All Linux
: P1 normal
Assigned To: drivers_input-devices
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-04-06 16:36 UTC by Tim Bauer
Modified: 2016-06-05 03:30 UTC (History)
5 users (show)

See Also:
Kernel Version: 3.2
Tree: Mainline
Regression: No


Attachments
i8042.debug=1 log file (8.46 KB, text/plain)
2012-07-23 18:10 UTC, Jose Luis Varela
Details
dmesg | grep i8042 (33.77 KB, text/plain)
2012-07-26 10:45 UTC, Tim Bauer
Details

Description Tim Bauer 2012-04-06 16:36:16 UTC
This is a bit of a complicated issue. The optical PS/2-connected mouse on the laptop doesn't work.

First of all, the basics:
 * UMID SE pocketable PC 
 ** one of these: http://i.imgur.com/PmWs0.png
 ** The optical mouse in question is that small black rectangle on the right side of the screen below the windows sticker. The left/right mouse buttons are on the other side of the screen.
 * i686 Intel(R) Atom(TM) CPU Z530 @ 1.60GHz
 * Linux 3.2.14-1-ARCH #1 SMP PREEMPT (Archlinux)
 * Xorg-related versions: (It may look inconsistent but the results were exactly the same when I was using a consistent 1.11 setup)

[root@lapfox shapeshifter]# pacman -Qi $(pacman -Qq | grep xorg) | grep -e '^Name' -e '^Version'
Name           : xorg-server
Version        : 1.11.4-1
Name           : xorg-server-common
Version        : 1.12.0.901-1
Name           : xorg-server-devel
Version        : 1.12.0.901-1
Name           : xorg-xinit
Version        : 1.3.2-1
Name           : xorg-xinput
Version        : 1.5.99.1-1
Name           : xf86-input-evdev
Version        : 2.6.0-4
Name           : xorg-xinput
Version        : 1.5.99.1-1

The laptop comes with:
 * A keyboard
 * A resistive touch screen
 * An 'optical mouse' which is a touch sensor on the right side of the screen

The problem is that the optical mouse doesn't work, no matter what I try. There are different possible configurations that yield different results. The keyboard is working fine in all configurations:





---
Configuration A:
* Use some i8042 related kernel options:
GRUB_CMDLINE_LINUX_DEFAULT="i8042.nomux=1 i8042.noloop=1 quiet"

Results:
1) The touch screen works like a touch pad (relative movement)

2) The optical mouse doesn't work, and when trying to use it there are errors as below in dmesg. Trying to cat any of the input devices and using the mouse yields no character output

[root@lapfox shapeshifter]# dmesg | tail
[  164.781517] psmouse serio1: bad data from KBC - timeout
[  164.790543] psmouse serio1: bad data from KBC - timeout
[  164.791575] psmouse serio1: bad data from KBC - timeout
[  164.792490] psmouse serio1: bad data from KBC - timeout
[  164.801813] psmouse serio1: bad data from KBC - timeout
[  164.802724] psmouse serio1: bad data from KBC - timeout
[  164.803751] psmouse serio1: bad data from KBC - timeout
[  164.813062] psmouse serio1: bad data from KBC - timeout
[  164.813954] psmouse serio1: bad data from KBC - timeout
[  164.815138] psmouse serio1: bad data from KBC - timeout

3) Only one KBD and one AUX port are listed in sys:

[root@lapfox shapeshifter]# ls /sys/bus/serio/devices/
serio0	serio1
[root@lapfox shapeshifter]# cat /sys/bus/serio/devices/serio*/description
i8042 KBD port
i8042 AUX port

4) These are the input devices:

[root@lapfox shapeshifter]# ls -R /dev/input/
/dev/input/:
by-path  event0  event1  event2  event3  event4  event5  event6  event7  mice  mouse0

/dev/input/by-path:
platform-i8042-serio-0-event-kbd    platform-i8042-serio-1-mouse
platform-i8042-serio-1-event-mouse  platform-pcspkr-event-spkr

[root@lapfox shapeshifter]# cat /proc/bus/input/devices
at http://pastie.org/3739785

5) Some output from dmesg:

[root@lapfox shapeshifter]# dmesg | grep -ie "error" -e "serio" -e "mouse" -e "kbd" -e "aux"   | grep -v "bad data from KBC"
[    2.036888] serio: i8042 KBD port at 0x60,0x64 irq 1
[    2.036987] serio: i8042 AUX port at 0x60,0x64 irq 12
[    2.037319] mousedev: PS/2 mouse device common for all mice
[    2.062308] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    2.092287] ioremap error for 0x3f69e000-0x3f6a1000, requested 0x10, got 0x0
[    5.156825] psmouse serio1: hgpk: ID: 00 03 c8
[    5.373059] input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input6

6) xinput list:

[root@lapfox shapeshifter]# DISPLAY=:0 xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ PS/2 Generic Mouse                      	id=10	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Video Bus                               	id=6	[slave  keyboard (3)]
    ↳ Power Button                            	id=7	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=8	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=9	[slave  keyboard (3)]
    
    
    
    
    
    
---
Configuration B:
 * No kernel options (i.e. no i8042 options)
 * No serio_raw mode

Results:
1) The touch screen works like a touch pad (relative movement)

2) The optical mouse doesn't work, and there are NO errors in dmesg. Trying to cat any of the input devices and using the mouse yields no character output. It's completely dead like this.

3) All i8042 ports are enumerated under sys:

[root@lapfox shapeshifter]# ls /sys/bus/serio/devices/
serio0	serio1	serio2	serio3	serio4
[root@lapfox shapeshifter]# cat /sys/bus/serio/devices/serio*/description
i8042 KBD port
i8042 AUX0 port
i8042 AUX1 port
i8042 AUX2 port
i8042 AUX3 port

4) These are the input devices:

[root@lapfox shapeshifter]# ls -R /dev/input/
/dev/input/:
by-path  event1  event3  event5  event7  mice
event0	 event2  event4  event6  event8  mouse0

[root@lapfox shapeshifter]# cat /proc/bus/input/devices
at http://pastie.org/3739803

/dev/input/by-path:
platform-i8042-serio-0-event-kbd    platform-i8042-serio-4-mouse
platform-i8042-serio-4-event-mouse  platform-pcspkr-event-spkr

5) Some output from dmesg:

[root@lapfox shapeshifter]# dmesg | grep -ie "error" -e "serio" -e "mouse" -e "kbd" -e "aux"
[    2.068458] serio: i8042 KBD port at 0x60,0x64 irq 1
[    2.068556] serio: i8042 AUX0 port at 0x60,0x64 irq 12
[    2.068642] serio: i8042 AUX1 port at 0x60,0x64 irq 12
[    2.068722] serio: i8042 AUX2 port at 0x60,0x64 irq 12
[    2.068805] serio: i8042 AUX3 port at 0x60,0x64 irq 12
[    2.069138] mousedev: PS/2 mouse device common for all mice
[    2.094164] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    2.123453] ioremap error for 0x3f69e000-0x3f6a1000, requested 0x10, got 0x0
[    5.301556] psmouse serio4: hgpk: ID: 00 03 c8
[    5.546636] input: PS/2 Generic Mouse as /devices/platform/i8042/serio4/input/input8
[  113.193493] atkbd serio0: Unknown key pressed (translated set 2, code 0xd9 on isa0060/serio0).
[  113.193511] atkbd serio0: Use 'setkeycodes e059 <keycode>' to make it known.
[  113.203740] atkbd serio0: Unknown key released (translated set 2, code 0xd9 on isa0060/serio0).
[  113.203758] atkbd serio0: Use 'setkeycodes e059 <keycode>' to make it known.

6) xinput list:

[root@lapfox shapeshifter]# DISPLAY=:0 xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ PS/2 Generic Mouse                      	id=10	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Video Bus                               	id=6	[slave  keyboard (3)]
    ↳ Power Button                            	id=7	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=8	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=9	[slave  keyboard (3)]






---
Configuration C:
* Use some i8042 related kernel options:
GRUB_CMDLINE_LINUX_DEFAULT="i8042.nomux=1 i8042.noloop=1 quiet"
* Enable 'serio_raw' mode (note: this doesn't work without the kernel options):
echo -n serio_raw>/sys/bus/serio/devices/serio1/drvctl &
* Use the X-Input "eGalax Touch" driver provided by the touch screen manufacturer (EETI) from
http://home.eeti.com.tw/web20/eGalaxTouchDriver/linuxDriver.htm

[root@lapfox shapeshifter]# cat /etc/X11/xorg.conf
 Section "InputDevice"
     Identifier "EETI"
     Driver "egalax"
     Option "Device" "/dev/serio_raw0"
     Option "Parameters" "/var/lib/eeti.param"
     Option "ScreenNo" "0"
 EndSection
 
 Section "ServerLayout"
     Identifier "Default Layout"
     InputDevice "EETI" "SendCoreEvents"
 EndSection

Results:

1) The touch screen works as intended with absolute positioning (nice!)

2) The optical mouse doesn't work, and there are only a few errors like those above, but only at a very early stage, where the eGalax driver hasn't taken over. Trying to cat any of the input devices and using the mouse yields no character output, BUT using cat /dev/serio_raw0, interesting output is yielded:

[root@lapfox shapeshifter]# cat /dev/serio_raw0 # going to swipe up/down/left/right on the touch screen
at http://pastie.org/3739586

[root@lapfox shapeshifter]# cat /dev/serio_raw0 # going to swipe up/down/left/right on the optical mouse
at http://pastie.org/3739597
Noting that going up or right will actually move the text cursor backwards most of the time

In any case I'm not sure if this is telling you anything.

3) Only one KBD and one AUX port are listed in sys:

[root@lapfox shapeshifter]# ls /sys/bus/serio/devices/
serio0	serio1
[root@lapfox shapeshifter]# cat /sys/bus/serio/devices/serio*/description
i8042 KBD port
i8042 AUX port

4) These are the input devices:
[root@lapfox shapeshifter]# ls -R /dev/input/
/dev/input/:
by-path  event0  event1  event2  event3  event4  event5  event6  event7  mice

/dev/input/by-path:
platform-i8042-serio-0-event-kbd  platform-pcspkr-event-spkr

[root@lapfox shapeshifter]# cat /proc/bus/input/devices
at http://pastie.org/3739821

5) Some output from dmesg:

[root@lapfox shapeshifter]# dmesg | grep -ie "error" -e "serio" -e "mouse" -e "kbd" -e "aux"  
[    2.030523] serio: i8042 KBD port at 0x60,0x64 irq 1
[    2.030622] serio: i8042 AUX port at 0x60,0x64 irq 12
[    2.030955] mousedev: PS/2 mouse device common for all mice
[    2.063277] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    2.085795] ioremap error for 0x3f69e000-0x3f6a1000, requested 0x10, got 0x0
[    5.114025] psmouse serio1: hgpk: ID: 00 03 c8
[    5.336168] input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input8
[    6.205085] psmouse serio1: bad data from KBC - timeout
[    6.206110] psmouse serio1: bad data from KBC - timeout
[    6.207155] psmouse serio1: bad data from KBC - timeout
[    6.669916] serio_raw serio1: raw access enabled on isa0060/serio1 (serio_raw0, minor 58)

6) xinput list:

[root@lapfox shapeshifter]# DISPLAY=:0 xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ eGalaxTouch Controller                  	id=6	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=10	[slave  keyboard (3)]





---
Additional Notes:
 * Kernel options like pci=noacpi or acpi=off had no effect.
 * I don't know what's going on with the ioremap error but I think it's due to the GMA500/Poulsbo chip and hence unrelated.
 * Using the other, 'newer' eGTouch Daemon driver is impossible, it only supports USB, not PS/2.
 * I tried a bunch of psmouse proto options but I was taking stabs at the dark, none of them worked (e.g. psmouse proto=imps etc.)
 * I installed Windows XP to see what happens and there:
 ** The optical mouse works perfectly without any additional drivers
 ** The touch screen works like a touch pad (relative movement)
 ** The mouse is registered as a "Mircosoft PS/2 Mouse" under ACPI\PNP0F03, IRQ 12
 * Similar info as in XP can be gathered in linux like this:
 
[root@lapfox shapeshifter]# cat /sys/devices/pnp0/00\:04/{id,options,resources,uevent}
PNP0f03
PNP0f13
state = active
irq 12
DRIVER=i8042 aux

---
So in Essence, no matter what I try, I see that:
 * The input device (hardware) works as demonstrated by using XP or the eGalax driver and catting /dev/serio_raw0
 * The optical mouse *should* be a very simple PS/2 mouse
 * No combination of configurations, reloading psmouse or anything else yields a useful result.
 
I'm not sure if the optical mouse would ever work when using the eGalax driver (which is needed for a absolute touch screen device) but I wouldn't even care too much. I'd just really like to have that 'simple' optical PS/2 mouse working.

If I can provide any more specific information, I'd be more than happy to supply it.
Comment 1 Tim Bauer 2012-04-06 16:40:43 UTC
Maybe I should mention which version of Linux this is...
Name           : linux
Version        : 3.2.14-1
Name           : linux-api-headers
Version        : 3.3-1
Name           : linux-firmware
Version        : 20120227-1
Name           : util-linux
Version        : 2.21.1-2
Comment 2 Jose Luis Varela 2012-07-23 08:48:48 UTC
I have the same problem as Tim Bauer but with a different PC.
I have a tablet Archos 9 (Link: http://www.archos.com/products/tw/archos_9/index.html)
Also as Tim Bauer, it has a resistive touch screen (eGalax touch screen by eeti manufacturer)connected to the PS / 2 port.
Again as Tim Bauer, it has a optical PS /2 mouse.

I have contacted EETI developers (http://home.eeti.com.tw/web20/eg/Touch_Division.html).
I tried they make public the source code of their drivers for windows, but they refuse.
They tell me "There's Some know-how in source code, so we can not release it to client."

The biggest problem is I'm trying to put on this computer Android for x86 processors (www.android-x86.org).
As you know, Android is like Linux but do not use the X Windows graphics engine (use the framebuffer).
The manufacturer eeti has 2 types of drivers for Linux:
- One that uses X-windows (does not work on Android)
- A new one that does not use X-windows (not supported devices PS / 2).

I can help as needed.

Thanks.
Comment 3 Dmitry Torokhov 2012-07-23 17:25:51 UTC
Hmm, there is a kernel driver for eGalax PS/2 touchscreen, do you have CONFIG_MOUSE_PS2_TOUCHKIT enabled?
Comment 4 Jose Luis Varela 2012-07-23 17:40:04 UTC
Yes, Yes, I have tried in the past compiling the kernel with CONFIG_MOUSE_PS2_TOUCHKIT enabled. But does not work.
The driver touchkit_ps2.c(http://lxr.linux.no/linux+v3.5/drivers/input/mouse/touchkit_ps2.c) is correct.
I know it is correct because EETI programmers confirmed (I send a email and they read the source code of touchkit_ps2.c). Is correct! They did not know that code existed !!!
I think the problem is the chip i8042 of our PC and the ps/2 multiplexed mode.
In Windows the driver works in multiplexed mode, that is why touchscreen and optical mouse work well in Windows.
The problem is that when I don't put the boot parameter i8042.nomux=1 and I put i8042.debug=1 in linux logs I found:
"MUX error, status is 35, data is fe"

PS/2 Multiplexed mode is not working.
Comment 5 Jose Luis Varela 2012-07-23 18:10:53 UTC
Created attachment 76011 [details]
i8042.debug=1 log file

This is the log file with i8042.debug=1 parameter.
Comment 6 Tim Bauer 2012-07-26 10:45:46 UTC
Created attachment 76131 [details]
dmesg | grep i8042

I'm glad to see I'm not the only one with this problem. Similarily to Jose Luis Varela, I see MUX errors in dmesg when adding the i8042.debug=1 parameter.

Attached is the output of dmesg | grep i8042. The output in the second half is from using the touch screen. I see different MUX errors:

[    1.836928] i8042: [17] MUX error, status is 35, data is fe
[    1.880323] i8042: [30] MUX error, status is 75, data is fe
[    1.923735] i8042: [43] MUX error, status is b5, data is fe
Comment 7 Mateusz Jończyk 2014-08-01 19:21:19 UTC
These MUX errors mean simply that nothing is connected to ports 0 and 3 of the MUX (or that these ports are not implemented at all) - nothing important.
Comment 8 Mateusz Jończyk 2014-08-01 19:40:17 UTC
These are the interesting parts:

[   11.831664] i8042: [20] 91 -> i8042 (command)
[   11.831732] i8042: [20] f2 -> i8042 (parameter)
[   11.832053] i8042: [21] fa <- i8042 (interrupt, 4, 12)
[   12.028134] i8042: [70] 91 -> i8042 (command)
[   12.028206] i8042: [70] ed -> i8042 (parameter)
[   12.028566] i8042: [70] fa <- i8042 (interrupt, 4, 12)

The devices do not return any ID when requested.

Note You need to log in before you can comment on or make changes to this bug.