Difference between revisions of "Installing Debian 4.0 (Etch) on a ThinkPad T42"

From ThinkWiki
Jump to: navigation, search
(Etch on a ThinkPad T42)
 
(Sleep and Hibernate)
Line 46: Line 46:
 
==Sleep and Hibernate==
 
==Sleep and Hibernate==
  
Immediately post-install, including reinstalling uswsusp, both sleep and hibernate worked fine from the command line.  As for the special buttons, sleep (Fn-F4) worked fine, but hibernate (Fn-F12) didn't do anything.  So, this is what I did, hope it helps.  First, installed [http://www.nongnu.org/tpb/ tpb]:
+
Immediately post-install, including reinstalling uswsusp, both sleep and hibernate worked fine from the command line.  As for the special buttons, sleep (Fn-F4) worked fine, but hibernate (Fn-F12) didn't do anything.  So, this is what I did, hope it helps.  First, installed [http://www.nongnu.org/tpb/ tpb] and told it to load the ibm_acpi and nvram modules:
  
 
   {{cmdroot|aptitude install tpb}}
 
   {{cmdroot|aptitude install tpb}}
 +
  {{cmdroot|echo "ibm_acpi" >>/etc/modules}}
 +
  {{cmdroot|echo "nvram" >>/etc/modules}}
  
 
... at which point neither sleep nor hibernate did anything.  As others have found, this is because both {{path|/etc/acpi/events/ibm-sleepbtn}} and {{path|/etc/acpi/events/ibm-hibernatebtn}} use acpi_fakekey, which isn't set up to do anything.  The easy fix is to change {{path|/etc/acpi/events/ibm-sleepbtn}} to:
 
... at which point neither sleep nor hibernate did anything.  As others have found, this is because both {{path|/etc/acpi/events/ibm-sleepbtn}} and {{path|/etc/acpi/events/ibm-hibernatebtn}} use acpi_fakekey, which isn't set up to do anything.  The easy fix is to change {{path|/etc/acpi/events/ibm-sleepbtn}} to:

Revision as of 20:28, 11 July 2007

The machine

Got a used T42 from craigslist:

  • Intel Pentium M 1.70GHz
  • 500M RAM
  • Fujitsu MHT 2040AH HD (35G)
  • 1024x768 LCD panel
  • CDRW/DVD combo: HL-DT-ST RW/DVD
  • ATI Mobility Radeon 7500
  • Intel PRO/Wireless 2200BG
  • BIOS version 3.23

Installation

I installed Debian Etch 4.0r0 from the netinst CD image (July 6, 2007 version). I had to do the install over ethernet, as the wireless driver needs some extra work(see below). It went very smoothly -- only had two answer two questions:

  • uswsusp didn't find active swap partition -> I told it not to continue, and did # aptitude reinstall uswsusp after installation and it worked fine.
  • GRUB install in MBR? -> yes.

Post-install, gnome automatically popped up an kernel update, which applied fine.

... and with this, most everything works! This is *much* easier than it used to be. There were enough remaining issues to consume some hours, though:

Wireless

Note that different T42 models have different wireless cards -- but mine, the Intel PRO/Wireless 2200BG need the ipw2200 driver, and the associated firmware. So:

   # aptitude install ipw2200-modules-2.6-686

Then I downloaded version 3.0 of the firmware from http://ipw2200.sourceforge.net/firmware.php and copied it to /lib/firmware -- crossing my fingers a bit, since nowhere could I find confirmation that the ipw2200 driver included in ipw2200-modules-2.6-686 is version 1.1.1 or newer.

NetworkManager, installed by default, is taking care of everything just fine. I added two files to make it work with sleep and hibernate:

in /etc/acpi/suspend.d/07-network-manager.sh:

   #!/bin/sh
   /etc/dbus-1/event.d/25NetworkManager stop

and in /etc/acpi/suspend.d/63-network-manager.sh:

   #!/bin/sh
   /etc/dbus-1/event.d/25NetworkManager start
TODO
although I haven't tested if creating these files is necessary. You could try without.

Sleep and Hibernate

Immediately post-install, including reinstalling uswsusp, both sleep and hibernate worked fine from the command line. As for the special buttons, sleep (Fn-F4) worked fine, but hibernate (Fn-F12) didn't do anything. So, this is what I did, hope it helps. First, installed tpb and told it to load the ibm_acpi and nvram modules:

  # aptitude install tpb
  # echo "ibm_acpi" >>/etc/modules
  # echo "nvram" >>/etc/modules

... at which point neither sleep nor hibernate did anything. As others have found, this is because both /etc/acpi/events/ibm-sleepbtn and /etc/acpi/events/ibm-hibernatebtn use acpi_fakekey, which isn't set up to do anything. The easy fix is to change /etc/acpi/events/ibm-sleepbtn to:

   event=ibm/hotkey HKEY 00000080 00001004
   action=/etc/acpi/sleep.sh force

and to change /etc/acpi/events/ibm-hibernatebtn to:

   event=ibm/hotkey HKEY 00000080 00001004
   action=/etc/acpi/hibernate.sh

The *force* option in ibm-sleepbtn is necessary on my distribution because otherwise the sleep script defers to gnome-power-manager, and does nothing.

Now the sleep button worked, and the hibernate button did something -- it induced a kernel panic. After some investigation, it turned out that this was coming from the modules-unload script in /etc/acpi/suspend.d -- and, indeed, if I do # modprobe -r e1000, the machine *freezes*. Indeed, {path|/etc/acpi/suspend.d/70-modules-unload.sh}} tries to unload e1000 and ipw2200, *even if they are added to MODULES_WHITELIST in /etc/default/acpi-support*.
Help needed
Any ideas why WHITELIST doesn't work?
The best thing to do about this would be to compile a new kernel with the newest version of e1000...}} but instead, I just turned off the modules-unload script, since everything seems to work fine without unloading any modules, by doing this:
   # mv /etc/acpi/suspend.d/70-modules-unload.sh /etc/acpi/suspend.d/70-modules-unload.sh-off

Now the suspend and sleep hotkeys work, and everything seems to continue fine, afterwards.

The CRT/LCD hotkey and a Projector

Initially, the Fn-F7 key did nothing -- and neither did # echo -n 'video_switch' > /proc/acpi/ibm/video. However, adding the line

   Option "BIOSHotkeys" "on"

to the Device section of /etc/X11/xorg.conf seems to have done the trick -- after a hard reboot. I need to use this for a bit longer, but it seems like it'll keep working.

To get a projector to work, all I had to do was to plug it in, then put it to sleep and have it come back. It still wouldn't play video, though -- the window where the video was playing would be blank on the projected screen. To fix this, I did the easiest thing, which was to add the line

   Option          "MonitorLayout" "LVDS,NONE"

also to the Device section of /etc/X11/xorg.conf.