ROM Download

Please note: I no longer maintain, provide, or support custom Chromebook firmware; this page is left here for archive purposes only.

This page contains a command to download and run a script, which will flash custom firmware with a SeaBIOS payload on approaching 40 models of Intel based Chromebook – allowing you to run an alternative OS such as Linux. The script will work with ChromeOS or pretty much any Linux distro (at least no one has told me otherwise).

There are 3 types of firmware mod – RW_LEGACY, BOOT_STUB, and Full ROM – not all Chromebooks work with each one:

  • RW_LEGACY modifies a 2MB section of the ROM leaving the stock functionality intact, including the scary developer screen, and will not brick your device. Some Chromebooks already come with a working RW_LEGACY slot, although many of them do not (non-functional keyboard on Panther, non-functional display on Auron_Yuna, or just plain missing, etc.). As well as fixing aforementioned bugs, updating the RW_LEGACY slot can enable further functionality such as booting from SD card/eMMC. So, even in the case of a functioning stock RW_LEGACY, it may be fortuitous to update.

  • BOOT_STUB modifies the last 1MB of the ROM, removing the scary developer screen, but also removes the ability to run ChromeOS natively, carrying a chance of bricking your device. This also leaves the “REFRESH + POWER” functionality of the stock ROM intact, meaning, when you press these keys, the device will immediately reboot and attempt to run ChromeOS Recovery (which isn’t there any more), and give you a blank screen. The only way to then stop it from attempting to run ChromeOS Recovery on every boot, is to take the device apart and disconnect the battery.

  • Full ROM, as the name suggests, is a complete ROM containing a coreboot build with a slice of SeaBIOS on top, and is the most risky. Again, this will remove the ability to run ChromeOS natively. Flashing one of these will wipe out your product data. In the case of Sandy/Ivybridge Chromebooks a full ROM enables hardware virtualisation extensions and suspend. Other models full ROM’s also probably contain idiosyncrasies that the stock firmware does not.

You need to be in dev mode and to have disabled write-protect by enabling a jumper/removing a screw (usually the latter, located somewhere on the main board). Disabling write-protect is not necessary when flashing RW_LEGACY unless you want to make the legacy slot default. See each respective supported Chromebook’s developer information page (if available) for info on opening your Chromebook up and disabling write-protect.

[TABLE=3]

Jenkins is now being used along with some scripts, to automate building, and to reduce chances of a brick from human error. Run the script like so, making sure you are only in Crosh shell *not* the *root* Crosh shell if running from ChromeOS:

cd;bash <(curl https://johnlewis.ie/flash_cb_fw.sh)

If for some reason you need to run an older build, you will have to flash it manually. See the ROM Archive.

Please note: I no longer maintain, provide, or support custom Chromebook firmware; this page is left here for archive purposes only.

Join the conversation

1295 Comments

  1. Is this of any help?

    chronos@localhost / $ ls -al
    total 72
    drwxr-xr-x 20 root root 4096 Jul 29 04:59 .
    drwxr-xr-x 20 root root 4096 Jul 29 04:59 ..
    drwxr-xr-x 2 root root 4096 Jul 29 04:17 bin
    drwxr-xr-x 2 root root 4096 Jul 29 04:17 debugd
    drwxr-xr-x 19 root root 3200 Aug 4 18:41 dev
    drwxr-xr-x 42 root root 4096 Jul 29 04:58 etc
    drwxr-xr-x 6 root root 4096 Jan 5 2014 home
    drwxr-xr-x 6 root root 4096 Jul 29 04:17 lib
    drwxr-xr-x 6 root root 4096 Jul 29 04:17 lib64
    drwx—— 2 root root 16384 Jul 29 04:14 lost+found
    drwxrwxrwt 4 root root 80 Aug 4 18:41 media
    drwxr-xr-x 3 root root 4096 Jul 29 04:14 mnt
    drwxr-xr-x 4 root root 4096 Jul 29 04:16 opt
    lrwxrwxrwx 1 root root 26 Jul 29 04:16 postinst -> usr/sbin/chromeos-postinst
    dr-xr-xr-x 136 root root 0 Aug 4 18:41 proc
    drwxr-xr-x 2 root root 4096 Jul 29 04:59 root
    drwxr-xr-x 2 root root 4096 Jul 29 04:18 sbin
    dr-xr-xr-x 12 root root 0 Aug 4 18:41 sys
    drwxrwxrwt 6 root root 1020 Aug 4 18:46 tmp
    drwxr-xr-x 10 root root 4096 Jul 29 04:15 usr
    drwxr-xr-x 11 root root 4096 Jan 5 2014 var

  2. OK I found the solution to the first problem here: http://stackoverflow.com/questions/22598123/error-installing-meteor-on-linux-x86-64-chrome-os

    Now when I run the script this is what I get:
    *** Downloading latest available custom ROM for Parrot ***

    –2014-08-04 19:46:01– https://johnlewis.ie/coreboot-parrot-seabios-310714.rom
    Resolving johnlewis.ie… 37.187.3.40
    Connecting to johnlewis.ie|37.187.3.40|:443… connected.
    HTTP request sent, awaiting response… 200 OK
    Length: 8388608 (8.0M) [text language=”/plain”][/text]
    coreboot-parrot-seabios-310714.rom: Read-only file system

    Cannot write to ‘coreboot-parrot-seabios-310714.rom’ (Success).
    md5sum: coreboot-parrot-seabios-310714.rom: No such file or directory

    *** For some reason download of coreboot-parrot-seabios-310714.rom failed. Please remove coreboot-parrot-seabios-310714.rom from the current directory and try again later ***

  3. Great success! From the shell I ran ‘sudo su -‘ and then ‘curl -k -L -O https://johnlewis.ie/getnflash_johnlewis_rom.sh; bash getnflash_johnlewis_rom.sh’. Note that I removed the sudo from your command, and with a writeable USB drive inserted, the command executed with no errors.
    I installed Ubuntu 14.04.1 x64 from a USB drive that I created using Startup Disk Creator. I tried creating a bootable USB using the dd command and Tuxboot but neither of those would boot in SEABIOS. Your touchpad fix also worked, but I had to reboot a couple of times before it took effect. Thanks!

  4. Hello John, before I go on I want to thank you for your hard work.

    I have a c720 and I have used your script to flash the latest coreboot custom rom available.

    The flashing did go through according to the script, well it did say “chickened”, that’s all it said, so I supposed that was nothing more than a sarcastic expression. However after rebooting the c720 I have immediately realized nothing was changed and I was still running on the coreboot bios that comes with the chromebook.

    I have than tried flashing it manually with flashrom downloaded from your website, and here’s the output.

    [latrina@chromebookC720 Downloads]$ sudo ./flashrom -w ~/coreboot-peppy-seabios-310714.rom
    flashrom v0.9.4 : 14ce0cf : Oct 09 2013 22:16:28 UTC on Linux 3.16.0-1-mainline-chromebook (x86_64), built with libpci 3.1.10,
    GCC 4.7.x-google 20130114 (prerelease), little endian
    Erasing and writing flash chip… spi_block_erase_20 failed during command execution at address 0x0
    Verifying flash… VERIFY FAILED at 0x00000062! Expected=0xff, Read=0x0b, failed byte count from 0x00000000-0x007fffff: 0x4
    Your flash chip is in an unknown state.
    Get help on IRC at irc.freenode.net (channel #flashrom) or
    mail flashrom@flashrom.org with FAILED: your board name in the subject line!
    ——————————————————————————-
    DO NOT REBOOT OR POWEROFF!
    FAILED

    Thank god I have managed to revert to the stock coreboot bios.. Any idea of why this has failed on my c720?

    Thanks

    1. You didn’t enter the phrase exactly to go through with the flashing, so it didn’t change anything. That’s why I called you a chicken. :P

      That error is completely normal, and you will get the same one with the script. I would recommend running it again through the script, so that you get the absolute latest version of the ROM (the latest version on the archive page has issues with keyboard).

  5. Oh John, just wanted to say that I got a fedora 20 iso dd’d on to a ‘non-booting’ flash drive… and *poof*, it booted. Go figure. :)

  6. hi, how can update the latest rom using ubuntu in my acer c7 , for which i have already installed seabios

  7. Hi,

    I am getting an error when running the script.

    getnflash_johnlewis_rom.sh: line 106: ./flashrom: Permission denied

    I have removed the write protect screw and confirmed with flashrom –wp-status that the write protection is disabled.

    I am in dev mode and I have the feeling I am missing some obvious!

    Thanks

  8. Yeah, I managed to get it working though now I have a different problem :|

    I cannot boot from USB, I have tried several different distros, using unetbootin, fedoras live usb creator application and I just get to the boot menu, select my USB drive and then it just sits at ‘Booting from Hard Disk…’

    Does this new ROM enable legacy USB booting? Or is this something I should have done before flashing?

    1. I think I did something wrong with the script, so I’ve updated it, but that’s not related to this problem.

      First of all check that the USB stick will boot, including whichever distro, on another machine.

      A good litmus test is to dd the Fedora/CentOS ISO directly to the USB drive. Unetbootin is known to be hit & miss.

  9. The USB does work on my main PC, I can load up the live CD environment etc.

    I’ve also tried another USB stick. Still no boot.

    For reference my SeaBIOS version is:

    rel-1.7.5-41-g3aa31d7-dirty-20140807_171950-johnlewis.ie

    Does the write protect screw need to be replaced after flashing?

  10. I’ll try dd’ing.

    There is the ramdisk option. It loads something and I can login to a root user but I don’t know what it is/can I do anything from there?

    1. I was hoping you might ask what it was. Yes you can! It’s a tiny uClibc based Linux Buildroot I’ve made called Jeltka (Just Enough Linux To Kexec Another) it contains the tools needed to connect to your wireless router, and then kexec another kernel from the web. It has the NetbootCD script in so you can choose from 5 or 6 of the big distros. Here are the instructions:

      If you go into the boot menu, you’ll see there’s a second option “ramdisk”. Press 2 to start that.

      A few seconds later you’ll see the Jeltka login prompt. Just type “root” and hit enter.

      Type “ifconfig lo up” to bring up the loopback interface.

      Then you need to edit the wireless config file “vi /etc/wpa_supplicant.conf” and change the ssid and passphrase to match your wireless network. “I” is insert, ESC comes out of INSERT mode, “:wq” saves and quits, “:q!” quits without save. If you bugger something up try pressing “u” to undo, or just quit without saving.

      Next “wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf”. Wait till it associates and then type “dhcpcd wlan0”. Once dhcpcd finishes just confirm you have connectivity by pinging google.com or something like that.

      Then, run the NetbootCD script. “nbscript.sh”, and choose your distro. Wait for the ram disk images/etc to download and enjoy installing without using any media! :

    2. Not that it’ll do you much good now, but I’ve fixed the USB booting issue, checked that Jeltka doesn’t boot first, checked external keyboard works, and confirmed suspend works.

  11. Any hints for updating to your latest SeaBIOS ROM (which fixes USB booting) without a full install to HD via Jeltka?

    I installed your first ROM version from today (coreboot-parrot-seabios-070814.rom on a C710-2856 w/1007u processor) and now cannot boot from USB. I’ve been using Mint 17 MATE (64-bit) on a flash drive to boot into “live” mode and it has worked well (except for suspend and touchpad issues) for testing previous versions of your ROM (310714 and 170214). In the past I have been able to update the ROM after booting into this mode as well.

    I would prefer not having to do a full install to HD at this point (from which I presume I could reflash the ROM), as I am still in testing mode. Also, I have removed and would prefer keeping the original 16GB SSD intact and will be using a replacement 1.8″ mSATA SSD, but I’ve been waiting for weeks for an adapter I ordered from China, so that is not currently an option.

    After booting into Jeltka I tried the option in the netboot menu to run a SYSLINUX .cfg file as a possible work around to an alternate boot, but it says it could not find read-cfg.sh. Also, when I tried to configure eth0, it could not find the device (nor does it show up with ifconfig -a), so you really have stripped it down to the bare minimum!

    Any suggestions for alternate booting would be appreciated. Thanks for all your hard work!

  12. I was able to work out how to update the coreboot-parrot-seabios-070814.rom with the b0rked USB (your words) without having to boot from USB. I followed the instructions for your Jeltka ramdisk and started the installer for Ubuntu (32-bit). I continued the setup until it got to the part for selecting a mirror (after networking was configured) and then backed out. At that point I was able to jump ahead in the install to the (ash) shell where I was able to download the flashrom program and updated ROM from your site. After that I was able to run the update, using your instructions for flashing coreboot to stock or different coreboot build. It complained about not having dmidecode, but completed successfully nontheless. Now I can boot from USB again!

    The suspend function is “improved” with this ROM, but still not functioning correctly on my C710-2856 (w/1007u), at least with Mint 17 MATE (64-bit). Previous to this ROM it would shut down when suspend was activated and then immediately reboot. Now it appears to go into standby (power light on the front turns from blue to orange) then turns back blue within a couple of seconds, indicating it is running rather than in standby. The screen is blank but immediately returns upon a keystroke, moving the mouse, or opening the lid. At least it does not spontaneously reboot when I close the lid now, so that’s progress!

    Thanks for all your efforts.

    1. Nice bit of ingenuity there, Steve. I would suggest that the suspend problem is Mint related, as I can confirm suspend works on a C710 847 cpu with Fedora 20 and HP Pavilion Chromebook with Ubuntu 14.04 on that ROM setup.

      It’s also worth mentioning that you should do a cold reboot after updating the ROM to ensure everything works properly.

      No probs!

  13. Hello,

    I’ve flashed my Cromebook Pixel LINK LAUREL AGY-K 6456 with your script, there are was error during flashing (script wrote you email ) with the info do not reboot. By hand with flash rom utility I’ve write back original ROM backup maded by your script from USB Flash drive . After reboot I have black screen with text:
    Seabios (version rel-1.7.5-0-xxxxxxxxxxxxxxx)
    Pres ESC for boot menu

    Booting from Hard Disk
    ealy console in decompress_kernel
    KASLR using RDRAND…

    Decompressing Linux … Parsing ELF … Performing relocation … done.
    Booting the kernel.

    And nothing more happens.

    What to do

    1. Well, you haven’t flashed back the backup, or you ran the script multiple times meaning the backup was overwritten. Care to elaborate on whether you ran the script more than once?

      I must update the script to not bother backing up if the file is already there.

      Insert a USB key with a Linux distro on (not one formatted with odd tools like Unetbootin which are known to be problematic), press ESC, and boot from that. The messages you’re getting are ChromeOS trying to boot and failing because of the break in the verified chain.

  14. Yes, I also think about two time script run, and rewrite backup with wrong image :( .

    Is it ok to use Archlinux installation usb ?
    No any reaction when I’m pressing ESC.

    1. Yes. I think you’ll have to take the drive out and install Linux on it on another box, or use a USB CDROM/DVDROM to install (since that defaults to booting before the HD), otherwise you won’t be able to do anything with it outside of reflashing the SPI chip with a Bus Pirate.

    2. I’ve removed that payload from all the ROM’s and added another that I tested last night. External keyboard, USB boot, suspend, and correct boot order have all been tested on it.

  15. yo! woke up this morning to find skype has discontinued support for 4.2 for linux; i’ve been running chrubuntu (13.04) on my acer c7 since i got it, but skype 4.3 won’t play, so i’m looking at upgrading.

    i’ve got 14.04 on a bootable usb and all my files backed up, currently playing in chrome os. when i tried to run your script, i got a ‘failed to create file’ error – does this just mean i don’t have the write-protection disabled? (i did jumper it, but there’s always the possibility it’s not correctly closed, ofc.) or am i missing something else? any tips would be appreciated; i’m still pretty new to linux (been a windows user all my life, until this chromebook).

    1. No worries, you were just lucky I was on!

      The good news is I can see what the problem is – you need to run the command from a writeable directory like your home directory, so type “cd” and try it again.

  16. and to clarify – should change as in it should change itself, or as in should be changed (by the user)?

  17. beautiful. (talk about a rookie mistake!) really appreciate your help; tossed a few cents your way. wish i could afford more, but you know how it is!

  18. might have celebrated too soon! booted to usb, installed ubuntu 14.04 to the hd, but it only wants to boot to jeltka now. choosing either harddisk or ramdisk from the boot menu brings me jeltka (usb boot still works fine). something obvious, user error… ?

  19. it was, yeah – thought i’d wipe/reinstall ubuntu, and now it gives me ‘booting from hard disk’ and hangs there (when i don’t access the boot menu).

    1. It doesn’t think the hard disk is bootable for some reason. Try reinstalling again but tell me any questions it asks you relating to the bootloader, and also accept the default partition layout if you didn’t last time.

  20. i’ll go with the default partitions this time. i also elected to use logical volume management on both of my last installs; should i leave lvm off this time?

  21. hmm. ‘an attempt to configure apt to install additional packages from the cd failed’ says the error that cropped up right before the install finished. (it does say ‘installation complete’ and prompts me to reboot.)

    1. Sounds like you have screwed up media/ISO. Jeltka can install Ubuntu 14.04 for you but it’s a text only UI during the install (not as nice and shiny as the “standard” install). I used it to install 14.04 on my son’s HP Pavilion Chromebook last night. Fancy a go?

  22. i went ahead, entered ‘wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf’ and received ‘successfully initialized wpa_supplicant’ for my efforts, and then it spit out this error message: ‘rfkill: cannot open rfkill control device.’ should i proceed with the instructions, or…?

  23. not a pic, sorry; troubleshooting on my 3ds at the moment. exact content of /etc/wpa_supplicant.conf is as follows:

    ctrl_interface=/var/run/wpa_supplicant
    ap_scan=1

    network={
    ssid="networkname"
    key_mgmt=WPA-PSK
    psk="**********"
    proto=RSN
    }

    and the only output from the command after that were the two messages i mentioned: the ‘successfully initialized’ confirmation and the rfkill error.

    1. That wasn’t much help since the ssid was the bit I was most concerned about after you said there was spaces in it. Could you replace spaces with “_” (underscore) character and see if that makes any difference?

  24. and by ‘exact contents,’ clearly i mean i didn’t include my actual ssid and passkey – rest assured, they’re in there and correct.

  25. replaced the spaces with underscores, but upon trying to run ‘wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf’ again, i got this:

    Successfully initialized wpa_supplicant
    rfkill: Cannot open RFKILL control device
    ctrl_iface exists and seems to be in use – cannot override it
    Delete ‘/var/run/wpa_supplicant/wlan0’ manually if it is not used anymore
    Failed to initialize control interface ‘/var/run/wpa_supplicant’.
    You may have another wpa_supplicant process already running or the file was left by an unclean termination of wpa_supplicant in which case you will need to manually remove this file before starting wpa_supplicant again.

    1. ps -e |grep wpa_supplicant

      and then

      kill *no*

      where *no* is the number on the far left (the process number) in the previous command.

      Rerun the first command to confirm wpa_supplicant is not running before starting wpa_supplicant again.

      You might also try removing the line which say “proto=RSN” just in case your router doesn’t support WPA2.

  26. checked, killed, checked again (no longer running), took ‘proto=RSN’ out of wpa_supplicant.conf and ran it again:

    Successfully initialized wpa_supplicant
    rfkill: Cannot open RFKILL control device

    same as last time.

  27. no mention of it being associated! and i didn’t think i was, but i didn’t set it up, either… should have checked on that, evidently.

    i’ve got work in a couple hours, but i think you’re right – might be just as easy to snag a new iso. i think i can take it from here, so i’ll tackle it in several hours, post-work and -sleep! thanks so much for letting me play in your sandbox (learned a few things!), and for your patience and time, i’ll drop you another fiver here in a second!

  28. Suspend problems solved! Your comment a couple of days ago that the suspend problems on my C710-2856 (1007u) with the 070814 Parrot ROM might be Mint related spurred me to try Fedora 20 MATE (64-bit) as an alternative. I booted up in live mode and it seems to be working fine. As a bonus, the trackpad works out of the box as well.

    Brief testing with a Kill-A-Watt power meter indicates that it uses about 9 watts while idling at full screen brightness with WiFi enabled when plugged into AC power (battery removed to avoid charging current). Disabling WiFi drops it by about a half a watt. Dimming the backlight on the screen reduces usage by about a watt and putting the display to sleep is good for about two more watts. When I put it in suspend mode it drops to half a watt or less total usage, so it is definitely having an effect! Power management now appears to be working as expected.

    I’m not sure what the problem is with Mint 17 MATE (64-bit) and suspend on my Chromebook. Sleep works perfectly on an older Gigabyte motherboard with Athlon 64 X2 processor, so it may just be finicky with this particular motherboard/cpu combination. That is surprising, as you said that it works with the HP Pavilion Chromebook with Ubuntu 14.04 on that ROM setup, and Mint 17 is based on Ubuntu 14.04 LTS. Mint 17 has a newer kernel and MATE desktop than Fedora 20, which I wanted to use, and is a lot more functional out of the box than Fedora, especially in live mode, as it includes Firefox, Flash, LibreOffice, many more codecs, etc., but I can certainly live with Fedora 20 since it actually works the way I want and I can add the other components later. At any rate, the proof of concept has been successful and I’ll be sending some bucks your way.

    1. No problem! When I said “maybe” I really meant “is” but I like leaving some ambiguity in there in case I’m wrong. ;)

      Thanks for the donation, it’s starting to cover the bottom of the whole.

  29. After an “accidental” return to factory settings by an unwitting family member. I have installed your firmware build and worked without a problem. The automated script makes it very easy to do this, thanks for this nice touch!

    I have installed it on a C710-B847G32II without a problem, did not see the specific laptop on the list, maybe add it as verified? Serial number is NUSH7EH0023 etc.

    Now running Xubuntu 14.04.1 without a problem. Still need to get the touchpad in order, but the wiki contains the instructions.

    Thanks and a donation has been made, keep up the good work!

    1. No worries. I suppose it’s meant for people who aren’t particularly tech-savvy. Have you asked for an account on the Wiki? I don’t check the user-requests very often. You’ll be able to update it yourself then, if you like.

      Thank you for the generous donation yesterday. Much appreciated, and as I said in response to another comment, it’s starting to cover the bottom of the hole now.

  30. Seems an issue with your build (acer c710 / 847).
    The xubuntu 14.04 can be installed, then after some reboots simply does not load anymore, boot goes to black screen and stays there.

  31. The keyboard isn’t detected during Seabios and Grub2 after power off the C720 (kernel crash). It only works again after rebooting from Arch.

  32. I am trying to use getnflash_johnlewis_rom.sh from chromeos on my HP Chromebook 14.

    The script detects chromeos and sets flashromcmd as required. When it tries to execute the command it uses the hard coded ./flashrom which fails.

    Editing to $flashromcmd works… however I am too chicken to run it yet. My Chromebook has 4Gig of ram. Will the new firmware auto-detect the correct amount?

    Thanks

  33. Has anyone here flashed an Acer C710-2487 (Celeron 847, 4GB RAM, 320GB HDD)? It’s unverified on the wiki, so I’m a little worried of flashing it, ‘cuz where I live I can’t get a Bus Pirate (long story), and wanted to know if it’s totally safe and I won’t send my machine to the graveyard

    1. The ROM which the script downloads is compatible with all C710’s (both 847 and 1007u based), although there may issues with certain hardware combos. Basically it won’t brick your C710 but there’s no absolute guarantee that all hardware will be 100% functional.

    1. I was looking for the SeaBIOS string, not just the date of the ROM – SeaBIOS master, and the pre-compiled download had issues. Please delete, download and run the script again. This will update you to 080814, that one is fixed.

  34. It’s not just due to a kernel crash. Whenever I hold the power button down to turn the computer off the keyboard won’t work. It works fine after booting into Arch.

  35. I am curious if we can update your firmware from time to time, under Linux of course. Is there any script for this task?

    1. “The” script works in ChromeOS and your distro of choice (hopefully). I’ll probably make some announcement either on this site or the G+ community next time I update.

  36. I can’t find the 080814 ROM on your server. The script still downloads 070814.
    I believe the string is 020500 that I am still on.

    1. Sorry, I got mixed up. The latest one for Peppy (C720) *is* 070814. Have you tried switching off for about 10 seconds and switching on again? I have had issues before where the keyboard has a fit and won’t work in the BIOS on reboot.

      I should be releasing another in the comings days anyway. You can always check which is the latest on this page https://johnlewis.ie/Chromebook-ROMs/

Leave a comment