I am running Gentoo Linux on my Thinkpad
R40e. If you have any comments or suggestions then please email me. My email
id can be found on my Contact page.
Does not have touchpad (IBM calls it UltraNav)
Does not have floppy drive
Note: ACPI works only partly. Battery and AC adapter status can be read but processor and thermal modules hang the system. I was able to get them working by making a small change to the kernel acpi code. See below for details. For the present you can forget about suspend/hibernation. ACPI is messing with the special buttons for volume and brightness control which become ineffective if I use an ACPI kernel (They work if I boot with acpi=off but then I wont have any ACPI). The BIOS does not support APM.
The keyboard is full-sized which is a good thing but some keys like Escape and Control are not in their usual position which is VERY ANNOYING for a linux user. The Esc key is placed further away that usual and I end up pressing F1 instead of Esc many times since F1 is placed just below Esc key. The Ctrl and Alt keys are right beside one another since IBM does not put a windows key. They have a Fn key which they could have put in between Ctrl and Alt.
CPU temperature is generally quite high. Even when idle and in an air-conditioned room it is between 46-50C. At 100% CPU it reaches 72C. As a result the fan is on most of the time and your battery will drain fast. The region on the lower left where you rest your left palm becomes hot and is a bit uncomfortable to work.
No recovery CD is provided since there is a separate recovery partition. But this gobbles up 3GB of valuable space. You can of course delete this space especially if you dont want to retain Windows. Purchasing a recovery CD costs about Rs. 1000 + local taxes according to their helpcenter.
If you already own an R40e then read on.
xset -display :0.0 dpms force off
To switch it back on just press any key. Thanks to Matt for this tip.
/*
* Install the idle handler if processor power management is supported.
* Note that the default idle handler (default_idle) will be used on
* platforms that only support C1.
*/
if ((pr->id == 0) && (pr->flags.power)) {
pm_idle_save = pm_idle;
pm_idle = acpi_processor_idle;
}
You will have to disable power management by adding an extra line as
follows:
/*
* Install the idle handler if processor power management is supported.
* Note that the default idle handler (default_idle) will be used on
* platforms that only support C1.
*/
pr->flags.power = 0; //Disable cpu power management for r40e
if ((pr->id == 0) && (pr->flags.power)) {
pm_idle_save = pm_idle;
pm_idle = acpi_processor_idle;
}
Recompile your kernel, install it and reboot. If you compiled processor as a
module then try modprobe processor. With this small change the
processor module loads without any problem and then you can load the thermal
module.
The above modification turns-off power management:
karman root # cat /proc/acpi/processor/CPU/*
processor id: 0
acpi id: 1
bus mastering control: yes
power management: no
throttling control: yes
limit interface: yes
active limit: P0:T0
user limit: P0:T0
thermal limit: P0:T0
active state: C1
default state: C1
bus master activity: 00000000
states:
*C1: promotion[C2] demotion[--] latency[000] usage[00000000]
C2: promotion[C3] demotion[C1] latency[003] usage[00000000]
C3: promotion[--] demotion[C2] latency[250] usage[00000000]
state count: 8
active state: T0
states:
*T0: 00%
T1: 12%
T2: 25%
T3: 37%
T4: 50%
T5: 62%
T6: 75%
T7: 87%
This has the result that acpi will not put the system in C2 or
C3 which are low power states and the processor is always in
C1. Power savings due to acpi cannot be obtained and the system
runs somewhat hotter even when idle.
Update on ACPI: Kernel 2.6.10 has a fix to automatically disable some power management feature in the processor module which would otherwise cause R40e to hang. The piece of code where this is disabled is listed below (The file should be either drivers/acpi/processor.c or drivers/acpi/processor_idle.c):
static struct dmi_system_id __initdata processor_power_dmi_table[] = {
{ no_c2c3, "IBM ThinkPad R40e", {
DMI_MATCH(DMI_BIOS_VENDOR,"IBM"),
DMI_MATCH(DMI_BIOS_VERSION,"1SET60WW") }},
{ no_c2c3, "Medion 41700", {
DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"),
DMI_MATCH(DMI_BIOS_VERSION,"R01-A1J") }},
{},
};
Set the BIOS version in this function to what you have on your laptop. With this fix you do not need to apply the previous fix listed above.
hddtemp -d /dev/hda
echo 1100000 > scaling_setspeedwhich will set the frequency to 1.1Ghz. Or you can use cpudyn to automatically change the frequency based on system load. It also has the ability to power down the hard-disk drive. All these are useful to save battery power. To use cpudyn you have to load cpufreq_powersave and cpufreq_performance modules.
echo -n mem > /sys/power/stateor
echo 3 > /proc/acpi/sleepbut I am not able to wake it up.