Hello,

I'm working with an HP LD4200tm touchscreen, and would really
like to use it with a Linux system.

In our first efforts, we were fairly optimistic, because it almost
works right out of the box with no administrator intervention.
Unfortunately, that small delta from almost works to works is enough
to make the system unusable.  So I'm hoping there are some things I
can try that will get us the rest of the way home.

I've collected gobs of data on what udev and X-windows report, but
before I get to any of that, here's the executive summary:

Plugging the HP LD4200tm into a Ubuntu 10.10 system will cause the
device to be recognized, create a usbhid device, create an event device,
activate the evdev driver for Xorg, and put it on the list of X's inputs.
So far, so good.

Touching the device causes the mouse pointer to jump to that location,
even better.

But when I'm touching the screen, what happens is that the system
generates a continuous stream of button presses/releases -- as if
I moved the mouse to a particular location and then went crazy
tapping on the mouse button.  This is the part that makes the system
unusable.

One more data point is that if I touch the screen with a second
finger, the button barrage stops, and it will now gracefully report
the movement of the first finger.

And so I'm hoping there's an option or parameter that can be
adjusted to make everything well -- but I'll be happy if I there
is a new usbhid driver that can be installed to fix things.



So, like I said, I have gobs of data, not sure I want to drown
the list with all of it, so I'll include just a portion of it here.

But first, another couple of data points:

1) Running "evtest /dev/input/event4" reveals that the button barrage
is already occurring at the HID event layer, so I guess I'm already
ruling out that this is directly an Xorg issue, but I still hope
someone on this list can help.

2) Watching the raw data on /dev/usb/hiddev0 does not seem to have
the continuous stream of inputs that would result if it were the
hardware itself causeing the button barrage.

So, I suppose this suggests that the "usbhid" driver is the culprit.


Here's some output from "xinput":
        % xinput list --short 10
Nexio Touch Device. HID Multi-Touch id=10 [slave pointer (2)]

        % xinput query-state 10
        2 classes :
        ButtonClass
                button[1]=up
                button[2]=up
                button[3]=up
                button[4]=up
                button[5]=up
        ValuatorClass Mode=Absolute Proximity=In
                valuator[0]=104
                valuator[1]=14133
                valuator[2]=10663
                valuator[3]=6661
                valuator[4]=0
                valuator[5]=0
                valuator[6]=0
                valuator[7]=0
                valuator[8]=0
                valuator[9]=0
                valuator[10]=0

        % xinput list-props 10
        Device 'Nexio Touch Device.   HID Multi-Touch':
                Device Enabled (121):   1
Coordinate Transformation Matrix (123): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
                Device Accel Profile (240):     0
                Device Accel Constant Deceleration (241):       1.000000
                Device Accel Adaptive Deceleration (242):       1.000000
                Device Accel Velocity Scaling (243):    10.000000
                Evdev Reopen Attempts (238):    10
                Evdev Axis Inversion (244):     0, 0
                Evdev Axis Calibration (245):   <no items>
                Evdev Axes Swap (246):  0
Axis Labels (247): "Abs X" (257), "Abs Y" (258), "Abs Z" (259), "Abs Rotary X" (260), "Abs Rotary Y" (261), "Abs Rotary Z" (262), "Abs Throttle" (263), "Abs Rudder" (264), "None" (0), "None" (0), "None" (0) Button Labels (248): "Button Left" (124), "Button Middle" (125), "Button Right" (126), "Button Wheel Up" (127), "Button Wheel Down" (128)
                Evdev Middle Button Emulation (249):    2
                Evdev Middle Button Timeout (250):      50
                Evdev Wheel Emulation (251):    0
                Evdev Wheel Emulation Axes (252):       0, 0, 4, 5
                Evdev Wheel Emulation Inertia (253):    10
                Evdev Wheel Emulation Timeout (254):    200
                Evdev Wheel Emulation Button (255):     4
                Evdev Drag Lock Buttons (256):  0
        % xinput test 10
        motion a[0]=15177 a[1]=5581 a[2]=15479 a[3]=7829 a[4]=0 a[5]=0
        motion a[6]=0 a[7]=0 a[8]=0 a[9]=0 a[10]=0
        button press   1
        button release 1
        button press   1
        button release 1
        button press   1
        button release 1
        button press   1
        button release 1
        button press   1
        button release 1
        button press   1
        button release 1
        [...]

So you can see that at first contact the location of the touch is reported,
but then there is the continual stream of button press/release.
I don't have similar output from xinput from a multi-touch event,
but I do have both types of events as output from "evtest".


Here is the output from "evtest" from a single finger interaction:
        % sudo evtest /dev/input/event4
        Input driver version is 1.0.1
        Input device ID: bus 0x3 vendor 0x1870 product 0x100 version 0x111
        Input device name: "Nexio Touch Device.   HID Multi-Touch"
        Supported events:
          Event type 0 (Sync)
          Event type 1 (Key)
            Event code 272 (LeftBtn)
            Event code 273 (RightBtn)
            Event code 274 (MiddleBtn)
            Event code 320 (ToolPen)
            Event code 321 (ToolRubber)
            Event code 322 (ToolBrush)
            Event code 330 (Touch)
          Event type 3 (Absolute)
            Event code 0 (X)
              Value  15129
              Min        0
              Max    16383
            Event code 1 (Y)
              Value   6425
              Min        0
              Max    16383
            Event code 2 (Z)
              Value  14859
              Min        0
              Max    16383
            Event code 3 (Rx)
              Value   7160
              Min        0
              Max    16383
            Event code 4 (Ry)
              Value      0
              Min        0
              Max    32767
            Event code 5 (Rz)
              Value      0
              Min        0
              Max    32767
            Event code 6 (Throttle)
              Value      0
              Min        0
              Max    16383
            Event code 7 (Rudder)
              Value      0
              Min        0
              Max    16383
            Event code 40 (Misc)
              Value      1
              Min        0
              Max        1
            Event code 41 (?)
              Value      2
              Min        0
              Max        1
            Event code 42 (?)
              Value      1
              Min        0
              Max        2
          Event type 4 (Misc)
            Event code 4 (ScanCode)
        Testing ... (interrupt to exit)
Event: time 1287784276.760109, type 4 (Misc), code 4 (ScanCode), value d0042
        Event: time 1287784276.760112, type 1 (Key), code 330 (Touch), value 1
        Event: time 1287784276.760119, type 3 (Absolute), code 0 (X), value 
14976
        Event: time 1287784276.760122, type 3 (Absolute), code 1 (Y), value 7291
Event: time 1287784276.760125, type 4 (Misc), code 4 (ScanCode), value d0042
        Event: time 1287784276.760127, type 1 (Key), code 330 (Touch), value 0
        Event: time 1287784276.760130, type 1 (Key), code 321 (ToolRubber), 
value 1
        Event: time 1287784276.760139, -------------- Report Sync ------------
Event: time 1287784276.773107, type 4 (Misc), code 4 (ScanCode), value d0042
        Event: time 1287784276.773111, type 1 (Key), code 330 (Touch), value 1
        Event: time 1287784276.773117, type 3 (Absolute), code 0 (X), value 
14925
        Event: time 1287784276.773120, type 3 (Absolute), code 1 (Y), value 7266
Event: time 1287784276.773123, type 4 (Misc), code 4 (ScanCode), value d0042
        Event: time 1287784276.773124, type 1 (Key), code 330 (Touch), value 0
        Event: time 1287784276.773135, -------------- Report Sync ------------
Event: time 1287784276.785094, type 4 (Misc), code 4 (ScanCode), value d0042
        Event: time 1287784276.785099, type 1 (Key), code 330 (Touch), value 1
        Event: time 1287784276.785105, type 3 (Absolute), code 0 (X), value 
14937
        Event: time 1287784276.785108, type 3 (Absolute), code 1 (Y), value 7269
Event: time 1287784276.785112, type 4 (Misc), code 4 (ScanCode), value d0042
        Event: time 1287784276.785113, type 1 (Key), code 330 (Touch), value 0
        Event: time 1287784276.785116, type 1 (Key), code 321 (ToolRubber), 
value 0
        Event: time 1287784276.785125, -------------- Report Sync ------------
        ^C

And here is the output of "evtest" from when I touched the screen with
two fingers:
        % sudo evtest /dev/input/event4
        Input driver version is 1.0.1
        Input device ID: bus 0x3 vendor 0x1870 product 0x100 version 0x111
        Input device name: "Nexio Touch Device.   HID Multi-Touch"
        Supported events:
          Event type 0 (Sync)
          Event type 1 (Key)
            Event code 272 (LeftBtn)
            Event code 273 (RightBtn)
            Event code 274 (MiddleBtn)
            Event code 320 (ToolPen)
            Event code 321 (ToolRubber)
            Event code 322 (ToolBrush)
            Event code 330 (Touch)
          Event type 3 (Absolute)
            Event code 0 (X)
              Value  14937
              Min        0
              Max    16383
            Event code 1 (Y)
              Value   7269
              Min        0
              Max    16383
            Event code 2 (Z)
              Value  14859
              Min        0
              Max    16383
            Event code 3 (Rx)
              Value   7160
              Min        0
              Max    16383
            Event code 4 (Ry)
              Value      0
              Min        0
              Max    32767
            Event code 5 (Rz)
              Value      0
              Min        0
              Max    32767
            Event code 6 (Throttle)
              Value      0
              Min        0
              Max    16383
            Event code 7 (Rudder)
              Value      0
              Min        0
              Max    16383
            Event code 40 (Misc)
              Value      1
              Min        0
              Max        1
            Event code 41 (?)
              Value      2
              Min        0
              Max        1
            Event code 42 (?)
              Value      1
              Min        0
              Max        2
          Event type 4 (Misc)
            Event code 4 (ScanCode)
        Testing ... (interrupt to exit)
        Event: time 1287784360.966997, type 1 (Key), code 320 (ToolPen), value 0
        Event: time 1287784360.967004, type 3 (Absolute), code 0 (X), value 
14717
        Event: time 1287784360.967006, type 3 (Absolute), code 1 (Y), value 6211
        Event: time 1287784360.967014, type 3 (Absolute), code 2 (Z), value 
15680
        Event: time 1287784360.967016, type 3 (Absolute), code 3 (Rx), value 
6211
        Event: time 1287784360.967019, type 3 (Absolute), code 42 (?), value 0
        Event: time 1287784360.967020, -------------- Report Sync ------------
        Event: time 1287784360.979997, type 3 (Absolute), code 0 (X), value 
14667
        Event: time 1287784360.980001, type 3 (Absolute), code 1 (Y), value 6189
        Event: time 1287784360.980008, type 3 (Absolute), code 2 (Z), value 
15626
        Event: time 1287784360.980011, type 3 (Absolute), code 3 (Rx), value 
6189
        Event: time 1287784360.980014, -------------- Report Sync ------------
        Event: time 1287784360.992997, type 3 (Absolute), code 0 (X), value 
14684
        Event: time 1287784360.993000, type 3 (Absolute), code 1 (Y), value 6195
        Event: time 1287784360.993008, type 3 (Absolute), code 2 (Z), value 
15640
        Event: time 1287784360.993011, type 3 (Absolute), code 3 (Rx), value 
6195
        Event: time 1287784360.993014, -------------- Report Sync ------------
        Event: time 1287784361.005998, type 3 (Absolute), code 0 (X), value 
14715
        Event: time 1287784361.006001, type 3 (Absolute), code 1 (Y), value 6220
        Event: time 1287784361.006008, type 3 (Absolute), code 2 (Z), value 
15660
        Event: time 1287784361.006011, type 3 (Absolute), code 3 (Rx), value 
6220
        Event: time 1287784361.006014, -------------- Report Sync ------------
        Event: time 1287784361.018000, type 3 (Absolute), code 0 (X), value 
14745
        Event: time 1287784361.018004, type 3 (Absolute), code 1 (Y), value 6278
        Event: time 1287784361.018012, type 3 (Absolute), code 2 (Z), value 
15674
        Event: time 1287784361.018014, type 3 (Absolute), code 3 (Rx), value 
6278
        Event: time 1287784361.018017, -------------- Report Sync ------------
        Event: time 1287784361.030997, type 3 (Absolute), code 0 (X), value 
14767
        Event: time 1287784361.031000, type 3 (Absolute), code 1 (Y), value 6358
        Event: time 1287784361.031008, type 3 (Absolute), code 2 (Z), value 
15680
        Event: time 1287784361.031010, type 3 (Absolute), code 3 (Rx), value 
6358
        Event: time 1287784361.031013, -------------- Report Sync ------------
Event: time 1287784361.043996, type 4 (Misc), code 4 (ScanCode), value d0042
        Event: time 1287784361.043999, type 1 (Key), code 330 (Touch), value 1
        Event: time 1287784361.044001, type 1 (Key), code 320 (ToolPen), value 1
        Event: time 1287784361.044006, type 3 (Absolute), code 0 (X), value 
14777
        Event: time 1287784361.044008, type 3 (Absolute), code 1 (Y), value 6451
        Event: time 1287784361.044012, type 1 (Key), code 321 (ToolRubber), 
value 1
        Event: time 1287784361.044016, type 3 (Absolute), code 2 (Z), value 
15682
        Event: time 1287784361.044019, type 3 (Absolute), code 3 (Rx), value 
6451
        Event: time 1287784361.044021, type 3 (Absolute), code 42 (?), value 2
        Event: time 1287784361.044023, -------------- Report Sync ------------
        Event: time 1287784361.057000, type 3 (Absolute), code 0 (X), value 
14779
        Event: time 1287784361.057004, type 3 (Absolute), code 1 (Y), value 6546
        Event: time 1287784361.057012, type 3 (Absolute), code 3 (Rx), value 
6546
        Event: time 1287784361.057016, -------------- Report Sync ------------
        Event: time 1287784361.069998, type 3 (Absolute), code 0 (X), value 
14778
        Event: time 1287784361.070001, type 3 (Absolute), code 1 (Y), value 6640
        Event: time 1287784361.070009, type 3 (Absolute), code 2 (Z), value 
15681
        Event: time 1287784361.070011, type 3 (Absolute), code 3 (Rx), value 
6640
        Event: time 1287784361.070014, -------------- Report Sync ------------
        Event: time 1287784361.081989, type 3 (Absolute), code 0 (X), value 
14776
        Event: time 1287784361.081992, type 3 (Absolute), code 1 (Y), value 6733
        Event: time 1287784361.082000, type 3 (Absolute), code 2 (Z), value 
15680
        Event: time 1287784361.082002, type 3 (Absolute), code 3 (Rx), value 
6733
        Event: time 1287784361.082005, -------------- Report Sync ------------
        Event: time 1287784361.094987, type 3 (Absolute), code 0 (X), value 
14775
        Event: time 1287784361.094990, type 3 (Absolute), code 1 (Y), value 6832
        Event: time 1287784361.094998, type 3 (Absolute), code 2 (Z), value 
15679
        Event: time 1287784361.095000, type 3 (Absolute), code 3 (Rx), value 
6832
        Event: time 1287784361.095004, -------------- Report Sync ------------
        Event: time 1287784361.107986, type 3 (Absolute), code 0 (X), value 
14774
        Event: time 1287784361.107990, type 3 (Absolute), code 1 (Y), value 6939
        Event: time 1287784361.107999, type 3 (Absolute), code 3 (Rx), value 
6939
        Event: time 1287784361.108002, -------------- Report Sync ------------
        Event: time 1287784361.121001, type 3 (Absolute), code 1 (Y), value 7042
        Event: time 1287784361.121011, type 3 (Absolute), code 3 (Rx), value 
7042
        Event: time 1287784361.121014, -------------- Report Sync ------------
        Event: time 1287784361.132987, type 3 (Absolute), code 0 (X), value 
14779
        Event: time 1287784361.132991, type 3 (Absolute), code 1 (Y), value 7138
        Event: time 1287784361.132999, type 3 (Absolute), code 3 (Rx), value 
7138
        Event: time 1287784361.133003, -------------- Report Sync ------------
        Event: time 1287784361.145998, type 3 (Absolute), code 0 (X), value 
14794
        Event: time 1287784361.146001, type 3 (Absolute), code 1 (Y), value 7221
        Event: time 1287784361.146010, type 3 (Absolute), code 3 (Rx), value 
7221
        Event: time 1287784361.146014, -------------- Report Sync ------------
        Event: time 1287784361.158999, type 3 (Absolute), code 0 (X), value 
14815
        Event: time 1287784361.159003, type 3 (Absolute), code 1 (Y), value 7284
        Event: time 1287784361.159010, type 3 (Absolute), code 2 (Z), value 
15684
        Event: time 1287784361.159012, type 3 (Absolute), code 3 (Rx), value 
7284
        Event: time 1287784361.159016, -------------- Report Sync ------------
Event: time 1287784361.183994, type 4 (Misc), code 4 (ScanCode), value d0042
        Event: time 1287784361.183996, type 1 (Key), code 330 (Touch), value 0
        Event: time 1287784361.184014, -------------- Report Sync ------------
        ^C

So you can see that the location of both fingers is reported for the
multi-touch operation (with one finger reported as X & Y, and the
second finger as Z & Rx).  But with one finger, it's a bunch of button
presses and then nearly instantaneous releases.


And one final bit of information.  Here is the relevant information from
the udev.log:
        -----------------------------
UDEV [1287664208.316717] add /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4/event4 (input)
        UDEV_LOG=3
        ACTION=add
        
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4/event4
        SUBSYSTEM=input
        DEVNAME=/dev/input/event4
        SEQNUM=1272
        ID_INPUT=1
        ID_INPUT_TABLET=1
        ID_VENDOR=Nexio_Touch_Device.
        ID_VENDOR_ENC=Nexio\x20Touch\x20Device.\x20\x20
        ID_VENDOR_ID=1870
        ID_MODEL=HID_Multi-Touch
        ID_MODEL_ENC=HID\x20Multi-Touch
        ID_MODEL_ID=0100
        ID_REVISION=0006
        ID_SERIAL=Nexio_Touch_Device._HID_Multi-Touch
        ID_TYPE=hid
        ID_BUS=usb
        ID_USB_INTERFACES=:030000:
        ID_USB_INTERFACE_NUM=00
        ID_USB_DRIVER=usbhid
        ID_PATH=pci-0000:00:1d.2-usb-0:2:1.0
        MAJOR=13
        MINOR=68
DEVLINKS=/dev/char/13:68 /dev/input/by-id/usb-Nexio_Touch_Device._HID_Multi-Touch-event-mouse /dev/input/by-path/pci-0000:00:1d.2-usb-0:2:1.0-event-mouse

UDEV [1287664208.316759] add /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4/mouse1 (input)
        UDEV_LOG=3
        ACTION=add
        
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4/mouse1
        SUBSYSTEM=input
        DEVNAME=/dev/input/mouse1
        SEQNUM=1273
        ID_INPUT=1
        ID_INPUT_TABLET=1
        ID_VENDOR=Nexio_Touch_Device.
        ID_VENDOR_ENC=Nexio\x20Touch\x20Device.\x20\x20
        ID_VENDOR_ID=1870
        ID_MODEL=HID_Multi-Touch
        ID_MODEL_ENC=HID\x20Multi-Touch
        ID_MODEL_ID=0100
        ID_REVISION=0006
        ID_SERIAL=Nexio_Touch_Device._HID_Multi-Touch
        ID_TYPE=hid
        ID_BUS=usb
        ID_USB_INTERFACES=:030000:
        ID_USB_INTERFACE_NUM=00
        ID_USB_DRIVER=usbhid
        ID_PATH=pci-0000:00:1d.2-usb-0:2:1.0
        MAJOR=13
        MINOR=33
DEVLINKS=/dev/char/13:33 /dev/input/by-id/usb-Nexio_Touch_Device._HID_Multi-Touch-mouse /dev/input/by-path/pci-0000:00:1d.2-usb-0:2:1.0-mouse
        -----------------------------

And if that isn't enough info, I'm happy to provide more.


        Thanks for whatever suggestions you can provide,
        Bill

--
Bill Sherman
Sr. Technology Advisor
Advanced Visualization Lab
Pervasive Technology Inst
Indiana University
[email protected]
_______________________________________________
[email protected]: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: [email protected]

Reply via email to