Lenovo Thinkpad x200s

As usual with Lenovo Notebooks, the Linux support is quite good. Except the mute Key everything works. The power consumption is ok, but could be better. The x200s needs around 2w less (and keeps a low consumption even with light load).
In late 2017 it started to detect every battery as malfunctioning. It works, as long as i remove the battery. Actually, after booting i can insert the battery and it will work, even when unplugging mains. The battery is reported empty and wont charge.


  • Lenovo ThinkPad x200s
    • System
      • Intel Core2 Duo SL9400, 1.86GHz 17W TDP
        • it has a very faint capacitor whine
      • 2x2048MB PC3-8500
        • up to 8GB usually work (but not supported)
      • Super Talent TeraDrive CT2 54GB SSD
        • comes with various SSD or HDD
      • Intel GMA X4500HD
        • acceleration $file, 3D $file
          • a patched driver is needed for mp4 video acceleration
    • I/O
      • 12" matte (1280x800) LED backlit display
        • brightness $file
        • my x200s had the display from an x201 (hence the LED backlight)
        • the colours are pretty poor
      • Wi-Fi $file, Bluetooth $file, (killswitch $file)
      • Gigabit Ethernet $file, Modem $file
      • 3 USB 2.0 $file
      • Headphone $file, Mic $file, VGA $file, Express Card $file
      • Dock $file
        • hot pluggable (dock, button and bay events via udev)
        • drive bay, speaker, two video ports, network, usb
      • Card reader $file
      • Fingerprint reader $file
      • Camera $file
    • Power
      • cpufreq via intel_acpi, PHC $file
        • stable with ridiculous low VIDs
      • S2R $file, S2D $file
      • Various Batteries (4, 6, 8 and 9 cells) available
        • easily and cheap available on ebay
        • battery management works with tp_smapi
      • overall power consumption is around 7W
      • ACPI events $file, keys $file (via ibm_acpi module)
        • except for the mute button, i could not get it to work
      • Very silent, runs around 5h with the big battery (but mine was old, about 60% remaining capacity)
        • Fan speed can be controlled via /proc (needs ibm_acpi module)

Docking and undocking

The "undock" event is trigered when the undock button is pressed, the "dock" event is called when the notebook is put into the dock. Both events bubble the ultrabay's "change" action.
Ultrabase dock/undock: /etc/udev/rules.d/50-dock.rules
ENV{EVENT}=="undock", KERNEL=="dock.2", ACTION=="change", SUBSYSTEM=="platform", RUN+="/opt/sbin/ultrabase_undock"
ENV{EVENT}=="dock", KERNEL=="dock.2", ACTION=="change", SUBSYSTEM=="platform", RUN+="/opt/sbin/ultrabase_dock"

My dock/undock scripts are currently boring, the only thing i do is bringing the network down on undock.

Ultrabay change

Ultrabay change: /etc/udev/rules.d/51-bay.rules
ENV{BAY_EVENT}=="3", ACTION=="change", SUBSYSTEM=="scsi", RUN+="/opt/sbin/ultrabay_eject"
Script to mount/unmount the device in the ultrabay:
$file ultrabay_eject (4892)
The unmount fails when the file system is in use (for reasons unknown there is no forced unmount). A possible solution would be to use a fuse fs overlay. Those can be forcibly unmounted, if needed by killing the process.

Toggle battery thresholds

I like my batteries to live long, which is easily achieved by lowering the charge stop thresholds to 80% and the charge start threshold to 60%. But sometimes i need the maximum capacity. This script toggles the thresholds accordingly:
sct=$(cat /sys/devices/platform/smapi/BAT0/start_charge_thresh)
if [ "$sct" -lt 80 ]; then
    echo 80 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
    echo 95 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
    echo 60 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
    echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh

You can bind it to the ACPI battery labeled key:

For Li-Ion batteries the lifetime suffers mostly from charging the battery, the higher the charge the greater the stress. If the battery is only charged when rather empty (say, below 60%), the battery is less often charged. The stress when loading is greatly reduced if the battery is only charged partially (say, 80%).
Even the high-charge mode only charges to 95%. The last 5% don't make that much a difference in run time, but a great difference in life time. Not charging above 80% stops the battery from being charged neigh continuously.

Fun with the Display

Display can be swapped between X20(0|1)s?, as long as the technology (CCFL or LED is the same). That is, for example, you can easily have the X201 LED Display in a X200s Body (which is what i have). The s editions may have even have a display with higher resolution.

Better third party Display

One can use other Displays with higher quality, which are available at Ebay for reasonable prices. Sadly those Display seem to be available only as CCFL (remember, you have to had the same tech before).

BIOS Hacks and trouble

As usual with Lenovo, the BIOS refuses non-whitelisted Hardware. At least harddrive seem to work without these shit. There are hacked BIOS'es, although i never tested that (no need so far).
One can also do some other fun stuff:

Harware Hacks

The x201 Mobo fits into the X200:
A nice and clean looking internal USB TV Tuner (read: SDR):
The status LEDs can be swaped for other colors:
change LED color
External Wifi Antenna connector
Adding a MSATA card. Seems to be rather advanced:


Batteries are not recognized correctly anymore. Put into storage for now.
total: 124.47ms (include: 2.44, request: 0.88, trace: 0.62, init: 3.37, load: 0.01, parse: 112.56, menu: 1.9, template: 2.52, minify: 0.16)