View previous topic :: View next topic |
Author |
Message |
Ant P. Watchman
Joined: 18 Apr 2009 Posts: 6920
|
Posted: Thu Apr 24, 2014 2:29 am Post subject: hid-uclogic driver won't drive a graphics tablet |
|
|
Here's what lsusb -v has to say:
Code: | Bus 005 Device 002: ID 5543:0005 UC-Logic Technology Corp. Tablet WP8060U
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 0x0005 Tablet WP8060U
bcdDevice 0.00
iManufacturer 1 UC-LOGIC
iProduct 2 Tablet WP8060U
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 WP8060U
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 212
Report Descriptor: (length is 212)
Item(Global): Usage Page, data= [ 0x0d ] 13
Digitizer
Item(Local ): Usage, data= [ 0x02 ] 2
Pen
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x07 ] 7
Item(Local ): Usage, data= [ 0x20 ] 32
Stylus
Item(Main ): Collection, data= [ 0x00 ] 0
Physical
Item(Local ): Usage, data= [ 0x42 ] 66
Tip Switch
Item(Local ): Usage, data= [ 0x44 ] 68
Barrel Switch
Item(Local ): Usage, data= [ 0x45 ] 69
Eraser
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Main ): Input, data= [ 0x03 ] 3
Constant Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x32 ] 50
In Range
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x03 ] 3
Constant Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x30 ] 48
Direction-X
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Push, data=none
Item(Global): Unit Exponent, data= [ 0x0d ] 13
Unit Exponent: 13
Item(Global): Unit, data= [ 0x33 ] 51
System: English Linear, Unit: Inch^3
Item(Global): Physical Minimum, data= [ 0x00 ] 0
Item(Global): Physical Maximum, data= [ 0x40 0x1f ] 8000
Item(Global): Logical Maximum, data= [ 0x80 0x3e ] 16000
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x31 ] 49
Direction-Y
Item(Global): Physical Maximum, data= [ 0x70 0x17 ] 6000
Item(Global): Logical Maximum, data= [ 0xe0 0x2e ] 12000
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Pop, data=none
Item(Global): Usage Page, data= [ 0x0d ] 13
Digitizer
Item(Local ): Usage, data= [ 0x30 ] 48
Tip Pressure
Item(Global): Logical Maximum, data= [ 0xff 0x03 ] 1023
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Main ): End Collection, data=none
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x02 ] 2
Mouse
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x08 ] 8
Item(Local ): Usage, data= [ 0x01 ] 1
Pointer
Item(Main ): Collection, data= [ 0x00 ] 0
Physical
Item(Global): Usage Page, data= [ 0x09 ] 9
Buttons
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
Button 1 (Primary)
Item(Local ): Usage Maximum, data= [ 0x03 ] 3
Button 3 (Tertiary)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Count, data= [ 0x05 ] 5
Item(Main ): Input, data= [ 0x01 ] 1
Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x30 ] 48
Direction-X
Item(Local ): Usage, data= [ 0x31 ] 49
Direction-Y
Item(Local ): Usage, data= [ 0x38 ] 56
Wheel
Item(Local ): Usage, data= [ 0x00 ] 0
Undefined
Item(Global): Logical Minimum, data= [ 0x81 ] 129
Item(Global): Logical Maximum, data= [ 0x7f ] 127
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x04 ] 4
Item(Main ): Input, data= [ 0x06 ] 6
Data Variable Relative No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x02 ] 2
Mouse
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x09 ] 9
Item(Local ): Usage, data= [ 0x01 ] 1
Pointer
Item(Main ): Collection, data= [ 0x00 ] 0
Physical
Item(Global): Usage Page, data= [ 0x09 ] 9
Buttons
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
Button 1 (Primary)
Item(Local ): Usage Maximum, data= [ 0x03 ] 3
Button 3 (Tertiary)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Count, data= [ 0x05 ] 5
Item(Main ): Input, data= [ 0x01 ] 1
Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x30 ] 48
Direction-X
Item(Local ): Usage, data= [ 0x31 ] 49
Direction-Y
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x7f ] 32767
Item(Global): Physical Minimum, data= [ 0x00 ] 0
Item(Global): Physical Maximum, data= [ 0xff 0x7f ] 32767
Item(Global): Report Count, data= [ 0x02 ] 2
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x0d ] 13
Digitizer
Item(Local ): Usage, data= [ 0x30 ] 48
Tip Pressure
Item(Global): Logical Maximum, data= [ 0xff 0x03 ] 1023
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Main ): End Collection, data=none
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) |
And the relevant part of $(lsusb -t):
Code: | /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=, 1.5M |
(note the empty Driver= — this is the only device in the output that shows up empty)
According to $(modinfo hid-uclogic), this device is supported:
Code: | alias: hid:b0003g*v00005543p00000005 |
eudev isn't autoloading that module though, and manual modprobe doesn't have any effect either. The tablet doesn't show up in /proc/bus/input or /dev/input. Nothing in dmesg, here's all it prints when I plug it in:
Code: | [ 1482.100438] usb 5-1: new low-speed USB device number 3 using ohci-pci
[ 1482.254459] usb 5-1: New USB device found, idVendor=5543, idProduct=0005
[ 1482.254472] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1482.254479] usb 5-1: Product: Tablet WP8060U
[ 1482.254485] usb 5-1: Manufacturer: UC-LOGIC |
Running $(usbhid-dump -m 5543) produces this, so it at least recognises it as a HID device:
Code: | 005:002:000:DESCRIPTOR 1398305835.958292
05 0D 09 02 A1 01 85 07 09 20 A1 00 09 42 09 44
09 45 15 00 25 01 75 01 95 03 81 02 95 03 81 03
09 32 95 01 81 02 95 01 81 03 05 01 09 30 75 10
95 01 A4 55 0D 65 33 35 00 46 40 1F 26 80 3E 81
02 09 31 46 70 17 26 E0 2E 81 02 B4 05 0D 09 30
26 FF 03 81 02 75 10 C0 C0 05 01 09 02 A1 01 85
08 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 95
03 75 01 81 02 95 05 81 01 05 01 09 30 09 31 09
38 09 00 15 81 25 7F 75 08 95 04 81 06 C0 C0 05
01 09 02 A1 01 85 09 09 01 A1 00 05 09 19 01 29
03 15 00 25 01 95 03 75 01 81 02 95 05 81 01 05
01 09 30 09 31 15 00 26 FF 7F 35 00 46 FF 7F 95
02 75 10 81 02 05 0D 09 30 26 FF 03 95 01 75 10
81 02 C0 C0 |
I'm completely lost at this point. I do have another tablet (hid-waltop) that works fine, shows up in /dev/input, works in X, etc. |
|
Back to top |
|
|
aCOSwt Bodhisattva
Joined: 19 Oct 2007 Posts: 2537 Location: Hilbert space
|
Posted: Thu Apr 24, 2014 11:56 am Post subject: |
|
|
Could it simply be because the WP8060U is blacklisted ?
Code: | hid_blacklist[] = {
...
{ USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_WP8060U, HID_QUIRK_MULTI_INPUT },
...
}; |
Quoted from /usr/src/linux-3.X.Y/drivers/hid/usbhid/hid-quirks.c on, at least, latest X ∈ {4;8;10;11;12;13} _________________
|
|
Back to top |
|
|
Ant P. Watchman
Joined: 18 Apr 2009 Posts: 6920
|
Posted: Thu Apr 24, 2014 5:22 pm Post subject: |
|
|
That array isn't well named - reading the rest of the code it appears that flag should make it create *multiple* input devices, not none. |
|
Back to top |
|
|
Ant P. Watchman
Joined: 18 Apr 2009 Posts: 6920
|
Posted: Mon May 05, 2014 10:48 pm Post subject: |
|
|
Some more diagnostics:
Code: | # udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[26439.660561] add /devices/pci0000:00/0000:00:13.0/usb5/5-1 (usb)
KERNEL[26439.665215] add /devices/pci0000:00/0000:00:13.0/usb5/5-1/5-1:1.0 (usb)
UDEV [26439.669226] add /devices/pci0000:00/0000:00:13.0/usb5/5-1 (usb)
UDEV [26439.672837] add /devices/pci0000:00/0000:00:13.0/usb5/5-1/5-1:1.0 (usb)
KERNEL[26445.850411] remove /devices/pci0000:00/0000:00:13.0/usb5/5-1/5-1:1.0 (usb)
KERNEL[26445.850560] remove /devices/pci0000:00/0000:00:13.0/usb5/5-1 (usb)
UDEV [26445.851698] remove /devices/pci0000:00/0000:00:13.0/usb5/5-1/5-1:1.0 (usb)
UDEV [26445.852148] remove /devices/pci0000:00/0000:00:13.0/usb5/5-1 (usb) |
Here's the equivalent for the working tablet:
Code: | [...]
KERNEL[26563.860066] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2 (usb)
KERNEL[26563.860148] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0 (usb)
KERNEL[26563.861843] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004 (hid)
UDEV [26563.864540] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2 (usb)
UDEV [26563.866043] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0 (usb)
KERNEL[26563.884643] add /module/hid_waltop (module)
UDEV [26563.885372] add /module/hid_waltop (module)
KERNEL[26563.887312] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004/input/input17 (input)
KERNEL[26563.887392] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004/input/input17/event16 (input)
KERNEL[26563.887415] add /bus/hid/drivers/waltop (drivers)
UDEV [26563.887701] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004 (hid)
UDEV [26563.887744] add /bus/hid/drivers/waltop (drivers)
UDEV [26563.891304] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004/input/input17 (input)
UDEV [26563.892240] add /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004/input/input17/event16 (input)
KERNEL[26572.812243] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004/input/input17/event16 (input)
UDEV [26572.813573] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004/input/input17/event16 (input)
KERNEL[26572.816253] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004/input/input17 (input)
KERNEL[26572.816317] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004 (hid)
KERNEL[26572.816352] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0 (usb)
KERNEL[26572.816532] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2 (usb)
UDEV [26572.817145] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004/input/input17 (input)
UDEV [26572.817440] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0/0003:172F:0031.0004 (hid)
UDEV [26572.817819] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2/1-3.1.2:1.0 (usb)
UDEV [26572.818137] remove /devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.1/1-3.1.2 (usb) |
So it looks like the kernel isn't recognising the device at all, despite its ID being listed in $(modinfo hid-uclogic). |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|