|
|
Line 1: |
Line 1: |
| [[:Category:T23|T23]][[Category:T23]] | | [[:Category:T23|T23]][[Category:T23]] |
− | == T23 and ACPI and Suspend to RAM ==
| |
− | I recently bought a second-hand Thinkpad T23, Model 2647-4MG, and
| |
− | decided to run Gentoo Linux 2.6.12-r6 on it; this is the 2005.1 release
| |
− | on a DVD, since I have limited internet access.
| |
− |
| |
− | The default kernel booted OK, and recognised all the devices (tho' I
| |
− | haven't tested the modem, and I've run X-windows only briefly.)
| |
− | However, I wanted software suspend, and I couldn't get that to work at
| |
− | all.
| |
− |
| |
− | The first complaint from dmesg was that ACPI wasn't enabled in the BIOS;
| |
− | the T23 BIOS has no mention of ACPI, so I added lapic to the kernel
| |
− | arguments and that went away. The next problem was a large number of
| |
− | ACPI error messages, generally of the form AE_NOT_EXIST, so I got the
| |
− | Intel iasl compiler source from their site and compiled it. It compiled
| |
− | cleanly, and de-compiling and re-compiling the DSDT gave one Error and
| |
− | one Remark. I fixed them as best I could, and loaded the new DSDT on
| |
− | boot with the kernel's "Custom DSDT" option; this worked correctly, but
| |
− | dmesg still showed a lot of ACPI error messages, including two which
| |
− | said "Found ECDT" and "Could not use ECDT".
| |
− |
| |
− | Rather than mess with the ECDT straightaway, I decided to upgrade to the
| |
− | latest BIOS and Embedded Controller BIOS. The system came with (the
| |
− | original) versions 1.12 and 1.04, so I downloaded versions 1.18 and
| |
− | 1.06a from the IBM Website. The installers come in floppy disk and
| |
− | Windows-based versions, and I used them under Windows 2000. Mercifully
| |
− | the re-flash worked as advertised, tho' interestingly the F12 "Select
| |
− | Boot Device" menu changed slightly, and at first it appeared to have
| |
− | lost the "Boot from USB" option, although that was enabled in the BIOS.
| |
− | Apparently the menu now simply calls a USB memory stick a hard drive.
| |
− | Anyway, boot from USB still works.
| |
− |
| |
− | Booting into Linux then gave me no error messages, and dmesg showed that
| |
− | the ACPI had found the ECDT and enabled the interpreter. There was also
| |
− | a full set of ACPI entries under /proc. Although the DSDT had changed,
| |
− | de-compiling and re-compiling with iasl showed that the error that had
| |
− | originally bothered me was still there, so I let it be. I then loaded
| |
− | acpid, which handles the ACPI buttons through scripts in /etc/acpi.
| |
− | Tying Fn-f4 to "echo -n 3 >/proc/acpi/sleep" suspended the system, but
| |
− | nothing would bring it back. Fortunately the Power Off button was still
| |
− | functional.
| |
− |
| |
− | Digging around, it looked as if there were only three keys which ACPI
| |
− | handled by default - the Power Off key, the Suspend key (Fn-F4) and the
| |
− | Lid key. I found that I had to provide a handler for the Suspend key,
| |
− | but for simplicity I left the other two alone, and most other special
| |
− | purpose keys, eg. Fn-Home (LED brighter), Fn-End (LED dimmer), Fn-PgUp
| |
− | (Screen light), kept on working anyway. Fn-F3 (Screen blank), didn't
| |
− | work and nor (fortunately) did Fn-F12, Suspend to disk; Fn-F7, Switch to
| |
− | video, seemed to - at least, it blanked the LCD. I then tried unloading
| |
− | suspicious drivers such as USB, but could still only enter Suspend mode
| |
− | and not recover; finally I built a kernel with no loadable modules
| |
− | except networking, and the minimum of options - no USB, no PCMCIA,
| |
− | nothing that wasn't actually present when the machine booted. That
| |
− | finally worked, and I could suspend to disk with Fn-F4 and recover by
| |
− | pressing Fn (but no other key - I seem to recall that any keypress would
| |
− | work with the original BIOS).
| |
− |
| |
− | When the machine is running, the Lid switch blanks the screen when
| |
− | pressed and restores on release, but if the machine is suspended
| |
− | pressing the switch does nothing and releasing it brings the machine out
| |
− | of suspend mode. That seems reasonable. Commands echoed to eg:
| |
− | /proc/acpi/ibm/light can be mixed with the appropriate keypresses (here,
| |
− | Fn-PgUp) without problems.
| |
− |
| |
− | I started re-enabling the various bits of hardware I needed one by one,
| |
− | but when I re-enabled the Savage S3 framebuffer support the machine
| |
− | would enter suspend, but would hang partway through re-emergence.
| |
− |
| |
− | I then disabled the S3 stuff and enabled the Intel 830M framebuffer code
| |
− | (I don't know how this relates to the S3 driver, but the T23 apparently
| |
− | has both chips) and the suspend worked again. The S3 driver is handy in
| |
− | text mode, since it gives more lines per screen (and a nice penguin logo
| |
− | on boot-up) but the system still runs eg: X windows reasonably well.
| |
− |
| |
− | Suspending and re-emerging with USB support and a USB memory key
| |
− | plugged in, and with X windows running, then worked fine; at the
| |
− | moment I don't have the hardware to test anything more. Some things
| |
− | are still odd - the CPU (Pentium IIIM) has power management but not
| |
− | throttling, and doesn't at the moment change speed automatically.
| |
− | There must be a way around this, but since the CPU has only two speeds
| |
− | it's easier to use a shell script to flip between the performance and
| |
− | powersave kernel governors; everything needed can be found in the
| |
− | /sys/devices/system/cpu/cpu0/cpufreq directory.
| |
− |
| |
− | The Bay LED wrongly stays lit even when in suspend mode on battery
| |
− | (unlike the Power LED), but the most recent (1.1) ibm_acpi module
| |
− | provides an ACPI LED device which controls most of the LEDs (the Bay LED
| |
− | is 4), and when my configuration has stabilised I'll set the LED up via
| |
− | the suspend script. With the CPU on low speed (if it matters) and the
| |
− | LED off the power consumption in Suspend mode is around 580mW.
| |
− |
| |
− | I hope this helps someone else with their T23, because they are very
| |
− | nice machines, and quite versatile; this one seems to be able to deal
| |
− | with most forms of networking and mass storage pretty much out of the
| |
− | box. It looks as if the software to control full ACPI functionality has
| |
− | only stabilised within the last few months (ie: mid-2005), so if you
| |
− | have problems, try upgrading to IBM's latest BIOS and EBIOS, and a
| |
− | kernel >=2.12. With luck, the next version or so of the S3 driver will
| |
− | be free of its hang problem.
| |