* Re: evdev and Trust TB-5300 tablet: wrong axis labels
[not found] <200912130058.46220.dan@riga.lv>
@ 2009-12-13 1:27 ` Matthew Helsley
2009-12-13 16:25 ` Daniil V. Kolpakov
0 siblings, 1 reply; 10+ messages in thread
From: Matthew Helsley @ 2009-12-13 1:27 UTC (permalink / raw)
To: Daniil Kolpakov; +Cc: linux-input, linux-usb, xorg
2009/12/12 Daniil Kolpakov <dan@riga.lv>:
> (Sorry, the email was send from wrong address. Resending it.)
>
> Hi,
>
> I'm playing with Trust TB-5300 tablet, which gets identified as "UC-LOGIC
> Tablet WP5540U" by HAL and xorg loads evdev driver for it on plug.
>
> I'm getting the following list of axes with xinput list --long:
> Abs X, Abs Y, Abs Z, Abs Rotary X, Abs Pressure (5 axes). xinput test shows
> output like this:
>
> motion a[0]=0 a[1]=0 a[2]=32045 a[3]=16538 a[4]=55
> motion a[0]=0 a[1]=0 a[2]=32072 a[3]=16575 a[4]=54
> motion a[0]=0 a[1]=0 a[2]=32114 a[3]=16596 a[4]=49
>
> a[0] and a[1] is always 0, a[2] is X, a[3] is Y and a[4] is pressure.
What does /proc/bus/input/devices say about your tablet? I've got a
UC-LOGIC "Genius Pensketch 12x9" which had (and still has) some USB
quirks. The worst was it reported the X axis as the Z axis. It turned
out that the hid descriptor was bad and thus the kernel hid parser got
confused. Specifying the "MULTI" quirk seemed to fix the axis
labelling problem. You can test it and other quirks out by writing to
a sysfs file -- though I'm looking and can't seem to find it on my
2.6.31 distro kernel :(.
(Cc'ing linux-input and linux-usb in case they can offer help with any
potential kernel-level workarounds/fixes/etc)
The rest of this email is my own experience with a UC-LOGIC tablet and
may or may not be useful to you.
Cheers,
-Matt Helsley
For example, here's my tablet's description in /proc/bus/input/devices
before (circa 2.6.24) and after applying the quirk (circa 2.6.31)
respectively:
BEFORE (1 entry):
I: Bus=0003 Vendor=5543 Product=0042 Version=0100
N: Name=" Tablet PF1209"
P: Phys=usb-0000:00:02.0-8/input0
S: Sysfs=/devices/pci0000:00/0000:00:02.0/usb1/1-8/1-8:1.0/input/input9
U: Uniq=
H: Handlers=mouse1 event1
B: EV=1f
B: KEY=c01 3f0001 0 0 0 0
B: REL=303
B: ABS=100000f
B: MSC=10
AFTER (3 entries):
I: Bus=0003 Vendor=5543 Product=0042 Version=0100
N: Name=" Tablet PF1209"
P: Phys=usb-0000:00:1d.1-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb6/6-2/6-2:1.0/input/input6
U: Uniq=
H: Handlers=mouse2 event6 evbug
B: EV=1b
B: KEY=c01 1 0 0 0 0
B: ABS=1000003
B: MSC=10
I: Bus=0003 Vendor=5543 Product=0042 Version=0100
N: Name=" Tablet PF1209"
P: Phys=usb-0000:00:1d.1-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb6/6-2/6-2:1.0/input/input7
U: Uniq=
H: Handlers=mouse3 event7 evbug
B: EV=17
B: KEY=70000 0 0 0 0
B: REL=303
B: MSC=10
I: Bus=0003 Vendor=5543 Product=0042 Version=0100
N: Name=" Tablet PF1209"
P: Phys=usb-0000:00:1d.1-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb6/6-2/6-2:1.0/input/input8
U: Uniq=
H: Handlers=mouse4 event8 evbug
B: EV=1b
B: KEY=400 70000 0 0 0 0
B: ABS=1000003
B: MSC=10
Note how REL and ABS reports don't appear in the same entry anymore.
In the original entry, if you decode the bits, you can see that it was
claiming to report both relative and absolute axis. Of course this is
not, strictly speaking, an indicator of a bug either. However the fact
is the "puck" reports relative events while the pen reports absolute
events. I could determine this by running a test program on the
/dev/input/eventX device mentioned and seeing what kinds of events
each triggered. Now with the "MULTI" quirk it produces 3 entries.
Some other fun quirks you may look forward too:
Unfortunately, only two of the event devices actually emit events. The
resolutions and ranges of the axii aren't properly reported on every
device. Also the device occaisionally enters a state where all but a
thin border of the active area is disabled. "Fixing" this requires
hooking the tablet up to a windows box with a usb switch and then
"switching" it to the Linux box without powering off. So it seems
there are some magic commands the windows driver knows about which I
couldn't see in the HID descriptor table (would they be there?) which
re-enable/specify the active area. Since getting into the state never
happens with the computer/tablet powered on I can't debug this
problem.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
2009-12-13 1:27 ` evdev and Trust TB-5300 tablet: wrong axis labels Matthew Helsley
@ 2009-12-13 16:25 ` Daniil V. Kolpakov
2009-12-13 21:23 ` Daniil V. Kolpakov
[not found] ` <200912131825.03872.dan-A/X3QuVk8WQ@public.gmane.org>
0 siblings, 2 replies; 10+ messages in thread
From: Daniil V. Kolpakov @ 2009-12-13 16:25 UTC (permalink / raw)
To: Matthew Helsley, xorg; +Cc: linux-usb, linux-input
Matthew, thanks for the info!
В сообщении от 13 декабря 2009 Matthew Helsley написал(a):
> What does /proc/bus/input/devices say about your tablet? I've got a
> UC-LOGIC "Genius Pensketch 12x9" which had (and still has) some USB
> quirks. The worst was it reported the X axis as the Z axis. It turned
> out that the hid descriptor was bad and thus the kernel hid parser got
> confused. Specifying the "MULTI" quirk seemed to fix the axis
> labelling problem. You can test it and other quirks out by writing to
> a sysfs file -- though I'm looking and can't seem to find it on my
> 2.6.31 distro kernel :(.
/proc/bus/input/devices says pretty much the same as it does in your case:
I: Bus=0003 Vendor=5543 Product=0004 Version=0100
N: Name="UC-LOGIC Tablet WP5540U"
P: Phys=usb-0000:03:00.0-2/input0
S:
Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input6
U: Uniq=
H: Handlers=mouse2 event6
B: EV=1f
B: KEY=c01 3f0001 0 0 0 0
B: REL=303
B: ABS=100000f
B: MSC=10
I can't find any information on how to enable quirks through sysfs (and where
to get list of available quirks, too). Can you point me to some documentation
on this subject?
--
Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
Support open standards! Take a look at this nice presentation:
http://www.dwheeler.com/essays/open-standards-security.pdf
_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
2009-12-13 16:25 ` Daniil V. Kolpakov
@ 2009-12-13 21:23 ` Daniil V. Kolpakov
2009-12-13 21:36 ` Daniil V. Kolpakov
[not found] ` <200912131825.03872.dan-A/X3QuVk8WQ@public.gmane.org>
1 sibling, 1 reply; 10+ messages in thread
From: Daniil V. Kolpakov @ 2009-12-13 21:23 UTC (permalink / raw)
To: xorg, Matthew Helsley; +Cc: linux-usb, linux-input
В сообщении от 13 декабря 2009 Daniil V. Kolpakov написал(a):
> I can't find any information on how to enable quirks through sysfs (and
> where to get list of available quirks, too). Can you point me to some
> documentation on this subject?
Hmm, it must be /sys/module/usbhid/parameters/quirks file! But what's the
format, and how do I know the values for enabling "MULTI" quirk?
--
Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
Support open standards! Take a look at this nice presentation:
http://www.dwheeler.com/essays/open-standards-security.pdf
_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
2009-12-13 21:23 ` Daniil V. Kolpakov
@ 2009-12-13 21:36 ` Daniil V. Kolpakov
0 siblings, 0 replies; 10+ messages in thread
From: Daniil V. Kolpakov @ 2009-12-13 21:36 UTC (permalink / raw)
To: xorg, Matthew Helsley; +Cc: linux-usb, linux-input
В сообщении от 13 декабря 2009 Daniil V. Kolpakov написал(a):
> В сообщении от 13 декабря 2009 Daniil V. Kolpakov написал(a):
> > I can't find any information on how to enable quirks through sysfs (and
> > where to get list of available quirks, too). Can you point me to some
> > documentation on this subject?
>
> Hmm, it must be /sys/module/usbhid/parameters/quirks file! But what's the
> format, and how do I know the values for enabling "MULTI" quirk?
>
$ /sbin/modinfo usbhid | grep quirks
parm: quirks:Add/modify USB HID quirks by specifying
quirks=vendorID:productID:quirks where vendorID, productID, and quirks are all
in 0x-prefixed hex (array of charp)
I guess reading usbhid source should drop some light on my question :)
--
Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
Support open standards! Take a look at this nice presentation:
http://www.dwheeler.com/essays/open-standards-security.pdf
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
[not found] ` <200912131825.03872.dan-A/X3QuVk8WQ@public.gmane.org>
@ 2009-12-14 2:35 ` Matthew Helsley
2009-12-14 23:06 ` Daniil V. Kolpakov
0 siblings, 1 reply; 10+ messages in thread
From: Matthew Helsley @ 2009-12-14 2:35 UTC (permalink / raw)
To: Daniil V. Kolpakov
Cc: xorg-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
linux-input-u79uwXL29TY76Z2rM5mHXA,
linux-usb-u79uwXL29TY76Z2rM5mHXA
[-- Attachment #1: Type: text/plain, Size: 5890 bytes --]
2009/12/13 Daniil V. Kolpakov <dan-A/X3QuVk8WQ@public.gmane.org>:
> Matthew, thanks for the info!
You're quite welcome!
> В сообщении от 13 декабря 2009 Matthew Helsley написал(a):
>> What does /proc/bus/input/devices say about your tablet? I've got a
>> UC-LOGIC "Genius Pensketch 12x9" which had (and still has) some USB
>> quirks. The worst was it reported the X axis as the Z axis. It turned
>> out that the hid descriptor was bad and thus the kernel hid parser got
>> confused. Specifying the "MULTI" quirk seemed to fix the axis
>> labelling problem. You can test it and other quirks out by writing to
>> a sysfs file -- though I'm looking and can't seem to find it on my
>> 2.6.31 distro kernel :(.
>
> /proc/bus/input/devices says pretty much the same as it does in your case:
>
> I: Bus=0003 Vendor=5543 Product=0004 Version=0100
> N: Name="UC-LOGIC Tablet WP5540U"
Looks like they may have re-branded the "Genius MousePen 5x4 Tablet"
to your "Trust TB-5300". Here's the usb.ids section which suggests
that:
5543 UC-Logic Technology Corp.
0002 SuperPen WP3325U Tablet
0003 Genius MousePen 4x3 Tablet/Aquila L1 Tablet
0004 Genius MousePen 5x4 Tablet
0005 Genius MousePen 8x6 Tablet
0041 Genius PenSketch 6x8 Tablet
0042 Genius PenSketch 12x9 Tablet
If you search for "Genius MousePen 5x4 Tablet" or something like it
then perhaps you'll find more ideas for fixing your tablet. Of course
this could be misleading -- I believe there are examples of vendors
re-using USB vendor:product pairs for different products.
> P: Phys=usb-0000:03:00.0-2/input0
> S:
> Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input6
> U: Uniq=
> H: Handlers=mouse2 event6
To decode the following you can use /usr/include/linux/input.h
(assuming you have a libc devel package installed. I've decoded it
below:
> B: EV=1f
> B: KEY=c01 3f0001 0 0 0 0
> B: REL=303
This is: 001100000011
which says it reports REL_MISC, REL_WHEEL, REL_Y, and REL_X events.
> B: ABS=100000f
This one says it reports ABS_X, ABS_Y, ABS_Z, ABS_RX and ABS_PRESSURE.
So, as you can see, the evdev driver properly decoded what the kernel
told it about the device. It seems like the events produced by the
kernel are wrong because the hid descriptor is probably broken.
Incidentally, you can get a copy of that too.
This isn't what I used -- it looks even more helpful:
http://old.nabble.com/How-to-dump-HID-report-descriptor-under-Linux-td19609562.html
With the example, decoded HID descriptor printed here:
http://old.nabble.com/Re%3A-How-to-dump-HID-report-descriptor-under-Linux-p20159409.html
Which suggests (running as root user):
user@localhost: ~/$ less /proc/bus/input/devices
...
I: Bus=0003 Vendor=5543 Product=0042 Version=0100
^^^^^ ^^^^
N: Name=" Tablet PF1209"
P: Phys=usb-0000:00:1d.1-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb6/6-2/6-2:1.0/input/input10
^^^^^^^
...
root@localhost: ~/# echo '6-2:1.0' > /sys/bus/usb/drivers/usbhid/unbind
root@localhost: ~/# lsusb -vvv -d '5543:0042'
Bus 006 Device 002: ID 5543:0042 UC-Logic Technology Corp. Genius
PenSketch 12x9 Tablet
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x5543 UC-Logic Technology Corp.
idProduct 0x0042 Genius PenSketch 12x9 Tablet
bcdDevice 0.00
iManufacturer 1
iProduct 2 Tablet PF1209
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 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 2 Mouse
iInterface 2 Tablet PF1209
** UNRECOGNIZED: 09 21 00 01 00 01 22 ea 00
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
Device Status: 0x0000
(Bus Powered)
Apparently it should have output a section entitled: "HID Device
Descriptor:" and instead I got "** UNRECOGNIZED: 09 21 00 01 00 01 22
ea 00". Do you get the same?
I recompiled my kernel to enable HID debugging which, I think, dumped
the raw table as a series of hexadecimal values. I decoded it to the
attached file using some utility I've long since forgotten. Manual
decoding requires reading the USB, HID, and HID Usage Tables standards
:(. I did some rudimentary hand decoding of my own which suggested the
table was broken but I can't recall the details.
For me, being unfamiliar with the details of the USB, HID, and kernel
input subsystems (not to mention the standards), the tiny amount of
work I managed to accomplish to get minimal support of my tablet was
still quite a learning experience.
Cheers,
-Matt Helsley
[-- Attachment #2: tablet.hid_reports --]
[-- Type: application/octet-stream, Size: 12694 bytes --]
[0x0000] 0x05 0x0d (value: 0xd / 13)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x0002] 0x09 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0004] 0xa1 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x0a (Collection) (Application)
[0x0006] 0x85 0x07 (value: 0x7 / 7)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x08 (Report ID)
[0x0008] 0x09 0x20 (value: 0x20 / 32)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x000a] 0xa1 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x0a (Collection) (Physical)
[0x000c] 0x09 0x42 (value: 0x42 / 66)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x000e] 0x09 0x44 (value: 0x44 / 68)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0010] 0x09 0x45 (value: 0x45 / 69)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0012] 0x15 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x01 (Logical Minimum)
[0x0014] 0x25 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x0016] 0x75 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x0018] 0x95 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x001a] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x001c] 0x95 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x001e] 0x81 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x0020] 0x09 0x32 (value: 0x32 / 50)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0022] 0x95 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x0024] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x0026] 0x95 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x0028] 0x81 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x002a] 0x05 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x002c] 0x09 0x30 (value: 0x30 / 48)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x002e] 0x75 0x10 (value: 0x10 / 16)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x0030] 0x95 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x0032] 0xa4
bSize = 0 byte(s)
bType = 0x01 (Global)
bTag = 0x0a (Push)
[0x0033] 0x55 0x0d (value: 0xd / 13)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x05 (Unit Exponent)
[0x0035] 0x65 0x33 (value: 0x33 / 51)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x06 (Unit)
[0x0037] 0x35 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x03 (Physical Minimum)
[0x0039] 0x46 0xe0 0x2e (value: 0x2ee0 / 12000)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x04 (Physical Maximum)
[0x003c] 0x26 0xc0 0x5d (value: 0x5dc0 / 24000)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x003f] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x0041] 0x09 0x31 (value: 0x31 / 49)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0043] 0x46 0x28 0x23 (value: 0x2328 / 9000)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x04 (Physical Maximum)
[0x0046] 0x26 0x50 0x46 (value: 0x4650 / 18000)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x0049] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x004b] 0xb4
bSize = 0 byte(s)
bType = 0x01 (Global)
bTag = 0x0b (Pop)
[0x004c] 0x05 0x0d (value: 0xd / 13)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x004e] 0x09 0x30 (value: 0x30 / 48)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0050] 0x26 0xff 0x03 (value: 0x3ff / 1023)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x0053] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x0055] 0x75 0x10 (value: 0x10 / 16)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x0057] 0xc0
bSize = 0 byte(s)
bType = 0x00 (Main)
bTag = 0x0c (End Collection)
[0x0058] 0xc0
bSize = 0 byte(s)
bType = 0x00 (Main)
bTag = 0x0c (End Collection)
[0x0059] 0x05 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x005b] 0x09 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x005d] 0xa1 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x0a (Collection) (Application)
[0x005f] 0x85 0x08 (value: 0x8 / 8)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x08 (Report ID)
[0x0061] 0x09 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0063] 0xa1 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x0a (Collection) (Physical)
[0x0065] 0x05 0x09 (value: 0x9 / 9)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x0067] 0x19 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x01 (Usage Minimum)
[0x0069] 0x29 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x02 (Usage Maximum)
[0x006b] 0x15 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x01 (Logical Minimum)
[0x006d] 0x25 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x006f] 0x95 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x0071] 0x75 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x0073] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x0075] 0x95 0x05 (value: 0x5 / 5)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x0077] 0x81 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x0079] 0x05 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x007b] 0x09 0x30 (value: 0x30 / 48)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x007d] 0x09 0x31 (value: 0x31 / 49)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x007f] 0x09 0x38 (value: 0x38 / 56)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0081] 0x09 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0083] 0x15 0x81 (value: 0x81 / 129)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x01 (Logical Minimum)
[0x0085] 0x25 0x7f (value: 0x7f / 127)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x0087] 0x75 0x08 (value: 0x8 / 8)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x0089] 0x95 0x04 (value: 0x4 / 4)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x008b] 0x81 0x06 (value: 0x6 / 6)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x008d] 0xc0
bSize = 0 byte(s)
bType = 0x00 (Main)
bTag = 0x0c (End Collection)
[0x008e] 0xc0
bSize = 0 byte(s)
bType = 0x00 (Main)
bTag = 0x0c (End Collection)
[0x008f] 0x05 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x0091] 0x09 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0093] 0xa1 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x0a (Collection) (Application)
[0x0095] 0x85 0x09 (value: 0x9 / 9)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x08 (Report ID)
[0x0097] 0x09 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x0099] 0xa1 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x0a (Collection) (Physical)
[0x009b] 0x05 0x09 (value: 0x9 / 9)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x009d] 0x19 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x01 (Usage Minimum)
[0x009f] 0x29 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x02 (Usage Maximum)
[0x00a1] 0x15 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x01 (Logical Minimum)
[0x00a3] 0x25 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x00a5] 0x95 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x00a7] 0x75 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x00a9] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x00ab] 0x95 0x05 (value: 0x5 / 5)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x00ad] 0x81 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x00af] 0x05 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x00b1] 0x09 0x30 (value: 0x30 / 48)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x00b3] 0x09 0x31 (value: 0x31 / 49)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x00b5] 0x15 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x01 (Logical Minimum)
[0x00b7] 0x26 0xff 0x7f (value: 0x7fff / 32767)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x00ba] 0x35 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x03 (Physical Minimum)
[0x00bc] 0x46 0xff 0x7f (value: 0x7fff / 32767)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x04 (Physical Maximum)
[0x00bf] 0x95 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x00c1] 0x75 0x10 (value: 0x10 / 16)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x00c3] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x00c5] 0x05 0x0d (value: 0xd / 13)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x00c7] 0x09 0x30 (value: 0x30 / 48)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x00c9] 0x26 0xff 0x03 (value: 0x3ff / 1023)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x00cc] 0x95 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x00ce] 0x75 0x10 (value: 0x10 / 16)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x00d0] 0x81 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x08 (Input)
[0x00d2] 0xc0
bSize = 0 byte(s)
bType = 0x00 (Main)
bTag = 0x0c (End Collection)
[0x00d3] 0xc0
bSize = 0 byte(s)
bType = 0x00 (Main)
bTag = 0x0c (End Collection)
[0x00d4] 0x05 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x00 (Usage page)
[0x00d6] 0x09 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x00d8] 0xa1 0x01 (value: 0x1 / 1)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x0a (Collection) (Application)
[0x00da] 0x85 0x04 (value: 0x4 / 4)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x08 (Report ID)
[0x00dc] 0x15 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x01 (Logical Minimum)
[0x00de] 0x26 0xff 0x00 (value: 0xff / 255)
bSize = 2 byte(s)
bType = 0x01 (Global)
bTag = 0x02 (Logical Maximum)
[0x00e1] 0x09 0x00 (value: 0x0 / 0)
bSize = 1 byte(s)
bType = 0x02 (Local)
bTag = 0x00 (Usage)
[0x00e3] 0x75 0x08 (value: 0x8 / 8)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x07 (Report Size)
[0x00e5] 0x95 0x03 (value: 0x3 / 3)
bSize = 1 byte(s)
bType = 0x01 (Global)
bTag = 0x09 (Report Count)
[0x00e7] 0xb1 0x02 (value: 0x2 / 2)
bSize = 1 byte(s)
bType = 0x00 (Main)
bTag = 0x0b (Feature)
[0x00e9] 0xc0
bSize = 0 byte(s)
bType = 0x00 (Main)
bTag = 0x0c (End Collection)
done
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
2009-12-14 2:35 ` Matthew Helsley
@ 2009-12-14 23:06 ` Daniil V. Kolpakov
2009-12-14 23:11 ` Daniil V. Kolpakov
2009-12-14 23:46 ` Peter Hutterer
0 siblings, 2 replies; 10+ messages in thread
From: Daniil V. Kolpakov @ 2009-12-14 23:06 UTC (permalink / raw)
To: Matthew Helsley; +Cc: linux-input, linux-usb, xorg
В сообщении от 14 декабря 2009 Matthew Helsley написал(a):
[...]
> Looks like they may have re-branded the "Genius MousePen 5x4 Tablet"
> to your "Trust TB-5300".
[...]
> If you search for "Genius MousePen 5x4 Tablet" or something like it
> then perhaps you'll find more ideas for fixing your tablet.
Nothing interesting — mostly I get howtos on installing some (proprietary?)
driver called "wizardpen", and usually with xorg.conf instead of HAL rules.
I've tried enabling "MULTI_INPUT" quirk, as you've suggested:
[root@shinestar:~]$ modprobe -r usbhid
[root@shinestar:~]$ modprobe usbhid "quirks=0x5543:0x0004:0x0040"
It "splitted" the tablet to three devices, as in your case:
I: Bus=0003 Vendor=5543 Product=0004 Version=0100
N: Name="UC-LOGIC Tablet WP5540U"
P: Phys=usb-0000:03:00.0-2/input0
S:
Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input15
U: Uniq=
H: Handlers=mouse2 event6
B: EV=1b
B: KEY=c01 1 0 0 0 0
B: ABS=1000003
B: MSC=10
I: Bus=0003 Vendor=5543 Product=0004 Version=0100
N: Name="UC-LOGIC Tablet WP5540U"
P: Phys=usb-0000:03:00.0-2/input0
S:
Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input16
U: Uniq=
H: Handlers=mouse3 event7
B: EV=17
B: KEY=70000 0 0 0 0
B: REL=303
B: MSC=10
I: Bus=0003 Vendor=5543 Product=0004 Version=0100
N: Name="UC-LOGIC Tablet WP5540U"
P: Phys=usb-0000:03:00.0-2/input0
S:
Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input17
U: Uniq=
H: Handlers=mouse4 event8
B: EV=1b
B: KEY=400 70000 0 0 0 0
B: ABS=1000003
B: MSC=10
But xinput only gets two of them. They don't send events (xinput test shows
this). But, looking at Xorg.0.log now, I see that the first device is hooked
by synaptics driver which cannot init because hardware is unsupported. I know
why, I've seen overriding rules in hal config. I'll try to reconfigure it to
use evdev driver.
[...]
> root@localhost: ~/# echo '6-2:1.0' > /sys/bus/usb/drivers/usbhid/unbind
> root@localhost: ~/# lsusb -vvv -d '5543:0042'
> Bus 006 Device 002: ID 5543:0042 UC-Logic Technology Corp. Genius
> PenSketch 12x9 Tablet
> Device Descriptor:
> bLength 18
[...]
> iInterface 2 Tablet PF1209
> ** UNRECOGNIZED: 09 21 00 01 00 01 22 ea 00
> Endpoint Descriptor:
[...]
>
> Apparently it should have output a section entitled: "HID Device
> Descriptor:" and instead I got "** UNRECOGNIZED: 09 21 00 01 00 01 22
> ea 00". Do you get the same?
No, after unbinding I've got the descriptor fully decoded. But I'm afraid it
doesn't help me...
> For me, being unfamiliar with the details of the USB, HID, and kernel
> input subsystems (not to mention the standards), the tiny amount of
> work I managed to accomplish to get minimal support of my tablet was
> still quite a learning experience.
I didn't get mine to work yet, but the learning experience is here, too :)
--
Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
Support open standards! Take a look at this nice presentation:
http://www.dwheeler.com/essays/open-standards-security.pdf
_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
2009-12-14 23:06 ` Daniil V. Kolpakov
@ 2009-12-14 23:11 ` Daniil V. Kolpakov
2009-12-14 23:46 ` Peter Hutterer
1 sibling, 0 replies; 10+ messages in thread
From: Daniil V. Kolpakov @ 2009-12-14 23:11 UTC (permalink / raw)
To: Matthew Helsley; +Cc: linux-input, linux-usb, xorg
В сообщении от 15 декабря 2009 Daniil V. Kolpakov написал(a):
> But xinput only gets two of them. They don't send events (xinput test
> shows this). But, looking at Xorg.0.log now, I see that the first device
> is hooked by synaptics driver which cannot init because hardware is
> unsupported. I know why, I've seen overriding rules in hal config. I'll
> try to reconfigure it to use evdev driver.
Yeah, right: disabling synaptics made the tablet work as mouse! Quite and
achievment :)
--
Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
Support open standards! Take a look at this nice presentation:
http://www.dwheeler.com/essays/open-standards-security.pdf
_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
2009-12-14 23:06 ` Daniil V. Kolpakov
2009-12-14 23:11 ` Daniil V. Kolpakov
@ 2009-12-14 23:46 ` Peter Hutterer
[not found] ` <20091214234652.GB23029-FGgOdbPLo1kAicBL8TP8PQ@public.gmane.org>
1 sibling, 1 reply; 10+ messages in thread
From: Peter Hutterer @ 2009-12-14 23:46 UTC (permalink / raw)
To: Daniil V. Kolpakov; +Cc: linux-input, Matthew Helsley, linux-usb, xorg
On Tue, Dec 15, 2009 at 01:06:07AM +0200, Daniil V. Kolpakov wrote:
> В сообщении от 14 декабря 2009 Matthew Helsley написал(a):
> [...]
> > Looks like they may have re-branded the "Genius MousePen 5x4 Tablet"
> > to your "Trust TB-5300".
> [...]
> > If you search for "Genius MousePen 5x4 Tablet" or something like it
> > then perhaps you'll find more ideas for fixing your tablet.
>
> Nothing interesting — mostly I get howtos on installing some (proprietary?)
> driver called "wizardpen", and usually with xorg.conf instead of HAL rules.
>
> I've tried enabling "MULTI_INPUT" quirk, as you've suggested:
>
> [root@shinestar:~]$ modprobe -r usbhid
> [root@shinestar:~]$ modprobe usbhid "quirks=0x5543:0x0004:0x0040"
>
> It "splitted" the tablet to three devices, as in your case:
>
> I: Bus=0003 Vendor=5543 Product=0004 Version=0100
> N: Name="UC-LOGIC Tablet WP5540U"
> P: Phys=usb-0000:03:00.0-2/input0
> S:
> Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input15
> U: Uniq=
> H: Handlers=mouse2 event6
> B: EV=1b
> B: KEY=c01 1 0 0 0 0
> B: ABS=1000003
> B: MSC=10
>
> I: Bus=0003 Vendor=5543 Product=0004 Version=0100
> N: Name="UC-LOGIC Tablet WP5540U"
> P: Phys=usb-0000:03:00.0-2/input0
> S:
> Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input16
> U: Uniq=
> H: Handlers=mouse3 event7
> B: EV=17
> B: KEY=70000 0 0 0 0
> B: REL=303
> B: MSC=10
>
> I: Bus=0003 Vendor=5543 Product=0004 Version=0100
> N: Name="UC-LOGIC Tablet WP5540U"
> P: Phys=usb-0000:03:00.0-2/input0
> S:
> Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input17
> U: Uniq=
> H: Handlers=mouse4 event8
> B: EV=1b
> B: KEY=400 70000 0 0 0 0
> B: ABS=1000003
> B: MSC=10
>
> But xinput only gets two of them. They don't send events (xinput test shows
> this). But, looking at Xorg.0.log now, I see that the first device is hooked
> by synaptics driver which cannot init because hardware is unsupported. I know
> why, I've seen overriding rules in hal config. I'll try to reconfigure it to
> use evdev driver.
synaptics kicks in after the catchall evdev configuration and overwrites it.
the reason why it overrides for this device is that anything with absolute
x/y coordinates and buttons are labelled as touchpads by HAL and the default
configurations then hook onto this label.
easiest workaround is to drop in your custom configuration into
/etc/hal/fdi/policies/ and (if you already have another one there) make sure
that it's loaded last. HAL uses alphasort when reading the directories.
the match rule needed is something like this:
<match key="input.product" contains="U-LOGIC">
<merge key="input.x11_driver" type="string">evdev</merge>
</match>
Cheers,
Peter
_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
[not found] ` <20091214234652.GB23029-FGgOdbPLo1kAicBL8TP8PQ@public.gmane.org>
@ 2009-12-15 7:43 ` Matthew Helsley
2009-12-15 10:32 ` Peter Hutterer
0 siblings, 1 reply; 10+ messages in thread
From: Matthew Helsley @ 2009-12-15 7:43 UTC (permalink / raw)
To: Peter Hutterer
Cc: Daniil V. Kolpakov, xorg-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
linux-input-u79uwXL29TY76Z2rM5mHXA,
linux-usb-u79uwXL29TY76Z2rM5mHXA
On Mon, Dec 14, 2009 at 3:46 PM, Peter Hutterer
<peter.hutterer-Pf4JEFdB4epeoWH0uzbU5w@public.gmane.org> wrote:
> On Tue, Dec 15, 2009 at 01:06:07AM +0200, Daniil V. Kolpakov wrote:
>> В сообщении от 14 декабря 2009 Matthew Helsley написал(a):
>> [...]
>> > Looks like they may have re-branded the "Genius MousePen 5x4 Tablet"
>> > to your "Trust TB-5300".
>> [...]
>> > If you search for "Genius MousePen 5x4 Tablet" or something like it
>> > then perhaps you'll find more ideas for fixing your tablet.
>>
>> Nothing interesting -- mostly I get howtos on installing some (proprietary?)
>> driver called "wizardpen", and usually with xorg.conf instead of HAL rules.
>>
>> I've tried enabling "MULTI_INPUT" quirk, as you've suggested:
>>
>> [root@shinestar:~]$ modprobe -r usbhid
>> [root@shinestar:~]$ modprobe usbhid "quirks=0x5543:0x0004:0x0040"
>>
>> It "splitted" the tablet to three devices, as in your case:
>>
>> I: Bus=0003 Vendor=5543 Product=0004 Version=0100
>> N: Name="UC-LOGIC Tablet WP5540U"
>> P: Phys=usb-0000:03:00.0-2/input0
>> S:
>> Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input15
>> U: Uniq=
>> H: Handlers=mouse2 event6
>> B: EV=1b
>> B: KEY=c01 1 0 0 0 0
>> B: ABS=1000003
>> B: MSC=10
>>
>> I: Bus=0003 Vendor=5543 Product=0004 Version=0100
>> N: Name="UC-LOGIC Tablet WP5540U"
>> P: Phys=usb-0000:03:00.0-2/input0
>> S:
>> Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input16
>> U: Uniq=
>> H: Handlers=mouse3 event7
>> B: EV=17
>> B: KEY=70000 0 0 0 0
>> B: REL=303
>> B: MSC=10
>>
>> I: Bus=0003 Vendor=5543 Product=0004 Version=0100
>> N: Name="UC-LOGIC Tablet WP5540U"
>> P: Phys=usb-0000:03:00.0-2/input0
>> S:
>> Sysfs=/devices/pci0000:00/0000:00:06.0/0000:03:00.0/usb1/1-2/1-2:1.0/input/input17
>> U: Uniq=
>> H: Handlers=mouse4 event8
>> B: EV=1b
>> B: KEY=400 70000 0 0 0 0
>> B: ABS=1000003
>> B: MSC=10
>>
>> But xinput only gets two of them. They don't send events (xinput test shows
>> this). But, looking at Xorg.0.log now, I see that the first device is hooked
>> by synaptics driver which cannot init because hardware is unsupported. I know
>> why, I've seen overriding rules in hal config. I'll try to reconfigure it to
>> use evdev driver.
>
> synaptics kicks in after the catchall evdev configuration and overwrites it.
> the reason why it overrides for this device is that anything with absolute
> x/y coordinates and buttons are labelled as touchpads by HAL and the default
> configurations then hook onto this label.
>
> easiest workaround is to drop in your custom configuration into
> /etc/hal/fdi/policies/ and (if you already have another one there) make sure
> that it's loaded last. HAL uses alphasort when reading the directories.
>
> the match rule needed is something like this:
>
> <match key="input.product" contains="U-LOGIC">
Mine reports "UC-Logic Technology Corp." as the usb.vendor string. My
"input.product" for that device is exactly " Tablet PF1209" (space
included). So the rule would have to check the usb.vendor_id of the
parent "node".
For my tablet I chose to be quite specific:
<match key="info.capabilities" contains="input.touchpad">
<match key="info.product" contains="Tablet PF1209">
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
string="Linux">
(I chose the last since evdev is a Linux driver and I didn't know
whether my changes to these .fdi files might eventually be useful on a
*BSD.)
> <merge key="input.x11_driver" type="string">evdev</merge>
> </match>
Yes, I've hit this problem and I keep forgetting about it because it's
hidden in the .fdi files, waiting for whenever my distro "upgrades"
them. Sorry, Daniil, I completely forgot to mention this problem :(.
<tangent>
The .fdi file that assigns the synaptic driver to these devices based
solely on the "input.touchpad" capability seems quite wrong to me. My
guess is most tablets that rely on evdev will report absolute
coordinates. If anything, based on their comparably-small physical
size, I'd expect "touchpads" would report relative coordinates. Plus
synaptic can't be the only touchpad vendor/whatnot, can it? Why should
its driver try to claim them all?
Perhaps it should have it's own match key:
<match key="info.product" contains="Synaptics TouchPad">
(which works for my touchpad at least) rather than:
<match key="info.capabilities" contains="input.touchpad">
Sorry, I don't know: Who maintains the .fdi files -- the driver
developer, the distro, or HAL developers? In my distro they're in
/usr/share/hal/policy and the way its packaged suggests the driver
developers are responsible.
Peter am I way off here?
</tangent>
Cheers,
-Matt Helsley
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: evdev and Trust TB-5300 tablet: wrong axis labels
2009-12-15 7:43 ` Matthew Helsley
@ 2009-12-15 10:32 ` Peter Hutterer
0 siblings, 0 replies; 10+ messages in thread
From: Peter Hutterer @ 2009-12-15 10:32 UTC (permalink / raw)
To: Matthew Helsley; +Cc: linux-input, linux-usb, xorg
On Mon, Dec 14, 2009 at 11:43:21PM -0800, Matthew Helsley wrote:
> > <match key="input.product" contains="U-LOGIC">
>
> Mine reports "UC-Logic Technology Corp." as the usb.vendor string. My
> "input.product" for that device is exactly " Tablet PF1209" (space
> included). So the rule would have to check the usb.vendor_id of the
> parent "node".
>
> For my tablet I chose to be quite specific:
>
> <match key="info.capabilities" contains="input.touchpad">
> <match key="info.product" contains="Tablet PF1209">
> <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
> string="Linux">
>
> (I chose the last since evdev is a Linux driver and I didn't know
> whether my changes to these .fdi files might eventually be useful on a
> *BSD.)
>
> > <merge key="input.x11_driver" type="string">evdev</merge>
> > </match>
>
> Yes, I've hit this problem and I keep forgetting about it because it's
> hidden in the .fdi files, waiting for whenever my distro "upgrades"
> them. Sorry, Daniil, I completely forgot to mention this problem :(.
the distro fdi files are usually in /usr/share/hal, the user-specific ones
in /etc/hal. hence once you drop your custom fdi into /etc/hal, it'll stay
there and override the distro ones.
> <tangent>
> The .fdi file that assigns the synaptic driver to these devices based
> solely on the "input.touchpad" capability seems quite wrong to me. My
> guess is most tablets that rely on evdev will report absolute
> coordinates. If anything, based on their comparably-small physical
> size, I'd expect "touchpads" would report relative coordinates. Plus
> synaptic can't be the only touchpad vendor/whatnot, can it? Why should
> its driver try to claim them all?
>
> Perhaps it should have it's own match key:
>
> <match key="info.product" contains="Synaptics TouchPad">
>
> (which works for my touchpad at least) rather than:
>
> <match key="info.capabilities" contains="input.touchpad">
>
> Sorry, I don't know: Who maintains the .fdi files -- the driver
> developer, the distro, or HAL developers? In my distro they're in
> /usr/share/hal/policy and the way its packaged suggests the driver
> developers are responsible.
>
> Peter am I way off here?
maybe partly. the fdi file is shipped with the synaptics tarballs, though
distros are of course free to create their own. we used to have a similar
match rule but synaptics is just the driver name, the driver supports alps,
appletouch, bcm5974, elantech and synaptics touchpads. that is on linux
anyway - the hardware-specific parts are handled by the kernel.
so the synaptics driver is really more of a generic touchpad driver.
on BSD the evdev backend doesn't come into play so I guess synaptics is
overly eager claiming devices it shouldn't. If you have any suggestions for
improving the fdi, don't hesitate to send in a patch.
In a separate thread maybe, no need to spam the kernel lists for this.
Cheers,
Peter
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2009-12-15 10:32 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <200912130058.46220.dan@riga.lv>
2009-12-13 1:27 ` evdev and Trust TB-5300 tablet: wrong axis labels Matthew Helsley
2009-12-13 16:25 ` Daniil V. Kolpakov
2009-12-13 21:23 ` Daniil V. Kolpakov
2009-12-13 21:36 ` Daniil V. Kolpakov
[not found] ` <200912131825.03872.dan-A/X3QuVk8WQ@public.gmane.org>
2009-12-14 2:35 ` Matthew Helsley
2009-12-14 23:06 ` Daniil V. Kolpakov
2009-12-14 23:11 ` Daniil V. Kolpakov
2009-12-14 23:46 ` Peter Hutterer
[not found] ` <20091214234652.GB23029-FGgOdbPLo1kAicBL8TP8PQ@public.gmane.org>
2009-12-15 7:43 ` Matthew Helsley
2009-12-15 10:32 ` Peter Hutterer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).