Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
hid-uclogic driver won't drive a graphics tablet
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware
View previous topic :: View next topic  
Author Message
Ant P.
Watchman
Watchman


Joined: 18 Apr 2009
Posts: 6920

PostPosted: Thu Apr 24, 2014 2:29 am    Post subject: hid-uclogic driver won't drive a graphics tablet Reply with quote

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
View user's profile Send private message
aCOSwt
Bodhisattva
Bodhisattva


Joined: 19 Oct 2007
Posts: 2537
Location: Hilbert space

PostPosted: Thu Apr 24, 2014 11:56 am    Post subject: Reply with quote

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
View user's profile Send private message
Ant P.
Watchman
Watchman


Joined: 18 Apr 2009
Posts: 6920

PostPosted: Thu Apr 24, 2014 5:22 pm    Post subject: Reply with quote

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
View user's profile Send private message
Ant P.
Watchman
Watchman


Joined: 18 Apr 2009
Posts: 6920

PostPosted: Mon May 05, 2014 10:48 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware All times are GMT
Page 1 of 1

 
Jump to:  
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