You are not logged in.

#1 2012-01-19 08:57:05

Padfoot
Member
Registered: 2010-09-03
Posts: 381

[SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

With the upgrade from linux 3.1.9 to 3.2.1, my touchscreen device is no longer recognised.

Hoping someone may be able to shed some light on the situation.

Here are my Xorg logs for both kernels:
http://home.exetel.com.au/padfoot/logs/xorg.log.3.1.9
http://home.exetel.com.au/padfoot/logs/xorg.log.3.2.1

xinput list for 3.1.9

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ SONiX USB Keyboard                      	id=12	[slave  pointer  (2)]
⎜   ↳ eGalaxTouch Virtual Device for Multi    	id=14	[slave  pointer  (2)]
⎜   ↳ eGalaxTouch Virtual Device for Single   	id=15	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ 1.3M Rear                               	id=9	[slave  keyboard (3)]
    ↳ 1.3M Front                              	id=10	[slave  keyboard (3)]
    ↳ SONiX USB Keyboard                      	id=11	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=13	[slave  keyboard (3)]

xinput list for 3.2.1

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ SONiX USB Keyboard                      	id=12	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ 1.3M Rear                               	id=9	[slave  keyboard (3)]
    ↳ 1.3M Front                              	id=10	[slave  keyboard (3)]
    ↳ SONiX USB Keyboard                      	id=11	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=13	[slave  keyboard (3)]
    ↳ Acer WMI hotkeys                        	id=14	[slave  keyboard (3)]

dmesg extract for 3.1.9

[    4.920911] input: eGalax Inc. USB TouchController as /devices/pci0000:00/0000:00:13.0/usb5/5-1/5-1:1.0/input/input10
[    4.923565] generic-usb 0003:0EEF:7302.0001: input,hiddev0,hidraw0: USB HID v2.10 Pointer [eGalax Inc. USB TouchController] on usb-0000:00:13.0-1/input0
[    7.701218] input: eGalaxTouch Virtual Device for Multi as /devices/virtual/input/input13
[    7.701692] input: eGalaxTouch Virtual Device for Single as /devices/virtual/input/input14

dmesg extract for 3.2.1

[    3.853443] usb 5-1: new full-speed USB device number 2 using ohci_hcd
[    3.990164] usb 5-1: device descriptor read/64, error -62
[    4.226771] usb 5-1: device descriptor read/64, error -62
[    4.460091] usb 5-1: new full-speed USB device number 3 using ohci_hcd
[    4.593421] usb 5-1: device descriptor read/64, error -62
[    4.830326] usb 5-1: device descriptor read/64, error -62
[    5.063660] usb 5-1: new full-speed USB device number 4 using ohci_hcd
[    5.470315] usb 5-1: device not accepting address 4, error -62
[    5.600320] usb 5-1: new full-speed USB device number 5 using ohci_hcd
[    6.006989] usb 5-1: device not accepting address 5, error -62
[    6.256982] usb 5-5: new full-speed USB device number 6 using ohci_hcd

Holding off on upgrading to kernel 3.2 until this can be resolved

Appreciate your help.

Cheers.

Last edited by Padfoot (2012-01-21 01:35:03)

Offline

#2 2012-01-19 12:26:26

gjasso
Member
From: Bonn, Germany
Registered: 2011-09-08
Posts: 21

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

I have a Dell Duo with an eGalax touchscreen. It stopped working after updating to Kernel 3.2.

Where should I file a bug about this?

Here are some relevant outputs.

$ lsusb
-----
Bus 004 Device 002: ID 0eef:725e D-WAV Scientific Co., Ltd 

And xinput --list output before and after the update

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ eGalax Inc. USB TouchController         	id=10	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=13	[slave  pointer  (2)]
⎜   ↳ eGalaxTouch Virtual Device for Multi    	id=14	[slave  pointer  (2)]
⎜   ↳ eGalaxTouch Virtual Device for Single   	id=15	[slave  pointer  (2)]
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=12	[slave  pointer  (2)]

Offline

#3 2012-01-19 12:32:47

karol
Archivist
Registered: 2009-05-06
Posts: 25,431

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Offline

#4 2012-01-19 12:42:12

gjasso
Member
From: Bonn, Germany
Registered: 2011-09-08
Posts: 21

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Similar problem here, also with an eGalax touchscreen. Where should this bug be reported?

Offline

#5 2012-01-19 12:48:42

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Well it happened on the kernel upgrade, so thinking there is a problem in the usbinput hook. Needs to be reported to kernel devs.

Offline

#6 2012-01-19 16:00:40

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 13,170

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Moderator:  Merged threads


Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
You assume people are rational and influenced by evidence.  You must not work with the public much. -- Trilby
----
How to Ask Questions the Smart Way

Offline

#7 2012-01-20 08:15:28

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

I have emailed the kernel dev mailing list with a bug report. Will keep you posted as I get further information.

Cheers.

Offline

#8 2012-01-20 15:21:38

gjasso
Member
From: Bonn, Germany
Registered: 2011-09-08
Posts: 21

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Ok. Thanks.

Offline

#9 2012-01-20 23:20:40

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Ok, I have the solution. Multitouch is now working with kernel 3.2.1. It seems the kernel devs are separating multitouch devices from the generic input stack as they can cause issues. Here is the reply I got from the linux-input mailing list:

Well, many eGalax devices are multitouch devices, and can not be
handled by the generic input hid layer without having strange issues.
We have a patch in 3.2 that auto detect such devices and release them
from the generic input stack.
Then, it's easier for people to handle the devices through
hid-multitouch as the recompilation of the kernel is not required
anymore.
I also submitted a patch to catch multitouch devices in
hid-multitouch, but it has not been accepted as it would require
everybody to load hid-multitouch for every hid device.

To enable your device, do (as root)
# modprobe hid-multitouch
# echo 3 VID PID 104 >
/sys/module/hid_multitouch/drivers/hid\:hid-multitouch/new_id

where:
- 3 is the bus, usb here
- VID: vendor ID (must be 0eef in your case)
- PID: product ID
- 104 is the number of the right class of multitouch device to use
(see MT_CLS_* definitions in hid-multitouch)
VID/PID  can be retrieved from lsusb.

If it's working, then you should also give us your PID so that we can
add it in the source of hid-multitouch.

So, I did the following to enable multitouch:

1. Before upgrading your kernel (should also work after, but may as well be prepared):

# lsusb
.......
Bus 005 Device 002: ID 0eef:7302 D-WAV Scientific Co., Ltd
.......

VID is 0eef
PID is 7302

2. Now we need to get the MT_CLS_* definition for our device (extracted from http://lxr.free-electrons.com/source/dr … titouch.c)

86 
 87 /* classes of device behavior */
 88 #define MT_CLS_DEFAULT                          0x0001
 89 
 90 #define MT_CLS_SERIAL                           0x0002
 91 #define MT_CLS_CONFIDENCE                       0x0003
 92 #define MT_CLS_CONFIDENCE_MINUS_ONE             0x0004
 93 #define MT_CLS_DUAL_INRANGE_CONTACTID           0x0005
 94 #define MT_CLS_DUAL_INRANGE_CONTACTNUMBER       0x0006
 95 #define MT_CLS_DUAL_NSMU_CONTACTID              0x0007
 96 
 97 /* vendor specific classes */
 98 #define MT_CLS_3M                               0x0101
 99 #define MT_CLS_CYPRESS                          0x0102
100 #define MT_CLS_EGALAX                           0x0103
101 

I have an eGalax device, so I need MT_CLS_* = 0x0103 (259 in decimal)

3. We have all we need to set up the device. Install kernel 3.2.1

# pacman -S linux

4. Start the hid-multitouch module on boot

# nano /etc/rc.conf
........
# -----------------------------------------------------------------------
# HARDWARE
# -----------------------------------------------------------------------
#
# MODULES: Modules to load at boot-up. Blacklisting is no longer supported.
#   Replace every !module by an entry as on the following line in a file in
#   /etc/modprobe.d:
#     blacklist module
#   See "man modprobe.conf" for details.
#
MODULES=(hid-multitouch)
.........

Now reboot to see if your device is auto configured with the hid-multitouch module. If so, you are all good to go. If not, continue as follows:

5. Ensure your device details are passed to the hid-multitouch module

# nano /etc/rc.local
........
echo 3 0eef 7302 259 > /sys/module/hid_multitouch/drivers/hid\:hid-multitouch/new_id
.........

The command above contains my device details, replace with your details obtained from steps 1 & 2 above:
echo 3 VID PID MT_CLS_*
(If someone can point me in a better direction for setting up these details at boot, it would be appreciated)

Reboot again to see if the device is now working. If not, you may need binary drivers from the vendor. I know in my case, my device needs the eGalax touch daemon driver. A package for this is available in the AUR https://aur.archlinux.org/packages.php?ID=55050

Of course, as the email states, if you have a device that is not automatically configured with the hid-multitouch module, yet it does work after step 5, submit your device details to the linux-input mailing list so it may be added to the source.

Cheers.

Last edited by Padfoot (2012-01-21 01:34:42)

Offline

#10 2012-01-22 21:35:50

Rage24
Member
Registered: 2012-01-22
Posts: 8

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Hi there,

I have a Dell Duo. I was unable to get the touchscreen working. It seems that I need to place GRUB_CMDLINE_LINUX_DEFAULT="usbhid.quirks=0x0eef:0x725e:0x40"  to grub /etc/default/grub. I don't see that in the /etc/default. Where do I modify that. How do I make my touchscreen works in Arch Linux. I am recently using Arch Linux. I just installed on my laptop and desktop.

Also, for step 2. the link is invalid. How do I find MT_CLS_*. How do you get the 256?


2. Now we need to get the MT_CLS_* definition for our device (extracted from http://lxr.free-electrons.com/source/dr … titouch.c)

Everything is working well, except I could not get the touch working or get multitouch. Thank you.

Rage

Last edited by Rage24 (2012-01-22 21:47:44)

Offline

#11 2012-01-23 06:31:11

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Rage24 wrote:

I have a Dell Duo. I was unable to get the touchscreen working. It seems that I need to place GRUB_CMDLINE_LINUX_DEFAULT="usbhid.quirks=0x0eef:0x725e:0x40"  to grub /etc/default/grub. I don't see that in the /etc/default. Where do I modify that. How do I make my touchscreen works in Arch Linux. I am recently using Arch Linux. I just installed on my laptop and desktop.

Are you using grub, or grub2? I sounds like grub if /etc/default/grub does not exist. So for your usbhid.quirks, you need to add that to your kernel line in /boot/grub/menu.lst

Rage24 wrote:

Also, for step 2. the link is invalid. How do I find MT_CLS_*. How do you get the 256?


2. Now we need to get the MT_CLS_* definition for our device (extracted from http://lxr.free-electrons.com/source/dr … titouch.c)

The link works for me, but have a look at the code block I listed in step 2. It lists the different types of MT_CLS_*, which I extracted from the link. Find the line appropriate to your device. The number at the end is in hexadecimal. You need to convert that to decimal, so in my case 0x0103 hexidecimal = 259 decimal.

Cheers.

Last edited by Padfoot (2012-01-23 06:34:26)

Offline

#12 2012-01-23 07:38:47

gjasso
Member
From: Bonn, Germany
Registered: 2011-09-08
Posts: 21

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Thanks padfoot, it works great. I started a stub in the wiki.

Rage24 wrote:

Hi there,
I have a Dell Duo. I was unable to get the touchscreen working. It seems that I need to place GRUB_CMDLINE_LINUX_DEFAULT="usbhid.quirks=0x0eef:0x725e:0x40"  to grub /etc/default/grub. I don't see that in the /etc/default. Where do I modify that. How do I make my touchscreen works in Arch Linux. I am recently using Arch Linux. I just installed on my laptop and desktop.

padfoot instructions are correct, although you don't need to do this anymore since the eGalax driver is working properly now (in fact, using usbhid.quirks disables multitouch, only single touch would work).

Rage24 wrote:

Also, for step 2. the link is invalid. How do I find MT_CLS_*. How do you get the 256?

There is only an exta ')' at the end. Anyway, the Duo also have an eGalax touchscreen so MT_CLS_*=MT_CLS_EGALAX=259 also (watch your typo, if not it won't work). In my case, lsusb shows the touchscreen as

lsusb
-----
Bus 004 Device 002: ID 0eef:725e D-WAV Scientific Co., Ltd

so the command you need to add to /etc/rc.local is

echo 3 0eef 725e 259 > /sys/module/hid_multitouch/drivers/hid\:hid-multitouch/new_id

You should follow padfoot's instructions with the values you get and (259 as MT_CLS_*) and everything should be OK. In my case the Y-axis of the touchscreen was inverted, I explain how to fix it in the archwiki link above.

Also there is a wiki page for the Dell Duo.

Offline

#13 2012-01-23 08:31:28

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

gjasso wrote:

Thanks padfoot, it works great. I started a stub in the wiki.

Excellent work gjasso

Offline

#14 2012-01-23 22:34:05

ant1-antuan
Member
Registered: 2011-08-07
Posts: 12

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Hi Padfoot,
thanks for the solution.
On first try I was thinking the 3 on echo command was a typo and I have inserted 5 as number of USB bus, this is not the number of USB bus but refer to bus 3 as USB is true?
After change and reboot it work well.
Now I'll investigate to update EasyStroke for new-style multitouch.

Bye

Offline

#15 2012-01-24 04:48:08

gjasso
Member
From: Bonn, Germany
Registered: 2011-09-08
Posts: 21

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

ant1-antuan wrote:

Now I'll investigate to update EasyStroke for new-style multitouch.

The patched version with multitouch support is available from the AUR.

Offline

#16 2012-01-24 05:34:27

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

ant1-antuan wrote:

Hi Padfoot,
thanks for the solution.
On first try I was thinking the 3 on echo command was a typo and I have inserted 5 as number of USB bus, this is not the number of USB bus but refer to bus 3 as USB is true?
After change and reboot it work well.
Now I'll investigate to update EasyStroke for new-style multitouch.

Bye

Yes, it's a little confusing. Bus 3 is USB. Mine reports as 5 as well, but I have to use 3 in the echo command.

Great news on EasyStroke. Hopefully you can get true multitouch working with it rather than the 'single touch workaround' you have currently employed.

I am playing aroung with kivy at the moment (in AUR). It is a true multitouch toolkit (similar vein to GTK and QT) built with cython, so you have the high level convenience of programming in python with the speed of C for processor intensive code.

Cheers.

Offline

#17 2012-01-24 05:41:36

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

gjasso wrote:
ant1-antuan wrote:

Now I'll investigate to update EasyStroke for new-style multitouch.

The patched version with multitouch support is available from the AUR.

Hi gjasso, ant1 is the maintainer of eaststroke-mt in AUR. It's not true multitouch at the moment, without being rude to ant (he has done excellent work there), it's a single touch 'fudge' to emulate multitouch.

With the egalax driver in AUR, I included the sample code provided by egalax, to access true multitouch data from the driver. This is what ant is investigating. It will provide true multitouch to easystroke (at least for egalax devices anyway).

Cheers.

Offline

#18 2012-01-26 02:50:58

Rage24
Member
Registered: 2012-01-22
Posts: 8

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Thank you for the quick reply. I updated my grub today. However, I followed Padfoot's instructions. I rebooted, and I got touch on my dell duo. However, when I touched the screen, the mouse jumped in a different direction. How do I fix so it won't jump away from my finger when I touched the screen. It should work like a mouse. Do I need to download the Egalax drive to modify the file. I saw this in the wiki. I don't have that file to change it from 0 to 2.

/etc/eGtouchd.ini
...
DetectRotation 0
Direction 2
Orientation 0

Thank you again.

Rage

Last edited by Rage24 (2012-01-26 03:35:14)

Offline

#19 2012-01-26 05:17:15

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Rage24 wrote:

Thank you for the quick reply. I updated my grub today. However, I followed Padfoot's instructions. I rebooted, and I got touch on my dell duo. However, when I touched the screen, the mouse jumped in a different direction. How do I fix so it won't jump away from my finger when I touched the screen. It should work like a mouse. Do I need to download the Egalax drive to modify the file. I saw this in the wiki. I don't have that file to change it from 0 to 2.

/etc/eGtouchd.ini
...
DetectRotation 0
Direction 2
Orientation 0

Thank you again.

Rage

If touch is working without the egalax driver, then you can correct your 'mouse' direction using xinput.

Use:

$ xinput list

to find the device id and then use the following command to adjust your pointer direction.

$ xinput set-prop ID "Evdev Axis Inversion" x, y

where ID is the device id and x, y are 0 for normal or 1 for inverted.

Cheers.

Offline

#20 2012-01-26 13:45:06

Rage24
Member
Registered: 2012-01-22
Posts: 8

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Hi Padfoot,

I used the commands above. I got an error message. My device ID is 10

xinput set-prop 10 "Evdev Axis Inversion" 1,0 (I am not sure about this, I am testing it out)

I got an error message.

I checked xinput --list-props 10

Evdev Axis Inversion (264): 0,0

Evdev Axis Calibration (265): <no items>

Should there be some items in the Calibration? If there should be some items, how do I add it?

Thank you again

Rage

Offline

#21 2012-01-26 14:16:55

gjasso
Member
From: Bonn, Germany
Registered: 2011-09-08
Posts: 21

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Rage24 wrote:

Do I need to download the Egalax drive to modify the file. I saw this in the wiki. I don't have that file to change it from 0 to 2.

/etc/eGtouchd.ini
...
DetectRotation 0
Direction 2
Orientation 0

Yes, you need to install the driver. When you install the driver you'll find the file /etc/eGTouchd.ini in your system and change the value of Direction to 2.

Also, don't forget to add

/usr/bin/eGTouchd

to your /etc/rc.local file to load the driver at start up.

Offline

#22 2012-01-27 06:44:04

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

gjasso wrote:
Rage24 wrote:

Do I need to download the Egalax drive to modify the file. I saw this in the wiki. I don't have that file to change it from 0 to 2.

/etc/eGtouchd.ini
...
DetectRotation 0
Direction 2
Orientation 0

Yes, you need to install the driver. When you install the driver you'll find the file /etc/eGTouchd.ini in your system and change the value of Direction to 2.

Also, don't forget to add

/usr/bin/eGTouchd

to your /etc/rc.local file to load the driver at start up.

You only need the driver if touch is not working without it.

Offline

#23 2012-01-27 06:45:15

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Rage24 wrote:

Hi Padfoot,

I used the commands above. I got an error message. My device ID is 10

xinput set-prop 10 "Evdev Axis Inversion" 1,0 (I am not sure about this, I am testing it out)

I got an error message.

I checked xinput --list-props 10

Evdev Axis Inversion (264): 0,0

Evdev Axis Calibration (265): <no items>

Should there be some items in the Calibration? If there should be some items, how do I add it?

Thank you again

Rage

Please let us know what the error message is, and post the output of xinput list.

Offline

#24 2012-01-29 07:48:56

Rage24
Member
Registered: 2012-01-22
Posts: 8

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

I went ahead and install the drive that you packaged. It works. However, it seems I don't have multitouch. This is my first time playing with multitouch in Linux. The usr/bin/eGTouchd did not load the drive for some reasons. I have to go through step 1 and 2 from padfoot to activate the touch. Any advice would be appreciated.

Offline

#25 2012-01-29 11:18:15

Padfoot
Member
Registered: 2010-09-03
Posts: 381

Re: [SOLVED] Kernel 3.2.1 and USB Touchscreen Failure

Rage24 wrote:

I went ahead and install the drive that you packaged. It works. However, it seems I don't have multitouch. This is my first time playing with multitouch in Linux. The usr/bin/eGTouchd did not load the drive for some reasons. I have to go through step 1 and 2 from padfoot to activate the touch. Any advice would be appreciated.

Post the output of lsusb and xinput list. Also post the contents of /etc/rc.conf and /etc/rc.local along with your X log from /var/log

Offline

Board footer

Powered by FluxBB