I like my ASUS C300 Chromebook: it’s my way to go laptop. It is cheap, something like 200~250€ few years ago, light and solid, only plastic here and no hard-drive which poorly handles transport, and it lasts long enough to endure any conference. Yes, even 8am to 10pm long Devoxx days.
I previously owned a HP laptop, five time more expensive than this Chromebook and I had to change the keyboard each year, touches broke too easily, the screen ribbon two times, the motherboard, the speaker, the fingerprint sensor, which was shocking my wrist when typing, one time each. Even the case itself broke after 3 years in my backpack. So Chromebook is definitely a good deal: 5 years now and not even a (deep) scratch!
But earlier this month I discovered this surprising new notification on my Chromebook:
I knew there are some drawbacks to use ChromeOS, like the always connected mindset, but I was fine with it when I decided to buy it. However, I totally forgot to think about the support in the long time. My low power devices usually end up with a light Linux distribution to hold up for a couple of years more but Chromebook are kind of different from other PCs. They do not have a standard BIOS / UEFI or the usual keyboard layout, a dedicated search touch and no F1-F12 keys but navigation, media and backlight controls instead. Hopefully, there is some good resources available to help you with this kind of issues:
- Arch Linux wiki: A detailed overview of everything to know in order to install Linux on your Chromebook. A must read!
- ChromeOS documentation: Helpful to get details about your device hardware and codename.
- Firmware flashing tool: A well polished script to help you to flash alternative firmwares in order to boot anything else than ChromeOS. As John Lewis’ work on Chromebook is discontinued, it seems the right way to do it now.
After reading a lot of documentation, I start by flashing an alternative firmware to the RW_LEGACY firmware region. It is a dedicated writable part of the ChromeOS firmware to let user install a custom boot loader. This means recent Chromebooks are designed to let users install and use the operating system they want: good point for Google! Using the flashing tool is really easy and safe as you can’t brick your device by flashing firmware in the RW_LEGACY region.
Once done, you are able to boot on legacy boot mode using ctrl+l at boot time. Then it boots to the newly flashed firmware which can boot to the hard-drive or a USB stick. I setup an Ubuntu with XFCE graphical environment, the one I use with crouton, as a live USB and boot it up. Sadly, the default Ubuntu could not handle all the specific hardware. From here, you have two options: you could spend time playing with custom kernels, alsa settings, keyboard layouts, etc… or you could just use the dedicated Linux distribution: GalliumOS. It is based on XUbuntu and dedicated to ChromeOS hardware support. As far as I tried, I can’t find any driver issue with this OS:
- Keyboard works really well. You could even choose the modifier key for function keys. As I use French bépo keyboard which uses alt-gr modifier to type characters like brackets, I setup the search key as modifier instead,
- Backlight and media controls work well,
- Battery level and charge status are detected,
- Touchpad gestures work, even tap to click is enabled by default,
- WiFi, bluetooth and audio also work out-of-the-box! 👏
After installing GalliumOS to the flash drive, I pay attention to some details of the Arc Linux documentation. One of the Chromebook firmware flag needed to enable legacy boot (ie boot another OS) is reset if the battery is fully discharged (or disconnected but it is not removable on my device). So if you totally replace ChromeOS and your battery runs out of power, you won’t be able to boot to any shell to restore this flag and get your system back. You have to write this flag permanently to the firmware by removing the write protection first.
The write protection is a hardware security to prevent the firmware and the boot sequence to be altered. Doing so, you are sure your bootloader and operating system are signed and secure, or at least are the ones which are expected to boot. It is a good idea but hardware protections often require hardware modifications to bypass so I had to open the case and remove the write protection screw from the motherboard.
The ASUS C300 is really easy to unmont and there is few good teardown guides like the iFixit and Ryan Matthews’ one. There is some standard Phillips screws in the back cover and plastic clips that keep the keyboard part from the back cover part together. Sadly, even using my beloved plastic openers and a soft plastic card, I don’t succeed to open it without breaking few clips. I guess it is fine for a 5 years old not actively cooled plastic clips to break. Once the keyboard removed, I easily remove the big write protection screw.
I boot up without mounting the case back to permanently set the right firmware flag and test if every hardware part is still working. There is some weak ribbon cables between the motherboard and me and I want to be sure nothing was damaged before getting clips back together.
Eleven screws later, the Chromebook looks as good as before: you can’t tell the clips were broken. The new operating system is working flawlessly for few days now and I am happy to to know I could spend few more years with a safe and up-to-date Chromebook. The only question now is: what could I do of the write protection screw now?