Acer C720 Chromebook

From ArchWiki
Revision as of 03:45, 15 August 2014 by Masmullin (talk | contribs) (Touchscreen (C720P model))
Jump to: navigation, search

zh-cn:Acer C720 Chromebook

The Acer C720 Chromebook (and newer Chromebooks in general) features a "legacy boot" mode that makes it easy to boot Linux and other operating systems. The legacy boot mode is provided by the SeaBIOS payload of coreboot. SeaBIOS behaves like a traditional BIOS that boots into the MBR of a disk, and from there into your standard bootloaders like Syslinux and GRUB.


First enable legacy boot / SeaBIOS, this can either be done by enabling the pre-installed version of SeaBIOS or by installing a custom ROM. The pre-installed SeaBIOS route has the advantage of being officially implemented by Google whereas the custom ROM route has other advantages such as being more up-to-date, reducing the boot time, removing the Developer Mode screen and enabling VMX. After accessing SeaBIOS you will be able to install and boot Linux as you would on a traditional x86 BIOS system.

Note: If you intend to stay using pre-installed SeaBIOS route and think you won't appreciate having to press Ctrl + L every time you boot to reach SeaBIOS then you can set coreboot to boot to SeaBIOS by default so it isn't necessary to press Ctrl + L; this currently must be done inside of Chrome OS and requires removing the write-protect screw so if you would like to do this then it may be a good idea to remove the write-protect screw now so that you will not have to reinstall Chrome OS later with recovery install media. If you would like to do this now then you can do so by removing the bottom panel of the laptop by removing the 12 visible screws and another one underneath the warranty sticker, then separating the plastic starting at the back and finally completely removing the write-protect screw from the motherboard, which is labelled as #7 in this picture.

Enabling Developer Mode

Developer Mode is necessary to access the superuser shell inside Chrome OS; which is required to make the changes to the system to allow you to boot through SeaBIOS.

Warning: Enabling Developer Mode will wipe all of your data.

To enable Developer Mode:

  • Turn on the Chromebook.
  • Press and hold the Esc + F3 (Refresh) keys, then press the Power button. This enters Recovery Mode.
  • Press Ctrl + D (no prompt). It will ask you to confirm, then the system will revert its state and enable Developer Mode.
Note: Press Ctrl + D (or wait 30 seconds for the beep and boot) at the white boot splash screen to enter Chrome OS.

Accessing the superuser shell

After you have enabled Developer Mode you will need to access the superuser shell.; how you do this depends on whether you've configured Chrome OS or not.

Accessing the Superuser shell without Chrome OS configuration

If you haven't configured Chrome OS, just press Ctrl + Alt + F2 (F2 is the "forward" arrow on the top row, →), you'll see a login prompt.

  • Use chronos as the username, it should not prompt you for a password.
  • Become superuser with sudo bash.

Accessing the superuser shell with Chrome OS configuration

If you have configured Chrome OS already:

  • Open a crosh window with Ctrl + Alt + T.
  • Open a bash shell with the shell command.
  • Become superuser with sudo bash

Enabling SeaBIOS

You must now enable SeaBIOS. As mentioned earlier you can choose to either enable the pre-installed version of SeaBIOS or install a custom ROM.

Enabling the pre-installed version of SeaBIOS

This method will allow you to access the pre-installed version of SeaBIOS through the Developer Mode screen in coreboot.

  • Inside your superuser shell enter:
# crossystem dev_boot_usb=1 dev_boot_legacy=1
  • Reboot the machine.

You can now start SeaBIOS by pressing Ctrl + L at the white boot splash screen.

If you want to make SeaBIOS default, you must do the following:

Warning: If you do not remove the write-protect screw then your system will become corrupted and you will have to recover it. If you would like to remove the write-protect screw then you can do so by removing the bottom panel of the laptop by removing the 12 visible screws and another one underneath the warranty sticker, then separating the plastic starting at the back and finally completely removing the write-protect screw from the motherboard, which is labelled as #7 in this picture.
  • Inside your superuser shell enter:
# 0×489

Installing a custom ROM

Currently there are custom ROMs for Chromebooks provided by John Lewis. You can install the custom ROM for the C720 by installing dmidecode and then running following command:

# curl -k -L -O; sudo bash

More information about these custom ROMs and updates can be found in the coreboot on Chromebooks Google+ Community.

Installing Arch Linux

Create an Arch Linux Installer USB drive then plug the USB drive into the Chromebook and start SeaBIOS with Ctrl + L at the white boot splash screen. Press Esc to get a boot menu and select the number corresponding to your USB drive. The Arch Linux installer boot menu should appear. Follow your favorite installation guide.

A few installation notes:

  • For a 64-bit installation use the 2013.10.01 ISO and boot into the x86_64 installer with the mem=1536m kernel option. (You can download torrent on See the comments for HTTP direct download links as the torrent is nearly dead). Also, at this point, some of the PGP keys on the 2013.10.01 boot image have expired, you will need to update the package archlinux-keyring before running pacstrap (see source from forum here).
  • A fresh DOS partition table on the SSD with one bootable 16 GB root partition works. Note that this will wipe Chrome OS.
  • Choose GRUB as your boot loader for now instead of Syslinux.
  • After installing it's not Ctrl + D to boot your OS it's Ctrl + L (To save you hours figuring out why you can't boot)

64-bit installation with the newest 2014.07.03 ISO:

  • Create a new FAT32 partition on your USB drive e.g. with gparted and label it as ArchLinux.
Warning: Without the label it won't work
  • Mount the new partition (replace x with the correct letter as shown with sudo fdisk -l and username with your own username)
$ sudo mount /dev/sdx1 /mnt/ -o uid=username,gid=users
  • Install GRUB2 on the USB drive
$ sudo grub-install --no-floppy --root-directory=/mnt /dev/sdx
  • Create a new directory in /mnt/boot
$ mkdir /mnt/boot/archlinux-20140703-dual
  • Mount the archlinux-2014.07.03-dual.iso
$ mkdir ~/iso
$ sudo mount -o loop archlinux-2014.07.03-dual.iso ~/iso
  • Copy the mounted files to the usb drive
$ cp -r ~/iso/arch/* /mnt/boot/archlinux-20140703-dual
  • Create the grub.cfg file
menuentry "Arch Linux 64 Bit" {
 linux /boot/archlinux-20140703-dual/boot/x86_64/vmlinuz archisobasedir=/boot/archlinux-20140703-dual archisolabel=ArchLinux
 initrd /boot/archlinux-20140703-dual/boot/x86_64/archiso.img
  • With this method you can boot into the 64-installation directly without the mem=1536m kernel option and without the need to update the archlinux-keyring. It is not necessary anymore.

Xorg video driver

Use the xf86-video-intel driver.

$ sudo pacman -S xf86-video-intel

Touchpad kernel modules

Enabling the touchpad currently requires building a set of patched Haswell Chromebook kernel modules. Fortunately, ChrUbuntu provides a script for automatically building and installing these modules: A modified version for Arch Linux is available here:

Warning: Do not use It appears to be the most popular site but it is slow, full of adverts, formats the text badly (it will mess up your code) and many people can not even open the site due to aggressive spam filters.

If you are running this on a fresh install, you need to install the following packages before running the script.

$ pacman -S wget sudo patch make gcc
$ wget -O
$ chmod +x
$ ./


  • Edit the Xorg touchpad configuration file

Add the Xorg touchpad configuration below for better usability (increases touchpad sensitivity).

Section "InputClass" 
    Identifier      "touchpad peppy cyapa" 
    MatchIsTouchpad "on" 
    MatchDevicePath "/dev/input/event*" 
    MatchProduct    "cyapa" 
    Option          "FingerLow" "10" 
    Option          "FingerHigh" "10" 

If you want to remove the "right-click" behavior from the touchpad from the bottom right area (you can still right-click with two finger clicks), you should comment out the following section from /etc/X11/xorg.conf.d/50-synaptics.conf

#Section "InputClass"
#        Identifier "Default clickpad buttons"
#        MatchDriver "synaptics"
#        Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
#       To disable the bottom edge area so the buttons only work as buttons,
#       not for movement, set the AreaBottomEdge
#       Option "AreaBottomEdge" "82%"
  • Use a graphical tool

Synaptiks is a touchpad configuration and management tool for KDE. It provides a system settings module to configure basic and advanced features of the touchpad. Although it is said to be currently unmaintained and seems to crash under KDE 4.11, it works well with this Chromebook under KDE 4.12.2. Another untility, kcm_touchpad, does not work at all.

Reboot for the touchpad to become operational.

Touchscreen (C720P model)

If you're using a touchscreen-enabled model (such as the C720P), you may use a modified version of the previous script to install patched modules for the touchscreen as well.

It is available here: (tested with Linux 3.13). For kernel 3.12 or earlier, the earlier script can be found here. For kernel 3.14, a script can be found here.

$ wget -O && sed -i "s/\r//g"
$ chmod +x
$ ./

For kernel 3.16 the above script has moved to a GitHub repository. The script no longer uses the /tmp directory for downloading and compiling, so you'll have to clean up after using.

$ git clone
$ cd arch-c720p
$ sh ./

For the 3.15.7+ kernel, before running the script you must checkout the last 3.15.X revision via the command

$ git checkout 38a6d12ea7696fdbb9045faed68bdd404456002d

Power key and lid switch handling

Ignore using logind

Out of the box, systemd-logind will catch power key and lid switch events and handle them: it will shut down the Chromebook on a power key press, and a suspend on a lid close. However, this policy might be a bit harsh given that the power key is an ordinary key at the top right of the keyboard that might be pressed accidentally.

To configure logind to ignore power key presses and lid switches, add the lines to logind.conf below.


Then restart logind for the changes to take effect.

$ sudo systemctl restart systemd-logind

Power key and lid switch events will still be logged to journald by logind. See for additional handling options.

Fixing suspend

The following are instructions to fix the suspend functionality. There have been a few alternatives discussed and those may work better for some.

Create the following cros-acpi-wakeup.conf file.

w /proc/acpi/wakeup - - - - EHCI
w /proc/acpi/wakeup - - - - HDEF
w /proc/acpi/wakeup - - - - XHCI
w /proc/acpi/wakeup - - - - LID0
w /proc/acpi/wakeup - - - - TPAD
w /proc/acpi/wakeup - - - - TSCR

Then, create the following file. Only the EHCI binding/unbinding lines are listed below; see the alternatives linked above for additional sound suspend handling if you experience issues.

case $1/$2 in
    # Unbind ehci.
    echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/unbind
    # Bind ehci.
    echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/bind

Make sure to make the script executable: # chmod +x /usr/lib/systemd/system-sleep/ Then add the following kernel boot parameters. Different combinations have been mentioned, with tpm_tis.force=1 being the most important.

GRUB_CMDLINE_LINUX_DEFAULT="quiet add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic"

Then rebuild your grub config.

Improving WLAN and BT performance

The C720 comes with a AR9462 WLAN+BT chip. Both Bluetooth and WiFi can use 2.4 GHz, which can cause interference. You can enable Bluetooth coexistence to improve the performance of the card. Additionally, you can enable power savings and antennae diversity to reduce power usage and boost performance:

options ath9k btcoex_enable=1 ps_enable=1 bt_ant_diversity=1


The C720 has function keys with dedicated Chromebook shortcuts within Chrome OS. By default these work as regular function keys, but they can be mapped to match their appearance.

Sxhkd configuration

Below is an Sxhkd configuration file that specifies behavior similar to the shortcut defaults in Chrome OS. Besides the sxhkd daemon, this requires amixer, xorg-xbacklight, and xautomation.


  1. Web browser Back/Forward shortcuts


 xte 'keydown Alt_L' 'key {Left,Right}' 'keyup Alt_L'
  1. Web browser Refresh shortcut


 xte 'keydown Control_L' 'key r' 'keyup Control_L'
  1. Awesome WM maximize current window
  2. Adjust as necessary for different window managers


 xte 'keydown Super_L' 'key m' 'keyup Super_L'
  1. Awesome WM move one desktop right


 xte 'keydown Super_L' 'key Right' 'keyup Super_L'


 xbacklight -{dec,inc} 10


 amixer set Master toggle


 amixer set Master 10{-,+} unmute


Xbindkeys configuration

There is another way to configure hot keys using xbindkeys. Below is an xbindkeys configuration file that specifies behavior very similar to the shortcut defaults in Chrome OS. This requires amixer and xorg-xbacklight.Besides, xvkbd is needed for sending strings (key shortcuts) to focus windows. Some of the configuration comes from the thread vilefridge's xbindkeys configuration.


# Backward, Forward, Full Screen & Refresh is just for web browser
"xvkbd -xsendevent -text "\A\[Left]""
    m:0x0 + c:67

#Full Screen
"xvkbd -xsendevent -text "\[F11]""
    m:0x0 + c:70

"xvkbd -xsendevent -text "\A\[Right]""
    m:0x0 + c:68

"xvkbd -xsendevent -text "\Cr""
    m:0x0 + c:69

# on ChromeBook, it "Enter Overview mode, which shows all windows (F5)", see also
# here it work at KDE, it "Switch to next focused window", see also
#Switch Window
"xvkbd -xsendevent -text "\A\t""
    m:0x0 + c:71

#Backlight Down
"xbacklight -dec 5"
    m:0x0 + c:72

#Backlight Up
"xbacklight -inc 5"
    m:0x0 + c:73

"amixer set Master toggle"
    m:0x0 + c:74

#Decrease Volume
"amixer set Master 5- unmute"
    m:0x0 + c:75

#Increase Volume
"amixer set Master 5+ unmute"
    m:0x0 + c:76

# added Home, End, Pg Up, Pg Down, and Del keys using the Alt+arrow key combos
"xvkbd -xsendevent -text '\[Delete]'"
    m:0x8 + c:22
    Alt + BackSpace 

"xvkbd -xsendevent -text '\[End]'"
    m:0x8 + c:114
    Alt + Right 

"xvkbd -xsendevent -text '\[Home]'"
    m:0x8 + c:113
    Alt + Left 

#Page Down
"xvkbd -xsendevent -text '\[Page_Down]'"
    m:0x8 + c:116
    Alt + Down 

#Page Up
"xvkbd -xsendevent -text '\[Page_Up]'"
    m:0x8 + c:111
    Alt + Up 

# End of xbindkeys configuration

Once you're done configuring xbindkeys, edit your ~/.xinitrc and place


before the line that starts your window manager or DE.


Getting ALSA to work with the C720 is as simple as creating or editing your /etc/modprobe.d/alsa.conf and adding the line

options snd_hda_intel index=1

An alternate approach to getting ALSA to work is by creating a .asoundrc file and pasting in the following:

# Standard
pcm.!default {
  type hw
  card 1
  device 0

ctl.!default {
  type hw
  card 1

pcm_slave.slavej {
  pcm "hw:1"
  channels 2
  rate 44100

pcm.plugj {
  type plug
  slave slavej

#pcm.!default {
  #type hw
  #card 1
  #device 3

#ctl.!default {
  #type hw
  #card 0

Unresolved issues

  • The 64-bit installer in Arch Linux installation ISOs newer than 2013.10.01 causes an immediate system reset
  • Syslinux fails to set the bootable flag with syslinux-install_update -i -a -m. After setting the bootable flag manually in fdisk and installing Syslinux to the MBR with syslinux-install_update -i -m, SeaBIOS boots Syslinux, but Syslinux then complains about a missing OS. Use GRUB for now.

Discussion about Arch Linux on the Acer C720 Chromebook

Active discussion about installing Arch Linux on the Acer C720 Chromebook can be found in this Arch Linux Forums thread