Lenovo Thinkpad SL500
The support for this laptop is not as bad as it first seems. In fact, pretty much everything works fine. I am very happy with this machine!
While this guide if for the Thinkpad SL500, the steps should be easily applicable to the SL300 and SL400 models.
Despite the Thinkpad name, the SL series laptops actually contain IdeaPad firmware, making it incompatible with the thinkpad_acpi modules. A new module, lenovo-sl-laptop has been written to expose most of the lost functionality. Thinkwiki has a page for the SL series with good general information and howtos.
With the Intel WiFi Link 5100 series all functionality is supported out of the box. Follow the wireless setup guide for further information.
lenovo-sl-laptop Kernel Module
This modules is no longer required in 2.6.32 for most hotkey support; the mainline asus-laptop module has been patched to support these models. However, some features still require the lenovo-sl-laptop. Check the git commit for clarification. Note that it's recommened to blacklist the asus-laptop module when the lenovo-sl-laptop module is used to avoid problems with hotkey support.
This experimental kernel module was written to control bluetooth, hotkeys, fan, and screen brightness in place of the incompatible thinkpad_acpi module. A package is currently available in the AUR. After installation, be sure to load the module, and to load on startup, add lenovo-sl-laptop to the MODULES array in rc.conf.
Despite it's experimental status, it works quite well. Sadly, there is no support for the HDAPS.
To allow control of the backlight, first edit /etc/modprobe.d/modprobe.conf as follows:
options lenovo-sl-laptop control_backlight=1
Then turn off ACPI control of the backlight by performing the command on startup.
echo 0 > /sys/module/video/parameters/brightness_switch_enabled
A preferable alternative is to add the following to your kernel boot line to do so on startup.
Instead of installing the AUR package, the module can built manually from source.
To do so, first obtain the source from here and perform the following
make sudo install -m=644 -D lenovo-sl-laptop.ko /lib/modules/`uname -r`/kernel/lenovo_sl_laptop/lenovo-sl-laptop.ko depmod -a modprobe lenovo-sl-laptop control_backlight=1
The bluetooth light on the front of your laptop should turn on.
Finally, add lenovo-sl-laptop to your MODULES array in your rc.conf.
USB and SD auto mounting
Check out the Udev rules for automounting USB and sd cards, very handy.
The SD card reader seems a bit buggy.
Fingerprint reader, Bluetooth, Modem.
Tips and tricks
There are a plenty ways to save power and extend battery life. The following entries can be placed in /etc/rc.local and will save power at startup. Be warned that the cpu settings may destroy your processor and I don't warrant that they will work on your machine.
# # /etc/rc.local: Local multi-user startup script. # #CPU settings echo 1 > /sys/devices/platform/lenovo-sl-laptop/hwmon/hwmon0/pwm1_enable echo 70 > /sys/devices/platform/lenovo-sl-laptop/hwmon/hwmon0/pwm1 echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor echo "11:25 10:22 8:15 6:8 136:5" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls echo "11:25 10:22 8:15 6:8 136:5" > /sys/devices/system/cpu/cpu1/cpufreq/phc_controls #Activate SATA ALPM link power Management echo min_power > /sys/class/scsi_host/host0/link_power_management_policy echo min_power > /sys/class/scsi_host/host1/link_power_management_policy echo min_power > /sys/class/scsi_host/host2/link_power_management_policy echo min_power > /sys/class/scsi_host/host3/link_power_management_policy echo min_power > /sys/class/scsi_host/host4/link_power_management_policy echo min_power > /sys/class/scsi_host/host5/link_power_management_policy #Suggestion: enable HD audio powersave mode by executing the following command: echo 1 > /sys/module/snd_hda_intel/parameters/power_save #Vorschlag: Increase "VM dirty writeback time" from 5 to 15 seconds: echo 1500 > /proc/sys/vm/dirty_writeback_centisecs #Deactivate unused outputs xrandr --output DP1 --off xrandr --output DP2 --off xrandr --output TV1 --off xrandr --output HDMI1 --off #Activate Laptop-Mode echo 5 > /proc/sys/vm/laptop_mode #Harddisk Power-Saving hdparm -B 1 -S 12 /dev/sda
The Acpid daemon is a very handy tool which listens for Acpi changes. However getting it to work with the Lenovo SL500 is not able by default as this laptop listens on different acpi signals. The following handler.sh changes the governor and the brightness level depending on whether the system is connected to AC or not. Furthermore it suspends the system using pm-suspend and locks the screen using slimlock after the lid is closed.
#!/bin/sh # Default acpi script that takes an entry for all actions # NOTE: This is a 2.6-centric script. If you use 2.4.x, you'll have to # modify it to not use /sys minspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq` maxspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq` setspeed="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed" set $* case "$1" in button/power) #echo "PowerButton pressed!">/dev/tty5 case "$2" in PBTN|PWRF) logger "PowerButton pressed: $2" ;; *) logger "ACPI action undefined: $2" ;; esac ;; button/sleep) case "$2" in SLPB) echo -n mem >/sys/power/state ;; *) logger "ACPI action undefined: $2" ;; esac ;; ac_adapter) case "$2" in AC0|ACAD|ADP0) case "$4" in 00000080) echo -n $minspeed >$setspeed #/etc/laptop-mode/laptop-mode start # System is connected to AC # Set governor to performance level for both CPUs echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo "performance" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor # Set brightness to maximum echo "15" > /sys/class/backlight/acpi_video0/brightness ;; 00000000) echo -n $maxspeed >$setspeed #/etc/laptop-mode/laptop-mode stop # System is not connected to AC # Set governor to powersave level for both CPUs echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo "powersave" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor # Set brightness to a minimum level echo "5" > /sys/class/backlight/acpi_video0/brightness ;; esac ;; *) logger "ACPI action undefined: $2" ;; esac ;; battery) case "$2" in BAT0) case "$4" in 00000000) #echo "offline" >/dev/tty5 ;; 00000001) #echo "online" >/dev/tty5 ;; esac ;; CPU0) ;; *) logger "ACPI action undefined: $2" ;; esac ;; button/lid) #echo "LID switched!">/dev/tty5 # Suspend the system and lock the screen /usr/sbin/pm-suspend DISPLAY=:0.0 su -c - user /usr/bin/slimlock ;; *) logger "ACPI group/action undefined: $1 / $2" ;; esac
Thread on the forums concerning configuration of Arch Linux on the SL series