Results 1 to 10 of 23

Thread: Asus T91MT Howto

Threaded View

  1. #1
    Join Date
    Oct 2009
    Beans
    6

    Asus T91MT Howto

    Warning: this system is NOT fully supported yet. I still encounter crashes when using the touch screen and the 3D performance is unacceptable. Suspend is not working either.

    You don't have to read the next paragraphs. If you like it quick and easy, just follow the code below.

    I finally have my T91MT working with stable wireless, full 3D acceleration AND touch screen! I spend the last days (thank you Intel and Asus) trying to first get Arch Linux (which apparently didn't work out) and now Ubuntu to work. I have been digging in various forums and blogs and was smart enough to write down all the steps necessary to achieve the aforementioned results.
    I first installed to an external hard disk because I didn't want to touch the internal SSD as long as I was unsure about the successful outcome. When I got things running, I performed a fresh install to the SSD and tested / cleared up the notes I took.

    My sources (amongst others):
    http://setupguides.blogspot.com/2009_11_01_archive.html
    https://wiki.ubuntu.com/HardwareSupp...eoCardsPoulsbo
    http://ubuntuforums.org/showthread.php?t=1229345
    http://ubuntuforums.org/showpost.php?p=8566880

    I summed up everything in a file where I tried to cover all the necessary steps (not EVERY single click and keystroke, but I hope enough for people who are not so familiar with the system). This is not supposed to be a save-and-execute script (this wouldn't work anyways as there are some reboots) but rather a summary of things that should be done manually.

    I used Ubuntu Netbook Remix and usb-creator
    Code:
    sudo aptitude install usb-creator && usb-creator
    with a 1GB stick. To boot from usb, either hold down escape or F2 during boot and select the medium.

    As I still want to keep Windows 7, I chose to manually partition the SSD and shrunk the NTFS partition to 20GB. It's easier to access a NTFS partition from linux than a linux partition from windows for additional storage space. It is not recommended to use a journaling file system on a SSD as that causes additional writing access. I hence created a new primary partition formated with ext2 and set the partition's mount point to /. I did not provide any swap space, again for the same reason.

    I left my notes from the installation at the beginning for the impatient ones who couldn't be bothered to read my above blah blah.

    Sorry for the long lines, copy the text to an editor and toggle line wrapping...

    Code:
    # ubuntu unr
    # usb-creator -> 1GB stick
    # hold down esc during boot -> select usb stick to boot from
    # start install
    # manual partitioning
    # resize win7 partition to desired size (can be used from linux, better than the other way around)
    # create one new primary partition using all available free space
    # format with ext2
    # mount point /
    # OMG NO SWAP!!!1 -> stfu, continue
    # advanced -> install boot loader to /dev/sda (leave unchanged)
    # reboot
    
    # edit fstab to mount the parition noatime (less writes to the disk, yes I know this is hardly an issue nowadays, but why do any unnecessary writes?)
    sudoedit /etc/fstab
    # the last line should look something like this:
    #UUID=b5325025-9da1-4d03-ba1c-6c6352672253 /               ext2    errors=remount-ro 0       1
    # change it to (without the leading #)
    #UUID=b5325025-9da1-4d03-ba1c-6c6352672253 /               ext2    errors=remount-ro,noatime 0       1
    
    # set up network (best use wired connection first because wireless sucks with out of box drivers)
    
    # update the newly installed system
    sudo aptitude update
    sudo aptitude upgrade
    
    # get proper working wireless
    sudo aptitude install linux-backports-modules-karmic
    reboot
    
    # add the following ppa (contains more up to date alsa versions): https://launchpad.net/~ricotz/+archive/ppa
    sudo add-apt-repository ppa:ricotz/ppa
    sudo aptitude update
    sudo aptitude upgrade
    # you can reboot now but don't have to
    
    # install some prerequirements (build tools)
    sudo aptitude install build-essential dkms fakeroot
    
    # poulsbo driver (that f*cking biatch!)
    # yes i know it's ugly to manually download debs and install them via dpkg, but i haven't found a repository that provides a working driver for karmic so far
    wget http://dl.dropbox.com/u/1338581/Gma500/deb/libdrm-poulsbo1_2.3.0-0ubuntu3netbook7_i386.deb http://dl.dropbox.com/u/1338581/Gma500/deb/libva1_0.31.0-1+sds9_i386.deb http://dl.dropbox.com/u/1338581/Gma500/deb/poulsbo-config_0.1_all.deb http://dl.dropbox.com/u/1338581/Gma500/deb/poulsbo-driver-2d_1.1-0ubuntu1~904um1_all.deb http://dl.dropbox.com/u/1338581/Gma500/deb/poulsbo-driver-3d_1.1-0ubuntu1~904um1_all.deb http://dl.dropbox.com/u/1338581/Gma500/deb/psb-firmware_0.30-0ubuntu1netbook1_i386.deb http://dl.dropbox.com/u/1338581/Gma500/deb/misc/psb-kernel-source_4.41.6-0ubuntu1~1004jbs1_all.deb http://dl.dropbox.com/u/1338581/Gma500/deb/psb-modules_4.41.2-0ubuntu1~910um1_i386.deb http://dl.dropbox.com/u/1338581/Gma500/deb/xpsb-glx_0.18-0ubuntu1netbook1_i386.deb http://dl.dropbox.com/u/1338581/Gma500/deb/xserver-xorg-video-psb_0.31.0-0ubuntu1~904um1_i386.deb
    
    # install the downloaded debs (yeh, security overkill!)
    sudo dpkg -i libdrm-poulsbo1_2.3.0-0ubuntu3netbook7_i386.deb
    sudo dpkg -i libva1_0.31.0-1+sds9_i386.deb
    sudo dpkg -i poulsbo-config_0.1_all.deb
    sudo dpkg -i psb-firmware_0.30-0ubuntu1netbook1_i386.deb
    sudo dpkg -i psb-kernel-source_4.41.6-0ubuntu1~1004jbs1_all.deb
    sudo dpkg -i psb-modules_4.41.2-0ubuntu1~910um1_i386.deb
    sudo dpkg -i xpsb-glx_0.18-0ubuntu1netbook1_i386.deb
    sudo dpkg -i xserver-xorg-video-psb_0.31.0-0ubuntu1~904um1_i386.deb
    sudo dpkg -i poulsbo-driver-2d_1.1-0ubuntu1~904um1_all.deb
    sudo dpkg -i poulsbo-driver-3d_1.1-0ubuntu1~904um1_all.deb
    
    sudo echo -e "# disable loading of i915 module as it conflicts with poulsbo driver\nblacklist i915" >> /etc/modprobe.d/blacklist.conf
    
    # append device section to xorg.conf. if you already use a xorg.conf (not the case with a fresh ubuntu install), check manually for conflicts with existing sections
    sudo echo 'Section "Device"
    	Identifier     "GMA500"
    	Driver         "psb"
    	Option         "IgnoreACPI" "true"
    	Option         "MigrationHeuristic" "greedy"
    	Option         "AccelMethod" "EXA"
    	#Option         "DownScale" "false"
    	#Option         "ExaNoComposite" "false"
    	#Option         "ExaMem" "131072"
    	#Option         "ExaScratch" "4"
    	#Option         "ExaCached" "false"
    	#Option         "LidTimer" "false"
    	#Option         "NoAccel" "false"
    	#Option         "NoFitting" "false"
    	#Option         "NoPanel" "false"
    	#Option         "ShadowFB" "false"
    	#Option         "SWcursor" "false"
    	#Option         "Vsync" "false"
    EndSection
    
    Section "DRI"
    	Mode    0666
    EndSection
    ' >> /etc/X11/xorg.conf
    
    # restart X to see wether the changes were succesful: switch to terminal 1 (Ctrl+Alt+F1), login and issue
    sudo /etc/init.d/gdm restart && exit
    
    # log back in and fire up a terminal
    glxinfo | grep -i direct
    # should give you "direct rendering: Yes"
    
    # update initial ramdisk
    sudo update-initramfs -u
    
    # and reboot to use the new ramdisk
    
    
    # touch screen
    
    # a quick initial test:
    echo '#include <sys/types.h>
    #include <fcntl.h>
    #include <linux/input.h>
    #include <stdio.h>
    #include <errno.h>
    
    main(int argc, char **argv)
    {
        struct input_event ev;
        int fd=open(argv[1],O_RDONLY);
    
        for (;;) {
            int r=read(fd,&ev,sizeof(struct input_event));
    
            if (r==-1 && errno==EINTR) continue;
            if (r==-1) break;
            printf("Event: time %ld.%06ld, type %d, code %d, value %d\n",
                    ev.time.tv_sec, ev.time.tv_usec, ev.type, ev.code, ev.value);
        }
        perror("read");
        close(fd);
    }' > detect_touchscreen.c
    gcc detect_touchscreen.c -o detect_touchscreen
    sudo ./detect_touchscreen /dev/input/by-id/usb-AsusTek__Inc._MultiTouch-event-if00
    
    # should output something like this when the screen is touched. just fyi: type 3, code 4 events are the x-, code 5 events are the y-coordinates. this is needed later on for calibration.
    #Event: time 1269440981.748817, type 0, code 0, value 0
    #Event: time 1269440981.756791, type 3, code 5, value 1850
    #Event: time 1269440981.756809, type 0, code 0, value 0
    #Event: time 1269440981.764793, type 3, code 4, value 110
    #Event: time 1269440981.764811, type 3, code 5, value 1848
    #Event: time 1269440981.764817, type 0, code 0, value 0
    
    # /dev/input/by-id/usb-AsusTek__Inc._MultiTouch-event-if00 should point to the correct input device
    ls -l /dev/input/by-id/usb-AsusTek__Inc._MultiTouch-event-if00
    # on my T91MT: lrwxrwxrwx 1 root root 9 2010-03-24 10:54 /dev/input/by-id/usb-AsusTek__Inc._MultiTouch-event-if00 -> ../event5
    # so /dev/input/event5 would be the touch screen
    
    # the actual driver:
    # download http://ohioloco.ubuntuforums.org/attachment.php?attachmentid=141954&d=1262310376
    
    # extract archive
    tar -xvzf xf86-input-evtouch-0.8.8-T91MT.tar.gz
    
    # copy hal and udev configuration files
    sudo cp 50-asustek.fdi /usr/share/hal/fdi/policy/20thirdparty/
    sudo cp 69-touchscreen.rules /etc/udev/rules.d/
    
    # append new device section to xorg.conf (this is only needed to be able to calibrate the touch screen, for me it worked without any changes to xorg.conf
    sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf_backup
    sudo echo '
    Section "InputDevice"
    	Identifier "touchscreen"
    	Driver "evtouch"
    	Option "Device" "/dev/input/event5"
    	Option "DeviceName" "touchscreen"
    	Option "MinX" "0"
    	Option "MinY" "0"
    	Option "MaxX" "3475"
    	Option "MaxY" "3475"
    	Option "ReportingMode" "Raw"
    	Option "Emulate3Buttons"
    	Option "Emulate3Timeout" "50"
    	Option "SendCoreEvents" "On"
    	Option "Calibrate" "0"
    EndSection
    
    Section "InputDevice"
    	Identifier "dummy"
    	Driver "void"
    	Option "Device" "/dev/input/mice"
    EndSection
    
    Section "Screen"
    	Identifier    "Screen"
    	Device        "GMA500"
    	DefaultDepth    24
    EndSection
    
    Section "ServerLayout"
    	Identifier    "Default Layout"
    	Screen        "Screen"
    	InputDevice "touchscreen" "SendCoreEvents"
    	InputDevice "dummy"
    EndSection
    ' >> /etc/X11/xorg.conf
    
    # or use the xorg.conf provided in the archive
    #sudo cp xf86-input-evtouch-0.8.8-T91MT/xorg.conf /etc/X11/
    
    # now for the module
    cd xf86-input-evtouch-0.8.8-T91MT/
    
    # install the development version of xorg
    sudo aptitude install xserver-xorg-dev
    
    ./configure
    make
    sudo make install # ugly, but i couldn't be bothered to build a deb - and apparently no one else could so far...
    
    # you might have to manually copy the driver to the right location (i think it got overwritten by apt in my case)
    sudo cp /usr/lib/xorg/modules/input/evtouch_drv.so /usr/lib/xorg/modules/input/evtouch_drv.so_backup
    sudo cp .libs/evtouch_drv.so /usr/lib/xorg/modules/input/evtouch_drv.so
    
    # restart X to see wether the changes were succesful: switch to terminal 1 (Ctrl+Alt+F1), login and issue
    sudo /etc/init.d/gdm restart && exit
    
    # the touch screen should be usable as soon as you see the login screen of gdm.
    # on my T91MT I had to change the MinX/Y and MaxX/Y values in my xorg.conf to properly calibrate the touch screen.
    # the cursor was dragging behind when i moved the stylus near the edges of the screen.
    # for me MinX = MinY = 10 and MaxX = MaxY = 3465 provided an accurate touch screen.
    # the theoretical resolution is 3475x3475.
    
    # you can use the detect_touchscreen application from above:
    # kill X (again from terminal 1, Ctrl+Alt+F1)
    sudo /etc/init.d/gdm stop
    # go wherever you compiled the app and start it as before, except we now filter out only the x- and y-coordinates
    sudo ./detect_touchscreen /dev/input/by-id/usb-AsusTek__Inc._MultiTouch-event-if00 | grep -E "code 4|code 5"
    # you can now move the stylus along all edges and note the minimum and maximum values for both coordinates
    # when you're done, kill the app with Ctrl+C and put the values into your xorg.conf (do NOT set the Calibrate option to 1)
    # bring back X and test check the results
    sudo /etc/init.d/gdm start && exit
    
    # things that do not work so far:
    # - multi touch gestures
    # - long click
    
    # if you want to use compiz, you need to apply further changes that can be found in the poulsbo.sh script from the ubuntu forums. i don't use compiz and hence haven't tested these things.
    # Compiz whitelist
    #sudo sed -i 's/i810 fglrx/i810 fglrx psb/g' /usr/bin/compiz
    
    # also from the poulsbo.sh script but not tested as my mplayer runs perfectly so far without any changes
    # install mplayer-vaapi stuff
    #wget http://dl.dropbox.com/u/1338581/Gma500/deb/mplayer-vaapi_20100114-1_i386.deb -O /tmp/mplayer-vaapi_20100114-1_i386.deb
    #sudo dpkg -i /tmp/mplayer-vaapi_20100114-1_i386.deb
    #sudo apt-get install -q=0 -y --force-yes mplayer-skins
    #sudo ln -s /usr/X11R6/lib/modules/dri/psb_drv_video.so /usr/lib/va/drivers
    I hope I didn't forget anything and have covered the most important issues. If there are questions, feel free to ask!

    I might add to this howto later on because I haven't really gotten to use the netbook yet. There are also many things left to do because I don't intend to use the bloated Gnome GUI but rather something slim like fluxbox. Furthermore, I hope I can speed up the boot process because right now it lasts way too long. And there are of course plenty apps that need to be tested with the touch screen (which was the actual reason for buying that thing). So far I can recommend xournal: easy to use, quick and accurate - not like it's windows port or the other bullsh*t pdf annotators I came across on windows (yes, even the expensive commercial ones).

    And if there is someone with even more time than me: feel free to add this to the wiki...
    Last edited by spl; May 4th, 2010 at 09:00 PM. Reason: added sources, added ppa repo, fixed some missing sudos

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •