Using Ubuntu on the ASUS Eee PC T101MT Tablet PC

Ubuntu The Specifications

Brand:

Asus

Model:

T101MT

RAM Memory:

1 to 2 GiB

Processor:

Intel Atom 450

Integrated Graphics:

GMA 3150

Distributions used:

Ubuntu 10.04-11.04

These instructions work with Ubuntu 10.04 (Lucid Lynx), Ubuntu 10.10 (Maverick) and Ubuntu 11.04 (Natty). Unfortunately support for pressure sensitivity on Natty Narwhal is incomplete. The two finger daemon on Natty is experimental and has some limitations.

Tested with Ubuntu Desktop Edition (Gnome) and Ubuntu Netbook Edition. Not completely tested with Kubuntu (KDE), but it should work just as well.

The original forum entry discussing this machine's configuration can be found at

Basic steps

  • After you have installed Ubuntu using a live CD or USB flash drive, you have to perform the following steps which provide basic features like special keys and improve the touch-screen support:

Please note

* It is important to find out which type of touchscreen you have:

  • xinput list
    If you find eGalax in the output it is a first generation touch device. If you find Multitouch it is a second generation touch device.

    Depending on which touch device you have there are different steps to take to achieve the best experience

*If you find that two-finger scrolling and tapping on the touch-pad (not screen) sometimes doesn't work but the cursor starts hopping over the screen wildly, it's because you just used Windows (how dare you! Smile :-) ) and Windows changed the touch-pad configuration. You always have to turn the Eee PC off after using Windows and turn it back on to use Ubuntu instead of simply rebooting.

For 12.04, Precise Pangolin (and onwards?)

The process is relatively same for the later versions of Ubuntu except the addition of twofing which adds multitouch capabilities.

  • Open a terminal and enter the following commands which set up a software source and installs the required packages:
    sudo apt-add-repository ppa:plippo/t101mt
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install eeepc-acpi-workaround egalax-multitouch-driver-common eeepc-brightness-workaround eeepc-powersave twofing
    gconftool-2 --set /desktop/gnome/peripherals/touchpad/scroll_method --type=int 2

    Add "twofing --wait" to the startup for touchrotate to work correctly then please continue with the instructions in the section called "Touch-Screen".

For 11.04, Natty Narwhal

  • Open a terminal and enter the following commands which set up a software source and installs the required packages:
    sudo apt-add-repository ppa:plippo/t101mt
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install eeepc-acpi-workaround egalax-multitouch-driver-common eeepc-brightness-workaround eeepc-powersave
    gconftool-2 --set /desktop/gnome/peripherals/touchpad/scroll_method --type=int 2

    Then please continue with the instructions in the section called "Touch-Screen".

For 10.10, Maverick Meerkat

  • Open a terminal and enter the following commands which set up a software source and installs the required packages:
    sudo apt-add-repository ppa:plippo/t101mt
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install eeepc-acpi-workaround egalax-multitouch-driver-common eeepc-brightness-workaround eeepc-powersave eeepc-touchpad-twofingers

    Then please continue with the instructions in the section called "Touch-Screen".

For Ubuntu 10.04, Lucid Lynx

  1. Download the common touch-screen support package: egalax-multi-touch-driver-common.deb and install it by double-clicking on it.

  2. Open a terminal, enter gksudo gedit /etc/default/grub and change the line that starts with
    GRUB_CMDLINE_LINUX_DEFAULT
    to
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux acpi_backlight=vendor"
    Then call
    sudo update-grub
  3. To enable full brightness, open the file /etc/rc.local with root rights:
    gksudo gedit /etc/rc.local
    ABOVE the line that reads exit 0, add the following line:
    setpci -s 00:02.0 f4.b=ff
    Save the file and reboot (or reboot after having performed the following steps).
  4. To make two-finger scrolling work on the touchpad, press Alt+F2 and enter
    gksudo gedit /usr/lib/X11/xorg.conf.d/96-synaptics-twofing.conf
    An editor with an empty file will load. Paste there the following text:
    Section "InputClass"
    Identifier "touchpad two finger scrolling"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Option "EmulateTwoFingerMinZ" "10"
    Option "EmulateTwoFingerMinW" "7"
    Option "VertTwoFingerScroll" "True"
    Option "HorizTwoFingerScroll" "True"
    Option "VertEdgeScroll" "False"
    Option "HorizEdgeScroll" "False"
    Driver "synaptics"
    EndSection
    Now press Alt+F2 again and enter
    gconftool-2 --set /desktop/gnome/peripherals/touchpad/scroll_method --type=int 2
    Nothing will happen then, that's okay. Log off and back in, now two-finger scrolling on the touchpad should work.

Touch-Screen

  • T101mt touch-screen is a resistive, 2 fingers multi-touch touch-screen.

    If you are using Ubuntu 10.10/11.04 and have a T101MT with first-generation touch-screen, you no longer need to install any kernel packages. If you have a second generation touchscreen and use Ubuntu 11.04 the touchscreen works out of the box. Just skip this section in this case and continue with "to rotate the screen".

To Rotate The Screen

Use the touchrotate script that you have installed before (see "Basic steps").

  • The problem about screen rotation is that the evdev driver doesn't respect the orientation of the screen. So you have to rotate the screen and the touch-screen to get both working in the same way.

You can rotate the screen and touch-screen by calling touchrotate with one of its parameters:

  • touchrotate left|right|inverted|normal|toleft|toright|topdown

Examples:

  • touchrotate left
    rotates the screen so the top panel is at the left side.
    touchrotate toright
    rotates the screen clockwise

Underlying Concept

There always seems to be a lot of confusion about how touchrotate works. The important thing to understand is that we are dealing with two devices: An output device (the 'screen', display) and an input device (the 'touch', USB HID). To rotate the output we use xrandr to rotate the input we use xinput with a coordinate transformation matrix. To be able to use xinput and xrandr we need to identify the device names. So if your device varies you may have to change touchrotate so that your actual device name is used by the script!

Express Gate/Screenrotate Button

How to use the little button next to the power button.

You can map the rotation to a key combination with the Keyboard Shortcut tool provided for ubuntu, just add a new shortcut and set e.g.

  • touchrotate toright
  • in order to execute the command, click on the right column and press the key to be used for the shortcut, e.g. the screen rotation key below the display.

If you have a second generation screen and plan on using Multitouch functionality you will need to use another method (Multitouch)

If The Camera Is Up-side Down

  • For the upside down webcam, Hans De Goede made us a new libv4l, download it as source here: v4l-utils-0.7.92-test.tar.gz

  • To install source type on the terminal, in this order:
    tar xvfz v4l-utils-0.7.92-test.tar.gz
    
    cd v4l-utils-0.7.92-test
    
    make PREFIX=/usr
    
    sudo make install PREFIX=/usr
  • And you'll be on earth !

Gimp

Support for pressure sensitivity on Natty Narwhal is currently incomplete

  • To get pressure sensitivity in GIMP go to GIMP's input device settings (Edit › Settings › Input devices › configure extended input devices), choose their "eGalax Inc. USB TouchController" and set the mode to "screen". You should then be able to draw with different opacity depending on your pressure.

MyPaint

  • If you like painting, you might be interested in the patched version of MyPaint which can be found here.

  • Install the MyPaint package from the normal Ubuntu repository, e.g. using Software Center

  • Download the attached patch file and save it to your home directory.
  • Open a terminal and execute the following command:
    sudo patch -p1 -d /usr/share/mypaint < mypaint-resistive.patch

or

  • sudo patch -p1 -d /usr/share/mypaint < mypaint-0.9.0-resistive.patch
  • Use this Python script to patch additional brushes which can be down-loaded from mypaint.org: brushes.py

Multitouch

First generation touchscreens

Experimental Two-Finger Touch Daemon

  • (http://plippo.de/p/twofing.htm)

    • Made by Plippo. It recognizes the following two-fingered gestures: Two-fingered tap, two-fingered scroll, two-fingered zoom, two-fingered rotate. It blocks input so these gestures don't reach the underlying application as normal mouse events. It creates mouse and key events and sends them to the application instead. To be able to do this, the daemon needs different profiles for different applications. Here is what should work at the moment:
      • Eye of Gnome (Ubuntu's default picture viewer): Zoom, scroll, rotate, right click
      • Evince (Ubuntu's default document (PDF) viewer): Zoom, scroll, rotate, right click
      • Ubuntu Netbook Launcher: Scroll, right click, and if you're using Compiz: switching between virtual desktops
      • F-Spot: Zoom, scroll, right click

        Almost every other application: Scroll, right click, for many (like Firefox, Nautilus, LibreOffice/OpenOffice) also zoom

      Unfortunately, applications which use extended input capabilities like Gimp, Xournal or MyPaint don't work with the daemon. They are blacklisted, so the daemon automatically pauses when one of those applications is active. This means that you can't use two-finger gestures in those. This also means that if you find an application that doesn't work at all while the daemon is running, it probably needs to be blacklisted, too. The latest version of twofing is more stable, allows to rotate the Compiz cube with two fingers and is less zoom sensitive: It should less often occur that you zoom when you actually wanted to scroll. There is a profile for Google Earth (as Maverick's graphics driver is finally fast enough for a smooth experience): That's really fun, explore the globe with two fingers! Massive code restructuring/cleanup: Gesture handling code and easing code have been separated from the main tweaking code into different files for better clarity and to make future enhancements easier. Improvements for users of alternative WMs (especially mutter used in Unity, but may also help for KWin), still not working perfectly there, though.

Second generation screens

* If you want to use multitouch you need to change three things:

  • The first is excellently described here : N0rberts_Guide Eventually you will have to load the hid_multitouch module manually:

    sudo modprobe hid_multitouch
    To load it automatically after each reboot edit /etc/modules and add the module.

* The second change is about screenrotation, you will have to exchange the touchrotate script provided by plippo with this script http://ubuntuforums.org/showpost.php?p=11164649&postcount=993

* The third change is concerning the Expressgate/Screenrotate Button: You will need to put this code into a new file, make it executable and put it into System > Preferences > Startup Applications

 #!/bin/bash
#
while true
do
    press=$(acpi_listen -c 1 | grep 0000007b | awk '{ print $3 }')
    hold=$(acpi_listen -t 2 | grep 0000007d | awk '{ print $3 }')

    if [ "$press" == "0000007b" ]
        then
            if [ "$hold" != "0000007d" ]
                then
                    touchrotate toright
            fi
    fi
done

Kinetic Scrolling

  • Last but not least at all: Finally there is Kinetic scrolling! Scrolling continues (naturally) when you stop (doesn't work in Eye Of Gnome). In order to try this feature, follow these steps:
  • download:

    twofing-0.0.7.tar.gz (or old version: twofing-0.0.6b.tar.gz)

    If you are using 11.04 (Natty) you need to download the latest version instead (twofing-0.0.9a.tar.gz)

  • Extract it to a folder of your choice (e.g. your home dir)
  • Open a terminal and navigate to the extracted folder (e.g. cd ~/twofing-0.0.7 if you extracted it to your home dir)
  • Install the required packages:
    sudo apt-get install build-essential libx11-dev libxtst-dev libxi-dev x11proto-randr-dev libxrandr-dev
  • Compile the daemon by calling
    make
  • Install the daemon by calling
    sudo make install
  • Reboot (doesn't have to be done on updates, only on first install as a new udev rule is created)
  • Open a terminal again and call twofing (nothing will seem to happen)
  • Open your favorite application
  • Perform gestures on the screen with two fingers
  • To stop the daemon, simply call
    killall twofing
  • To have twofing already working at each boot, load gnome-session-properties, by calling it in terminal or in System/Preferences/Sessions menu:
    twofing --wait
  • You can choose between three modes for right-clicking, depending on which option you add to your twofing call:
    --click=center
    right clicks will occur between both fingers (used by default)
    --click=first
    right clicks will occur at the finger which was the first one that touched the screen
    --click=second
    right clicks will occur at the finger which was the second one that touched the screen

One Finger Scrolling With FireFox

One Finger Scrolling With Chromium

Skype

  • Skype uses its own version of the video library, not the modified one. You should be able to fix this by calling skype using the following command:
    LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype

    ("/usr/lib/libv4l/v4l1compat.so" for pre-12-04 installations)
    To launch skype from the menu, make a file called skype.sh in the home directory, putting on the terminal:

    gksudo gedit skype.sh
    Write in it the following line:
    LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype
    then put in the menu, in the command line:
    sh skype.sh
    so when you click on the menu, the program starts. To get the microphone to work with Skype -
  • For newer versions of Ubuntu, use pavucontrol (default Sound Settings) for this case:
    • Press the Unlock icon so you can adjust input volumes separately.Set one channel to 100% and another one to 0%. Doesn't matter which one is.
    • Not done yet. In Skype > Options > Sound Devices, Uncheck "Allow Skype to automatically adjust my mixer levels".

  • Older versions of Ubuntu: install padevchooser to regulate mono mic and not stereo. Launch the application, click on input, click on the middle button on the upper right to unblock the channels, and put one of channels to zero and the other one to 100%. It seems that Skype doesn't find the mono internal mic otherwise and stops to work. This way the mic should work not only with ubuntu voice recorder, but also with skype.

GMail Video Chat

  • To have the video working correctly (and not upside-down) chatting with gmail, you have to start the browser with the same command on terminal (changing in the end the name of your browser:
    LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so firefox

Microphone Issue (Skype And Google Chat)

Microphone works in Ubuntu Voice Recorder, but not with the above two.

  • For newer versions of Ubuntu, use pavucontrol (default Sound Settings) for this case:
  • Set one channel to 100% and another one to 0%. Doesn't matter which one is. Press the Unlock icon so you can adjust input volumes separately.
  • Not done yet. In Skype > Options > Sound Devices, Uncheck "Allow Skype to automatically adjust my mixer levels".

For older versions of Ubuntu, download padevchooser, launch the application, click on input, click on the middle button on the upper right to unblock the channels, and put one of channels to zero and the other one to 100%. (padevchooser is ""not available"" for Natty versions onward, as it is deprecated (for some time) according to upstream. )

  • For Google Chat, open the file at "/home/<your username>/.config/google-googletalkplugin/options" (create it if it does not exist) and change the "audio-flags" line to "audio-flags=1" (or add it if it is not present). Restart the computer. Make sure padevchooser is still mono from above. Microphone should be working properly now.

GuvcView

  • To launch guvcview, you need the same command of Skype in order not to get the image upside-down:
    LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so guvcview
    In order to get it working on the menu, create a sh file as previously explained in the paragraph about Skype.

GKeyManager

  • Application by Chavi, very useful, can be personalized as you wish. But you need to know what you're doing. It's still experimental.

Installation

  1. Install libxdo1 from debian squeeze for example downloading in deb form from here:

    http://packages.debian.org/squeeze/libxdo1

  2. If not installed yet, install acpi. For example by calling "sudo apt-get install acpi" Ubuntu should have a default acpid package, works just the same.
  3. After executing the deb file, or after having compiled from source, you should have a file called /etc/acpi/grotatescreen.sh Executing this should rotate the screen with a notification. This is its default behavior. But it can also launch a menu, linked to an xml file with proper instructions. There are examples of those xmls in /usr/share/doc/gkeymanager/xml/ - But you can also find icons and xml files in the source of this application Gkeymanager can launch apps, move/resize windows, get fullscreen with a touch of a finger, and so on. How it works: gkeymanager will search for the xml's first in $HOME/.gekeymanager and then in /etc/gkeymanager/xml. In both cases the icons should be in a subfolder ./icons/
  4. To make the program start at each boot put in the boot menu "gkeymanager twoclicks" or "gkeymanager showtray" (if you just want the icon) launched in your startup program manager.
  5. To make it run every time the rotate button is pressed the press of x86screenSaver has to be binded to the command /etc/acpi/grotatescreen.sh
  6. In ubuntu with gnome you can use keyboard shorcuts under System > Preferences > Keyboard Shortcuts

  7. With compiz bind the keypress to the action in /etc/acpi/events/event_rotate
  8. In the source file there is a complete help file that explains the program behaviour and how to change the xml files.

Virtual Keyboard

  • You can use ubuntu's default onboard keyboard
  • Cellwriter is another nice app: can be used als for handwriting recognition, available on repository
  • Another good keyboard is florence, fully costumizable and useful features for touchscreens

Known Bugs

  • The latest linux kernel, used for the 10.10 Ubuntu distribution, contains already the eGalax driver. Kernel 2.6.35 was successfully tested, but there are a few bugs that don't let the touchscreen work properly. The instructions above contain workarounds for these bugs, they are listed here for completeness. Once they are fixed in Ubuntu, those workarounds can be removed.

  1. The first bug is reported here: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/625511 In the Maverick Kernel (tested with 2.6.35-19) the eGalax/DWAV touchscreen (USB ID 0eef:480d) found in the Eee PC T101MT doesn't send multitouch events although the correct module hid_egalax is included in the Kernel. The reason is that the MULTI_INPUT quirk is still used for this device although it is no longer needed, and it prevents the module from working.

  2. The second problem is that some ubuntu pathches in evdev don't let twofing multitouch application working properly. Here is the bug link:

    https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-evdev/+bug/637874

T101MT (last edited 2013-09-04 18:09:46 by findheath)