Wednesday, February 19, 2014

Why I Switched from Samsung to a Lenovo Chromebook


In earlier posts I described my decision to get a Samsung Series 3 Chromebook and my experience with using Chome OS. Initially, I installed crouton so that I could run various Linux programs and do more locally on the machine rather than always being connected. Subsequently, I decided to move away from using Chrome OS and install the Bodhi Linux distribution. I should point out that my decision was not based on any problems with Chome OS per se, but due to a feeling of discomfort I felt with being tied to the cloud, especially with reports of hacking and interception by criminal, government, and corporate entities. I explained my decision in some detail here.

While I was able to get Bodhi working on the Chromebook, it was not without considerable effort. About the time I decided to install Bodhi, the Bodhi project leader decided to drop official support for the ARM architecture packages for the Samsung Chromebook.  As I will explain later, I believe that decision was both understandable, and ultimately, reasonable.

Making Bodhi Work Well on the Samsung Chromebook

When I was told that official Bodhi support for ARM was being dropped, I volunteered to help build and maintain Bodhi (and enlightenment) packages for the Samsung Chromebook.  Thus began an interesting adventure.  While I had used Linux both personally and at work for well over 10 years, I had not done some of the tasks I undertook in trying to provide a first-class Bodhi experience on the Samsung Chromebook. Things I ended up doing included:
  • Building large numbers of debian packages using debian build tools like dh_make.
  • Building a new Chrome OS kernel following instructions I found here. While I was successful in building the kernel and getting Mali graphics working properly, the kernel itself proved unstable.
  • Creating chroot environments containing debian packages for building debian packages for ARM and also for creating a root filesystem for the Chromebook.
  • Writing scripts to install Bodhi on the Samsung Chromebook. These scripts, built from other existing scripts (written by others), handled various tasks, including:
    • Using cgpt to update and add Chromebook partitions.
    • Using vbutil_kernel to pack (or repack) Chrome OS kernels into a kernel partition.
    • Extracting and tweaking the Bodhi root filesystem.
While the experience was rewarding in that I learned new skills and tricks, it was also quite frustrating.  The main issue of course was the fact that the Samsung Chromebook used an ARM processor instead of Intel or AMD. While thousands of packages are widely available for Intel and AMD (32 and 64 bit architectures), less are available for ARM. Part of the reason for this is there are various flavors of ARM. Thus packages built for the Chromebook might not work on other things like a Raspberry Pi board.  Because of this, you might find packages built for ARM that don't work on your particular ARM-based computer.  

As I explained in previous blog posts, I often ended up building packages myself for ARM. However, in some cases the source was not available (that is, it was closed source) or I was unable to successfully build all the dependencies. In addition, even when I got things built and installed for the Samsung Chromebook (after months of effort), I still ran into various issues:
  • While I could get audio working, it was difficult. Additionally, while I was able to control the volume of the speakers and headphones separately, it did not seem possible to have the speakers automatically mute when plugging into the headphone jack.
  • While I was able to control the backlight brightness via scripts, when the screen blanked, the backlight stayed on.
  • The trackpad drove me crazy. To be clear, I used Thinkpads (first IBM and later Lenovo) for years with the trackpoint.  So using a trackpad was new to me. I don't know if the fact I learned touch typing was an issue, but on the Samsung Chromebook (which has a big trackpad) I constantly accidentally hit the trackpad.  This caused various unwanted results.  Additionally, I had trouble with the sensitivity. Double clicking using gestures was difficult while accidental single clicks were a common occurrence.  I used the syndaemon program to help as well as adding options to xorg configuration.  Nevertheless, I was never satisfied with the results. Additionally, I can handle the trackpoint easier and with none of these issues.
  • Any usable experience with browsing must support Flash.  Flash support is generally not available for ARM.  The only support is for the Google Chrome (Chromium) browser and Google's Pepper Flash support.  Initially I was able to find an early version (version 22) of Chromium which had been built for raspbian, which is an operating system for the Raspberry PI computer (also ARM based).   Eventually, I was able to build a Bodhi filesystem based on debian jessie (testing) and, with a lot of investigation, install a newer (version 31) of the Chromium browser from Ubuntu. So although Chromium is a good browser that one might choose anyway, the ARM architecture essentially limited me to only Chromium because it was the only way to get Flash support.  
  • I was never able to figure out how to get google hangouts to work, even though I was using the Chromium browser. I tried copying various libraries from Chrome OS but was never able to get it to work. Skype, which is proprietary, was not an option as there are no ARM packages available.
Despite the issues I was able to create a quite usable system and use it daily. It booted up in less than 10 seconds and I was able to do my daily tasks. Over time however, I was continually frustrated by the experience (especially with the trackpad) and the knowledge that I was continually going to encounter limitations because of the ARM architecture.  I had eventually come to the same conclusion as had Jeff Hoogland, the Bodhi Linux project leader. The issues with working with ARM architecture were not worth the effort. In Jeff's case, he was initially trying to support various ARM platforms, including the Raspberry Pi.  But even for the Samsung Chromebook, it turned out, to me anyway, just not worth the effort.
I should point out that there is quite a lot of support for ARM on Linux. Many Debian and Ubuntu packages are built for ARM.  Additionally, Linaro does excellent work in providing open source Linux support for ARM. You will also find tutorials on installing various types of Linux (Ubuntu, Debian, Arch, Kali, etc.) on ARM, especially Samsung Chromebooks.  And David Schneider at Google has done excellent working with crouton, providing an easy way to set up a chroot environment to run Linux under Chrome OS on Chromebooks, including the Samsung Chromebook. Despite this, there is just not near the level of support for Linux for such devices as there is for Intel and AMD based devices.

Lenovo Thinkpad X131e Versus Samsung Chromebook

In comparing the Lenovo Thinkpad Chromebook to the Samsung Chromebook, two things stand out as most important to me:
  1. The Thinkpad Chromebook is built on Intel architecture, not ARM
  2. The Thinkpad Chromebook has the trackpoint
However, if someone reading this is considering acquiring a Chromebook, it is important to understand the following:
  • The point about the trackpoint is  a personal preference. If you are familiar with and comfortable with trackpads, this may not be an issue for you at all. In fact, if you are not familiar with the trackpoint you may not even like it. Of course, the Lenovo Chromebook has a trackpad as well, but it is considerably smaller than the one on the Samsung Chromebook.
  • If you plan to use the Chromebook for its intended purpose many of the issues I have mentioned would have no impact on you. That is, if you use the Chromebook solely to run Chrome OS the Samsung Chromebook may be quite satisfactory.  Although I assume the Google team probably has more issues building and supporting Chrome OS on ARM as compared to Intel, that should be largely transparent to the user.  I would note however that while the version of the Chrome OS for Intel (x86) Chromebooks appears to be at 3.8.11 (at least mine upgraded to that), I believe the Samsung Chromebook version is still at 3.4.0.
In terms of using the Chromebook solely for Chrome OS (i.e. not running some Linux distribution in addition), the machines are comparable.  The main advantages of the Samsung Chromebook in my opinion would be:
  • The Samsung Chromebook is lighter by at least a pound
  • The Samsung Chromebook is thinner
  • The Samsung Chromebook looks better. It looks thin and sleek when compared to the Lenovo
  • The Samsung Chromebook has a bigger trackpad, if this is something you use and prefer
  • The Samsung Chromebook has no fan, making it quiet.
  • The Samsung Chromebook lists at only $249 and is readily available, while the Thinkpad Chromebook lists at $399 is supposedly available only to the education market. (You can find it on a secondary market however).
The main advantages I see of the Lenovo for use solely for Chrome OS are:
  • The Thinkpad Chromeobook has 4GB of memory instead of 2GB. Although this often is not important, in terms of having many tabs open in the browser and running graphics intensive applications, this can make a difference.
  • The Thinkpad Chromebook is more rugged. It has rubberized edges and corners, reinforced hinges, and a spill-proof keyboard.  It was designed for potentially rougher treatment in schools.
  • The Thinkpad Chromebook has a removable (and replaceable) battery.  If you are familiar with Thinkpads, this is a feature they have had for a long time.
  • The Thinkpad Chromebook has the trackpoint. This is an advantage if you like this as opposed to (or in addition to) a trackpad.
  • The Thinkpad Chromebook has an ethernet port. For the Samsung Chromebook you would need a separate adapter (fairly cheap) and driver support.  I don't think the 3.4.0 Chrome OS kernel has support for some of the USB ethernet adapters, but I am not sure. I actually had to build the driver for the Chrome OS 3.4.0 kernel (for the Samsung) myself to use the adapter I purchased.
  • The Thinkpad Chromebook has 2 USB 2.0 ports and 1 USB 3.0 port.   
  • The Thinkpad Chromebook has a VGA port.
You can see a video comparing the Samsung Series 3 and Lenovo Chromebooks here. You can see a video comparing the Samsung Series 5 and Lenovo Chromebooks here.
For use as a Linux computer, and not solely for Chrome OS, there is no comparison, at least in my opinion. An x86-based Chromebook is far preferable to one based on ARM for the reasons I discussed earlier. 
Although I have discussed the Lenovo Thinkpad Chromebook, of course it is not the only x86 Chromebook available. And there are new ones coming out frequently. One interesting option is the Acer C720.  The 16GB model lists at $199 and the battery life is outstanding (8.5 hours).  Additionally, unlike earlier Chromebooks like the Samsung and the Lenovo Thinkpad, you can boot a Linux on a USB drive directly, making it easier to run Linux as an alternative to Chrome OS.  Quite frankly, if you are not partial to Thinkpads (and the trackpoint), the new Acer model is a very attractive choice.

Why Choose a Chromebook at All?

A reader might wonder why, if I want to use Linux, would I buy a Chromebook? After all, you have to put the Chromebook in developer mode, bypassing the verified boot mode just to use Linux. This means every time you boot you encounter the scary "Chrome OS verification is turned off" screen and have to hit Ctrl-D or Ctrl-U to boot.  Well, there are a few reasons:
  • Chromebooks are cheaper. I assume this is partially due to the fact that you don't have to pay the Windows tax due to the bundling of Microsoft Windows.
  • The Chromebooks have an SSD instead of a hard drive. While you can buy other laptops with SSD, they are typically larger SSDs and more expensive.
  • They tend to have long battery life. I think a laptop needs good battery life or you are often worrying about having to plug back in.  I see many laptops advertised with 3 or 4 hour battery life. That doesn't seem to be enough to me.
  • I like the option of being able to boot Chrome OS. I don't dislike Chrome OS. It certainly makes sense for various environments, including education markets and for businesses who want a more locked-down desktop.  It also is a reasonable choice for someone who has almost constant network connectivity and is willing to work almost entirely in the cloud using a lot of Google services.
Clearly, a Chromebook is not for everyone, especially if you want to run an alternative operating system like Linux.  And the Chromebooks tend to have lower end processors. If you want a power machine, for intense graphics and/or gaming for instance, you probably want to look at something else. But for what I use my computer for, they offer the right balance of price, weight, battery life, and size for me.

Installing Bodhi Linux on the X131e Chromebook

Given the experience I had installing Bodhi Linux on the Samsung Chromebook, you would think it would be simple for me to do the same on the Thinkpad Chromebook. That did not turn out to be the case, but after some effort and investigation, I have successfully done so. I have also created a script so others can do the same if they wish to do so. I will discuss all this more in an upcoming post.


  1. I appreciate you posting the pros and cons. I have been enjoying various Thinkpads for probably more than a decade and actually prefer Trackpoints, same as you. I almost came to a point where getting a spare keyboard meant picking one with a Trackpoint! But then reality set in, was going to get a keyboard with additional USB ports, until something happened and I had to get a pc. a used IBM tower. after upgrading to an nvidia gfx card, its been my main machine ever since, alongside an IBM x41. you will see me in Bodhi forums as aka jazz. Peace.

  2. Thanks for this interesting article.
    I am considering moving to a Chromebook and the point you raise here is interesting. The type of the processor (Intel or ARM) does have a significant impact for someone who might want to use Linux in addition to ChromeOS.
    I was lurking the coming Acer 13 running on a Nvidia Tegra K1 but it might not be the best option after all...