3

I plugged in a 3M touchscreen to my Linux PC. It appears as it recognizes it as a mouse. Here's my xinput output:

xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=13   [slave  pointer  (2)]
⎜   ↳ 3M 3M USB Touchscreen - 36955             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)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=10   [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=11   [slave  keyboard (3)]
    ↳ HP WMI hotkeys                            id=14   [slave  keyboard (3)

After # modprobe -r usbtouchscreen touching device stops working.

On Windows 7 it works after installing driver from this site so I also tried to install Linux driver from here (Linux, Single Touch, 64bit). I think installation process fails as it interrupts immediately after I accept the license (with 0 exit code).

I test my touchscreen with Qt FingerPaint example (also works on Windows, doesn't work on Ubuntu). Debugging shows that multitouch input generates mouse events.

I use Ubuntu 16.04 with kernel 4.10.0-35-generic and tried both Unity and Cinnamon environments. I need this working for programming purposes.

EDIT:

Some diagnostic tools output:

# lsinput
...some other devices...
/dev/input/event12
bustype : BUS_USB
vendor  : 0x596
product : 0x1
version : 1088
name    : "3M 3M USB Touchscreen - 36955"
phys    : "usb-0000:00:14.0-3/input0"
bits ev : EV_SYN EV_KEY EV_ABS


# mtdev-test /dev/input/event12
015ee1f66c7c 00 1 014a 1
015ee1f66c7c 00 3 0000 12183
015ee1f66c7c 00 3 0001 7962
015ee1f66c7c 00 0 0000 0
015ee1f66c80 00 3 0000 12193
... etc ...

EDIT:

$ xinput list-props 12
Device '3M 3M USB Touchscreen - 36955':
    Device Enabled (143):   1
    Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (268): 0
    Device Accel Constant Deceleration (269):   1.000000
    Device Accel Adaptive Deceleration (270):   1.000000
    Device Accel Velocity Scaling (271):    10.000000
    Device Product ID (262):    1430, 1
    Device Node (263):  "/dev/input/event12"
    Evdev Axis Inversion (272): 0, 0
    Evdev Axis Calibration (273):   <no items>
    Evdev Axes Swap (274):  0
    Axis Labels (275):  "Abs X" (266), "Abs Y" (267)
    Button Labels (276):    "Button Unknown" (265), "Button Unknown" (265), "Button Unknown" (265), "Button Wheel Up" (149), "Button Wheel Down" (150)
    Evdev Scrolling Distance (277): 0, 0, 0
    Evdev Middle Button Emulation (278):    0
    Evdev Middle Button Timeout (279):  50
    Evdev Third Button Emulation (280): 0
    Evdev Third Button Emulation Timeout (281): 1000
    Evdev Third Button Emulation Button (282):  3
    Evdev Third Button Emulation Threshold (283):   20
    Evdev Wheel Emulation (284):    0
    Evdev Wheel Emulation Axes (285):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (286):    10
    Evdev Wheel Emulation Timeout (287):    200
    Evdev Wheel Emulation Button (288): 4
    Evdev Drag Lock Buttons (289):  0

And evtest:

sudo evtest /dev/input/event12
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x596 product 0x1 version 0x440
Input device name: "3M 3M USB Touchscreen - 36955"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   6684
      Min        0
      Max    16384
    Event code 1 (ABS_Y)
      Value   6185
      Min        0
      Max    16384
Properties:
Testing ... (interrupt to exit)
Event: time 1507280785.112401, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1507280785.112401, type 3 (EV_ABS), code 0 (ABS_X), value 5971
Event: time 1507280785.112401, type 3 (EV_ABS), code 1 (ABS_Y), value 6240
Event: time 1507280785.112401, -------------- SYN_REPORT ------------
Event: time 1507280785.116364, type 3 (EV_ABS), code 0 (ABS_X), value 5953
Event: time 1507280785.116364, -------------- SYN_REPORT ------------
Event: time 1507280785.118359, type 3 (EV_ABS), code 0 (ABS_X), value 5968
Event: time 1507280785.118359, -------------- SYN_REPORT ------------
# ...........
Event: time 1507280785.156333, -------------- SYN_REPORT ------------
Event: time 1507280785.158356, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1507280785.158356, -------------- SYN_REPORT ------------
  • Please output xinput list-props 12 command in your question. – Redbob Oct 5 '17 at 19:31
  • Have checked the behaviour of your device with the tool evtest (you should use sudo evtest)? – pa4080 Oct 6 '17 at 8:17
  • @pa4080 updated – jaskmar Oct 6 '17 at 9:09
  • Have you tried MultiTouch? Did you related 3M about this interruption after drver installation you told? – Redbob Oct 6 '17 at 10:52
  • @Redbob MultiTouch is a kernel patch, I assume I have to recompile a kernel to install it as it is a script that modifies some source files. I don't want to do that, it's a lot of work. I didn't report a crash yet. – jaskmar Oct 6 '17 at 10:56
1

You will need to install a new kernel to check wheter the new one has firmware for it. First of all verify which is the current kernel in your system by using the command

uname -a

You can manually install kernel 4.13 as its the current stable one.

  1. Proceed to ubuntu kernel 4.13

  2. Based on your uname -a output make sure what your system/os arch is,If it was X86_64 then its a 64 bit,if it was X86 then its a 32 bits.

  3. Make a folder somewhere in your system naming it 4.13, you can also use the command

    mkdir 4.13
    
  4. Enter into the 4.13 directory, now select the files based on your arch

    You can save the either list in a text file for example "kernel_files.list". Now in terminal use wget to download this files.

    wget -i kernel_files.list
    

    This will download the entire list using wget.

  5. Now proceed with installtion of them

    sudo dpkg -i *.deb
    

    This will install all the 3 kernel components together,at last you would see that all kernels have compiled.

  6. Reboot your system to use the new kernel

    reboot
    
  7. Verify the installation of new kernel by issuing the command

    uname -a
    

Now check whether the touch screen works properly or not.

Check whether the system is getting inputs through it using

dmesg

If it still fails, then install

make,gcc,g++,build-utils 

by issuing the command

sudo apt install make gcc g++ build-utils

and then install the touch screen drivers again.

Note #1: If you are not confident to install the new kernel manually then you can use ukuu instead,

For installing ukuu

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install ukuu

Then run ukuu and install 4.13 kernel using ukuu dashboard.

Note #2: You can always switch back to your previous kernel by issuing C during boot of your Ubuntu based machine.

Note #3: Keep your touchscreen and screen dust free and should not have moisture,oil,dirt,etc in it.

Note #4: use a touch pen as it would be more accurate than your finger.

Note #5: kernel 4.14 is under testing so don't install that

  • I know how to upgrade the kernel but it doesn't solve my problem. – jaskmar Oct 12 '17 at 13:25
  • if kernel or drivers dont fix the issue then cant say – SIDDHARTH Oct 12 '17 at 19:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.