Hi Chris,
Thanks for the quick response!
> Hi, I googled this model and I see its a stand alone screen with built
> in Wacom digitizer.
Yes that's correct. For the record, it also has a built in USB hub which
works fine:
Bus 001 Device 021: ID 056a:003b Wacom Co., Ltd
Device Descriptor:
...
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 1 Single TT
bMaxPacketSize0 64
idVendor 0x056a Wacom Co., Ltd
idProduct 0x003b
bcdDevice 7.02
iManufacturer 10 WACOM
iProduct 11 DTI-520 HUB
...
The device also has a number of pushbuttons on its face - five unlabelled ones
across the top (with a space to insert your own paper label), and six along
the bottom (L, R, up, down, and two Ctrl. One Ctrl suggests it shifts the
up/down keys into zoom in/out.)
> I'm guessing you chose those initial values because there is a 0x39
> already defined and modelled after it? In general, that is a good
> approach. Wacom does tend to group related HW with similar product
> ID's.
Yes that's what I was hoping!
> rmmod wacom
> lsusb -vvv
Here is the output:
Bus 001 Device 022: ID 056a:003a Wacom Co., Ltd
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x056a Wacom Co., Ltd
idProduct 0x003a
bcdDevice 1.03
iManufacturer 1 WACOM
iProduct 2 DTI-520-U
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 59
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
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 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 110
Report Descriptor: (length is 110)
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= [ 0x01 ] 1
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= [ 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(Local ): Usage, data= [ 0x31 ] 49
Direction-Y
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= [ 0x02 ] 2
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= [ 0x0d ] 13
Digitizer
Item(Local ): Usage, data= [ 0x01 ] 1
Digitizer
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x02 ] 2
Item(Main ): Collection, data= [ 0x00 ] 0
Physical
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x07 ] 7
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(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Global): Report ID, data= [ 0x02 ] 2
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Global): Report ID, data= [ 0x03 ] 3
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Global): Report ID, data= [ 0x05 ] 5
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Global): Report ID, data= [ 0x06 ] 6
Item(Global): Report Count, data= [ 0x07 ] 7
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
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
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 41
Report Descriptor: (length is 41)
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x80 ] 128
System Control
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report ID, data= [ 0x04 ] 4
Item(Global): Usage Page, data= [ 0x09 ] 9
Buttons
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
Button 1 (Primary)
Item(Local ): Usage Maximum, data= [ 0x05 ] 5
Button 5
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x05 ] 5
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= [ 0x03 ] 3
Item(Main ): Input, data= [ 0x01 ] 1
Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
Item(Local ): Usage Minimum, data= [ 0x06 ] 6
(null)
Item(Local ): Usage Maximum, data= [ 0x0a ] 10
(null)
Item(Global): Report Count, data= [ 0x05 ] 5
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= [ 0x01 ] 1
Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
Item(Main ): End Collection, data=none
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0003 1x 3 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)
> Find the snippet related to Wacom and send it to list. In that output
> will often be information on packet sizes. We can use this
> information to know what value to set for WACOM_PKGLEN_* without
> guessing. Worst case, set that field to 32 for right now and move to
> next step.
Will do - I wasn't sure if the packet length had to match exactly or whether
it was a maximum limit. Let me know which part indicates the packet length.
> The part that has "PL" above is what tells packet format and there are
> lots of different packet formats. Hopefully, this is not a totally
> new format.
I do get some movement roughly corresponding to the stylus with PL and PTU so
it doesn't seem to be a completely different protocol.
> Since PL and PTU didn't work for you, I'd move to some of the other
> similar HW types (screens with digitizers). Cintiq's are most popular
> and possible values for those are WACOM_24HD, CINTIQ, WACOM_BEE, and
> WACOM_21UX2.
Ah ok, I'll try these. I tried a few others (like INTUOS) which didn't work
but again I was just poking around in the dark. Hopefully these will be a
closer match.
> Probably, your screen is closer to the DTU-* and DTF-* models that are
> already supported. DTU and PTU are valid values for it so I'd
> probably try DTU next.
I didn't try DTU because in wacom_setup_input_capabilities() in the kernel
driver it seems to be handled the same as PL. Is it treated differently
elsewhere?
> And the last option to try is Tablet PC driver. They use TABLETPC.
>
> If no luck with any of those, we'd have to start logging some USB
> packets (using kernels /sys/kernel/debug/usb/usbmon interface) and see
> if we can't figure out the packet format and add a new DTI driver.
Sounds good! I'll try out the other packet formats and see if I have any
success.
Thanks again,
Adam.
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel