Installing Ubuntu 8.04 (Hardy Heron) on a ThinkPad T61

From ThinkWiki
Revision as of 13:56, 3 October 2008 by Olafge (Talk | contribs) (Fix bluish WSXGA+ displays)
Jump to: navigation, search

Items that work out of the box

Intel Video: 2D and 3D acceleration works

Nvidia Video: 2D and 3D acceleration works

Wireless: Intel cards tested. Atheros cards also works.

Wireless WAN: Cingular/AT&T card tested.

Network Card Intel 10/100/1000 tested

Wireless switch Tested (Only has an effect over the bluetooth, wifi is unaffected)

Webcam Tested with cheese and skype.

Headphones Works out of the box

Microphone Just needs to be activated, see section below

Keyboard Shortcuts: Most of them work out of the box, some need to be activated, see section below

Items that need (some) tweaking to obtain full functionality

Open Source Intel Wifi Driver

The following information is important if you are upgrading from a previous version of Ubuntu to 8.04.

Intel has created a new Linux Wifi driver project for Intel Wireless cards, "Iwlwifi". This driver is Open Source and no longer requires the Intel daemon to run in addition. This project will support the T61's Wifi Intel 3945ABG network adapter and Intel 4965AGN network adapter.

An automatic migration will occur when upgrading from Ubuntu 7.10 to Ubuntu 8.04. However, there is a caveat to be aware of:

  • The new driver wants to name the interface wlan0 (by default -- you can rename it to anything you want), and requires a different entry in /etc/udev/rules.d/70-persistent-net.rules, which handles the naming of interfaces. Simply edit this file and delete your old entry for the ipw3945 driver, then unload/reload the new driver, or simply reboot. A new entry will automatically be created that is appropriate for the new driver. Here's an example of the lines to delete:
# PCI device 0x8086:0x4227 (ipw3945)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:1b:77:a4:0e:2f", NAME="eth1"


If you need to perform a manual migration, the Ubuntu Help Community has written some documentation that will make this very easy to do.

Compiz and XV Playback on Intel GM965/GL960

With Ubuntu 7.10 (Gutsy Gibbon) you currently have to choose between using Compiz and working video playback using XV. On 8.04 (Hardy Heron) alpha 5 you can play videos using XV under compiz, it works right out of the box using the Live-CD.

Suspend with Nv140m

    • Update as of July 17th 2008 -- Using 8.04.1 with the newest nvidea drivers, I had no problems suspending without any additional configuration. **

Suspend may not work even after editing acpi-support. Enable bluetooth (Fn+F5) may result in a successful suspend. NOTE: that although the wifi led does not change when Fn+F5 is used, the wifi is still toggled by this key.

Hal "S3 BIOS" parameter issue!

After doing the changes to the /etc/default/acpi-support file (described here), I for one, managed to have stable suspend support by creating a new file called: /etc/hal/fdi/information/lenovo.fdi with the following contents:

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
  <device>
    <match key="system.hardware.vendor" string="LENOVO">
        <merge key="power_management.quirk.s3_bios" type="bool">false</merge>
    </match>
  </device>
</deviceinfo>
NOTE!
The problem (after reading the HAL and pm-utils documentations) is the fact that (as far as I can tell) the T61 Lenovo doesn't allow the S3 BIOS to be called *during* suspend/resume, which HAL seems to do by default (who knows, maybe there are T61s out there that do work with this default)! This did not seem to be necessary for previous versions of Ubuntu. Also note that I have an NVIDIA card so I have no idea what to do for Intel versions.The change should also be resistant to HAL and pm-utils upgrades.


Still no suspend with nvs140m? Got Modell 6460 or 6458?

Fix above didn't work for me on a 15.4 wide T61 Modell 6460 with nv140m. Bios is updated to 2.14 but didn't change anything, except the usb bug is fix. Suspend seems to work fine, but resume gives me a black screen (backlight off - no reaction to brightness up) and I can hear 2 beeps. Most of the time I can reboot with ctrl+alt+delete but the screen stays dark until bios.

follow the instructions above but create the new file called: /etc/hal/fdi/information/lenovo.fdi with the following contents instead:

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
  <device>
    <match key="system.hardware.vendor" string="LENOVO">
      <merge key="power_management.quirk.s3_mode" type="bool">true</merge>
      <merge key="power_management.quirk.s3_bios" type="bool">false</merge>
      <merge key="power_management.quirk.save_pci" type="bool">true</merge>
    </match>
  </device>
</deviceinfo>

Also you want to set the following parameter in

/etc/default/acpi-support

SAVE_VIDEO_PCI_STATE=true
NOTE!
This works for me with mode 6460, except for one problem: You may get a white screen in xorg after resume when using compiz. If you don't have a 6460 with nvidia this file may break things for you because it doesn't care about the modell and sets the parameter for any lenovo product
NOTE!
This also works for me with mode 6458, but the first wakeup from suspend takes about 20seconds, the following wakeups only some seconds. Please note that i had to change back the settings described here but still SAVE_VIDEO_PCI_STATE set to true
Help needed
Anyone with more knowledge of hal and acpi-support is welcome to clean this up. I also don't know why this setting can be done via hal and in acpi-support. See below!


Works for a 6457CTO:

After trying out all these recipes on my 6457CTO waking up from suspend still did not work. Finally I came across a blog entry which pointed out the right way: [David Goodlad's blog]. I realized that all the fixes proposing editing the acpi-support file or adding a kernel parameter acpi_sleep=s3_mode must be wrong because since hardy gnome-power-manager gets its information solely from hal. So setting up correct hal information is the right way but the proposed solution (creating a /etc/hal/fdi/information/lenovo.fdi file) did not work for me. Ok, but now step by step:

  1. Revert ALL the proposed fixes from above. I found out that at least the lenovo.fdi solution is actually breaking the real fix. So for sure delete /etc/hal/fdi/information/lenovo.fdi
  2. Find out about the excact hal name of your machine:
    hal-device |grep 6457
    where 6457 is the model number of my t61, replace it with your own. In my case it spits out something like this: system.hardware.product = '6457CTO'. So now I know that hal identifies my machine as 6457CTO.
  3. sudo gedit /usr/share/hal/fdi/information/10freedesktop/20-video-quirk-pm-lenovo.fdi
    and add a section to the end of the file, just above the </device> tag and replace 6457CTO with your hal device name:
      <!-- T61 6457CTO uses NVidia driver -->
      <match key="system.hardware.product" string="6457CTO">
        <!-- Proprietray NVidia driver quirks -->
        <merge key="power_management.quirk.s3_mode" type="bool">true</merge>
        <merge key="power_management.quirk.s3_bios" type="bool">false</merge>
        <merge key="power_management.quirk.save_pci" type="bool">true</merge>
      </match>

Now save and reboot. Now you might run into the problem of coming back from resume into a completely white screen where normally should be the password dialog. Entering your password blindly is not nice but at least you can resume.

NOTE!
Somehow I couldn't make the wildcard matching work as they did in the lenovo.fdi solution, but that might be due to my shortcomings on that syntax. Anyway matching the device by its full name worked for me. Probably somebody who knows more about the matching could make that wildcard thing work to have a more general solution. Because hal also knows the xorg driver name (info.linux.driver) there should be a way to set up the quirks depending on the driver.
NOTE!
I have model 6459CTO and run the "nv", not the "nvidia", driver. The nv driver requires the s3_bios and vbemode_restore quirks. I commented out the existing merge directives in /etc/hal/fdi/information/lenovo.fdi and added:
<!-- My settings: good for the nv driver -->
<merge key="power_management.quirk.s3_bios" type="bool">true</merge>
<merge key="power_management.quirk.save_pci" type="bool">true</merge>
<merge key="power_management.quirk.vbemode_restore" type="bool">true</merge>
<merge key="power_management.quirk.s3_mode" type="bool">false</merge>

Note, /etc/hal/fdi/ is where administrators should put customizations, not /usr/share/hal/fdi/information. More details are here.

TrackPoint

The TrackPoint works out of the box, but does not scroll nor does the tap-clicking (press to select) feature work. Therefor see: #tap-to-click feature To enable using the middle mouse button to scroll, replace the "Configured Mouse" section in /etc/X11/xorg.conf with the following:

Section "InputDevice"
	Identifier	"Trackpoint"
	Driver		"mouse"
	Option		"CorePointer"
	Option		"Device"		"/dev/input/mice"
	Option		"Protocol"		"ImPS/2"
	Option		"ZAxisMapping"		"4 5"
	Option		"Emulate3Buttons"	"true"
	Option		"EmulateWheel"          "true"
	Option		"EmulateWheelButton"    "2"
EndSection
NOTE!
However, if you need to use external usb mouse, the above configuration is wrong. It will cause odd behavior. Try the following configuration from Gentoo Wiki:
Section "InputDevice"
       Identifier  "UltraNav TrackPoint"
       Driver      "mouse"
       Option      "Device"	         "/dev/input/mouse1"
       Option      "Protocol"            "ExplorerPS/2"
       Option      "Emulate3Buttons"     "on"
       Option      "Emulate3TimeOut"     "50"
       Option      "EmulateWheel"        "on"
       Option      "EmulateWheelTimeOut" "200"
       Option      "EmulateWheelButton"  "2"
       Option      "YAxisMapping"        "4 5"
       Option      "XAxisMapping"        "6 7"
       Option      "ZAxisMapping"        "4 5"
EndSection

Audio

Works great out of the box, just the microphone has to be activated, it is considered a generic capture source and is muted by default.

To unmute the microphone:

  • Right Click on the volume icon next to the clock and click on "Open Volume Control"
  • Click Edit -> Preferences. A list of devices will be displayed, you should check the following (Do not uncheck any existing items):
     Input Source
     Capture
  • Click Close and there should be two additional tabs "Recording" and "Options". -
  • Click Recording and click on the microphone under the Capture slider so that it no longer has a red line through it, and put the slider up as it may be deactivated.
  • Click Options and under capture source select internal mic.

To test your mic using Sound Recorder select Capture as the sound source.

This solution has been tested with Sound Recorder and Skype.


To get the volume controls working:

  • add the following line to /etc/modprobe.d/alsa-base, then reboot
     options snd-hda-intel index=0 model=thinkpad
NOTE!
The volume controls worked fine for me out of the box on a 6460.

Multimedia Keys

Most Multimedia Keys work out of the box, though play, forward and stop buttons often need to be adjusted, therefore, press alt + F2 and type in gnome-keybinding-properties. Then everything works as followed:

  • Fn-PgUp activates/deactivates the thinklight
  • Fn-Up will trigger stop on a media player
  • Fn-Down will toggle pause and play on a media player
  • Fn-Left/Right go to prev/next tracks on a media player
  • Fn-F2 properly locks the screen
  • Fn-F3 shows remaining battery >>does not work on all machines<<
  • Fn-F4 suspends (to ram)
  • Fn-F9 ejects cds >>does not work on all machines, I think this is supposed to eject from a "dock"<< >>fixable with System > Preferences > Keyboard Shortcuts
  • Fn-F12 hibernates (to disk)
  • PrtSc opens the screenshot dialog


To enable the back, forward, and the menu keys you'll need to teach XKB what they are.

  • Check the XkbLayout option (under InputDevice) in your /etc/X11/xorg.conf file to determine which keyboard layout Ubuntu is using (I'll use 'us' for the example).
  • Navigate to /etc/X11/xkb/symbols and, as root, open the appropriate layout file (as determined above) in your favorite editor.
$ cd /etc/X11/xkb/symbols
$ sudo gedit us
  • In the xkb_symbols "basic" section after the name[Group1]= "x"; (where x is a country name, or similar) line add the following:
key <I63> {         [ Menu           ]       };
key <I69> {         [ XF86Forward    ]       };
key <I6A> {         [ XF86Back       ]       };
  • Now log out and back in and all three of the buttons should function.

Thinkpad Button

Paste the following into /usr/share/hotkey-setup/ibm.hk

setkeycodes e017 148 # thinkpad button

You can also just type this into a terminal, to test it for the time of the current session.

Paste the following into the right file in /usr/share/xmodmap (check your country code)

keycode 159 = XF86Terminal

For immediate availability of the button, reload the file by executing

xmodmap <xmodmap.file>

Then use the "Keyboard Shortcuts" tool under "Preferences".

NOTE!
You can also follow these instructions: http://www.krizka.net/2008/06/14/the-thinkvantage-button-and-ubuntu-hardy-heron/. They are wrote specifically for a X61, but it works perfectly with the T61 too.

Items that don't work (a.k.a.: items that need more intense tweaking to get fixed)

tap-to-click feature

For the tap-to-click feature (taping the stick instead of using the left mouse button) i used a configure trackpoint utility: [1] there is a package for ubuntu 7.04 i386, but i compiled it by myself (using amd64):

1.) download the .tar.gz file

2.) unpack it

3.) install libgnomeui-dev

$ sudo aptitude install libgnomeui-dev

4.) in the folder, do:

$ ./configure

if everything worked fine:

$ make

then install it:

$ sudo make install

5.a) Gnome : Open it: System > configure trackpoint, and configure on your needs


5.b) Kde : K-menu > Prefences > configure trackpoint > right-click > edit entry, edit "command" to "kdesu configure-trackpoint"

Save & exit

Open it : K-menu > Prefences > configure trackpoint and configure on your needs

Hotswapping

Help needed
We need someone who is able to get hotswaping to work properly, this is not the right was to do this!

With the new kernel, bay-drivers changed, so if you remove the ultrabay it will freeze your system! You can hack it with a simple comand, first you have to look where the device is:

$ less /sys/class/scsi_device/(x)\:0\:0\:0/device/model

for (x) first put in 0, if it tells you DVD or the name of the model you want to hotswap youre right. if not, go on with 1, 2 or 3...

then, once you are sure (I deactivated my harddisk like that) you put in:

$ echo 1 | sudo tee /sys/class/scsi_device/(x)\:0\:0\:0/device/delete

Now you should be able to remove the device.

ATTENTION!
Do not use it for harddisks, be sure you unmounted it before! This is just a bad hack, if anyone knows how to get it right --> publish!

If Ubuntu does not reactivate the device after putting it in again, do:

$ echo 0 0 0 | sudo tee /sys/class/scsi_host/host1/scan

Wireless activity LED

The LED is not implemented at least in the IWL4965 driver. For the Atheros wifi cards look at the solution below.

For those who don't want to work around this problem and are willing to wait, I have confirmed that the LED works in Ubuntu 8.10 (Intrepid Ibex) Alpha 4 for a T61 with IWL4965, including flashing on activity. If you can put up with a nonfunctional LED for a while in 8.04, the final Ubuntu 8.10 is due to be released in October 2008.

A patch posted in this thread works for me on R61 with IWL4965 card.

Help needed
A howto is needed showing the process of implementing the patch in Hardy Heron. If anyone knows how to do this, please create a quick howto and either put it here or link to it from this page. Please and thank you.

As an alternative, you can install a backported IWL4965 driver that may fix the LED problem on your system.

To active WiFi LED,

 sudo apt-get install linux-backports-modules-hardy
NOTE!
On some machines, (at least one running IWL3945 & IWL4965) applying the above turns on the LED permanently. It should flicker as data is being transmitted. Also, with the above modification, after turning off wireless and then turning it back on (via the switch on the front of the machine) wireless is not reactivated, so not very helpful


You can download a compatible driver which supports WiFi led flicking and build it with modifying the config.mk by adding CONFIG_IWL3945_LEDS=y and CONFIG_IWLWIFI_LEDS=y these two options. For Ubuntu/Debian users, build-essential, linux-source-2.6.24 and linux-headers-generic packages are required.

Help needed
I added the above lines to the config.mk file and it would not make or make install correctly. I received an error 2 at the end of the make. If you have had success, where did you put the items in the config.mk file for it to make and make install correctly? Thanks in advance.

To compile the with these two options enabled, you need to insert the following command into config.mk as well:

 CONFIG_IWLWIFI_DEBUG=y

Or if you don't want debug mode you can edit iwl-led.c in drivers/net/wireless/iwlwifi . At line 198 remove IWL_DEBUG_LED("Led type = %s brightness = %d\n", and it will work - now I have a flickering WiFi led on T61.

To enable the Wifi LED with the Atheros cards

First check if this solution works on your computer. Open a terminal and run this commands:

sysctl dev.wifi0.ledpin=1
sysctl dev.wifi0.softled=3

Now connect to a wireless network and the LED should start working. If so and you want to make the changes permanent then:

1) Create a file ~/wifiLED and copy/paste the following into it:

#!/bin/bash
#
# Commands to enable the wireless LED
sysctl dev.wifi0.ledpin=1
sysctl dev.wifi0.softled=3

2) sudo cp ~/wifiLED /etc/init.d

3) sudo chmod 755 /etc/init.d/wifiLED

4) sudo update-rc.d wifiLED defaults 90

After you reboot your wireless led should be working.

--Lunatico 14:50, 26 July 2008 (CEST)

Hidden SSID

It has been reported that users wanting to access Hidden SSIDs have to enter the SSID and password manually in Network Manager to connect. Even after the SSID is saved in Network Manager, it will not reconnect automatically. The user has to connect manually by entering the information as previously described. It appears that updating the driver by following the instructions here resolves this issue.

Hard Disk Parking

Getting hard disk parking to work:

tp_smapi patch is not needed in linux-image-2.6.24-18

1. Patch your kernel with the 'protect' patch.

2. Installing the hdapsd daemon which does the actual parking.

$ sudo apt-get install hdapsd hdaps-utils

some other tweaks

screenblank with Fn + F3

Its ok, and might be usefull to get the estimated batterytime when pressing Fn+F3, as it should be. But i dont need that, i find the earlier command for F3, to blank the screen, more useful to save batterylife better.

For that, you must edit /etc/acpi/thinkpad-lockbattery.sh and replace LENOVO by IBM, and IBM by LENOVO :). Do not forget to copy the file before you change it!

Enable normal User to Limit CPU Speed

To let user set the CPU limit you need to open a Terminal an type there

sudo dpkg-reconfigure gnome-applets

answer the question with yes

Fix bluish displays

Many T61 owners complain about a very bluish color temperature: My T61 WSXGA+ was also way too blue. I came across a thread at the notebook review forum http://forum.notebookreview.com/showthread.php?t=174408 which provided two useful ICC profiles which fixed the situation for me. Just install xcalib

sudo apt-get install xcalib

and load one of these profiles with xcalib. To omit quoting the filename better rename the profile to something without blanks like t61.icc.

Load the icc file automatically:

sudo cp <your icc file> /usr/local/etc/

Append the following line to your display manager's config file /etc/gdm/Init/Default (for standard Ubuntu/Gnome) or /etc/kde3/kdm/Xsetup (for Kubuntu/KDE), before the final "exit" statement:

/usr/bin/xcalib -d :0 -s 0 /usr/local/etc/<your icc file>