With 4 days to go until Ibex release, this post may be a little more than a reminder for myself if i need to reinstall. But for those who prefer stability over the latest, here's how i got my Thinkpad to run like the wind on Kubuntu (running kernel 2.6.24-21-generic):
WHAT WORKED OUT OF THE BOX
- SD card reader
- VGA, Ethernet, and USB ports
- Trackpoint
- Internal microphone, headphone and speaker jacks
- Sleep, Hibernate
- Fn+F3 (power), Fn+F4 (sleep), Fn+F12 (hibernate),
- Fn+Home (brightness up), Fn+End (brightness down),
- Fn+ PgUp (keyboard light), Fn+ScrLK (num lock),
- Fn+F5 (turns bluetooth off only),
- Fn+arrow keys (works in Amarok)
- Wireless, Bluetooth
- Docking with Ultrabase X6
- Ultrabase VGA, Ethernet, and USB ports
- Ultrabase headphone and microphone jacks
- Booting (and installing) through slim-bay DVD drive
WHAT I CAN'T GET WORKING- Undocking when booted while docked to the Ultrabase
NOT TESTED- Firewire ports
- PCMCIA slot
- Dial-up modem jacks
- Other video out slots on the ultrabase
BEFORE WE START, here's the sources.list i relied on:# deb cdrom:[Kubuntu 8.04.1 _Hardy Heron_ - Release i386 (20080702.1)]/ hardy main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
## UBUNTU
deb http://ca.archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://ca.archive.ubuntu.com/ubuntu/ hardy main restricted
deb http://ca.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://ca.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb http://ca.archive.ubuntu.com/ubuntu/ hardy universe
deb-src http://ca.archive.ubuntu.com/ubuntu/ hardy universe
deb http://ca.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb-src http://ca.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb http://ca.archive.ubuntu.com/ubuntu/ hardy multiverse
deb-src http://ca.archive.ubuntu.com/ubuntu/ hardy multiverse
deb http://ca.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb-src http://ca.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb http://archive.canonical.com/ubuntu hardy partner
deb-src http://archive.canonical.com/ubuntu hardy partner
deb http://security.ubuntu.com/ubuntu hardy-security main restricted
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted
deb http://security.ubuntu.com/ubuntu hardy-security universe
deb-src http://security.ubuntu.com/ubuntu hardy-security universe
deb http://security.ubuntu.com/ubuntu hardy-security multiverse
deb-src http://security.ubuntu.com/ubuntu hardy-security multiverse
## BACKPORTS
deb http://ca.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://ca.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
## MEDIUBUNTU
## wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add -
## wget -q http://playonlinux.botux.net/pol.gpg -O- | sudo apt-key add -
deb http://packages.medibuntu.org/ hardy free non-free
deb http://packages.medibuntu.org/ feisty free non-free
deb http://playonlinux.botux.net/ hardy main
ThinkVantage KEY & Fn+Space- add the following lines to
/etc/init.d/rc.localsetkeycodes e017 148 # for ThinkVantage
setkeycodes 0082 192 # for Fn+Space
- use any hotkey manager to tag on a function
MENU KEY- edit
/etc/X11/xkb/symbols/"keyboard layout"- add in
xkb_symbols "basic" after
name[Group1]= "keyboard layout":
MIDDLE BUTTON SCROLL- comment out or replace the
"Configure Mouse" and
"Synaptics Touchpad" InputDevice sections in
/etc/X11/xorg.conf with the following:
Section "InputDevice"
Driver "mouse"
Identifier "mouse[1]"
Option "Buttons" "5"
Option "Device" "/dev/input/mice"
Option "EmulateWheel" "on"
Option "EmulateWheelButton" "2"
Option "InputFashion" "Mouse"
Option "Name" "IBM;TPPS/2 TrackPoint"
Option "Protocol" "explorerps/2"
Option "Vendor" "Sysp"
Option "EmulateWheel" "on"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
Option "ZAxisMapping" "4 5"
Option "CorePointer"
EndSection
- remember to replace
InputDevice "Synaptics Touchpad" with
InputDevice "mouse[1]" under
Section "ServerLayout" !
WIRELESS INDICATOR LED- a problem with intel's iwl4965 driver, addressed in linux backport modules
$ sudo apt-get install linux-backports-modules-hardy
- only problem is that the LED is restricted to flashing a boring 2Hz when upload/downloading
-Ubuntu ArchivesFINGERPRINT READER- first install the necessary drivers and tools from thinkfinger (.30) and enable it in pam configurations
$ sudo apt-get install thinkfinger-tools libpam-thinkfinger libthinkfinger0
$ sudo /usr/lib/pam-thinkfinger/pam-thinkfinger-enable
- restart the computer
- register and verify the fingerprints$ sudo tf-tool --acquire
$ sudo tf-tool --verify
- lastly, edit /etc/pam.d/common-auth and add the following line above everything else to enable fingerprint authentication for logins and su$ auth sufficient pam_thinkfinger.so
- pam_thinkfinger actually does not work under kdm/kde due to an issue with kdesktop_lock. It is possible to
work around it but the simplest way is to go with
fprint or switch to gdm.
-edubuntu wiki
EXTERNAL MONITOR & Fn+F7 VIDEO OUTPUT TOGGLE - this is tricky business, but after piecing multiple fixes together, my set up works great if i leave X to find the external monitor and only tweak with it after startup. It'll be easy also to modify it further and statically set the video output modes to fit your monitors. This is what made it for me, to be able to switch between screen layouts effortlessly.... sweet!
- first, add a subsection in xorg.conf under Section "Screen" so it looks like the following:
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
SubSection "Display"
Depth 24
Virtual 2048 1050
EndSubSection
EndSection
- the Virtual screen resolution forms the screen space to manipulate the monitor space on, and should not be greater than 2048 x 2048 to keep 3D acceleration running in x61's dingy internal graphics card.
- use
xrandr to tweak the monitors:
$ xrandr -q ## view connected displays' information
$ xrandr --output VGA --auto --right-of LVDS ## place VGA output on the right side of laptop LCD
$ xrandr --output VGA --off ## turn VGA output off
$ xrandr --man ## for the complete list of functions
- now to toggle between output using Fn+F7, first create
/usr/local/sbin/toggle-display.sh- (dumbed down to fit my screens):
#!/bin/bash
# Modified from: http://www.thinkwiki.org/wiki/Sample_Fn-F7_script
# /etc/acpi/events/ibm-videobtn
#
# External output may be "VGA" or "VGA-0" or "DVI-0" or "TMDS-1"
EXTERNAL_OUTPUT="VGA"
INTERNAL_OUTPUT="LVDS"
function screen_external(){
xrandr --output $INTERNAL_OUTPUT --off
xrandr --output $EXTERNAL_OUTPUT --auto
}
function screen_internal(){
xrandr --output $EXTERNAL_OUTPUT --off
xrandr --output $INTERNAL_OUTPUT --mode 1024x768 --pos 0x0 #re-centers
}
function screen_both(){
xrandr --output $INTERNAL_OUTPUT --mode 1024x768 --pos 0x0
xrandr --output $EXTERNAL_OUTPUT --mode 1680x1050 --pos 368x0 #to fit 2048x2048
}
function screen_toggle(){
# Figure out current state
INTERNAL_STATE=$(xrandr | grep ^$INTERNAL_OUTPUT | grep con | sed "s/.*connected //" | sed "s/(.*//")
EXTERNAL_STATE=$(xrandr | grep ^$EXTERNAL_OUTPUT | grep con | sed "s/.*connected //" | sed "s/(.*//")
if [ -z "$INTERNAL_STATE" ]; then
STATE="external"
elif [ -z "$EXTERNAL_STATE" ]; then
STATE="internal"
else
INTERNAL_STATE=$(echo $INTERNAL_STATE | sed "s/[0-9]*x[0-9]*//")
EXTERNAL_STATE=$(echo $EXTERNAL_STATE | sed "s/[0-9]*x[0-9]*//")
if [ "$INTERNAL_STATE" = "$EXTERNAL_STATE" ]; then
STATE="mirror"
else
STATE="both"
fi
fi
case "$STATE" in
internal)
screen_external
;;
external)
screen_both
;;
both)
screen_internal
;;
*)
screen_internal
;;
esac
}
# based on /etc/acpi/screenblank.sh (Ubuntu 7.10)
# . /usr/share/acpi-support/power-funcs # for getXuser
getXuser() {
user=`finger| grep -m1 ":$displaynum " | awk '{print $1}'`
if [ x"$user" = x"" ]; then
user=`finger| grep -m1 ":$displaynum" | awk '{print $1}'`
fi
if [ x"$user" != x"" ]; then
userhome=`getent passwd $user | cut -d: -f6`
export XAUTHORITY=$userhome/.Xauthority
else
export XAUTHORITY=""
fi
}
# end of getXuser from /usr/share/acpi-support/power-funcs
#
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXuser;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
screen_toggle
fi
done
- to make it executable:
$ sudo chmod 755 /usr/local/sbin/toggle-display.sh
- edit and point
/etc/acpi/events/ibm-videobtn to the script
# /etc/acpi/events/ibm-videobtn
# This is called when the user presses the video button. It is currently
# a placeholder.
event=ibm/hotkey HKEY 00000080 00001007
action=/usr/local/sbin/toggle-display.sh
- restart acpi
$ sudo /etc/init.d/acpid restart