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!
Bookmarks