Elantech touchpad detected as Logitech PS2 Wheel Mouse

7 messages, 3 authors, 2012-05-21 · open the first message on its own page

Elantech touchpad detected as Logitech PS2 Wheel Mouse

From: Nicola Alessi <hidden>
Date: 2012-05-20 18:36:41

Hi,

I'm running debian wheezy with latest kernel (uname -a gives me: Linux
ehehehpc 3.2.0-2-686-pae #1 SMP Sun May 13 07:51:23 UTC 2012 i686
GNU/Linux).
While I'm expecting the kernel to correctly detect my touchpad, it's
detected as a mouse. No scrolling, no multitouch.
Below there's a snippet of my /proc/bus/input/devices:

[...]
I: Bus=0011 Vendor=0002 Product=0001 Version=0063
N: Name="PS/2 Logitech Wheel Mouse"
P: Phys=isa0060/serio4/input0
S: Sysfs=/devices/platform/i8042/serio4/input/input7
U: Uniq=
H: Handlers=mouse0 event7
B: PROP=0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
[...]

The notebook I'm using is a Fujitsu Siemens Amilo pi2515.
I also tried kernel version 3.3.6 with same results.
In both cases grep ELANTECH .config gives me:

CONFIG_MOUSE_PS2_ELANTECH=y

so I suppose it shouldn't be a kernel configuration problem.
I opened a bug on http://bugs.debian.org/673588
You can find more information and preliminary testing there.
Thank you very much for your attention.
Regards.


Nicola

Re: Elantech touchpad detected as Logitech PS2 Wheel Mouse

From: Jonathan Nieder <hidden>
Date: 2012-05-20 19:21:00

Nicola Alessi wrote:
While I'm expecting the kernel to correctly detect my touchpad, it's
detected as a mouse. No scrolling, no multitouch.
Below there's a snippet of my /proc/bus/input/devices:
Kernel log:

 http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=15;filename=dmesg.txt;att=3;bug=673588

[...]
The notebook I'm using is a Fujitsu Siemens Amilo pi2515.
I also tried kernel version 3.3.6 with same results.
Can you get a log with the following patch applied?

Thanks,
Jonathan
diff --git i/drivers/input/mouse/elantech.c w/drivers/input/mouse/elantech.c
index d2c0db159b18..a1d59e11e2d3 100644
--- i/drivers/input/mouse/elantech.c
+++ w/drivers/input/mouse/elantech.c
@@ -10,6 +10,7 @@
  * Trademarks are the property of their respective owners.
  */
 
+#define DEBUG
 #include <linux/delay.h>
 #include <linux/slab.h>
 #include <linux/module.h>

Re: Elantech touchpad detected as Logitech PS2 Wheel Mouse

From: Nicola Alessi <hidden>
Date: 2012-05-20 20:18:45

I applied the patch. Now my kernel (3.3.6) log says:

[    6.734445] psmouse serio4: elantech: unexpected magic knock result
0x3c, 0x03, 0x3c.

I hope this can help.

Nicola

Il 20/05/12 21:20, Jonathan Nieder ha scritto:
quoted hunk
Can you get a log with the following patch applied?

Thanks,
Jonathan
diff --git i/drivers/input/mouse/elantech.c w/drivers/input/mouse/elantech.c
index d2c0db159b18..a1d59e11e2d3 100644
--- i/drivers/input/mouse/elantech.c
+++ w/drivers/input/mouse/elantech.c
@@ -10,6 +10,7 @@
  * Trademarks are the property of their respective owners.
  */
 
+#define DEBUG
 #include <linux/delay.h>
 #include <linux/slab.h>
 #include <linux/module.h>

Re: Elantech touchpad detected as Logitech PS2 Wheel Mouse

From: Jonathan Nieder <hidden>
Date: 2012-05-21 05:23:19

Nicola Alessi wrote:
[    6.734445] psmouse serio4: elantech: unexpected magic knock result 0x3c, 0x03, 0x3c.

I hope this can help.
Yes, thanks much.

One more question: how do you know this touchpad is an Elantech pad?
E.g., is there another OS with a driver that detects it as Elantech?

Based on [1] it seems the Amilo Pi 2515 ships with a variety of
different touchpad models.

Jonathan

[1] https://bugzilla.kernel.org/show_bug.cgi?id=10942

Re: Elantech touchpad detected as Logitech PS2 Wheel Mouse

From: JJ Ding <hidden>
Date: 2012-05-21 07:53:44

Hi Jonathan and Nicola,

On Mon, 21 May 2012 00:23:11 -0500, Jonathan Nieder [off-list ref] wrote:
Nicola Alessi wrote:
quoted
[    6.734445] psmouse serio4: elantech: unexpected magic knock
result 0x3c, 0x03, 0x3c.
           ^^^^^^^^^^^^^^^^^
Yes, from this, the touchpad is probably Elan.

But it is meant to be used as such, a basic pointing device. Some NB
vendors may not require the multi-finger functions, for cost reason or
others. Elan touchpad reports this magic knock when it only supports
the basic mouse functions. With these touchpads, the multi-finger functons
are NOT TESTED and thus NOT SUPPORTED.

We used to have a "force_elantech" module param to force the TP to be
detected as Elan, but I removed it when I was updating elantech.c to
support newer models. Maybe you can convince Dmitry to add it back, but
still, this kind of Elan touchpads is not supported as multi-touch
pointing device, so I wouldn't recommand it.

I hope this helps.

Best regards,
-JJ
quoted
I hope this can help.
Yes, thanks much.

One more question: how do you know this touchpad is an Elantech pad?
E.g., is there another OS with a driver that detects it as Elantech?

Based on [1] it seems the Amilo Pi 2515 ships with a variety of
different touchpad models.

Jonathan

[1] https://bugzilla.kernel.org/show_bug.cgi?id=10942

Re: Elantech touchpad detected as Logitech PS2 Wheel Mouse

From: Jonathan Nieder <hidden>
Date: 2012-05-21 08:28:18

JJ Ding wrote:
We used to have a "force_elantech" module param to force the TP to be
detected as Elan, but I removed it when I was updating elantech.c to
support newer models. Maybe you can convince Dmitry to add it back, but
still, this kind of Elan touchpads is not supported as multi-touch
pointing device, so I wouldn't recommand it.
Neat.
I hope this helps.
Definitely; thanks for explaining.  Nicola, I'm still curious about
the following:
quoted
E.g., is there another OS with a driver that detects it as Elantech?
If another OS offers more functionality, then we would know the
hardware is capable of it.

The patch JJ described follows, in case you want to experiment.

-- >8 --
Subject: Input: elantech - allow forcing Elantech protocol when knock fails

This does not quite revert 4af61e90270e35bafa9e99a3c48fb3f363da592d
("Input: elantech - remove module parameter force_elantech") --- the
old force_elantech parameter was about ignoring an unrecognized
response to ETP_FW_VERSION_QUERY, while this one is about ignoring
unrecognized responses to the magic knock.

This patch is just for experimentation and is not meant for inclusion.
---
 drivers/input/mouse/elantech.c |   16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index d2c0db159b18..55ac1aa5e943 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -27,6 +27,10 @@
 					fmt, ##__VA_ARGS__);		\
 	} while (0)
 
+static bool force_elantech;
+module_param_named(force_elantech, force_elantech, bool, 0644);
+MODULE_PARM_DESC(force_elantech, "Force the Elantech PS/2 protocol extension to be used, 1 = enabled, 0 = disabled (default).");
+
 /*
  * Send a Synaptics style sliced query command
  */
@@ -1195,10 +1199,14 @@ int elantech_detect(struct psmouse *psmouse, bool set_properties)
 	 */
 	if (param[0] != 0x3c || param[1] != 0x03 ||
 	    (param[2] != 0xc8 && param[2] != 0x00)) {
-		psmouse_dbg(psmouse,
-			    "unexpected magic knock result 0x%02x, 0x%02x, 0x%02x.\n",
-			    param[0], param[1], param[2]);
-		return -1;
+		if (!force_elantech) {
+			psmouse_dbg(psmouse,
+				    "unexpected magic knock result 0x%02x, 0x%02x, 0x%02x.\n",
+				    param[0], param[1], param[2]);
+			return -1;
+		}
+		psmouse_warning(psmouse, "Unexpected magic knock result.\n");
+		psmouse_info(psmouse, "Enabling anyway due to force_elantech.\n");
 	}
 
 	/*
-- 
1.7.10.2

Re: Elantech touchpad detected as Logitech PS2 Wheel Mouse

From: Nicola Alessi <hidden>
Date: 2012-05-21 13:45:44

Hi,

I'd like to thank you all for the time you dedicated to this problem.
I'll try to experiment with the patch and I'll report if something
interesting happens.

@Jonathan: there are two things that make me think to have a elantech
touchpad. First, a sticker from the manufacturer below laptop's battery
pack (in the slot, you can see it only if you remove the battery)
labeled "ELANTEK". Second, I think more important, I've played around
(about two months ago) with dkms and patches to psmouse. More in detail,
I tried the patch from Seth Forshee (see
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/681904/comments/111).
Through it didn't fix the issue (the touchpad was totally unusable due
to continuous "sync lost" messages) the touchpad was recognized as an
elantech (I don't remember the details, but I could try to build the
module again and mail some info).

Thanks again,

Nicola

Il 21/05/12 10:28, Jonathan Nieder ha scritto:
quoted hunk
JJ Ding wrote:
quoted
We used to have a "force_elantech" module param to force the TP to be
detected as Elan, but I removed it when I was updating elantech.c to
support newer models. Maybe you can convince Dmitry to add it back, but
still, this kind of Elan touchpads is not supported as multi-touch
pointing device, so I wouldn't recommand it.
Neat.
quoted
I hope this helps.
Definitely; thanks for explaining.  Nicola, I'm still curious about
the following:
quoted
quoted
E.g., is there another OS with a driver that detects it as Elantech?
If another OS offers more functionality, then we would know the
hardware is capable of it.

The patch JJ described follows, in case you want to experiment.

-- >8 --
Subject: Input: elantech - allow forcing Elantech protocol when knock fails

This does not quite revert 4af61e90270e35bafa9e99a3c48fb3f363da592d
("Input: elantech - remove module parameter force_elantech") --- the
old force_elantech parameter was about ignoring an unrecognized
response to ETP_FW_VERSION_QUERY, while this one is about ignoring
unrecognized responses to the magic knock.

This patch is just for experimentation and is not meant for inclusion.
---
 drivers/input/mouse/elantech.c |   16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index d2c0db159b18..55ac1aa5e943 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -27,6 +27,10 @@
 					fmt, ##__VA_ARGS__);		\
 	} while (0)
 
+static bool force_elantech;
+module_param_named(force_elantech, force_elantech, bool, 0644);
+MODULE_PARM_DESC(force_elantech, "Force the Elantech PS/2 protocol extension to be used, 1 = enabled, 0 = disabled (default).");
+
 /*
  * Send a Synaptics style sliced query command
  */
@@ -1195,10 +1199,14 @@ int elantech_detect(struct psmouse *psmouse, bool set_properties)
 	 */
 	if (param[0] != 0x3c || param[1] != 0x03 ||
 	    (param[2] != 0xc8 && param[2] != 0x00)) {
-		psmouse_dbg(psmouse,
-			    "unexpected magic knock result 0x%02x, 0x%02x, 0x%02x.\n",
-			    param[0], param[1], param[2]);
-		return -1;
+		if (!force_elantech) {
+			psmouse_dbg(psmouse,
+				    "unexpected magic knock result 0x%02x, 0x%02x, 0x%02x.\n",
+				    param[0], param[1], param[2]);
+			return -1;
+		}
+		psmouse_warning(psmouse, "Unexpected magic knock result.\n");
+		psmouse_info(psmouse, "Enabling anyway due to force_elantech.\n");
 	}
 
 	/*

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help