Menu

#259 Add support to Intuos PT series to xf86-input-wacom

closed-rejected
nobody
USB Tablet (38)
2015-12-04
2014-10-17
Denis
No

Hello.

I'm using FreeBSD and I've recently bought this: http://www.wacom.com/en/de/creative/intuos-m device, but find out that device is not supported yet by xf86-input-wacom driver.

FreeBSD ports contain driver version: xf86-input-wacom-0.26.1

Here is some output from device:

ugen1.3: <Intuos PTM="" Wacom="" Co.,Ltd.=""> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (498mA)

bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0040
idVendor = 0x056a
idProduct = 0x0303
bcdDevice = 0x0100
iManufacturer = 0x0001 <Wacom Co.,Ltd.="">
iProduct = 0x0002 <Intuos PTM="">
iSerialNumber = 0x0000 <no string="">
bNumConfigurations = 0x0001

If you need more info from me, ask.

Thank you.

Discussion

  • Jason Gerecke

    Jason Gerecke - 2014-10-17

    I haven't tried the driver with FreeBSD, but on Linux at least there is no need for xf86-input-wacom to have explicit support for this tablet. All the necessary information is queried from the kernel device and the internal structures that exist are for compatibility with old kernels that don't provide the necessary interfaces.

    Are you sure an input device node is being created for the Intuos by your kernel? A lack of support in the kernel driver is what usually causes tablets to not work on Linux.

     
  • Denis

    Denis - 2014-10-17

    Hello, Jason. I find out that device was defined by HAL only after user session restarting. But only touch by fingers are working. Pen is not working.

    So, the problem, as you say, not in xf86-input-wacom, but in kernel driver.

    Thank you for your time.

     
  • Denis

    Denis - 2014-10-20

    Hello again,

    I have additional information about the problem I faced. I found out that the FreeBSD has no its own Wacom driver. It uses port webcamd http://www.selasky.org/hans_petter/video4bsd/
    This webcamd contains input-wacom Linux driver.

    I've compared files from your git repo and from latest sources of webcamd and it's almost similar with your ./3.17/ files. Difference in a few lines in wacom_wac.c and wacom_sys.c. Developer of webcamd tells me that he is using Linux kernel drivers which maintained by linux-input@vger.kernel.org. I've created a report in there mailing-list, but no luck with answer.

    So, I took files from your repo (wacom_sys.c, wacom_wac.c, wacom_wac.h, wacom.h) and overwtote files from webcamd, then I reinstall port and here that I have:

    I'm starting webcam processes manually to create input devices.
    First process creates stylus/eraser device(/dev/input/event0) as I understand. It seems so to me because when I trying to execute: cat /dev/input/event0 the abracadabra appears when I start driving by pen.

    Second process creates three devices (event1, event2 and js0) event1 react (when “cat /dev/...”) on fingers moving, event2 and js0 on pushing buttons on tablet.

    The first process often crushes. It crushes when I trying to execute “cat /dev/...” everytime. Here is the result of core debugging:

    Core was generated by `webcamd'.
    Program terminated with signal 11, Segmentation fault.
    Reading symbols from /usr/local/lib/libhal.so.1...done.
    Loaded symbols for /usr/local/lib/libhal.so.1
    Reading symbols from /usr/local/lib/libdbus-1.so.3...done.
    Loaded symbols for /usr/local/lib/libdbus-1.so.3
    Reading symbols from /usr/lib/libusb.so.3...done.
    Loaded symbols for /usr/lib/libusb.so.3
    Reading symbols from /lib/libutil.so.9...done.
    Loaded symbols for /lib/libutil.so.9
    Reading symbols from /usr/local/lib/libcuse4bsd.so.1...done.
    Loaded symbols for /usr/local/lib/libcuse4bsd.so.1
    Reading symbols from /lib/libthr.so.3...done.
    Loaded symbols for /lib/libthr.so.3
    Reading symbols from /lib/libc.so.7...done.
    Loaded symbols for /lib/libc.so.7
    Reading symbols from /libexec/ld-elf.so.1...done.
    Loaded symbols for /libexec/ld-elf.so.1
    #0 0x00000000004062dd in test_bit (nr=5, addr=0x28) at kernel/linux_func.c:505
    505 i = (p & mask) ? 1 : 0;
    [New Thread 802009000 (LWP 100789/webcamd)]
    [New Thread 802008c00 (LWP 100788/webcamd)]
    [New Thread 802008800 (LWP 100787/webcamd)]
    [New Thread 802008400 (LWP 100786/webcamd)]
    [New Thread 802007c00 (LWP 100785/webcamd)]
    [New Thread 802007800 (LWP 100784/webcamd)]
    [New Thread 802007400 (LWP 100783/webcamd)]
    [New Thread 802007000 (LWP 100782/webcamd)]
    [New Thread 802006400 (LWP 100456/webcamd)]
    (gdb) bt full
    #0 0x00000000004062dd in test_bit (nr=5, addr=0x28) at kernel/linux_func.c:505
    mask = 32
    p = (long unsigned int
    ) 0x28
    i = 0
    #1 0x0000000000469432 in is_event_supported (code=5, bm=0x28, max=31) at media_tree/drivers/input/input.c:56
    No locals.
    #2 0x00000000004693a2 in input_event (dev=0x0, type=5, code=14, value=0) at media_tree/drivers/input/input.c:428
    flags = 0
    #3 0x000000000045560b in input_report_switch (dev=0x0, code=14, value=0) at input.h:409
    No locals.
    #4 0x0000000000455a80 in wacom_bpt_pen (wacom=0x802008010) at media_tree/drivers/hid/wacom_wac.c:1395
    features = (struct wacom_features ) 0x802008170
    input = (struct input_dev
    ) 0x8020c3980
    data = (unsigned char ) 0x802008110 "ю"
    prox = 0
    x = 0
    y = 0
    p = 0
    d = 0
    pen = 0
    btn1 = 0
    btn2 = 0
    #5 0x00000000004538e3 in wacom_bpt_irq (wacom=0x802008010, len=10) at media_tree/drivers/hid/wacom_wac.c:1469
    No locals.
    #6 0x000000000044fd72 in wacom_wac_irq (wacom_wac=0x802008010, len=10) at media_tree/drivers/hid/wacom_wac.c:1603
    __sync = false
    #7 0x0000000000457f43 in wacom_raw_event (hdev=0x8020ac000, report=0x80207f400, raw_data=0x80204b280 "ю", size=10) at media_tree/drivers/hid/wacom_sys.c:66
    wacom = (struct wacom
    ) 0x802008000
    #8 0x0000000000418286 in hid_input_report (hid=0x8020ac000, type=0, data=0x80204b280 "ю", size=10, interrupt=1) at media_tree/drivers/hid/hid-core.c:1493
    report_enum = (struct hid_report_enum ) 0x8020ac050
    hdrv = (struct hid_driver
    ) 0x74f1a0
    report = (struct hid_report ) 0x80207f400
    ret = 0
    #9 0x0000000000467e2e in hid_irq_in (urb=0x8020e50f0) at media_tree/drivers/hid/usbhid/hid-core.c:295
    hid = (struct hid_device
    ) 0x8020ac000
    usbhid = (struct usbhid_device ) 0x8020ae000
    status = 4096
    #10 0x000000000041535c in usb_linux_complete (xfer=0x80206f210) at kernel/linux_usb.c:1596
    urb = (struct urb
    ) 0x8020e50f0
    #11 0x0000000000415109 in usb_linux_non_isoc_callback (xfer=0x80206f210) at kernel/linux_usb.c:1789
    urb = (struct urb ) 0x8020e50f0
    uhe = (struct usb_host_endpoint
    ) 0x802072680
    max_bulk = 4096
    actlen = 10
    status = 0 '\0'
    #12 0x0000000800dd62da in libusb20_tr_callback_wrapper () from /usr/lib/libusb.so.3
    No symbol table info available.
    #13 0x0000000800dd5b65 in libusb_free_bos_descriptor () from /usr/lib/libusb.so.3
    No symbol table info available.
    #14 0x0000000000415488 in usb_exec (arg=0x7606a0) at kernel/linux_usb.c:171
    sc = (struct usb_linux_softc ) 0x7606a0
    dev = (struct libusb20_device
    ) 0x80206b800
    err = 0
    #15 0x00000008013fc585 in pthread_create () from /lib/libthr.so.3
    No symbol table info available.
    #16 0x0000000000000000 in ?? ()
    No symbol table info available.
    Current language: auto; currently minimal
    (gdb)

    I must say that this output is the same irrespective of using files from your repo or from webcamd.

    Also, here is some outputs from utilities:

    % xsetwacom list
    wacom touch id: 10 type: TOUCH
    wacom pad id: 11 type: PAD
    wacom eraser id: 9 type: ERASER
    wacom stylus id: 8 type: STYLUS

    % xinput test 10
    motion a[0]=1575 a[1]=2160 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1569 a[1]=2167 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1562 a[1]=2178 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1550 a[1]=2207 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1535 a[1]=2239 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1520 a[1]=2276 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1505 a[1]=2311 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1492 a[1]=2338 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1479 a[1]=2359 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1468 a[1]=2372 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1463 a[1]=2376 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1460 a[1]=2375 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1461 a[1]=2369 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1464 a[1]=2357 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1477 a[1]=2326 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1496 a[1]=2287 a[2]=0 a[3]=0 a[4]=0 a[5]=0
    motion a[0]=1519 a[1]=2240 a[2]=0 a[3]=0 a[4]=0 a[5]=0

    xinput test 11
    button press 9 a[3]=0 a[4]=0 a[5]=0
    motion a[3]=0 a[4]=0 a[5]=0
    button press 8 a[3]=0 a[4]=0 a[5]=0
    button release 9 a[3]=0 a[4]=0 a[5]=0
    motion a[3]=0 a[4]=0 a[5]=0
    button release 8 a[3]=0 a[4]=0 a[5]=0
    button press 3 a[3]=0 a[4]=0 a[5]=0
    motion a[3]=0 a[4]=0 a[5]=0
    button release 3 a[3]=0 a[4]=0 a[5]=0

    Pressing of buttons works not every time. If I press one button, it works ~ once from three.

    In attachment I've put xorg log. As I can see first process crashes after xorg asking it in first time [ 89.832], [ 89.843]. In second time in [ 105.374] first process (event0) has already crushed.

     
  • Jason Gerecke

    Jason Gerecke - 2014-12-05
    • status: new --> closed-rejected
     
  • Jason Gerecke

    Jason Gerecke - 2014-12-05

    Closing the original issue. Second issue (crash when using the tablet under FreeBSD) should be resolved by the patch at: http://www.spinics.net/lists/linux-input/msg34362.html