New models of tabletpc use the usb bus to conect the
wacom tablet. An example of such model is the asus
R1F model.
The current wacom driver (Nov. 2006) does not support
this models of tabletpc.
Please could you add support for usb tabletpc to the
wacom driver.
J. I. Burgos
Logged In: YES
user_id=1039856
Originator: NO
Alright, here's the touchscreen support along with a mini-howto.
For my configuration, the digitizer came out to be /dev/input/event6, and the touchscreen /dev/input/event7. You should see wacom bound to 2 input devices; the lower one is PROBABLY the digitizer.
First, grab the 0.7.9-11 sources. Then grab my new, unified patch at http://linuxwacom.pastebin.com/f1decbe0f .
tar xjvf linuxwacom-0.7.9-11.tar.bz2
cd linuxwacom-0.7.9-11
patch -p1 < /where/ever/you/put/my.patch
./configure --enable-wacom
make
sudo make install
That will give you your shiny new wacom device files. At this point, go find your event devices by looking in dmesg.
Now, for the Xorg.conf, stick the following somewhere in the file (NOT INSIDE ANOTHER SECTION)
Section "InputDevice"
Identifier "TabletPCStylus"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Type" "stylus"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/event6"
Option "TopX" "225"
Option "TopY" "122"
Option "BottomX" "26365"
Option "BottomY" "16488"
EndSection
Section "InputDevice"
Identifier "TabletPCStylus2"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Type" "stylus"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/event7"
EndSection
And then add
InputDevice "TabletPCStylus"
InputDevice "TabletPCStylus2"
To section "ServerLayout"
The names of the devices are critical due to the wonderful handling of Xorg device names in wacomcpl and xsetwacom. TabletPCStylus is the digitizer, TabletPCStylus2 is the touchscreen. You will notice that I have entered calibration data in the first InputDevice section. I found this by running wacomcpl's calibration program and then using xsetwacom get TabletPCStylus TopX/TopY and so on to get the calibrated data, and I put it in xorg.conf so it's loaded every time I load X instead of recalibrating each boot.
I have tested and this builds and compiles cleanly on 0.7.9-11. It probably works on 0.7.9-9 too.
Enjoy!
Logged In: YES
user_id=544332
Originator: NO
OK, I got it working properly: adding wacom to /etc/modules solved those strange behaviours on first X startup. I guess X parses all config before (while?) the module is automatically loaded, so the thing falls back to default settings.
My xorg.conf goes like this:
<================================== xorg.conf =========================>
...
Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/input/wacom"
Option "Type" "stylus"
Option "USB" "on"
Option "ForceDevice" "ISDV4"
Option "TopX" "100"
Option "TopY" "100"
Option "BottomX" "28400"
Option "BottomY" "17900"
Option "Button2" "3"
Option "Speed" "1.5"
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "cursor"
Option "Device" "/dev/input/wacom"
Option "Type" "cursor"
Option "USB" "on"
Option "ForceDevice" "ISDV4"
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "eraser"
Option "Device" "/dev/input/wacom"
Option "Type" "eraser"
Option "USB" "on"
Option "ForceDevice" "ISDV4"
EndSection
...
...
Section "ServerLayout"
...
InputDevice "stylus" "SendCoreEvents"
InputDevice "cursor" "SendCoreEvents"
InputDevice "eraser" "SendCoreEvents"
EndSection
<================================== end ==========================================>
Gimp treats pressure properly, as zappacky explained earlier, just needed to set all wacom devices to "Screen" in Gimp settings. Eraser doesn't work at all, though.
Also, rotation seems to be working OK. A previous script I sent to Debian ACPI developers to support screen rotation hasn't made it to testing yet, so you'll lack that needed previous support to test this feature, but I hope both funcions will be available soon.
Cheers.
Logged In: YES
user_id=772043
Originator: NO
My latest observations:
Good things -
- Latest patch applied (thanks again zappacky) and the touch screen now also works. Excellent!
- Despite my earlier problems, the stylus is now returning pressure info. I don't know what I did there... Probably was working all along!
Issues -
- Still no-show from the eraser...
Some specific observations and questions.
@atrueba:
- I don't have the "failed to load first time" problem you see... I'm on an HPtx2050/ubuntu8.04, I wonder if there's some underlying difference?
- What does the "Speed" "1.5" option in your xorg.conf achieve?
- Can you post a link to your ACPI mods for rotation? Although, these HP machines have "issues" with ACPI anyway so...
- Does /dev/input/wacom point to the correct event device on your system? What I find (and I rebooted this machine repeatedly over and over again to check) is that the event# do move around sometimes from boot to boot, and that, for this machine /dev/input/wacom always (so far!) points at the second device and *seems* to be the touch screen. On this machine I find that the symlink
/dev/input/by-id/usb-Tablet_ISD-V4-event-mouse
consistently gets mapped to the "stylus" event queue.
@zappacky:
- thanks for posting your xorg too. Very useful.
I've modified my xorg.conf to be more like zappacky's (it was more like atrueba's originally) now using the TabletPCStylus style names.
I've made the devices read from:
"/dev/input/by-id/usb-Tablet_ISD-V4-event-mouse" for the stylus/digitizer
"/dev/input/wacom" for the touchscreen
Hmmm, come to think of it, I now don't have an "InputDevice" section for an eraser... I wonder if I should...
Anyway, here's a word of warning - when updating my xorg.conf, I cut and pasted the top/bottom limits zappacky had used, without checking them... After a few minutes, X locked up. I've repeated the test with/without the limits set and it is reproducible - so if you are going to set top/bottom limits, make sure they are right for your machine!
Also - does wacomcpl work for you? I'm not getting anything, but then, I don't know what it does anyway... It just comes up blank for me. Does it only work if the digitizer is not claimed by X or something? xidump seems to be working fine.
Thanks,
--
Ian
Logged In: NO
So, can you please tell me what is working 100% and what is not working on USB Tablet like tx2000s with Linux Distros?
Stylus pen?
Eraser?
Touchscreen?
Fingerprint?
On Debian/Ubuntu/Fedora..etc.
Thank you Zappacky and Cie!
Logged In: NO
On my TX2050 with ubuntu 8.04 and zappacky's patched linuxwacom driver:
Stylus pen? - yes, including pressure
Eraser? - not so far, why is not clear
Touchscreen? - yes
Fingerprint? - not a linuxwacom issue, see elsewhere
Logged In: YES
user_id=1039856
Originator: NO
I am happy to report, I have gotten the eraser to work 100% properly! (Including pressure sensitivity). Tested in Gimp, automatically switches between Pen and Eraser tools and so on.
I will post the patches I made (which really are more reliability than functionality patches), and instructions shortly.
In response to Anon,
Stylus pen -> Yes + Pressure
Eraser -> Yes + Pressure (not released just yet)
Touchscreen -> Yes, the device doesn't report pressure
Fingerprint -> No, not linuxwacom's job. Also, the fingerprint reader on the tx2000 is crap, it took me a good 30 tries to enroll, and then my mom's fingerprint let her log in as me in one try. Not exactly secure.
Logged In: YES
user_id=544332
Originator: NO
@ianmacarthur:
- That problem on first X start was probably caused by my setup. I'm running a mix of Debian unstable and testing, and my machine has a hard time every once in a while ;-). Anyway, i'm pretty sure everything should run OK on a "standard" system.
- The "Speed" parameter affects the cursor movements, so it keeps near or far of the pen as you move it around. The default setup was a little too "nervous" for my appeals, so I slowed it a bit. Just a personal preference.
- In debian, the package xserver-xorg-input-wacom installs a udev rule that *always* links the correct /dev/input/event? to /dev/input/wacom, (apart from that /dev/input/by-id/... you found, also there). You have udev running?
- I didn't wanted to add my ACPI toys to this thread, as the script I'm using hasn't made into testing yet (but it's planned to be there in the next acpi-support release). Anyway, you can find them here:
http://svn.debian.org/wsvn/collab-maint/deb-maint/acpi-support/trunk/
These are all the files under /etc/acpi in package acpi-support. The ones you want are:
- events/asus-rotate - You'll probably need to modify the rotate "button" code to suit your machine here. Better create a separate hp-wathever-rotate file.
- rotatescreen.sh - This supports screen rotation only, but should be OK for most systems. To support tablet rotation you'll need to use this modified file instead:
<================================== /etc/acpi/rotatescreen.sh =======================>
#!/bin/sh
#
# This script rotates the display in TabletPCs when screen is changed from
# laptop to tablet mode, or when rotation button is pressed
test -f /usr/share/acpi-support/power-funcs || exit 0
. /usr/share/acpi-support/power-funcs
if [ -f /var/lib/acpi-support/screen-rotation ] ; then
ROTATION=`cat /var/lib/acpi-support/screen-rotation`
fi
case "$ROTATION" in
right)
NEW_ROTATION="normal"
NEW_WACOM_ROTATION="NONE"
;;
*)
NEW_ROTATION="right"
NEW_WACOM_ROTATION="CW"
;;
esac
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXconsole;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
/usr/bin/xrandr -o $NEW_ROTATION && echo $NEW_ROTATION > /var/lib/acpi-support/screen-rotation
if [ -e /dev/input/wacom ] && [ -x /usr/bin/xsetwacom ] ; then
$TOPX=`/usr/bin/xsetwacom get stylus TopX`
$TOPY=`/usr/bin/xsetwacom get stylus TopY`
$BOTTOMX=`/usr/bin/xsetwacom get stylus BottomX`
$BOTTOMY=`/usr/bin/xsetwacom get stylus BottomY`
/usr/bin/xsetwacom set stylus rotate $NEW_WACOM_ROTATION
/usr/bin/xsetwacom set stylus TopX $TOPY
/usr/bin/xsetwacom set stylus TopY $TOPY
/usr/bin/xsetwacom set stylus BottomX $BOTTOMY
/usr/bin/xsetwacom set stylus BottomY $BOTTOMX
fi
fi
done
<====================================================================================>
Note that you may need to adjust screen rotation from "right" to "left", and wacom rotation from "CW" to "CCW", depending on your laptop design. Also, keep in mind that this is accepted by Debian acpi-support developers and should be safe to test in Ubuntu, but other distros can go bananas.
I'll be glad to discuss this ACPI thingy with anyone willing to try it, but, to keep this thread on its path, you (anyone) can contact me at my sf address for this.
Cheers.
Logged In: YES
user_id=692677
Originator: NO
Hi & thx for the work!
But i cant get it right.
Asus R1F, Kubuntu 7.10, 2.6.22
linuxwacom-0.7.9-11
f1decbe0f.patch
Patching ok
Configureing ok
Makeing NOT OK
make[2]: Betrete Verzeichnis '/home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22'
cp -f ../2.6.19/wacom_wac.c .
cp -f ../2.6.19/wacom.h .
Building linuxwacom drivers for 2.6 kernel.
***Note: Drivers not enabled as modules in your kernel config but requested through configure are NOT built
make -C /lib/modules/2.6.22-14-generic/build M=/home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22
make[3]: Betrete Verzeichnis '/usr/src/linux-headers-2.6.22-14-generic'
LD /home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22/built-in.o
CC [M] /home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22/wacom_wac.o
CC [M] /home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22/wacom_sys.o
LD [M] /home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22/wacom.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "input_dev_tpc" [/home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22/wacom.ko] undefined!
CC /home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22/wacom.mod.o
LD [M] /home/ralph/bin/Source/linuxwacom/linuxwacom-0.7.9-11/src/2.6.22/wacom.ko
make[3]: Verlasse Verzeichnis '/usr/src/linux-headers-2.6.22-14-generic'
Tried to find out what went wrong but cant find anything wrong.
PS: Testwise i compiled on a amd64 and can confirm
Date: 2008-04-17 09:55
Sender: nobody
Thanks again,
Ralph.
Logged In: YES
user_id=1930398
Originator: NO
I have the exact same problem as ralphmw, also on Asus R1F but with Ubuntu 7.10 (2.6.22) rather than Kubuntu...
Logged In: NO
Hi,
thanks for the great work. Compiles and works out of the box with zappacky`s howto and patch on an asus r1f with fedora 8 x64. now my r1f is a great surfpad using xvkbd as screen-keyboard. thanx again!
Logged In: YES
user_id=772043
Originator: NO
Walter (wkalceff) et al...
"I have the exact same problem as ralphmw, also on Asus R1F but with Ubuntu
7.10 (2.6.22) rather than Kubuntu..."
Yup, I think this is a kernel version problem - the patch modifies the file wacom_sys.c, but if you look in the linuxwacom/src directory, you'll find there are different wacom_sys.c files for 2.6.24 and 2.6.22.
You'll just need to copy zppacky's changes from the 2.6.24 version into the 2.6.22 version and al should be well.
Logged In: YES
user_id=772043
Originator: NO
All,
One extra observation about installing the patched driver: On my system, when I do a "sudo make install" it installs all the rebuilt objects and utilities correctly *except for* the wacom.ko module - I have to "install" (i.e. copy) that into the right place by hand. (Usually do the cp, then run depmod -e just to be sure.)
Not sure if that's normal or not, but this is just a heads-up in case anyone else has problems.
Also, I might try and post some snippets from my xorg.conf, just as another point of reference.
Antonio (atrueba): Thanks for the rotation stuff - I'm going to try and look at that over the weekend (I hope!) so if it's OK I might mail you direct if I get into difficulties!
Also, the /dev/input/wacom is consistently created on my machine pointing at the second (touchscreen) input, not the stylus. The /dev/input/by-id/* seems more reliable (so far!), Yes, with udev running.
Zappacky (Andrew?): looking forward to the eraser patches! Thanks again for this.
And off-topic... "Also, the fingerprint reader on the tx2000 is crap, it took me a good 30 tries to enroll, and then my mom's fingerprint let her log in as me in one try. Not exactly secure."
Hmm, only tried it under Vista, and it worked OK for me - well, enrolled in about 6 swipes, and can tell the difference between me and my wife... Still, don't trust them anyway!
Logged In: YES
user_id=1039856
Originator: NO
Yes, I an confirm that this patch is ONLY meant for 2.6.24 kernels (although it happily builds under 2.6.25-rcX).
Near the bottom of my todo list is backporting this to previous kernels, for two reasons. 1, I don't have the kernels installed so I'd have to download each kernel tree, compile and install, build and test, 2, I'd rather make it better/more reliable than spend time backporting at this point.
Logged In: NO
If anyone else wants to have a go at the backport to 2.6.22, note that only the file wacom_sys.c is affected.
wacom_sys.c had a fair bit of change between 2.6.22 and 2.6.24, so I don't think you can just drop in the "new" version. However, zappacky's mods to this file are very localised, so the backport ought to be trivial. That said, I don't have a 2.6.22 box either, so have not tried it...
Logged In: YES
user_id=692677
Originator: NO
Hi @ all
after some trying this seems to work for 2.6.22.
Please be aware, that this is my first diff!
Review before applieing!
Needs still some heavy testing i guess.
The diff is from inside src/2.6.22 tree with the original wacom_sys.c as wacom_sys_ori.c!
--- wacom_sys_ori.c 2008-04-11 23:11:30.000000000 +0100
+++ wacom_sys.c 2008-04-18 15:48:03.000000000 +0100
@@ -206,6 +206,12 @@
input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_RUBBER);
}
+void
+input_dev_tpc (struct input_dev *input_dev, struct wacom_wac *wacom_wac)
+{
+ input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_RUBBER);
+}
+
static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *id)
{
int error = -ENOMEM;
@@ -270,12 +276,18 @@
goto fail3;
/* Ask the tablet to report tablet data. Repeat until it succeeds */
- do {
- rep_data[0] = 2;
- rep_data[1] = 2;
- usb_set_report(intf, 3, 2, rep_data, 2);
- usb_get_report(intf, 3, 2, rep_data, 2);
- } while (rep_data[1] != 2 && limit++ < 5);
+ if (wacom_wac->features->type == TABLETPC) { /* USB ISDv4 (TabletPC) doesn't support SetReport */
+ usb_get_report(intf, 3, 2, rep_data, 2);
+ if (rep_data[0] != 2 || rep_data[1] != 0)
+ info("Got bad report from TabletPC, may not work properly");
+ } else {
+ do {
+ rep_data[0] = 2;
+ rep_data[1] = 2;
+ usb_set_report(intf, 3, 2, rep_data, 2);
+ usb_get_report(intf, 3, 2, rep_data, 2);
+ } while (rep_data[1] != 2 && limit++ < 5);
+ }
usb_set_intfdata(intf, wacom);
return 0;
Hope this helps :-)
Ralph.
Logged In: YES
user_id=1039856
Originator: NO
I present... eraser support!
The patch is here: http://linuxwacom.pastebin.com/f3d5b9e73
Must be applied to clean development sources, tested on 0.7.9-9 and 0.7.9-11. Supports eraser + pressure, pen + pressure, and touch screen. The following Xorg snippet yields a working wacomcpl, and the ability in gimp to automatically switch between the three tools (pen, erase, finger) whenever you use each tool. (E.g. Use the eraser and it switches to eraser, use your finger and it switches to, say, paint)
For these results, I used this xorg.conf snippet:
Section "InputDevice"
Identifier "TabletPCStylus"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Type" "stylus"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/event6"
EndSection
Section "InputDevice"
Identifier "TabletPCStylus2"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Type" "stylus"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/event7"
EndSection
Section "InputDevice"
Identifier "TabletPCStylus3"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Type" "eraser"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/event6"
EndSection
The only bug I have found relates to screen rotation. If I follow the procedure:
xrandr -o right
xsetwacom set TabletPCStylus Rotate CW
xsetwacom set TabletPCStylus2 Rotate CW
And both the touch and the pen work fine. The eraser moves in the right direction, but has incorrect boundaries. If I do
xsetwacom set TabletPCStylus3 Rotate CW
It not only does not work properly, but it also messes up the pen. If I swap Stylus and Stylus3, the eraser works fine but rotating the pen borks everything.
I believe, however, that this is a bug in the linuxwacom core code and not mine, as none of my code deals with rotating in any way, shape or form.
Enjoy!
Logged In: YES
user_id=772043
Originator: NO
ralphmw
I was just about to do a 2.6.22 backport (although I have no way of testing it) but I see you already did. Your code looks OK to me - it is working OK for you?
Logged In: YES
user_id=1039856
Originator: NO
Although I don't have any convenient way to test the 2.6.22 backport patch, I don't see anything wrong with it just glancing at it. I didn't make that many changes to wacom_sys.c.
I don't have an x86_64 system at the moment, but will linuxwacom compile for a 64-bit kernel? Just out of curiosity.
Logged In: YES
user_id=754442
Originator: NO
Andrew: Yes, linuxwacom works on X86_64 systems.
Logged In: YES
user_id=772043
Originator: NO
zappacky, Eraser patch seems good - thanks!
One thing, I had to add an InputDevice line to my ServerLayout to get the eraser recognised, so if anybody else is having issues, that might be worth a try.
Anyway: here's the xorg.conf snippet I said I'd post. This is providing pen, eraser and touchscreen with zappacky's latest patch:
-------------------------------------------------
#digitizer/stylus
Section "InputDevice"
Identifier "TabletPCStylus"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Type" "stylus"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/by-id/usb-Tablet_ISD-V4-event-mouse"
Option "Button2" "3" # make side-switch a right button
EndSection
#touchscreen
Section "InputDevice"
Identifier "TabletPCStylus2"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Type" "stylus"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/wacom"
EndSection
#digitizer/eraser
Section "InputDevice"
Identifier "TabletPCStylus3"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Type" "eraser"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/by-id/usb-Tablet_ISD-V4-event-mouse"
EndSection
-------------------------------------------------
Then in ServerLayout I have:
---------------------------------------------------------
Section "ServerLayout"
Identifier "Default Layout"
screen "Default Screen"
Inputdevice "Synaptics Touchpad"
InputDevice "TabletPCStylus"
InputDevice "TabletPCStylus2"
InputDevice "TabletPCStylus3"
EndSection
---------------------------------------------------------
And that seems to be doing the job.
Cheers,
--
Ian
Logged In: YES
user_id=1039856
Originator: NO
ianmacarthur:
You didn't read my whole post, the Xorg.conf snippet you posted is almost line-for-line identical with the one at the bottom of my patch post :P.
Logged In: YES
user_id=754442
Originator: NO
Andrew: we introduced a new type "touch" (If you "man wacom" on your system with the new beta, 0.7.9-11, installed, you'll see this new type there) for touch (or touchscreen in your term :). Do you think it makes sense to identify your TabletPCStylus2 with type "touch"?
Logged In: YES
user_id=772043
Originator: NO
Zappacky: Yes, absolutely! I totally agree with you! The small differences are just to show any others following the thread how to use the symlinks to get at the event queues, rather than just calling them by /dev/input/event# since they move about on my machine, and I guess they might for others too.
Also, the side-switch/right-button mapping is included, if people need that one.
What about Ping's suggestion of setting the touchscreen type to "touch"? Is that just an xorg.conf mod, or does it require support in the driver code?
Cheers,
--
Ian
Logged In: YES
user_id=692677
Originator: NO
@ianmcarthur:
The patch seems to work here (R1F, Kubuntu 7.10, 2.6.22-14-generic)
Wacdump reports everything correctly.
PEN, Eraser, Button are reported.
But i'm still playing with Xorg.conf.
Logged In: YES
user_id=1039856
Originator: NO
I just tried it out, changed tool type to BTN_TOOL_FINGER and the device type to touch, and no combination of options or changes yielded any mouse motion whatsoever.
I don't see any benefit to changing it, since it's not broken at all, so I'd say just keep it as is (also, it might as well /be/ a stylus, since it behaves exactly like one, and on tx1000 the tool is indeed a stylus (although not a digitizer))
Just my $.02
Any ideas on the screen rotation problem?