Installing Ubuntu 8.04 (Hardy Heron) on a ThinkPad T61

From ThinkWiki
Revision as of 15:49, 4 June 2008 by GongYi (Talk | contribs) (Wireless activity LED: , adding a new solution)
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

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

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?

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


Working on hardy final

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.

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

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, just the play, forward and stop buttons 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"<<
  • 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".

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.) Open it: System > 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.

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.

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. Please post any fixes here.

Hard Disk Parking

Getting hard disk parking to work is a 3 step process:

1. Patch your system with tp_smapi.

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

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

See the following link for instructions on implementing Hard Disk Parking: http://www.thinkwiki.org/wiki/How_to_protect_the_harddisk_through_APS

Help needed
Patch is outdated. It won't work under Gutsy kernel due to API changes. Please attach link to working patch.

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!