Sean Adams

Find me on GitHub or LinkedIn. Contact me.

← back to all posts

Linux on ThinkPad X250 part 1

February 17, 2019


I’d been a Windows user for a while, but over the past couple of years work has found me using OS X on a daily basis. Compared to doing web development in Windows, working in a *NIX system has been a breeze; and as my daily work these days almost exclusively involves either development or working in web-based interfaces (email, Google Docs, etc.), I started wondering how effectively I could use Linux as my full-time OS at home. Simultaneously, I didn’t want to pay Mac prices (or even new non-Mac prices) for something adequately portable, powerful, and Linux-compatible, especially since I viewed this as more of a DIY project.

Shopping & buying

I set my mind on a 12” class computer as I wanted this to be a daily driver with the option for portability. Having previously owned a T430, and knowing that ThinkPads are:

  • easily-upgradeable
  • Linux-friendly
  • generally built like tanks

I decided to look for a gently used ThinkPad X250. This model is only a few years old (2015), and the upgradeability allowed me to be flexible on some specs (RAM, storage, display) while finding a combination of chassis quality and processor in my price range.

Patience paid off, and after a few weeks of monitoring saved searches on eBay, I was able to find the following configuration for $195 shipped:

  • i5-5300u (2.3gHz)
  • 8GB RAM
  • 128GB SSD
  • 1366x768 TN display

Installing Linux

This was going to be my first serious amount of time spent with Linux, so I went with something designed for user-friendliness - Linux Mint with Cinnamon desktop. The installation process was easy once I figured out how to force the X250 to boot from the USB drive (IIRC the boot medium had to be inserted prior to bumping the USB device up in the boot order).

The choice of a ThinkPad seemed to pay off here - wifi etc. worked with little to no configuration and I was quickly setting up my desktop. The only issues I’ve noticed have been TrackPoint/touchpad functionality: the libinput driver seemed to be much more sensitive and ‘floaty’ on the Track. I was able to fix most of these by switching from libinput to the legacy Synaptics driver with apt install xserver-xorg-input-synaptics and logging out/in.

I’m happy with Cinnamon so far - I’ll likely give MATE and xfce a shot over the next few weeks, but Cinnamon has been very intuitive for a fairly new Linux user, and the fact that the UI seems to be largely built in JS + CSS came in handy when looking into those battery issues.

I’ve also added uLauncher, which is generally great, though when I mapped it to Meta+Space it would only trigger on the second press of the combo - so I unmapped Alt+Space from the window menu and used that.

Upgrading the display

One of the major reasons I picked a ThinkPad was the easy upgradeability - based on my research, it would be possible to upgrade the 1366x768 TN panel to a 1920x1080 IPS for under $100 and with minimal labor. had been good to me when I performed a panel upgrade on my old T430, so I went back there and found the appropriate panel - with repeat customer discount it was only $50 ($60 shipped).

Replacing the panel was fairly straightforward. Using a handy spudger, I popped off the front bezel on all external sides. The existing panel can be lifted out and the cable at the bottom can be detached (after removing the tape securing it in place) - then it’s just a question of attaching the display cable to the new panel and resituating it all. Reattaching the bezel at the bottom was the hardest part, since the display hinge doesn’t give a lot of access; I had the most success by angling the display a full 180 degrees to get a good angle of attack.

Unfortunately, my new panel has been shifting around slightly since installation - I think one of the internal clips was broken during the bezel removal. For the time being, this isn’t a deal-breaker; eventually I will probably get back in and try to figure out an alternate solution for keeping it in place - maybe a small plastic spacer.

Power management (and hacking on Cinnamon)

I was pleasantly surprised after getting started with my X250 to learn that it is a dual-battery machine - one internal battery and one detachable “slice” battery. While this is awesome, it did seem to create some issues around charging and displaying status of multiple batteries.

To fix my charging issues, TLP was a life saver - after installation, I ran sudo tlp fullcharge BAT0 and sudo tlp fullcharge BAT1 and things seemed good.

But Cinnamon’s built-in power applet still didn’t want to show me info for both batteries in the panel itself. After some Googling, it turned out this was a known issue - and thanks to Cinnamon being built in JS, I was able to put together a solution and submit it as a PR. This, I think, really drives home why I wanted to experiment with using Linux more often in the first place– 2 days after installing my desktop environment I was hacking on it and contributing my changes back.

Next steps

  • The trackpad and TrackPoint work well enough for now, but probably will require some more attention to get them working just how I’d like.
  • SSD upgrade (probably to 256GB) is in the cards eventually, but since I don’t need a ton of apps installed, I may delay this until the space is truly needed, or the SSD starts showing signs of age.
  • The X250’s single RAM slot can apparently accept up to 16GB - again, I probably won’t do this upgrade unless I run up against a wall with usage.
  • The panel sliding around isn’t the end of the world, but it is annoying - the solution to this will probably be a piece of sticky tape or a small plastic spacer, but I’d like to put off taking off the bezel again as long as possible (reattaching at the bottom can be somewhat nerve-wracking).

top of page ↑