A fairly normal installation works fine to the point of a fully
functional ordinary laptop. The tablet features now work, though
multiple finger input is still non-functional (but may get fixed soon).
My xorg.conf. Its not
clean, and may not be the best one can do, but I figure others might
find some useful tidbits.
2011-06-26 In kernel tracking, per contact filtering and basic interpolation for smoothing. This version also includes sysfs nodes for calibration and mode switching (the interface for those may change)hid-ntrig-20110626.tgz
2010-05-04 Cleaned up the 04-27 version: 2010_05_04_hid-ntrig.c
2010-04-27 Experimental version of hid-ntrig.c that needs testing 2010_04_27_hid-ntrig.c see bellow for an explanation
2010-04-14 Various updates to hid-ntrig.c 2010_04_14_hid-ntrig.c
2010-04-14 experimental version for the hardware in the studio 17 2010_04_14_studio17_hid-ntrig.c
2010-03-10 Another minor ntrig update, fix handling of BTN_TOUCH
2010-02-16 Minor update to put back DOUBLETAP for st only mode.
2010-02-14 For now rolling back some of the changes to the ntrig driver
2010-02-05 New version of the driver for testing. Read the notes bellow before trying it.
2010-02-03 Updated patch for wacom X driver: xf86-input-wacom_ntrig_2010_02_03.patch
2009-09-23 Tool separation patch seems to be in Linus' tree in 2.6.31-git12. Also update to dell-wmi.c to support rotation for the xt2.
2009-06-17 Cleaner patch for tool separation.
2009-05-21 Sloppy patch which separates pen and finger for the
wacom driver and might integrate multitouch (haven't tested that part).
See the touch screen sections for details.
2009-05-11 Check out easystroke
2009-05-08 dell-wmi patch to handle the XT hinge rotation events
2009-05-08 new patch for current wacom drivers (tested with
0.8.3 but may also work with 0.8.2).
2009-01-08 Playing with gestures in fvwm. Here's the relavent
portion of my config fvwm_gestures.
See the fvwm manpage for an explanation of the stroke sequences. Also
watch the output from fvwm to see what sequences its reading.
2009-01-08 Updated the touch section in my xorg.conf. Changed
"Suppress" to 0. The wacom driver was ignoring taps to an annoying
extent at the default value of "4".
2009-01-08 Remapped the special buttons with xmodmap, so now I
let the window manager handle them instead of xbindkeys. My config file, run with
xmodmap in .Xsession, .Xclients, or whatever you choose to
use for X startup scripts.
Touch screen working pretty nicely with wacom driver
Xrandr rotation partially working
|CPU: Core 2 Duo
||Works 64 and 32 bit modes work fine
Use the "tg3" driver.
|Wireless 802.11n Trumobile (BCM4328)
||Works with ndiswrapper.
||Works with 2.6.28 and later
dell-wmi support has been added to release candidates of the 2.6.30
My rotation patch has been rejected and is unlikely to be accepted for
now. See below for details, links to a patch for dell-wmi.c and a perl
script to watch for events.
Use stock "radeon" driver.
|Digitizer (touch screen)
||Working (but requires patches and building)
Kernels older than 2.6.27 will need a patch.
Wacom driver works nicely with a little patching
PS/2 mode only.
The wired network card did not work with the driver version in the
stable installation disk. Use lenny or later.
Works well with Lucid Lynx
I've been using Easystroke
for a few months now. I do not feel my personal gestures should be
considered applicable to others, so I encourage you to consider how you
use your own machine and the sorts of motions that are comfortable to
I've found that it is not convenient to keep gestures on all the time,
so I like to have a quick gesture to kill/dissable easystroke and have
one of the screen buttons mapped to start it up again. Xournal and the
grab and drag plugin for firefox/thunderbird do not really play well
with an external gestures program running.
For tablet mode, its a good idea to program gestures for common window
operations (move, resize, close, maximize). Rotation by +90, -90, and
180 (the hinge and on screen button are programmed for specific
orientations instead of arbitrary reorientation). Also, I like to keep
handy gestures for pulling up the window list, and the main window
manager menu. And of course gestures for favorite programs. Many of
the gestures are convenient enough that I find myself using them even
when not in tablet mode.
Hinge events are sent through wmi. The linux 2.6.30 release candidates
provide the base support for dell-wmi. This 0001-latitude-xt-wmi-rotation.patch
(full copy of my file with added support for the
xt2 dell-wmi.c) adds the
specific events sent by the latitude xt's hinge. I use this script dell_wmi_mon.pl with
FvwmPerl to carry the events to the window manager. The script should
mostly considered an example.
Update: the patch was rejected on the grounds that it does not
poll the state of the hinge on initialization. I have no clue how to do
help would be appreciated. Note, the patch does not contain the codes
for the XT2, only the full c file.
The current xorg radeon driver works well.
Made by N-Trig.
Experimental version of hid-ntrig.c that needs testing 2010_04_27_hid-ntrig.c
This version still supports a size threshold for contacts (which I've been using to eliminate ghost points), but it defaults to 0, ie not thresholding unless you want it too.
The studio17 effectively sees smaller contacts for the same physical size, which makes that threshold a bit of a mess, and it seems the values I had before were too aggressive and were likely responsible for discontinuities in finger drawn lines. Increasing the sensitivity should help with that.
Ghost points may be controlled with activation slack, ie a number of points to ignore before trusting the input stream is real. There are also parameters to set a size threshold above which it will assume you are actually touching the screen and will skip any remaining slack and will start emitting points immediately (smaller points will still be considered valid as long they are above the minimum size).
I've also added controls for deactivation slack. The default is to ignore the first 4 consecutive empty touch frames (the studio17 sends 5 empty frames at the end of touch, and the xt seems to send more).
All the parameters have been added to sysfs and as module parameters. Note the sysfs values are per device, so if for some reason you are using more than 1 ntrig device you can tweak them individually there. The module parameters setup global defaults. Also there are a few additional features exported via sysfs (read only).
Have fun, and please let me know how it works for you. In particular I'd like to know if you see any ghost points (and whatever you can tell me about them) and what if anything you've done to reduce/eliminate them.
BTN_TOUCH was a bit mangled in the 2010-02-16 version (as noted by
Henrik Rydberg) the patch cleans that up.
Full file: 2010_03_10_hid-ntrig.c
Minor fix for single touch only mode to put back the tap events.
uncertainty about mt behavior, I've rolled back some changes to the
driver. For now mt and st will still come out of the same device. This
version has no contact tracking and no suppression/spurious event
I will restore and add features after some more protocol discussion
and reading. On the upshot, this patch has a bit more cleanup and a
shift to letting hid do more of the work.
Multitouch working well with the 188.8.131.52.5 firmware and my new version
of the driver. The new driver worked fine on the one machine with an
older firmware that I tried, but use a bit of caution and prepare to
roll back if you want to test it.
The new version also requires an update to the wacom x11 driver, and
easy stroke, if you use them.
You will also need to modify your xorg configuration to use
/dev/input/eventXX. You should see two or three devices. I'm using
event10 for pen and event11 for touch, the third device emits nothing.
On the previous firmware, the third device is active instead of the
second. Use lsinput to find them and input-events to verify which
device is which.
Kernel patch: (generated against 2.6.33-rc6) 0001-HID-Major-update-to-N-Trig-touchscreen.patch
Full driver file: hid-ntrig.c.2010_02_05
xf86-input-wacom patch: xf86-input-wacom_ntrig_2010_02_03.patch
Userspace C program to try reading mt points: finger_pos.c you'll also
need stand.h. Thanks to
Stephane Chatty and his students for the code which I bastardized for
For kernels >=2.6.30-git11 use this patch 0001-ntrig-tool-separation-and-pen-usages.patch.
For 2.6.30 you can try applying these commits: commit-89f536c and commit-57fd637 but I
personally haven't tried patching from a vanilla 2.6.30 kernel (let me
know if you try it and it works).
One minor note, sometimes the touch get dissabled after odd operations
(like unloading and reloading the module while X and the wacom driver
are running). I have not seen this problem during normal operation. If
it does happen to you, try "xsetwacom set touch touch on".
One bit of advice, I suggest using an alias or something to wrap xournal
if you want to run it with pen only. "xsetwacom set touch touch off;
xournal; xsetwacom set touch touch on". I don't know how to make
xournal act intelligently when the touch sensor is active. But it works
very nicely with touch off.
Stephane Chatty has made interesting progress towards getting multitouch
working. See the linux-input archives for details.
If you are curious about multitouch, please read the linux-input
archives before getting started.
linuxwacom 0.8.2 and above refuse to work with unidentified tablets.
This will id the n-trig.
Aside from that, I no longer use any special patches. The 2.6.29
kernel should suffice.
A new patch (0001-Added-quirks-for-the-N-Trig-digitizer.patch
for 2.6.28 and ntrig_quirks.patch
for 184.108.40.206) adds quirks support. With this patch the normal wacom
driver works with the proper configurations. See my xorg.conf for my
current settings. I also have these lines in my .Xsession:
xsetwacom set stylus Button2 "button 3"
xsetwacom set eraser Button1 "button 2"
xsetwacom set touch Button10 "button 1"
For rotation, I wrote a script (xrotate.zsh) that calls
xrandr and xsetwacom tadjust the video settings and set the parameters
for the digitizer as well. I make no promises of userfriendlyness, so
send me comments or updates if you want it more friendly.
I use the rotate button on the screen to run xrotate.
Though sloppy I also reset the digitizer parameters after
sleep/hibernate using wac_reset.sh.
This was a sloppy hack and leaves the digitizer in the normal
orientation. I should probably just add a "reset_digitizer" option to
my rotate script.
Palm Detection While some palm detection seems to be in place,
its just not enough for note taking. Here's a script toggle_touch.sh to
toggle the touch input. It doesn't really work perfectly, but seems
good enough for taking notes with the pen, I am not getting spurious
doodles in xournal.
For kernels older than 2.6.27, try this patch: ntrig_hid.patch
a patch for the wacom X
My wacom patch is definitely just a hack. And not actually play nice
with a real wacom tablet. This is just a hack on a beta version of a
Issues in wcmUSB.c that the patch addresses:
One branch actually only configures a couple variables if the
device id is wacom. This may cause it to ignore touch events (need to
The kernel is sending axis 2 and 3 and button 9 for touch
events. I'm not actually sure wether the kernel or X driver should be
responsible for fixing that. It might also provide a cleaner solution
for the next problem.
Pen events seem to come with interlaced touch events causing
misshandling of some events.
With these patches I have pressure sensitivity with the pen. Two
buttons assigned to the stylus device and one to the eraser. A single
point with no pressure for the finger, but at least it works.
In addition to my xorg.conf I have these lines in my xsession:
xsetwacom set stylus Button2 "button 3"
xsetwacom set eraser Button1 "button 2"
xsetwacom set touch Button10 "button 1"
Note: with the wacom driver you can change what the buttons send.
You can also use sequences and key strokes as well as mouse buttons.
Side note: install the grab and drag plugin for firefox. It does
wonders if you want to use a webbrowser with just your fingers.
The bcm5756ME works just fine with the tg3 driver in current kernels.
The truemobile 1500/1505 is a bcm4328 pre-n card that does not currently work with the b43 driver. But ndisdriver works. Just get the driver from dell. In my case, dell had left the driver installer on the hard drive in c:\drivers.
Worked out of the box.
SD card reader
Should work with the sdhci driver, but so far I haven't had any success.
Its an alps and the synaptic/alps driver recognizes it, if you specify alps mode, but it does not autodetect. For me its been behaving weirdly when the driver is enabled and I haven't looked into it yet.
Finger Print Reader
Works just fine with thinkfinger. I even have typing free login working in console mode.
There are eight buttons/keys mounted on the screen. All send relatively normal codes through the keyboard interface. The codes are not included in the keymap I was using, so I've added these mappings:
setkeycodes e01f 72 e01b 75 e023 77 e01e 80 e058 120 e018 121 e01a 122 e017 123
I use xbindkeys for the non-arrow keys.
With the DLV screen and the 1.2GHz cpu, I've been getting poor battery life (about 2 hours).
I'm still experimenting with cpufreq controls of the 2 cores. Also sysfs seems to offer some additional features which need looking into.
Memory sleep mode seems to mostly work. The hidraw devices seem to dissapear. Swapping batteries in the suspended state does not work.
Not yet tested.
Need to write a wmi hook for it to work, whatever that means. It definitely is trying to make a wmi call through acpi.
Also check out the Gentoo Linux Wiki