3M Touchscreen (USB HID v1.10 Pointer) Support

1,650 views
Skip to first unread message

DanielK

unread,
Feb 21, 2012, 2:55:36 PM2/21/12
to Android-x86
Does anybody know how to get this to work?
Android ICS (the eeepc build) does seem to identify it correctly:

input: 3M 3M MicroTouch USB controller as /devices/
pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/input/input13
generic-usb 0003:0596:0102.0001: input: USB HID v1.10 Pointer [3M 3M
MicroTouch USB controller] on usb-0000:00:1d.0-1/input0

However I can not seem get any pointer/touch events from this in
android.

It works fine in Ubuntu and Gentoo

lsusb output in Gentoo:

Bus 005 Device 025: ID 0596:0102 MicroTouch Systems, Inc.
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x0596 MicroTouch Systems, Inc.
idProduct 0x0102
bcdDevice 0.01
iManufacturer 3
iProduct 1
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 34
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 50mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 33 US
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 167
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10

DanielK

unread,
Feb 24, 2012, 3:58:23 PM2/24/12
to Android-x86
Forgot to add, getevent is showing a lot of events when using the
touchscreen but the Pointer Location from dev tools seems to ignore
it.

If any additional information/debugging is needed in regards to the
touchscreen device just reply in this thread.

If you know where I should look or have any hint or suggestion please
don't hesitate to reply.

DanielK

unread,
Feb 28, 2012, 2:41:10 PM2/28/12
to Android-x86
It seems that this specific touchscreen is not emitting required
BTN_TOUCH events but BTN_LEFT ones.

http://source.android.com/tech/input/touch-devices.html
"BTN_TOUCH: (REQUIRED) Indicates whether the tool is touching the
device."

Does anyone see any hope of getting this to work? maybe modify the HID
driver to emit BTN_TOUCH instead of BTN_LEFT ?

What does the evtest output of a working touchscreen with BTN_TOUCH
events output look like? Is it emitted every time?

Thanks.

--------------------

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x596 product 0x102 version 0x110
Input device name: "3M 3M MicroTouch USB controller"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 272 (BTN_LEFT)
Event type 3 (EV_ABS)
Event code 0 (ABS_X)
Value 14
Min 0
Max 1023
Event code 1 (ABS_Y)
Value 15
Min 0
Max 1023
Event type 4 (EV_MSC)
Event code 4 (MSC_SCAN)
Event type 20 (EV_REP)
Testing ... (interrupt to exit)
Event: time 1330456694.007683, type 3 (EV_ABS), code 0 (ABS_X), value
198
Event: time 1330456694.007685, type 3 (EV_ABS), code 1 (ABS_Y), value
108
Event: time 1330456694.007687, -------------- SYN_REPORT ------------
Event: time 1330456694.015682, type 4 (EV_MSC), code 4 (MSC_SCAN),
value 90001
Event: time 1330456694.015684, type 1 (EV_KEY), code 272 (BTN_LEFT),
value 1
Event: time 1330456694.015689, -------------- SYN_REPORT ------------
Event: time 1330456694.023684, type 3 (EV_ABS), code 0 (ABS_X), value
199
Event: time 1330456694.023687, -------------- SYN_REPORT ------------
Event: time 1330456694.031674, type 3 (EV_ABS), code 1 (ABS_Y), value
107
Event: time 1330456694.031676, -------------- SYN_REPORT ------------
Event: time 1330456694.039676, type 3 (EV_ABS), code 0 (ABS_X), value
200
Event: time 1330456694.039679, -------------- SYN_REPORT ------------
Event: time 1330456694.071685, type 3 (EV_ABS), code 1 (ABS_Y), value
108
Event: time 1330456694.071688, -------------- SYN_REPORT ------------
Event: time 1330456694.087676, type 3 (EV_ABS), code 1 (ABS_Y), value
109
Event: time 1330456694.087678, -------------- SYN_REPORT ------------
Event: time 1330456694.103689, type 3 (EV_ABS), code 1 (ABS_Y), value
110
Event: time 1330456694.103691, -------------- SYN_REPORT ------------
Event: time 1330456694.119680, type 3 (EV_ABS), code 1 (ABS_Y), value
111
Event: time 1330456694.119682, -------------- SYN_REPORT ------------
Event: time 1330456694.143679, type 3 (EV_ABS), code 1 (ABS_Y), value
112
Event: time 1330456694.143681, -------------- SYN_REPORT ------------
Event: time 1330456694.159674, type 3 (EV_ABS), code 1 (ABS_Y), value
113
Event: time 1330456694.159675, -------------- SYN_REPORT ------------
Event: time 1330456694.175679, type 3 (EV_ABS), code 0 (ABS_X), value
201
Event: time 1330456694.175680, type 3 (EV_ABS), code 1 (ABS_Y), value
115
Event: time 1330456694.175681, -------------- SYN_REPORT ------------
Event: time 1330456694.183681, type 3 (EV_ABS), code 1 (ABS_Y), value
118
Event: time 1330456694.183683, -------------- SYN_REPORT ------------
Event: time 1330456694.191681, type 3 (EV_ABS), code 1 (ABS_Y), value
119
Event: time 1330456694.191683, -------------- SYN_REPORT ------------
Event: time 1330456694.199687, type 3 (EV_ABS), code 1 (ABS_Y), value
123
Event: time 1330456694.199689, -------------- SYN_REPORT ------------
Event: time 1330456694.207683, type 3 (EV_ABS), code 1 (ABS_Y), value
125
Event: time 1330456694.207685, -------------- SYN_REPORT ------------
Event: time 1330456694.215682, type 3 (EV_ABS), code 1 (ABS_Y), value
130
Event: time 1330456694.215684, -------------- SYN_REPORT ------------
Event: time 1330456694.223689, type 3 (EV_ABS), code 1 (ABS_Y), value
133
Event: time 1330456694.223691, -------------- SYN_REPORT ------------
Event: time 1330456694.231690, type 3 (EV_ABS), code 1 (ABS_Y), value
139
Event: time 1330456694.231692, -------------- SYN_REPORT ------------
Event: time 1330456694.239686, type 3 (EV_ABS), code 1 (ABS_Y), value
146
Event: time 1330456694.239687, -------------- SYN_REPORT ------------
Event: time 1330456694.247680, type 3 (EV_ABS), code 1 (ABS_Y), value
150
Event: time 1330456694.247681, -------------- SYN_REPORT ------------
Event: time 1330456694.255673, type 3 (EV_ABS), code 1 (ABS_Y), value
158
Event: time 1330456694.255675, -------------- SYN_REPORT ------------
Event: time 1330456694.263672, type 3 (EV_ABS), code 1 (ABS_Y), value
162
Event: time 1330456694.263674, -------------- SYN_REPORT ------------
Event: time 1330456694.264720, type 1 (EV_KEY), code 272 (BTN_LEFT),
value 2
Event: time 1330456694.264721, -------------- SYN_REPORT ------------
Event: time 1330456694.271678, type 3 (EV_ABS), code 1 (ABS_Y), value
171
Event: time 1330456694.271680, -------------- SYN_REPORT ------------
Event: time 1330456694.279672, type 3 (EV_ABS), code 1 (ABS_Y), value
181
Event: time 1330456694.279673, -------------- SYN_REPORT ------------
Event: time 1330456694.287672, type 3 (EV_ABS), code 1 (ABS_Y), value
186
Event: time 1330456694.287674, -------------- SYN_REPORT ------------
Event: time 1330456694.295672, type 3 (EV_ABS), code 0 (ABS_X), value
202
Event: time 1330456694.295673, type 3 (EV_ABS), code 1 (ABS_Y), value
195
Event: time 1330456694.295674, -------------- SYN_REPORT ------------
Event: time 1330456694.297714, type 1 (EV_KEY), code 272 (BTN_LEFT),
value 2
Event: time 1330456694.297714, -------------- SYN_REPORT ------------
Event: time 1330456694.303673, type 3 (EV_ABS), code 1 (ABS_Y), value
200
Event: time 1330456694.303674, -------------- SYN_REPORT ------------
Event: time 1330456694.311688, type 3 (EV_ABS), code 0 (ABS_X), value
203
Event: time 1330456694.311689, type 3 (EV_ABS), code 1 (ABS_Y), value
210
Event: time 1330456694.311690, -------------- SYN_REPORT ------------
Event: time 1330456694.319696, type 3 (EV_ABS), code 1 (ABS_Y), value
220
Event: time 1330456694.319698, -------------- SYN_REPORT ------------
Event: time 1330456694.327699, type 3 (EV_ABS), code 0 (ABS_X), value
204
Event: time 1330456694.327700, type 3 (EV_ABS), code 1 (ABS_Y), value
225
Event: time 1330456694.327702, -------------- SYN_REPORT ------------

DanielK

unread,
Mar 19, 2012, 10:54:26 AM3/19/12
to Android-x86
For anyone facing the same issue, I created a small patch for
EventHub.cpp and InputReader.cpp which makes these types of
touchscreens work.

http://code.google.com/p/android-x86/issues/detail?id=791

DanielK

unread,
Mar 20, 2012, 3:53:03 AM3/20/12
to Android-x86
Also forgot to mention, in case somebody is wondering, the output
(with the event types) was created using evtest (which should be part
of most distributions) http://www.freedesktop.org/wiki/Evtest

Muhammad Junaid Malik

unread,
Nov 28, 2013, 5:21:21 AM11/28/13
to andro...@googlegroups.com, daniel.k...@googlemail.com
Hello DanielK,

I was looking for a solution to use 3M touchscreen with Android and after a lot of searching i found your posts. Can you please let me know if you have had successfully used the 3M touchscreen with Android?

Can you please let me know how can i use Androidx86 (which version ) to make use of the 3M touchscreens.

I want to build a gaming konsole for children and therefore need a sturdy touchscreen for this purpose.

Many thanks for your help.

Daniel Kenzelmann

unread,
Nov 29, 2013, 7:38:44 AM11/29/13
to andro...@googlegroups.com, daniel.k...@googlemail.com
It depends on the touchscreen.
If it is recognized as a USB HID device, you can use evtest http://cgit.freedesktop.org/evtest/
to check what events are emitted.
The patch mentioned above is included in the android x86 builds (the 4.0-r1 works for me) and basically just works around the fact that the event from the touch screen was BTN_LEFT instead of BTN_TOUCH (probably to be compatible with old windows versions...)

Reply all
Reply to author
Forward
0 new messages