lkml.org 
[lkml]   [2010]   [Nov]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: usbhid: HP LD4200tm touchscreen ALMOST works
    On Mon, Oct 25, 2010 at 07:48:01PM -0400, William Sherman wrote:
    > Hello,
    >
    > I'm looking to dig into the usbhid driver code to get me the last
    > mile and get my HP LD4200tm touchscreen working on my Linux system.
    > [NOTE: I posted about this elsewhere, but as I think about it more,
    > this is more of a linux-kernel issue than anything else, so I'm
    > reprising that note here.]
    >

    I think you'll have better luck on linux-input...

    > So, in first connecting the HP touchscreen (with touchscreen hardware
    > from Nexio) to the Linux system (running Ubuntu 10.10 -- 2.6.35-22 generic)
    > things were looking up, as the unit almost worked right out of the box
    > as a plug-and-play device. Unfortunately, that last mile needs to be
    > addressed in order for the unit to work in a useful way. I think I've
    > narrowed down the problem to the usbhid driver, as I'll explain in a
    > moment, and while I expect I have the ability to debug and fix the issue,
    > this would be my first dive into Linux driver coding, so I could probably
    > use a pointer as to what steps are necessary to get the proper kernel
    > sources, compile the needed parts and restart the system (hopefully
    > just restart X-windows) to test my edits (especially since Ubuntu tends
    > to not include a not of the necessary components).
    >
    > I've collected gobs of data on what udev, hidraw, evtest 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.
    >
    > So all I need to do is modify the driver for this device's protocol
    > to not send all the unnecessary release/press events.
    >
    >
    > Here is the data that leads me to believe the issue is at the usbhid
    > layer:
    >
    >
    > 1) Running "evtest /dev/input/event4" reveals that the button barrage
    > is already occurring at the HID event layer.
    >
    > 2) Watching the raw data on /dev/usb/hiddev2 does report a stream of
    > data as the touchscreen is touched (and no data when it's not touched),
    > looking at the output suggests that the device is only reporting touch/
    > release events when the screen is actually touched or released. And of
    > course, even if the device were reporting things poorly, I figure the
    > usbhid driver could be written to overcome this.
    >
    > Fortunately, the data seems to be a constant 14-byte stride, so I
    > wrote a simple awk script ("nexio") to reformat the data as I was
    > figuring out the raw protocol. Here's a sample of the reformatted
    > data, followed by my estimation of the protocol:
    > % sudo xxd -c 14 -g 1 /dev/hidraw2 | nexio
    > 0000000: 01 03 01 12d8 3357 02 02 15e1 1f71 01
    > 000000e: 01 03 01 12cc 332a 02 02 15e1 1f71 01
    > 000001c: 01 03 01 12de 3335 00 02 15e1 1f71 01
    > 000002a: 01 03 01 12f4 3346 00 02 15e1 1f71 01
    > 0000038: 01 03 01 1304 3352 00 02 15e1 1f71 01
    > 0000046: 01 03 01 130c 3358 00 02 15e1 1f71 01
    > [... (next I stop touching the screen, and then touch it again)]
    > 00009a0: 01 03 01 12d8 3357 00 02 15e1 1f71 01
    > 00009ae: 01 03 01 12d8 3357 00 02 15e1 1f71 01
    > 00009bc: 01 02 01 12d8 3357 00 02 15e1 1f71 01
    > 00009ca: 01 03 01 10af 3681 02 02 15e1 1f71 01
    > 00009d8: 01 03 01 10a5 3651 02 02 15e1 1f71 01
    > 00009e6: 01 03 01 10b7 3654 00 02 15e1 1f71 01
    > [... (next is a multi-touch event)]
    > 0000c78: 01 03 01 1019 3627 00 02 15e1 1f71 01
    > 0000c86: 01 03 01 1019 3627 00 02 15e1 1f71 01
    > 0000c94: 01 00 01 100b 35f8 00 02 1585 3110 00
    > 0000ca2: 01 00 01 100e 3604 00 02 158a 311b 00
    > 0000cb0: 01 00 01 1013 3615 00 02 1591 312b 00
    > 0000cbe: 01 00 01 1017 3622 00 02 1596 3136 00
    > 0000ccc: 01 00 01 1019 3628 00 02 1598 313c 00
    > 0000cda: 01 00 01 1019 3629 00 02 1599 313d 00
    > 0000ce8: 01 03 01 1019 3629 03 02 1598 313d 02
    > 0000cf6: 01 03 01 1019 3628 03 02 1598 313c 02
    > 0000d04: 01 03 01 1019 3627 03 02 1598 313b 02
    > 0000d12: 01 03 01 1018 3627 03 02 1597 313a 02
    > [... (next I release both fingers -- not quite simultaneously)]
    > 0000df2: 01 03 01 1019 3627 03 02 1598 3132 02
    > 0000e00: 01 03 01 1019 3627 03 02 1598 3132 02
    > 0000e0e: 01 03 01 1019 3627 02 02 1598 3132 01
    > 0000e1c: 01 03 01 1019 3626 02 02 1598 3132 01
    > 0000e2a: 01 03 01 1019 3626 00 02 1598 3132 01
    > 0000e38: 01 03 01 1019 3626 00 02 1598 3132 01
    > 0000e46: 01 03 01 1019 3626 00 02 1598 3132 01
    > 0000e54: 01 03 01 1019 3626 00 02 1598 3132 01
    > 0000e62: 01 03 01 1019 3625 00 02 1598 3132 01
    > 0000e70: 01 02 01 1019 3625 00 02 1598 3132 01
    >
    > Decoding the above:
    > - column 1: just a reprint of the xxd byte count
    > - column 2: always 01 -- probably a data packet sync byte
    > - column 3: usually 03 (which means an on-going touch event)
    > - 02 seems to indicate a touch-release event
    > - 00 seems to indicate a transition to a dual-touch event
    > - column 4: always 01 -- probably an indicator that the next two
    > words are the X/Y values for touch #1
    > - column 5: value of X location of touch #1
    > - column 6: value of Y location of touch #1
    > - column 7: usually 00
    > - 02 seems to mean initiation of a single-touch event
    > - 03 seems to indicate an on-going dual-touch event
    > - column 8: always 02 -- probably an indicator that the next two
    > words are the X/Y values for touch #2
    > - column 9: value of X location of touch #2
    > - column 10:value of Y location of touch #2
    > - column 11: usually 01 or 02 representing the number of contact points
    > - will be 00 when transitioning from single to dual
    > contact touch event
    >
    > The rest of this email is a sample of some of the data that I've
    > collected about what the system reports. I think this should be
    > sufficient to get across all necessary information, but I have
    > more if warrented.
    >
    > % xinput list --short 10
    > Nexio Touch Device. HID Multi-Touch id=10
    > [slave pointer (2)]
    > % 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.
    >
    > 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
    > shermanw@indiana.edu
    > --
    > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    > Please read the FAQ at http://www.tux.org/lkml/

    --
    Dmitry


    \
     
     \ /
      Last update: 2010-11-01 22:17    [W:0.068 / U:30.652 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site