A Look Inside the Asus C300 Chromebook

Quick image tour of the inside, plus help with running Linux

I bought the Asus C300 Chromebook last summer because it's a low–power, long–lasting, lightweight laptop that I can throw in a small backpack and carry around all day. But as a Linux/BSD user and someone who doesn't have Internet access during trips, I didn't buy this machine to run Chrome OS. Thanks to the work of John Lewis last year, the C300 can (more easily) be modified to run a community Linux distribution.

Because running Linux on the newer Baytrail Chromebooks is relatively bleeding edge, I wanted to put some documentation on the web. So when I cracked open the case to remove the write–protect screw, I took the camera with me. Below, I've picked out the interesting pictures for someone who wants to look inside. I've also quickly explained why we need John Lewis's alternative firmware, how to use it, and where to get it. Then at the end I have a short list of issues/fixes you'll like to know about.

My particular model is the C300MA-DH02, with 4GB RAM and 16GB eMMC. I have not tested other models, including the newer C300SA models.

Contents

Opening the Case

The top half (where the keyboard and trackpad are housed) is mounted to the bottom half by a number of screws and internal plastic retaining clips. The screws are removed from the bottom with a phillips head screw driver. The clips are freed by wiggling a flat thin object between the top/bottom halves.

The retaining clips are fragile, and I broke about three of ten. I had to reopen the case to remove the broken clips, because they were rolling around inside.

In order to move the top half of the case away, the keyboard and touchpad ribbons can be detached from the motherboard. I wouldn't recommend removing any ribbons though, because these connections are fragile. For example, if you're removing the write–protect screw, that can be done without detaching any ribbons.

Motherboard

The motherboard is about 35% the size of the case, which is less surprising after seeing how large the battery is. I'm assuming the CPU is underneath the largest metallic cover. There is no fan.

Peripherals

Besides the motherboard, two additional circuit boards are visible. One board houses external I/O ports on the right side of the case. The other board houses connectors for the keyboard and trackpad.

The wireless interface is a separate card located between the motherboard and the I/O board.

The battery and its housing are about 40% the size of the case. The combination of a high–capacity battery and a low–power processor gives a long endurance without AC power.

The mounting plate for the screen hinge is large compared to other laptops I've seen. This makes the hinge more resistant to coming loose.

Write-Protect Screw

The firmware write–protect screw is on the motherboard, near the card reader and USB port. There is a white triangle next to the hole.

The screw has a large, flat, silver, head.

Firmware

The C300 ships with Coreboot and U-Boot configured with verified boot. If you want to boot an OS besides Chrome, it's a lot of extra work to use Coreboot/U-Boot as is, because the kernel has to be re–signed every time it is changed. The easier alternative is SeaBIOS, which boots from a disk just like a conventional PC BIOS.

Lucky for us, in mid 2015, John Lewis released firmware builds with SeaBIOS payloads for the Baytrail Chromebooks (including the C300). I've linked to his site below. Please do your homework and read everything there before using, because there are some issues. I've also mirrored the necessary files on this site in case other sources become unavailable.

Flash the firmware in three "easy" steps:

  1. Remove the write–protect screw
  2. Enable Chrome OS Developer Mode
  3. Run the John Lewis firmware script

Realize that by opening the case and writing the firmware, you are certainly voiding the warranty.

Bugs/Issues and Other Notes

Updated 14 July 2016

Can't Boot After Removing the Screw

After I removed the firmware write–protect screw, my C300 wouldn't boot. I walked around for a half hour in sadness, convinced that I damaged something. Then on a whim, I found the battery power connector and unplugged it. When I plugged it back in, the laptop booted just fine.

When this happens to you, don't be scared until after replugging the battery doesn't work.

Kernel Sound Support

Sound generally works with Linux 4.x kernels, with some exceptions.

Early versions did not support sound. The first time I confirmed working sound was with Linux 4.1.4.

Newer 4.5 and 4.6 kernels may not support sound. Current Arch Linux kernels break sound, and there is a bug report here. The consensus seems to be that the kernel can be compiled differently to fix the issue for affected users, but developers are waiting for a proper fix that is best for all users. As a workaround for Arch Linux, I'm using the linux-lts package, which should continue to work until the version gets bumped passed 4.4. Another workaround would be to compile your own kernel, but that's not nearly as easy.

Firmware Support

Early versions of John Lewis's firmware build didn't recognize the internal eMMC (flash storage) or SD cards. My C300MA works fine now, but it sounds like there are similar problems with the newer C300SA models.

Unmuting Sound with ALSA

Although sound generally works with Linux 4.x kernels, it may be muted by default. There are two sound channels to be unmuted in ALSA, one for each speaker. These are the names I see in alsamixer:

  1. Left Speaker Mixer Left DAC
  2. Right Speaker Mixer Right DAC

After unmuting those, adjust the volume using the channel called "Speaker." I'm scared to go above 50% because of how loud it gets.

There are other similarly named channels that can be unmuted for the headphone jack.

Tap to Click in GNOME

After upgrading my Arch Linux system one day, tap to click stopped working. The menu option actually disappeared from the touchpad settings in GNOME. This may be a problem that affects all graphical environments, or it may be a problem with GNOME. As a workaround, running the following command enables tap to click for me:

$ synclient TapButton1=1 TapButton2=2 TapButton3=3

Kernel/Distro Support

I've only tested Arch Linux, which runs bleeding edge software and uses Linux 4.x kernels. It is known that Linux 3.x kernels don't support the C300 hardare like 4.x kernels do, examples being the touchpad and sound.

I have no information on BSD support.