Install OpenSUSE 13.2 on a Acer chromebook c720

After few days of internet digging and hours lost behind getting OpenSUSE 13.2 fully up and running on a chromebook c720, I thought that perhaps wrapping the knowledge all together in a single post might actually going to help someone else who is on the same boat.

In order to have the c720 to boot up another operating system you will need to put it in developer mode by doing so.

  1. Turn off your Chromebook.

  2. Hold Esc and Refresh and tap the Power button

  3. Once in the recovery screen, press Ctrl+d and then press Enter

  4. The system will now reboot in developer mode and all your data will be erased

Now for the sake of getting rid of the boring ChromeOS Warning screen and to be able to get full ACPI working on OpenSUSE you must remove the write protect screw so that we can flash the latest custom Coreboot ROM made by John Lewis which removes the ChromeOS Warning screen, add some patches that lets OpenSUSE sleep and resume, essentially turns your chromebook into a standard laptop.

  1. The screw you will need to remove is the number 7 on the picture below (needless to say by doing this your warranty will be voided).
    http://www.chromium.org/_/rsrc/1381990807648/chromium-os/developer-information-for-chrome-os-devices/acer-c720-chromebook/c720-chromebook-annotated-innards.png

  2. Once that’s done, boot the chromebook back into ChromeOS

  3. Press Ctrl + alt + F2 to open up a shell

  4. At the ChromeOS login prompt, type chronos and hit Enter

  5. Become superuser typing sudo bash

  6. custom coreboot rom flashing steps

cd; rm -f getnflash_johnlewis_rom.sh; curl -k -L -O https://johnlewis.ie/getnflash_johnlewis_rom.sh; sudo bash getnflash_johnlewis_rom.sh

For more information regarding what the script does, please allow yourself some time to read here https://johnlewis.ie/custom-chromebook-firmware/rom-download/ and make sure you donate John few bucks once all of this will be done and you will have your fully working OpenSUSE distro on your chromebook c720. Without John’s work we wouldn’t have gotten anywhere.

Now, assuming you have read the link I gave you before and that all went right, I suggest you to store somewhere the backup of the dump of the original coreboot firmware, just in the case one day you will want to restore it to factory for whatever reason.

  1. Take a deep breath and reboot.

  2. Time to get our OpenSUSE usb flash install ready. Many ways you can do this, either use dd if you are on linux, bsd, Mac, cygwin, while if you are on Windows you will need to use a tool that prepares the flash usb installation for you.

On linux https://en.opensuse.org/SDB:Live_USB_stick#Using_commandline_tools

On Windows http://www.ubuntu.com/download/desktop/create-a-usb-stick-on-windows

  1. Once your USB install drive is done, all you need to do is stick it in, turn on the chromebook and immediately press ESC, chose to boot from the USB.

  2. At this point in order to proceed with the installation you will need a external usb keyboard as well as a usb mouse. Don’t worry we are going to make them working once the installation is completed.

As far as I have understood there seems to be a bug with SeaBios and the OpenSUSE installation module detection that delays the actual installation prompt of about 30 minutes. Yes I am serious, I am looking to strain this out, but as of now, go take a coffee and return in 30 minutes to proceed with the installation.

Upon installation completed, you will need to download and install the latest available kernel from the OpenSUSE stable branch, this will make our keyboard, touchpad and sound to work properly, as well as resume and suspension.

  1. Download it from here http://download.opensuse.org/repositories/Kernel:/stable/standard/x86_64

  2. Install it sudo zypper update

sudo zypper install kernel-desktop-3.18.1-1.1.g5f2f35e.x86_64.rpm

  1. Let’s take care of suspension now sudo nano /usr/lib/systemd/system-sleep/cros-sound-suspend.sh

#!/bin/bash


case $1/$2 in
  pre/*)
    # Unbind ehci for preventing error 
    echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/unbind
    # Unbind snd_hda_intel for sound
    echo -n "0000:00:1b.0" | tee /sys/bus/pci/drivers/snd_hda_intel/unbind
    echo -n "0000:00:03.0" | tee /sys/bus/pci/drivers/snd_hda_intel/unbind
    ;;
  post/*)
    # Bind ehci for preventing error 
    echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/bind
    # bind snd_hda_intel for sound
    echo -n "0000:00:1b.0" | tee /sys/bus/pci/drivers/snd_hda_intel/bind
    echo -n "0000:00:03.0" | tee /sys/bus/pci/drivers/snd_hda_intel/bind
    ;;
esac

  1. sudo chmod +x /usr/lib/systemd/system-sleep/cros-sound-suspend.sh

  2. sudo nano /etc/default/grub

and add to GRUB_CMDLINE_LINUX_DEFAULT


i915.modeset=1 tpm_tis.interrupts=0

  1. sudo grub2-mkconfig -o /boot/grub2/grub.cfg

  2. Now we need to address the touchpad sensitivity: sudo nano /usr/share/X11/xorg.conf.d/50-synaptics.conf


Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
        Option "MaxTapMove" "20"
        Option "MaxTapTime" "140"
        Option "ClickTime" "5"
        Option "FingerHigh" "12"
        Option "FingerLow" "10"
        Option "LockedDrags" "true"
        Option "LockedDragTimeout" "100"
        Option "ClickFinger1" "1"
        Option "ClickFinger2" "3"
        Option "ClickFinger3" "2"
        Option "SingleTapTimeout" "140"
EndSection

  1. To Improve WLAN and BT performance sudo nano /etc/modprobe.d/ath9k.conf

options ath9k btcoex_enable=1 ps_enable=1 bt_ant_diversity=1

  1. To Fix the Hotkeys we will need to add the X11 utils repo

sudo zypper ar -f http://download.opensuse.org/repositories/X11:/Utilities/openSUSE_13.2/X11:Utilities.repo

sudo zypper install xbindkeys

  1. nano ~/.xbindkeysrc

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


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


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


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


# on ChromeBook, it "Enter Overview mode, which shows all windows 
(F5)", see also 
https://support.google.com/chromebook/answer/1047364?hl
# here it work at KDE, it "Switch to next focused window", see 
also http://community.linuxmint.com/tutorial/view/47
#Switch Window
"xvkbd -xsendevent -text "\A	""
    m:0x0 + c:71
    F5 


"xbacklight -dec 10"
    m:0x0 + c:72
    F6
"xbacklight -inc 10"
    m:0x0 + c:73
    F7
"amixer set Master toggle"
    m:0x0 + c:74
    F8
"amixer set Master 10%- unmute"
    m:0x0 + c:75
    F9
"amixer set Master 10%+ unmute"
    m:0x0 + c:76
    F10
"xvkbd -xsendevent -text '\[Delete]'"
Alt + BackSpace
"xvkbd -xsendevent -text '\[End]'"
Alt + Right
"xvkbd -xsendevent -text '\[Home]'"
Alt + Left
"xvkbd -xsendevent -text '\[Page_Down]'"
Alt + Down
"xvkbd -xsendevent -text '\[Page_Up]'"
Alt + Up

  1. In order for the hotkeys functions to work you will now need to download and install xbacklight, xvkbd and amixer

http://software.opensuse.org/package/xbacklight
https://software.opensuse.org/package/xvkbd

  1. KDE will execute it after starting nano .kde4/Autostart/xbindkeys.sh

#!/bin/bash
xbindkeys &

chmod +x .kde4/Autostart/xbindkeys.sh

  1. Set the default sound card model

sudo nano /etc/modprobe.d/50-alsa.conf


options snd_hda_intel index=1 model=alc283-dac-wcaps

  1. Fix sound not working after resume

sudo nano /etc/pm/sleep.d/soundcard.sh


#!/bin/bash 
case "$1" in
    hibernate|suspend)
        sudo -u $USER alsactl store --info --text "save soundcard state on suspending"
        ;;
    thaw|resume)
        sudo -u $USER alsactl restore --info --text "resume soundcard state"
        ;;
esac

**sudo chmod a+x /etc/pm/sleep.d/soundcard.sh
**
Reboot and happy OpenSUSE

To do:

**Haswell GPU hang kernel patch and graphic performance improvements (currently testing it on 3.18.1) *

*Function Keys emulation

*You name it

Just realised there is a typo with the step 28. Correction is here. Mods feel free to appy the correction on the first thread and remove this one.


#!/bin/bash 
case "$1" in
    hibernate|suspend)
        sudo -u $USER alsactl store --info --text "save soundcard state on suspending"
        ;;
    thaw|resume)
        sudo -u $USER alsactl restore --info --text "resume soundcard state"
        ;;
esac

When a large-scale install like this is offered,
Although it can be presented as a manual cookbook like this,

If time is available, I’d love to see it alternatively presented as a scripted install if it can’t be reasonably built on Open Build.

I first came across this approach when I couldn’t find a way to build Graphite on any distro (including openSUSE). The problem is in that case there have been many major code changes over the past couple years which have pretty much left packaging in the dust (ie Nothing works unless you install on a very old system). Documentation is incomplete and typically specific to a single distro (which is still challenging).

After weeks of trying everything I could find in any distro I could find that was released within the past couple years, I finally came across this project
https://github.com/gdbtek/setup-graphite

It’s very cool.
Scripts an entire and very complicated installation successfully(on Ubuntu).
Awhile back I spent some time but am only partly through porting that installation script to openSUSE (it’s that big and complex). But, it does provide the framework and flow for doing this kind of thing. This was also the inspiration for my work in creating modified scripts installing Oracle JDK 1.7 in a few seconds (which ordinarily would take over a half hour if not many hours executing the hundreds of commands one at a time in the Java SDB and also made several improvements).

If someone would like to build such a script for this Chromebook install (or any other complex setup), I’d be willing to share(PM me) some of the insights and incomplete work I’ve done on building a graphite server so that the installation is typically a tiny fraction of the time done manually.

TSU

Initially I have been thinking of putting together a installation script very much like the ArchLinux PKGBUILD, though I am currently wrapped up into a major project and I have just sold my c720 yesterday, so I doubt I will be continuing any sort of support by my side.

Anyone is more than welcome to come along and take it over.

Regards

I was able to get this to work with Tumbleweed on my Acer C720.

The hotkey binding part didn’t work. I assume it was becuase I skipped the one part that said it was for KDE to work and figured gnome wouldn’t need it.

The biggest thing I found was that you NEED the John Lewis flash to modify the seabios and you can do it long after you have already set flags to enable it, USB booting, and permenant seabios bootup.

I did this full procedure becuse I was having a suspend / resume problem that I could not solve with any distro on the Chromebook. It now works great after a few tests.

If there can be a Tumbleweed mod or version of it that would be great too. I had to remove the 13.2 repos to install the few things when done.

After a little cleaning up I really think this should be moved to the official How To section. It helped me a lot.

I made the modification (which should appear on the WEB side of our forum). Hopefully my copy and paste is correct.

Hum, not sure whether this thread is in fact dead and should be locked whatever, but in case someone is still updating this, simple elementary question…
is this all Acer c720 specific or is there any chance to use some of it for another (Acer) chromebook?

Thank you in advance for any suggestion.
c.bucher