Update (08/15/2020): The CB3-431 described in this post is the one released around 2016. Acer is still selling Chromebooks under model code CB3-431. But I’m not sure if the one Acer is selling now is the same as the one in this post.
Update (10/11/2018): It seems the current official linux
kernel (4.18.12-arch1-1) works fine now. Now I always boot into the official kernel, instead of the linux-galliumos
kernel. And I haven’t encountered any problem so far.
Get tired of using Crouton and chroot
? Can’t stand Ubuntu and low-performance & fake X windows anymore? Try turning your Acer Chromebook 14 (CB3-431) into an Arch Linux machine!
This post collects the required information from the internet and describes a procedure that worked on my machine. The majority of the procedure are coming from Arch Linux’s wiki:
Though the information in the WiKi pages is out of date to some degree, they are still good references.
Note:
- An external keyboard is required because the internal one does not work out of the box at the beginning. Either a USB keyboard or a wireless one with a dongle works. A Bluetooth keyboard, however, may not work.
- I use Arch Linux only, so I chose the UEFI way and completely wiped out Chrome OS. For dual booting, those who are interested may need to do their own googling and cannot simply follow this post.
- Prepare a bootable Arch Linux installation USB stick in advance. The one I am using is the 2018.03.01 release, which has kernel v4.14.6.
- A knowledge of how to do regular Arch Linux installation on regular laptops and desktops is required because I am not going to explain that here.
- I am no computer engineer nor OS engineer, so many technical terms may not be correct in this post. Corrections are welcome.
Disclaimer: The procedure described in this post includes practices that are not encouraged by Acer. It also uses an executable shell script from a third-party organization. So please be aware of the risk involved. If your Chromebook turns into a brick, I am not going to be responsible for that.
1. Turn the hard write-protection off
This needs small-size screwdrivers.
- Loosen the screws on the back of the machine and remove the back panel.
- There is a screw at the center after removing the back panel. This screw is obviously larger than others and is next to a black ribbon cable. Remove it. (Keep the screw properly in case you want to re-enable the hard write-protection in the future.)
- Put the back panel back.
For more details, see this instruction.
2. Turn the soft write-protection off
See this for more details. I believe most readers of this post have already been using the developer mode for some reasons and know what these are. The following is a brief procedure:
- Enable the developer mode.
- Log in to a superuser shell.
- Disable the soft write-protection:
# flashrom --wp-disable
.
3. Use MrChromebox’s firmware utility script to install full UEFI firmware.
In a superuser shell, run the shell script. After getting into the main menu, first select option 4: Set Boot Options. And in the child menu, select 1. This allows the system directly go into the boot menu without you pressing any key (such as ctrl+l
).
Next, when back to the main menu, select option 3: Install/Update Full ROM Firmware. Making a backup of original stock firmware is optional.
4. Reboot and install Arch Linux as usual
Insert Arch Linux USB & the external keyboard, and then reboot. The machine should directly go to the bootloader of the bootable Arch Linux USB. From this point, Arch Linux can be installed as usual. Nothing different than regular installation. However, do make sure that UEFI mode is in use.
Regarding the bootloader, I am using systemd-boot
. Grub is more popular among those who install Linux on a Chromebook.
5. Replace the original Linux kernel with the one from Gallium OS (note: see Update 1)
After installation, install linux-galliumos
from AUR.
Remember to let the bootloader boot into Gallium OS’s kernel afterward, instead of the original one. For example, if using systemd-boot
, either create a new boot entry or modify an old one with the following option: linux /vmlinuz-linux-galliumos
.
Some notes:
- Avoid using
yaourt
or similar utilities to automatically build and installlinux-galliumos
. At least not with the default configuration of these utilities. Withyaourt
and default configuration, for example, it will try to download and build the package in/tmp
, which consumes the memory. However, there is only about 4GB of memory on CB3-431, so usingyaourt
will run out of the memory and crash if there is no swap space. Even if with enough swap space, it’s still not encouraged because things will get slowed down when swap is involved. The simplest solution is just to build the package manually at the places that are not using memory. - To accelerate the building process of this package, it is better to build the package on other Arch Linux machines that have more CPU cores. And then copy the resulting
*.pkg.tar.xz
tarball back and install it. Don’t forget to set theMAKEFLAGS
variable in/etc/makepkg.conf
to use more cores, and remember not to use any machine specific optimization compilation flags.
As for the original kernel, it is optional to keep them. I am not sure when the official kernel will support Braswell architecture. I do not even know if this support is on the schedule.
After booting with Gallium OS’s kernel, the internal keyboard should work out of the box.
6. Fix sound with Gallium OS patches
Install PulseAudio as usual. And then install galliumos-braswell-config from AUR. The --force
flag may be required in the pacman
command to overwrite some files owned by PulseAudio.
Because galliumos-braswell-config
overwrites some files also owed by PulseAudio, when upgrading system packages in the future, pacman
may complain that some files are owned by both the two packages. I believe this complaining is normal due to it’s true.
7. Others
We are free to do anything we want from this point. However, do remember there is only about 32GB or even less space on the MMC disk of CB3-431, and about 4GB memory. So choose what you are going to install wisely.
Also, here are two extra settings that are not necessary:
6-1. Install xkeyboard-config-chromebook from AUR.
I am not sure how this changes the use of the internal keyboard. I just found it from Arch Linux’s wiki page and thought it would not do any harm, so I installed it. But I did not feel any difference.
6-2. Touchpad
The touchpad works out of the box after using Gallium OS’s kernel. The driver used by default is libinput
, and it works fine. I did not try xf86-input-synaptics
. I did two extra settings:
- As suggested by Arch Linux’s wiki, I put some settings in
/etc/udev/hwdb.d/99-touchpad-pressure.hwdb
:
libinput:name:*Elan Touchpad:dmi:*svnGOOGLE:*pnEdgar*
LIBINPUT_ATTR_PRESSURE_RANGE=1:15
But to be honest, I do not know what this is doing.
- To have the same touchpad experience as in original Chrome OS, I have the following settings to the touchpad in X environments:
cat /etc/X11/xorg.conf.d/30-touchpad.conf
---------------------------------------------------------
Section "InputClass"
Identifier "Elan Touchpad"
Driver "libinput"
Option "NaturalScrolling" "true"
Option "Tapping" "true"
Option "MiddleEmulation" "true"
Option "TappingButtonMap" "lrm"
Option "TappingDrag" "true"
EndSection
So tapping and scrolling experience became the same as they were in the original Chrome OS.
7 Comments
Hi ! I use also the acer chromebook 14 with Arch linux but if i test the 4.18.12-arch1-1 kernel the keyboard doesn’t work and also with the newest 4.19.5 the keyboard not work 🙁 ?
Hi Chris, right now I’m using 4.19.8 kernel without any issue. With the official kernel, I do occasionally encounter problems with the touchpad (it stops working randomly), but never had problems with the keyboard.
Hi PY Chuang, Your guide inspired me to try Arch for the first time! I just installed it in my Chromebook, and just have XFCE working and almost everything working.
I am wondering about something, did your screen brightness keys work? I am using the xkeyboard configuration, and all keys work, except screen brightness.
Congratulations, @gmlupatelli! My screen brightness keys work fine. I don’t know about XFCE, but I use i3-wm so I have to use `xbacklight` (https://wiki.archlinux.org/index.php/Backlight#xbacklight) to control the screen brightness. And the screen brightness keys on the keyboard are actually just shortcuts of the `xbacklight` command. For example, in my i3-wm configuration, I have
“`
bindsym XF86MonBrightnessUp exec xbacklight -inc 5
bindsym XF86MonBrightnessDown exec xbacklight -dec 5
“`
And then the screen brightness keys work fine. Hopefully, this can give you some inspiration about solving the issue in XFCE.
Totally gave xbacklight + xbindkey did the trick: (https://wiki.archlinux.org/index.php/Xbindkeys)
Can this setup work for photo editing work locally?, I usually use darktable and am looking for a reasonable setup. I realize this HD is not large with RAM limitation. thanks,
I never tried photo editing. But I think the hardware of the CB3-431 Chromebook is way too inadequate for any tasks requiring computing power. After all, the original price of a CB3-431 is just about $200. And it’s a 2016 product.