Pre-built firmware

These firmware builds are currently experimental and don’t work perfectly. There are issues with Windows compatibility and suspend, the latter which is being worked on, the former which will probably never be right.

Update – 17/09/2013 – It has come to my attention that some people are not reading through the entire page, and are blindly copying and pasting commands in. Those who do so are risking making costly mistakes. In future I may refuse to help people who are not willing to put the effort in, or at the very least reply in terse, monosyllabic grunts, in keeping with the level of effort I’m feeling from any given user at any given time. It is important that you understand I am not obligated to produce these builds, or support them, and indeed it is something that the Google/coreboot employees themselves are loath to do, which is why you haven’t seen any publicly available coreboot Chromebook builds prior to this.

This page contains coreboot firmware builds for some (currently just the Acer C7, Samsung Series 5 550, and HP Pavilion 14) Intel based Chromebooks.

Why coreboot on a Chromebook?

coreboot frees your Chromebook. It allows your Chromebook to act  in a similar way to a standard laptop, so you can natively install any Linux distro with a new enough kernel (greater than 3.8 for decent hardware support), but not currently Windows because of ACPI incompatibilities and probable non-existent drivers. It also allows you to enable the CPU hardware VT extensions available in many Intel based Chromebooks, so you can run full virtualisation solutions like KVM. So, if you really  need Windows you’ll have to console yourself with a KVM virtual machine.

What’s involved in flashing coreboot onto my Chromebook?

First of all you need to get a copy of your existing firmware using Flashrom, and be prepared that you might not be able to go completely back – I thought I had made a good copy of mine and found the Management Engine was damaged, causing my Chromebook to shutdown every 30 mins. If you talk very nicely to Ron Minnich he might send you a known good firmware in this eventuality. According to information provided by Barry Schultz, this is because the Chromebook won’t allow the Management Engine binary to be read (it will write 0xff to the ME area of the firmware) unless hardware write protect is already disabled. So, do not attempt to copy your existing firmware until you  have the jumper enabled (and therefore hardware write-protect disabled). It’s also worth noting that leaving the jumper  on while the Chromebook is booting will make it act like a brick with an upstream coreboot build such as mine! So, disconnect the jumper after one boot if you want to be able to use your Chromebook.

Then you need to disable the write-protect by enabling a jumper (located somewhere on the main board). See http://www.coreboot.org/Chromebooks and http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/ for information on same.

Once you have flashed you will need to install your own  Linux distro. I have not tried the latter, so I am unsure of any driver issues there may be (like a driver for the relatively new Cyapa touchpads which come with Chromebooks).

What are the caveats?

  • If something goes wrong you will brick your device, requiring  a Bus Pirate, Bus Pirate probe cable, and Pomona 5250 SOIC clip to externally flash the Winbond SPI chip from another machine.
  • Currently, I don’t know how to run ChromeOS simultaneously with Linux using this firmware, and I have no interest in finding out how.
  • If you power off and switch back on the device quickly you may find the touchpad doesn’t work. This seems to be the case for both the C7 and the 550. To be assured of working trackpad, switch off for a number of seconds before switching on again.
  • There is a 10 second delay on initial boot, and a 5 second delay on every subsequent cold boot, due to issues between coreboot and the latest available system-agent binary.

Current builds for the Samsung Series 5 550 Chromebook.

Make sure you check the md5sum is correct after downloading!

  • http://johnlewis.ie/coreboot.rom
  • md5sum: 64a1ed35d9e37e022ae817268ad3cea9
  • Status: tested and works!
  • Changes from previous build: This is the initial build with a SeaBIOS payload. The boot menu can be accessed by pressing escape.
  • http://johnlewis.ie/coreboot-550-02092013.rom
  • md5sum: 3601853c2aa8c7844ddc858091669a37
  • Status: Tested and suspend is broken
  • Changes from previous build: Contains Grub2 as a payload which scans for and loads the first  Grub2 config directly from the disk. The Grub2 payload, in turn, also contains a SeaBIOS payload, which you can access by pressing arrow down before the timeout. This offers the widest range of booting possibilities, IMO, and also makes booting off USB easier than just using the Grub2 payload on it’s own.
  • http://johnlewis.ie/coreboot-550-03092013.rom
  • md5sum: 534effd8e745adf3f2e72b81dca03574
  • Status: Tested and suspend mostly fixed, but get kernel oops on resume, system continues working normally. Referring to coreboot mailing list.
  • Changes since previous build: Removed “select CHROMEOS” from Kconfig to fix suspend. Donfig as for 02092013.
  • http://johnlewis.ie/coreboot-550-04092013.rom
  • md5sum: 7b57ccbeed113f0fa1e5aa0b10c1f4da
  • Status: Tested and working except for kernel error on resume.
  • Changes from previous build: SeaBIOS now default menu entry in Grub2 payload.
  • http://johnlewis.ie/coreboot-lumpy-seabios-good-22102013.rom
  • md5sum: 232ee4932d30697a6d069345cb40f78a
  • Status: Tested but will not boot Windows installer.
  • Changes from previous build: Updated naming scheme in order to be more descriptive. Compiled in Ubuntu 12.04 in attempt to make Windows installer boot. SeaBIOS only.

Current builds for the Acer C7 Chromebook.

Please note: unless otherwise stated, the below builds do not work for Ivybridge/1007u based C7′s (e.g. C710-2834). Make sure you check the md5sum is correct after downloading!

  • http://johnlewis.ie/coreboot-parrot-2.rom
  • md5sum: 1ed0d1bc0389137c5deeed1f6b8d1679
  • Status: Tested but suspend broken
  • Changes from previous build: This is an initial build which contains only a Grub2 payload as SeaBIOS is purported not to work. The payload scans the hard disk for Grub2 config files and loads the first one it finds. Booting from USB media is difficult with this setup.
  • http://johnlewis.ie/coreboot-c7-02092013.rom
  • md5sum: f4256c64a4455664b76e247fc57550de
  • Status: Tested but suspend is broken.
  • Changes from previous build: This build also contains SeaBIOS as a payload within Grub2, as per the second 550 build. See that build’s description for more information.
  • http://johnlewis.ie/coreboot-c7-03092013.rom
  • md5sum: 3432f71c8f61dd49cfc809575ca70a8a
  • Status: Tested and working but suspend possibly still broken, to be tested with Fedora 19 Live USB to isolate problem as that suspends successfully on the 550.
  • Changes from previous build: “Select CHROMEOS” removed from Kconfig.
  • http://johnlewis.ie/coreboot-c7-04092013.rom
  • md5sum: bc19fd2fbb933e4971ed6a71338732d2
  • Status: Tested. Can boot USB sticks. May need mem=1800m added to kernel command line to boot Linux in some configurations.
  • Changes from previous build: SeaBIOS is default Grub2 menu entry.
  • http://johnlewis.ie/coreboot-parrot-seabios-good-22102013.rom
  • md5sum: 2c2ad56912f110ecd031309a898346e6
  • Status: Tested. Fedora 19 Live USB appears to need mem=1800m to successfully boot. Can boot Windows installer. Should also work properly with suspend.
  • Changes from previous build: Compiled in Ubuntu 12.04 (which fixes Windows boot) and compiled without “select CHROMEOS” in src/mainboard/google/parrot/Kconfig (to fix suspend).
  • http://johnlewis.ie/coreboot-c710-1007u-170214.rom
  • md5sum: f96767ee83b4a03f5a643463c7c52c15
  • Status: Tested.
  • Changes from previous build: As the name suggests, this ROM is only meant for use on Celeron 1007u based C710′s. If you inadvertently flash it to a Celeron 847 based C710, your graphics will not work, and you will either have to try and reflash it blind, or do it over SSH.

Current builds for the HP Pavilion 14 Chromebook.

Current builds for the HP Chromebook 14.

  • http://johnlewis.ie/coreboot-falco-07042014.rom
  • md5sum: 40e58c7ee6bfd93b55edbc90a61fa3cd
  • Status: Tested it won’t brick your hardware. Power-saving is even more broken than with the stock rom – it reboots when you try to resume.
  • Changes from previous build: This is an initial build.

Current builds for the Acer C720.

Flashing the coreboot firmware.

Assuming you have already disabled the write-protect, as discussed above, you can write the firmware from ChromeOS in Crosh like so:

shell

 

sudo flashrom -w yourcorebootdownload.rom

You will get an error like so:

flashrom -w coreboot-parrot-1.rom flashrom v0.9.4 : b8267a8 : Jul 26 2013 19:16:20 UTC on Linux 3.8.11 (x86_64), built with libpci 3.1.10, GCC 4.7.x-google 20130114 (prerelease), little endianErasing and writing flash chip... spi_block_erase_20 failed during command execution at address 0x0Verifying flash... VERIFY FAILED at 0x00000062! Expected=0xff, Read=0x0b, failed byte count from 0x00000000-0x007fffff: 0x4Your flash chip is in an unknown state.Get help on IRC at <a href="http://irc.freenode.net/" rel="nofollow">irc.freenode.net</a> (channel #flashrom) ormail flashrom@flashrom.org with FAILED: your board name in the subject line!-------------------------------------------------------------------------------DO NOT REBOOT

If the codes aren’t identical, report here, otherwise reboot and you’ll be okay.

If you need to reflash you will probably find the version of Flashrom in your distro complains about locked ME regions. You can download my ChromiumOS build of Flashrom from http://johnlewis.ie/flashrom and use that. You will need to have libftdi installed, and you may also need to create a symbolic link with the library name the ChromiumOS version of Flashrom expects. For example, on Fedora 19 I did

sudo ln -sf /usr/lib64/libftdi.so.1 /usr/lib64/libftdi.so.1.20.0

You will need to run the file with a leading “./” in the directory you downloaded it to, to avoid invoking your distros version of Flashrom e.g.

./flashrom -w  yourreplacementcoreboot.rom

Disclaimer.

You bought it you broke it. YMMV. I cannot be held responsible for acts of imaginary gods, idiocy or people blindly following instructions without understanding the potential consequences. You have been warned …

Comments are locked. Questions can be asked, and potentially answered, on the coreboot on Chromebooks community on Google Plus – see https://plus.google.com/communities/112479827373921524726

12 thoughts on “Pre-built firmware”

  1. please, help me fix my chromebook. I was trying to install windows 7after flashing the bios. i followed all steps but i couldn’t boot in windows seven successfully. now my laptop has gone crazy because it is showing gnu grub version2.00 and i dont know what to do. please help.

  2. The laptop hasn’t gone crazy – you’ve either flashed the grub version of that ROM or you’ve inadvertently installed a Linux distro!

    What do you want to do with it? Flash another ROM that just has SeaBIOS?

  3. If you followed the instructions, you would have a backup of your original BIOS which you can flash back.

    Failing that, you can install one of Arnold The Bat’s Chromium builds and then use a script to upgrade it to straight ChromeOS. If ChromeOS support is missing from the ROM of mine you flashed, it will complain about an invalid hardware ID, and won’t update automatically, but other than that it works fine (I have done this myself).

    HTH.

  4. 1. Recent Chrome auto-updates now load a 64 bit kernel, and actually enable and provide bluetooth support previously absent. Machine is Acer C710-2847 with 4Gb ram and had the latest Google pushed update the last week of March 2014.

    2. The flashrom version downloaded with other firmware updates files for ChromeOS now reports itself to be: flashrom v0.9.4 :e545493: Dec 03 2013 UTC on Linux 3.11.0-19-generic (x86_64), built with libpci 3.1.10, GCC 4.8.x-google 20130905 (prerelease), little endian

    3. Perhaps because of this, when doing the CoreBoot flash of
    parrot-seabios-suspend-27101213.rom from inside ChromeOS, there were NO errors reported! It simply reported at the end: flash verified, SUCCESS. This was concerning, but I finally rebooted as there was little else I could do. It appeared to have worked.

    4. Initially, the machine booted, and a fresh Xubuntu iso was installed from USB without issue. However, after OS install, booting seemed flakey and would sometimes fail in seemingly random ways (kernel 3.11.0-19):
    -it would freeze as soon as CoreBoot tried to load grub.
    -grub would start, then it would freeze part way through.
    -boot would proceed, but a short burst of text display would blink on screen then vanish, and then it would freeze.
    -the ‘boxed’ grub boot menu would randomly appear even if not requested.
    -using the ‘boxed’ menu, either the default full boot selection would freeze, or the ‘safe mode’ selection would freeze. If one froze, then the other would likely work next time.
    -the grub ‘splash’ screen would sometimes not appear, or blink on briefly, and then the underlying text would display.
    - sometimes the ‘splash’ screen would appear, then freeze and the spinner would stop. (I finally did a grub change to not display splash in order to see more messages)
    -boot would proceed, but get partway through the long process startup list, then fail to start X, leaving a blank black screen but the F1-6 text consoles were up.
    - sometimes the displayed process list was shorter, sometimes longer. With spash, the time it was displayed would vary also.
    -boot would complete, but trackpad not working (known issue) Sometimes several machine shutdown/reboots were required even with several minutes of off time. Those restarts would also exhibit various behaviors listed above.
    -boot would complete and OS would work fine (except for SD card reader).
    Oddly, this condition was random and not consistently repeatable, but, also oddly, gradually after lots off booting, it appeared to get better. I did make several grub-updates to change delay times and get more visibility into how boot was progressing. It now seems to have decided to work pretty consistently as expected. For a while it did seem to be worse when a suspend had happened previously, but nothing seems consistently repeatable, and often several reboots were required before OS came up. Once running, the OS seems working (with the exception of the SD card slot).

    5. There are number of dmesg lines that indicate a possible issues during boot, but I don’t know just what they all really mean or if they are truly important.

    6. There are dmesg ACPI warnings about System IO conflicts
    and suggestions to not use the native driver.

    7. There are dmesg: [drm] messages:
    [drm] Wrong MCH_SSKPD value 0×16040307
    [drm] This can cause pipe underruns and display issues.
    [drm] Please upgrade bios to fix.

    7. As mentioned above, the SD card slot is now very unreliable, most often not seeing a card insertion, and spitting out a lot of console messages about waiting for interrupts, unable to read sectors, corrupt data, block errors, etc. Attempts to write to a recognized card generally results in trashed data being stored. The same cards would work OK in a USB card reader or in the slot Chrubuntu linux 2847 machine. Again some of the dmesg entries imply a memory assignment overlap. Could this be due to a bios memory initialization/assignment issue?

    8. With regard to boot being flakey with X, there’s dmesg entries that ‘host bridge window conflicts with Video ROM’…so again, a bios initialization issue?

    9. I tried re-flashing with a version you suggested to someone else on their blog, but which isn’t posted elsewhere dated 21040130-125427. That exhibited similar initial strangeness, but also calmed down after a time. It does seem less problematic.

    10. However, when trying to flash the later CoreBoot rom file, I was unable to use your flashrom that wants external libs. It complained it couldn’t find them, even though they were installed exactly where it was looking. I tried running the self-contained Google ChromOS flashrom from the previously archived updates files downloaded with chrome flash-updater , and it at least would read, so I tried the using it to write, and it worked and verified the flash as it had done under ChromOS.

    11. Other than the flakey boot, and non-functioning SD slot, all the other things I’ve tried, mostly various USB perpherals like TV tuner stick, external CD rom drive, Second Life game that pounds CPU and graphics, all seem fully functional.

    I’d love to enter a dialog with you about the issues above, and I’ll be happy to provide you with full dmesg and other log dumps if they will help. Just tell me what you’d like to see.
    I’d also be glad to help with the suspend testing you mentioned. I’m mostly a hardware guy, not a programmer, but if you tell me what you want to see or how to run a test, I’ll try to obtain results for you.

    Being this >< close to having everything working is really encouraging. I have 24 more of these machines to upgrade from Chrubuntu if we can solve the remaining issues.

  5. The absence of the flashing error is also caused by having recovered with a Bus Pirate (since this simultaneously bypasses and removes the overwrite protection until you reflash to stock).

    Proper suspend is being prevented by missing code in the upstream kernel/distro.

    I can neither confirm or deny if there are SD card problems with the ROM itself, since I generally don’t use them.

    It sounds to me like more of a hardware problem, have you tried loading a distro on one of the other C710′s you have? I’d also be keen to confirm that you verified the ISO file you installed with with it’s md5sum. Now, other people have reported issues with the track-pad not working at boot/after suspend, but over and above that you are the first out of many to have the booting issues.

    I’d also recommend Fedora, since it supports the 2nd generation Chromebooks quite a bit better than Ubuntu/Debian derivatives.

    Sorry if I missed something, your comment is a bit tl;dr.

  6. Some quick answers:
    The machine was new factory stock and the warranty seal was intact when I started. Chrubuntu was on it for a short time, but no rom changes. Undid developer mode back to plain Chrome before doing CoreBoot. That’s when the Google push update took it to 64 bit.

    It seems to be suspending ok: shut the lid, back alive with the screensaver password. Can move the mouse around, type, and launch progs that work. No obvious problems. These don’t normally run on batteries, so no info on battery life.

    Possible hardware problem was considered. But it worked fine as regular ChromeBook, and then 2 weeks as Chrubuntu before becoming a CoreBoot testbed. All hardware was functional, and booted both OS’s without issues. Card slot also worked.

    Other 24 machines all have Chrubuntu, but I’ve only tried Coreboot rom on one so far. Right now, others are in regular use, but when I can break one loose, I’ll try CoreBoot on it.

    Xubuntu USB iso and CoreBoot rom were checksumed OK. I learned long ago that few moments to check is way better than hours spent assuming that files were intact. :)

    I can try Fedora once I free up a box. Our application needs XFCE environment for its kiosk mode to lock them down in a semi-public setting. I’m not a fan of Ubuntu since they went off on the Unity tangent, but the easy install a year ago was Xubuntu with Chrubuntu method.

    I apologize for the long post before, but I wanted to get the salient observed details out for consideration.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

RHCE qualified sysadmin + coreboot on Chromebooks