Freedom & Limits: The ASUS C201 with libreboot and Parabola Linux

Surfing the web one day, I came across a mention of libreboot, a free software replacement for BIOS firmware used to load and run operating systems that’s been around since December 12, 2013. For many years, the only system you could buy with a free BIOS that could run free software was the Lemote Yeelong. Prior to that, every system ran nonfree BIOS system to initialize the computer prior to starting the operating system.

Unfree Software Everywhere

Unfree BIOS software is not a unique problem. Most elements of a computer are run using software that’s secret. For instance, none of the modems that are responsible for cell phone network communications run on free software. No one knows exactly what it does, except, perhaps, the people that created it.

Same is true of wifi. There are also only two wifi chips with free software drivers. The rest require blobs. Blobs are black boxes. You can know what goes in. You can know what comes out. But, you’re not entirely sure what happens in the middle.

Controller firmware, CPU microcode, graphic acceleration and many other elements of a modern computer system are almost always proprietary. Unfree software is the norm.

Free Software: Who Cares?

If it is a norm, why should anyone care about free software? People in the free software world often talk about free as in beer, i.e., it does not cost anything, opposed to free as in freedom, which enables people to do things they otherwise wouldn’t be able to do.

One example is a car. All modern cars have a series of electronic systems that control every facet of the car’s operation. When those electronic control systems are proprietary, it can mean that owners of the car can be compelled to see an auto mechanic rather than repair the car themselves. Or worse, a manufacturer could decide to not share information with auto mechanics and establish a system where car owners would have to go to a dealer to get their car repaired.

Proprietary software puts the owner of the software’s copyright in control. Free software, at minimum, reliquishes the copyright and gives that control over to the user of the software or the hardware it powers. In some cases, it tries to exert control over the process, making it a requirement that improvements also have to be shared under the same conditions that the original software was shared.

Free software is fundamentally about empowering people. You might not care about the code running your car, but you likely do care if that code limits the supplier of repair services to a monopoly that charges significantly more than it would if it had competition.

Enter libreboot

Looking over the libreboot site, it is clear the BIOS problem persists. There are a handful of systems that can run libreboot. Most computer systems run a lot of proprietary software, e.g., BIOS, device drivers – such as wifi, controller firmware, CPU microcode, graphics acceleration hardware, etc. Under these conditions, is it even possible to run free software? If there is going to be compromises, what is an acceptable level? How much inconvenience will it entail?

Freedom always comes at a cost. In the modern world, the cost is often in convenience or capability. But, the reality is that we often have no idea what something costs us, as individuals or as a society. It’s not until we struggle with a different, perhaps even radical position, that the standard quo has a foil to make these costs visible.

I found such a foil while looking at the libreboot site and read this quote in the documentation for the only ARM laptop compatible with libreboot, the ASUS C201:

In practise, you can (if you do without the video/wifi blobs, and replace ChromeOS with a distribution that respects your freedom) be more free when using [an ASUS C201 than other libreboot systems that are Intel based].

What does “more free” mean? On the ASUS C201, the embedded controller firmware is free software, and there is no microcode. On ARM CPUs, the instruction set is implemented in circuitry, without microcode. If you choose not to use the wifi/video blobs, you can make the system about as free as is possible in the modern computing landscape.

Getting There From Here

It’s a bit of work to make the ASUS C201 run with free software. I bought one with faulty wifi from eBay for $52 dollars and a wifi dongle with a free Artheros chipset for $31 from Think Penguin. I then got the low end iFixit tool set to take apart the laptop for $25, removed the write protection screw, installed libreboot, installed Arch Linux on a SDCard I bought for $20 and then converted Arch Linux into Parabola by switching the depositories. For ~$130, there was a lot of educational value in the exercise, and the end result was a usable laptop that is my daily driver. Not bad. But before you go off and try it yourself, let me share some of the bad news.

All the instructions mentioned the possibility of making the computer unusable or damaging it while installing libreboot. In my case, I did manage to put a small crack in the top of the laptop in the course of prying it open. I ended up covering it with a sticker. Problem solved.

It is also possible to make a mistake flashing the firmware with libreboot and “bricking” the machine, which is always a possiblity when flashing firmware. It didn’t take the first time for me, but it didn’t seem to cause any problems either.

There are also other issues that can come up. For example, if you are not familiar with the command line and mounting usb or sdcards, you might not know that you need to use a set of commands like the following to transfer the libreboot files from a usb drive to the C201 in the first place, which the instructions assume you know how to do and don’t specify:

You can also make mistakes when installing the operating system, such as missing part of the long command to partition the table properly. Assuming you can get the whole thing to boot, then you have to set-up the Arch Linux distribution from scratch.

Arch Linux starts with a minimal distribution, and it is built around the idea of you create the distribution you want, with only the most up-to-date software. Prior to this experiment, I used primarily Debian. Arch Limux showed me was how many decisions Debian was making for me during the installation process. You could say that Debian is more focused on stability and ease of use.

So, the initial process was reevaluating software. On Debian, Gnome is the default, but it will not run on an ASUS C201 because it doesn’t have the video acceleration required to run it well. I found myself trying a number of window managers and eventually settled on ratpoison, a tiled window manager, that would work well with the limitations that free software on the ASUS C201 required. Hot tip: “ctrl-t :” will bring a text box up in the corner, then you can type “quit”, without quotes to exit. It took me a bit to learn that detail.

The graphics limitations of the ASUS C201 tended to encourage the use of the command line, just as working with OpenBSD did. The command line is something every user of a UNIX derivative should know in some detail, including Macs.

Debian also does some of the basic set-up for you, such as creating users, installing base software like sudo, or getting wifi to work. Arch Linux largely doesn’t, although setting up wifi through wifi-menu was easy.

Then, there is switching your distribution from Arch, which allows some proprietary drivers, to Parabola, which doesn’t. This leads to additional issues, like an update of the machine made a fully-functional touchpad useless. Was it a software upgrade of X or a firmware upgrade to the touchpad driver? Probably the latter, but the end result is that I try to keep to the command line where using a mouse isn’t necessary.

Another thing cutting down on my use of graphics? Apparently, the icu package (International Components for Unicode) updates every 3 months, but it breaks iceweasel, the only free software graphical browser that will run javascript and render pages correctly. I’ve since learned how to downgrade packages from cached packages on the machine. However, in the process of learning, I cleared the cache. I ended up having to wait six weeks to get an unbroken graphic browser package. Part of the delay is because the dependencies in the browser are written for specific versions of icu, and so they break every time it is updated. Part is because the ARM architecture doesn’t get the same kind of support as other architectures, because the number of people using it is much smaller.

The Point

So, what’s the point of this long litany of issues with making an ASUS C201 a free software machine? I think the main value is the exercise of rejecting the default option and choosing for ourselves. That’s what free software offers. You may not want the freedom, but sometimes just making an effort in that direction helps us to evolve into people that appreciate options beyond those that are offered by default.

In this case, the default is to use ChromeOS. It provides a safe, relatively secure computing environment where people can browse the web, read email, use networked Google software applications and such, and the price for the machine is minimal. However, there is a price to be paid in freedom. Convenience is offered in exchange for agreeing to become the commerical product of Google. For some people, this doesn’t bother them. They might even view it as a benefit. Since Google knows so much about them, the advertising driven by Google might help them to make better purchasing decisions.

Trying to swim against the default stream, whether it is the defaults of Google or a particular Linux distribution such as Debian, means a lot of work. It also means inconvenience, where hardware doesnt work like it should or graphical browsers remain broken for months. But, I would argue that taking the risk of bringing your computer, accepting a restraint like “free software only”, having to try new alternatives, etc., all leads to a mindset worth cultivating.

Even if you think concerns about free software is a kind of zealotry, there are kinds of knowledge that only a zealot can know because they are willing to accept limits others will not. There’s an education to be obtained in doing it. The only question is whether it is worth it to you.

Post navigation

You’re using cp to copy an image to a mounted folder and not a device. This is a bad idea, and a bad example for people stumbling across this blog. Instead you should dd to a your target device located in /dev/ : dd if=image.img of=/dev/target_device
The arch linux instructions for the c100p work on the c201 and is IMO the simplest way to get a working distro on the c201.

I can understand your confusion. The point of that part of the post is to help people who do not know how to transfer the image of the veyron_speedy libreboot flash file to their ASUS device, which is not provided in the libreboot instructions. The folks at libreboot probably assume most people attempting to flash libreboot would already know how to do that, which is a reasonable assumption. But, I saw at least once instance where someone didn’t know how to do it when researching this issue, so I mentioned it.

Once you have the flash file on the system, you then flash it to replace coreboot on ASUS C201. You want the image itself available locally. The dd command isn’t want you want because you aren’t installing linux at that point. When you are, I agree the arch linux instructions are the easiest to follow.

I’m interested in doing the same for my C201, which is currently running Arch. The Parabola wiki mentions updating the bootloader to point to the linux-libre kernel, but it’s a little vague. How did you go about doing this? Did it require installing any extra packages?

The libreboot site points to this message, which states you can exclude the bootloader part.

Personally, I had too many problems with Parabola. They don’t have good ARM support, and updates seriously borked my system about half the time, most recently a firmware upgrade made my Atheros wifi dongle not work. I had to fix it by putting it in to a OpenBSD machine and doing fw_update. I changed to Devuan, and it has been a much better experience. But, YMMV. Good luck.