2009/12/13 Daniil V. Kolpakov <dan@xxxxxxx>: > 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:
tablet.hid_reports
Description: Binary data