Short Version

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.

Updates

  • 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

    Hardware status

    CPU: Core 2 Duo Works 64 and 32 bit modes work fine
    Ethernet Works
    Use the "tg3" driver.
    Wireless 802.11n Trumobile (BCM4328) Works with ndiswrapper.
    SD reader Works with 2.6.28 and later
    Hinge Rotation Working!!!
    dell-wmi support has been added to release candidates of the 2.6.30 kernel. 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.
    Video Works
    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
    Touchpad (ALPS) Partial
    PS/2 mode only.

    Debian install

    The wired network card did not work with the driver version in the stable installation disk. Use lenny or later.

    Ubuntu install

    Works well with Lucid Lynx

    Gestures

    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 you.

    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 Rotation

    Updated 2009-09-23
    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 proactively poll the state of the hinge on initialization. I have no clue how to do that, help would be appreciated. Note, the patch does not contain the codes for the XT2, only the full c file.

    Video

    Updated 2010-04-14
    The current xorg radeon driver works well.

    Touchscreen

    Made by N-Trig.

    Update 2010-04-27

    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.

    Update 2010-03-10

    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
    Patch: 2010_03_10_ntrig.patch

    Update 2010-02-16

    Minor fix for single touch only mode to put back the tap events.
    Patch: 2010_02_16_ntrig.patch
    hid-ntrig.c: 2010_02_16_hid-ntrig.c

    Update 2010-02-14

    Given my 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 cleanup.
    2010_02_11_ntrig.patch
    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.

    Update 2010-02-05

    Multitouch working well with the 4.5.2.3.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.

    Files:
  • 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 that.

    update 2009-06-17

    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.

    update 2009-05-21

    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.

    update 2009-05

    linuxwacom 0.8.2 and above refuse to work with unidentified tablets. This will id the n-trig. linuxwacom_0.8.3.patch Aside from that, I no longer use any special patches. The 2.6.29 kernel should suffice.

    update

    A new patch (0001-Added-quirks-for-the-N-Trig-digitizer.patch for 2.6.28 and ntrig_quirks.patch for 2.6.27.6) 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.

    old version

    For kernels older than 2.6.27, try this patch: ntrig_hid.patch
    linuxwacom-0.8.1-3.ntrig_hack.patch, a patch for the wacom X driver.

    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 developement driver.
    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 double check).
  • 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.

    Ethernet

    The bcm5756ME works just fine with the tg3 driver in current kernels.

    Wireless ethernet

    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.

    Bluetooth

    Worked out of the box.

    SD card reader

    Should work with the sdhci driver, but so far I haven't had any success.

    Touchpad

    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.

    Screen Keys

    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
    descriptionkeycodemapping
    up e01f72
    left e01b75
    right e02377
    down e01e80
    key e058120
    rotate e018121
    wrench e01a122
    mail e017123
    I use xbindkeys for the non-arrow keys.

    ACPI/power

    Battery

    With the DLV screen and the 1.2GHz cpu, I've been getting poor battery life (about 2 hours).

    cpu control

    I'm still experimenting with cpufreq controls of the 2 cores. Also sysfs seems to offer some additional features which need looking into.

    Suspend

    Memory sleep mode seems to mostly work. The hidraw devices seem to dissapear. Swapping batteries in the suspended state does not work.

    Hibernate

    Not yet tested.

    Hinge Rotation

    Need to write a wmi hook for it to work, whatever that means. It definitely is trying to make a wmi call through acpi.



    TuxMobil
    Also check out the Gentoo Linux Wiki