Hey all with newer Bamboo HW,

I'm hoping you can help me capture some raw USB data from these
devices and I'll compare them to my Bamboo and see if I can figure
anything out.

Here is some instructions for logging USB packets on most modern linux kernels.

On Fedora, the "usbmon" support is always compiled into kernel so no
"modprobe usbmon" is needed.  Also, the kernel debug filesystem is
always mounted so no need to mount either.  In case this isn't true on
your box, here are command to enable support for logging usb packets:

# mount -t debugfs none_debugs /sys/kernel/debug
# modprobe usbmon

Next, we need to find out which USB bus your Wacom is on.  Its easiest
from "lsusb" if you have that installed.  Here is output for mine
showing it on Bus 2 and Device 35.

Bus 002 Device 035: ID 056a:00d1 Wacom Co., Ltd

You can also get it by running 'less /sys/kernel/debug/usb/devices'
and looking for Wacom.  The first line shows Bus and Dev#.

T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 35 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=056a ProdID=00d1 Rev= 1.06
S:  Manufacturer=Wacom Co.,Ltd.
S:  Product=CTH-460
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=wacom
E:  Ad=81(I) Atr=03(Int.) MxPS=   9 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=wacom
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=4ms

OK, now we can log some packets.  Here is example I run for logging
USB packets on my USB Bus 2 (must be ran as root):

#cat /sys/kernel/debug/usb/usbmon/2u > /tmp/usbmon.txt

The "2" of "2u" part needs to match your bus#.

Please log some very small snippets of data and send them my way.  Do
very little movement or finger combinations to make readable by me.
I'd appreciate it if you do this sequence:

#cat /sys/kernel/debug/usb/usbmon/2u > /tmp/usbmon-1fg.txt

Press 1 finger in lower right corner of pad (within white lines
though).  Start with low pressure and slowly move to firm pressure and
then release.  Control-C to end.  The goal is to get as many 1 finger
bits set in X/Y/Pressure fields.

#cat /sys/kernel/debug/usb/usbmon/2u > /tmp/usbmon-2fg.txt

Same as previous but use 2 fingers.

#cat /sys/kernel/debug/usb/usbmon/2u > /tmp/usbmon-3fg.txt

Same as previous but use 3 fingers.

#cat /sys/kernel/debug/usb/usbmon/2u > /tmp/usbmon-4fg.txt

Same as previous but use 3 fingers.

Thats it.  For those wanting to attempt debugging, here is an example
line from my output:

c7a67d00 2310234233 C Ii:2:035:2 0:4 20 = 02002881 e0012e81 e0012a00
00000000 81110000

If you have other noisy USB devices on this bus then you may need to
filter the file.  Here is how you can filter for Bus 2 Dev#35
interrupt responses:

# grep "C li:2:035:2" /tmp/usbmon-1fg.txt > /tmp/usbmon-1fg-filtered.txt

After the equal sign is the packet sent by Wacom hardware.  Each 2 hex
numbers represents 8-bit char.  If you treat the whole thing as an
array, here is mapping used for touch packet of original Bamboo Pen
and Touch devices:

data[2] = 1st finger pressure
(data[3] << 8 | data[4]) & 0x7ff = 1st finger X coord
(data[5] << 8 | data[6]) & 0x7ff = 1st finger Y coord
data[11] = 2nd finger pressure
(data[12] << 8 | data[13]) & 0x7ff = 2nd finger X coord
(data[14] << 8 | data[15]) & 0x7ff = 2nd finger Y coord

So from my example, I touched 1 finger with pressure 0x28 and X/Y =
[0x81e0,0x012e].

What we are trying to do is isolate the bits/bytes that change when
you move your fingers and which change when only pressure of your
finger changes.  In this packet, there is only space comfortably for 2
fingers.

If this newer hardware can report more than 2 fingers then they must
have been re-arranging/reducing resolution/squishing things together.
The pressure is something that makes most since to steal bits from.
But they could also be sending 2 packets with something in it saying
this is for fingers 1&2 and this packet is for fingers 3&4.  Dunno how
they chose to do it.

Chris

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to