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. Well, thanks for your reply, guess I’ll tinker a bit more with ChromeOS and then will flash it, It’s just that my Parrot is new hahahaha

  2. I took the plunge. Running jeltka now. Amazing. CentOS installer can’t use wlan so I still have to use USB for my actual install. Memory bugs are gone (stock seabios needed mem=1024mb to boot). Final thought: any chance for adding etherboot wireless support?

    1. Thanks! Yeah, I’m trying to work around the Fedora/CentOS installer issues. The problem is, Dracut doesn’t have wireless support, and when you use kexec, RAM (where the tmpfs is stored), gets blown away. So, I’m thinking of downloading the install.img to the hard-drive and adding that to the “method” Anaconda argument. I suspect that will stop you making FS/partition changes though, unless it immediately gets loaded into RAM and releases the FS.

      iPXE currently doesn’t have a driver for the AR9462 wireless card (the one in most Chromebooks), and the card only has a 128k ROM, which isn’t enough space to run WPA. So, even if a driver gets written, it will mean disabling security on your wireless router to use it in this way. Jeltka is the current best way of installing a distro without media, IMO, as imperfect as it is.

  3. Hello. I has flashed my BIOS just now by script, with FALCO 070814 (HP Chromebook 14), but I don’t see the second option in boot menu of SeaBIOS for boot in JELTKA. What’s wrong?

    Before flashing I has not set “crossystem dev_boot_usb=1 dev_boot_legacy=1”, only after that. Maybe the problem is here?

    1. Does it say “fdimage” instead? Can you tell me the SeaBIOS string so I can confirm you have the right one? I take it you *aren’t* getting the dev screen any more?

  4. No, I don’t saw “fdimage”. And I still in dev screen, but I has already set flags for booting into SeaBIOS.
    So, that’s my string:
    SeaBIOS (version -20130930_164159-build122-m2)

    1. You didn’t flash the new ROM then if you can still see the dev screen. And that SeaBIOS screen is also consistent with the stock ROM. Please run the script again, with the write-protect disabled, and make sure you type the phrase in *exactly* or it won’t flash a thing.

  5. I followed the procedure to flash the ROM on my Acer C720 chromebook. The process completed without any errors and I was able to boot a Kali Linux (debian) installer. I had a few issues with the installer so I back out and now I cannot get to the boot menu. Rebooting and hitting the ESC key does nothing. The device goes straight to booting from the hard drive (which doesn’t have anything on it).

    Any suggestions?

    Thanks

  6. Please disregard my last post. I didn’t read far enough into this list to see the post about the keyboard issue. After letting the box sit for a bit, the boot menu worked just fine.

    Thanks.

  7. OK, John, Thanks. But, it’s strange, I already install Ubuntu, It working absolutely normal. Maybe I don’t need to reflash the BIOS.
    But can I do it under the linux, not ChromeOS?

    1. On 3rd generation devices you don’t need to reflash to use Linux, Gleb. However, reflashing does give certain advantages – like completely removing the dev screen, shaving a few seconds off boot time, obviating the need for TPM work-arounds to get suspend working, fixing external keyboard in BIOS screen, and finally using Jeltka which allows you to install Linux without media.

      The script runs under Linux and ChromeOS, but it hasn’t been tested under *every* distro.

  8. Thanks for explanation! If I run the script, I will write here about results. I’m using Ubuntu 14.04.

  9. I did this last week on a chromebox (asus 2955u); and it worked fine with one small ‘glitch’; I cannot get wake from sleep to work without hitting the power button. Is there any way to wake from usb device (keyboard, mouse, … ) ?

    (I’m using ubuntu 14.04 if that matters)

  10. Well, flashed it, made it finally hahahaha happily running Ubuntu 14.04 32-bit distro without issues, but, I’m wondering if it could run 64-bit distros as I plan tu upgrade my Parrot’s RAM to 8GB hahaha

  11. Hello and sorry to bother you. I am having grate difficulty in flashing your rom! I have ubuntu 14.04 installed and up to date. I run the script no problem OUTPUT:
    About to flash new ROM, repeat ‘If this bricks my Chromebook/box, on my head be it!’ observing exact case and punctuation:

    Bok!
    Bok!
    Bok!
    Chicken!!!!!!

    but when i reboot i still have the warning splash screen and the bios is SeaBIOS (version -20130930_164159-build122-m2) i am missing something but i am not sure what!

    1. Not a bother at all. When it asks you for the phrase, you need to type it in as it is on the screen, including capitalisation and punctuation. It’s a feeble attempt to get people to realise the potential consequence of flashing another ROM.

  12. Hi John,
    I am trying to build a custom coreboot for google’s Enguard (baytrail). The current Coreboot does not have seabios available as a payload. How did you build the coreboots? did you use google’s makeconfig files and google’s git tree or did you use something else? does gcc version matter?

    1. It depends on the model, Evan. Most of them are created with upstream, but the newer ones are generally made with the respective branches of CrOS coreboot. There is a “configs” directory but you won’t be able to use one of those unmodified because a) They are designed to work with the ChromiumOS build system and don’t add a payload themselves and b) they refer to binary file locations that you won’t have.

      Gcc version does matter, but I have not been able to get the reference toolchain to build with CrOS coreboot. I was using Fedora 20’s toolchain, and I have since moved to CentOS 7, which is older but hopefully more reliable.

      If you *just* want to add SeaBIOS and are not bothered about the dev screen still being there, you can just create something suitable for the RW_LEGACY slot (where SeaBIOS should’ve been). I happened to have created just such a file for the ASUS C200 yesterday (as well as a full ROM to test). You can find it here https://johnlewis.ie/Chromebook-ROMs/ASUS-C200-RW_LEGACY.cbfs It may well be that “Enguard” has the same graphics card PCI ID’s and that writing that file to your RW_LEGACY could potentially give you a SeaBIOS slot that works (although no one else has tried it as yet).

      Flash it using sudo “flashrom -w -i RW_LEGACY:ASUS-C200-RW_LEGACY.cbfs” and don’t worry about write-protect OR backup because that part of the ROM isn’t write-protected, and there is currently nothing in RW_LEGACY on Baytrail Chromebook platforms (from what I can tell).

  13. So I put the latest from you on last night (thank you!) for Peppy. I’m seeing a similar problem with the keyboard:

    – The built-in keyboard does not work in order to press ESC for boot options, at boot time.
    – If I connect an external USB keyboard, that works to hit ESC for boot options.
    – Once booted (kali linux), both external and built-in keyboards worked fine.

    Did try leaving it with battery disconnected overnight, and various other poking and prodding, fiddling with the battery-enable and write-protect screws. No dice.

    Figured I’d report this behaviour, in case you had any specific experience with it. I hope to dig into it a bit deeper, and if I find anything I’ll share it.

    1. Well, I did find with SeaBIOS 1.7.4 that the keyboard wouldn’t work at all in the SeaBIOS screen. Outside of that, switching off for 10 seconds normally sorts the keyboard out if the EC has got itself in a muddle.

      Can you also confirm all of the SeaBIOS string to confirm you definitely did flash the latest ROM successfully?

  14. 1.7.5-180814-18:14-johnlewis.ie

    Verified that external keyboard works, only if connected prior to booting. Plugging in during/after boot does not work (not surprised here, just trying to characterize it)

    After half-booting into stock ChromeOS, the internal keyboard starts working and the external keyboard continues to work as well.

  15. Trying to use netbook on my C710. Dhcpcd and the netbook script are not listed as possible commands. Having problems booting from USB containing ubuntu 12.04 created by unetbootin. Suppose I should try another usb creator. Recommendations?

    1. Where did you get the instructions from?

      They have been changed on the video to:

      1. Press 2 at boot menu.

      2. Type “root” and hit enter to login

      3. Type “j” and press tab, which will bring up “jeltka.sh”, and press enter.

      Follow the prompts.

  16. I tried the script first and it failed, so I found ‘the long way’ instructions on youtube, and those didnt work either.

    So this time, I should run the BIOS update command above, to reflash the BIOS and try again with the script?

  17. I ran jscript.sh the first time and it kept sending discovery but not connecting. I think its a network thing here at work. I noticed they are running WEP encrpyttion and it seems the script is looking for WPA or WPA2. I will try again at home on my personal network (WPA2) and report back tonight or tomorrow.

    Thanks for some great work by the way, I have no doubt that whatever the issue is it will be solved.

    1. No, it’s called “jeltka.sh” and the instructions say press “j” then tab, which will use ASH autocompletion to fill out the command for you.

      Wow, a business using WEP, have they any idea about security? The script doesn’t support it by design.

      Yep, so long as you give me the information I need. Doesn’t sound like an issue on this side anyway. ;)

  18. Worked fine once I got home. Installed Ubuntu 14.04 but the touchpad doesnt work, no mouse pointer at all until i plug in a usb mouse. Keyboard works fine (posting from it right now).

    I get an error on bootup that may be related…

    [ 16.891188] find_i2c_adapter_num: i2c adapter SMBus I801 adapter not found on system.

    This is an Acer C710- …. 0921? All the stickers are ripped off (kids).

    Is this something you can help with?

    Thank you.

  19. Hi John
    thanks for turning my HP Chromebook 14 into a neat Linux Notebook running Ubuntu 14.04. THe internal ROM update and Linux installation both work flawless and now I’m testing which Linux version suits me best.
    The only thing that doesn’t work at the moment is the touchpad. I tried your trick with modifying rc.locale but it didn’t work. Anyway – I am sure someone will soon come up with a solution and I sent you 5€ for a beer :-) .. cheers.

  20. Í have entered the String correctly and it seemed that he flashed the newest Version of SeaBios. Version 1.7.5-180814-18:14. My device is a HP Chromebook 14 with 2GB Ram.

    If i hit the ESC Key, it won´t recognize, so i also have to use an USB Keyboard. But I have another problem. I used Chrome OS with Crouton before, but after I have opend my device and make a backup of my bios and I installed your version, it won´t start to Chrome OS anymore. If i hit the ESC Key, it show my the SSD as first device but only 15 Mb are used. Do i really have to install a new Version of Chrome OS?

    And is it possible to install Chrome OS and Ubuntu on my device?

    1. You need to switch it off for 10 seconds, to sort the keyboard out – I’m running the same ROM on my HP Chromebook 14, and the keyboard works fine in SeaBIOS. I think the EC gets itself in a tizz occasionally.

      Although, it could conceivably be because the new descriptor isn’t being written. Try switching it off as above, and I’ll try changing the script if that doesn’t work.

      You should’ve read the FAQ – my BIOS’ prevent you from running ChromeOS in the same way you did previously. You can use Arnold The Bat’s ChromiumOS builds, and then use a script to upgrade to full-blown ChromeOS, but it won’t keep itself up to date, because you won’t have a valid hardware ID written into the BIOS.

      It’s possible, but there isn’t any information on doing it, and I haven’t any interest in finding out how.

  21. Hey,

    Do you provide the sourcecode for these roms?
    I would like to modify some things so that the rom always and instantly starts Jeltka and runs a little script inside. Basically I want to have a way to only allow booting of (self-)signed kernel images, and using Jeltka with a little verification script looks like the easiest way to achieve this.

    1. The ROMs are built using coreboot/cros-coreboot, generally with a SeaBIOS payload. Jeltka is built using Buildroot. All the “code” is already available on the web. If I make any changes at all, they’re minor in nature. This is touched on in the FAQ, which, I would hope you’ve read.

      However, if you just want to add a script to Jeltka, and for it to autostart, it might be easier for you to extract the floppy image from the ROM using cbfstool, modify it, and add it back in.

  22. Hey,

    sure, I’ve read the FAQ, it’s more about the configs you used for coreboot/seabios and the minimal linux kernel.
    I probably could figure these out by myself but since you already did this work I thought I could save a lot of time and work by starting of with your known-working configs…

    It would be really great to have these configs (for Acer C720) as a starting point.

    As I also want coreboot to only boot what I want it looks like I can’t just change the linux image (well, for testing, sure, but not for production use).

  23. Just in case anyone finds this while searching for hardware support. Linux kernel 3.17 comes with native support for many Chromebooks running Linux. No patches needed for touchpad support, and various other fixes.

    1. It’s going to be a while before distro’s are shipping 3.17 though. So if you factor in the time it takes to compile, you’re probably still better off using the various distro-specific scripts to compile the necessary modules.

  24. Hi

    I’m thinking about testing the Asus C300 custom rom. Will testing this rom have any purpose right now, considering the C200 user on the community page ended up with a black screen?

    I reckon the roms for these two chromebooks will be alike, and that the C300 rom will behave the same?

    1. Hi,

      We’re still ascertaining if the thing is completely bricked or not, so I would hold for the moment. All the Baytrail devices have an external reference code binary that’s needed, and I was told that it should be okay to add it as a raw file, because adding it as a payload from within the config wouldn’t work. As long as that was okay, and all we have done is screw up the graphics, then it will be worth testing the C300 ROM (quawks) once I have fixed the graphics ID, and inserted the latest version of Jeltka (which has i915 frame buffer support, and so will produce display even if there is something wrong with the VGA ROM/graphics ID).

      The script has had those ROMs removed for the moment.

  25. So I was running some updates and it updated grub. Now it will only boot into memtest. No grub menu. Tried fixing with a Linux boot usb, but nothing can properly edit or update grub on the hard drive. Not sure how grub is setup through jeltka.sh, but I did notice during the install it installed grub.

    Ideas?

    1. Jeltka doesn’t do anything except download the requisite kernel/initrd/squashfs image from the web and kexec them. It’s the same as doing a “standard” netinstall, and it doesn’t do anything with Grub. If you have created an ext2/3/4 filesystem you can use Jeltka to mount and take a look at the filesystem or fsck. It sounds like you’ve deleted all Linux images out of the boot directory/filesystem, so I would check there first.

  26. I installed the C200 seabios you made. Because that RW section was blank, pressing ctrl-L at the ‘Developer Mode’ screen would make 2 beeps. Now it goes to a blank screen when i hit ctrl-L, and I have to manually reset. Do you know of a guide on making a a seabios that can use my vga binary blobs and that I could write to the RW section?

    1. SeaBIOS currently doesn’t have any eMMC support, so it isn’t going to work, anyway. That’s why the slot was left blank. I’m looking at using my embedded Linux “Jeltka” to load the necessary eMMC support then kexec the kernel from the eMMC, but I’m not sure if the rest of the firmware I wrote is okay yet or not – it may have bricked somebody else’s device, we don’t know for sure yet.

    1. ARM Chromebooks don’t boot from USB. It’s theoretically possible to get one of the Baytrail Chromebooks to do it, but I’m finding the verified boot code is tightly knit into the code that loads the reference code binary. I’m going to wait until those boards are upstreamed and I have one of the Baytrail models to test on, before I give it another go – it may well need EHCI debug which CrOS coreboot doesn’t support.

  27. Hi Brother.

    Please help me about the my laptop had some error. I just up rom from your site. Acer C710 ( chromebook ). And then i had setup the windows OS not complete because boot on and stop there, i can’t continue installation ( pop-up screen is stop there ).
    I want to installation the OS system but now i can not, please help me.
    Thanks you so much.

    Minh.

    1. It might be easier just to compile the latest release candidate kernel – I can confirm it it has the requisite hardware support in and works, as long as you have the i2c Designware/chromeos_laptop/cyapa in the .config.

  28. I’m also having trouble locating the write protect jumper/screw on the stumpy.

    Mine is a Samsung Series 3 Chromebox model XE300M22-B01US.

    The white jumper next to the front USB ports is where I unplugged the speaker from when I lifted the metal cover off the board, so I don’t think it’s that.

    I agree with Austin, coreboot supports this motherboard so obviously others have had it working.

    Austin mentioned he found the jumper but not where it was. John, do you know where it is?

    1. It’s one of the two on the underside of the board. Johann Wagner posted about it in the comments of his own post in last couple of days on the community, there are even pictures.

  29. Hi Brother

    I am done Bios but not Acer C710 ( my laptop Acer C710-2847 ) i wrong bios of Samsung laptop, so now i can boot but could not setup windows ( pop-up the screen blue and error AHCI ).
    How to reflashrom org or correctly the C710.
    Please help me if have any guide and advice to me how to make for this cash?

    Thank you very much

    Minh

  30. So the touchpad didn´t work on Linux Mint. On Ubuntu I get it working. I don´t understand why, because Linux Mint is based on Ubuntu 14.04 which I have installed. What are the changes I should do in the kernel config file? Maybe this will help.

    1. Honestly, I think you should stick with what you have, if it works. Compiling the kernel sounds out of your depth, and I don’t have the time to teach you. If you want to pursue compiling your own kernel, you will need to make sure that chromeos_laptop and cyapa are in the kernel config, plus i2c_designware (if you’re using a C720, I forget whether you are). I’m sure there are people on the Mint forums who would have the time to help you with that task.

  31. Hi, first of all, great work!
    Last night I took the plunge to get rid of losing developer mode setting when battery empty, and boot delays, so I flashed your ROM 180814 into my Pixel Link.

    The script ran well without errors, I made backups of the output and my old ROM image.
    But upon power-on the keyboard doesn’t work.
    Failing to select ESC for boot menu to it goes on and tried load a bogus kernel which fails.
    I tried different USB sticks, CDROM etc. to see if that helped but diagnosed the keyboard upon boot is not working. (maybe menu was only displayed if more than one valid boot source was found)
    The power button works, but everything else like ESC for boot menu doesn’t)

    This morning I got the idea of connecting an external USB keyboard, this works so, I can select boot from USB and install Ubuntu 14.04 and I don’t need to order an Bus Pirate after all ;-)
    After booting Ubuntu install USB stick the internal keyboard also works.

    After installation the internal keyboard worked once (after warm reboot so to say).

    An external USB keyb has to be connected before boot, otherwise it isn’t found at the Ubuntu ‘enter passphrase mdcrypt’ screen, if external keyboard is attached the internal one is also working on that screen.

    Keyboards not working at boot time were there in old SeaBIOS roms as well, do we miss a patch?

    What can I do/test for you to help to get this bug fixed?

  32. Hey there,
    Kiko Hernandez I’ve flashed my C710-2487 with coreboot from 10272013 worked all well with xubuntu.

    Could someone tell me the board name for C710-2487?
    PARROT ____________ ?

    I flashed back to stock but without the name the book is showing X86 PARROT TEST 8762.
    Thank’s for any help

    1. You can get a valid HWID by running the ChromeOS Linux recovery script and not entering any search terms when it prompts you. The resulting list of blurb can be sifted for a HWID that will work for your Parrot.

  33. I’ve noticed that when I plug my Chromebook (Acer C720 2G) in and it is off, it turns on. Also, when the Chromebook is off and I open the lid, the Chromebook does not automatically turn on like it used to.

    I am using the 3.14.17 LTS kernel.

  34. I’m using 1.7.5 on a c720.
    It seems to be locking up on “Starting new Kernel”.
    I already have a distro installed, but I’m wanting to change. Is the currently installed distro affecting the process?
    What should I do?

    1. You need to give the whole of the SeaBIOS string to establish which ROM you’re using.

      How long have you left it boot for? If the TPM is still in the DSDT file, it can introduce a kernel boot delay of around 50 seconds on my HP Chromebook 14.

  35. The exact SeaBIOS string for my keyboard nog working at boot time problemen on my Google Pixel is: SeaBIOS (version 1.7.5-180814-18:14-johnlewis.ie) if you need more information please let me know.

  36. After some time (a day) and few reboots, keyboard started to work more often, ate least I can enter the Ubuntu crypt paraphrase upon boots, have no issues now, strange…
    Going to Paypal to donate you some, great work, annoying dev screen gone, much faster booting and more up-to-date SeaBIOS.

    1. Thanks. And, I admit it’s a bit strange about keyboard at times, but switching off helps, as does connecting external keyboard. I haven’t had those issues with the more recent ROMs but I may not have invoked whatever special incantation causes the EC to have a fit and stop the keyboard working. It’s a bit of a mystery.

  37. Earlier I had left Ubuntu on the starting new kernel thing for about 7-8 min.
    It’s version 1.7.5-260814-9:51-johnlewis.ie.
    Have been trying with ubuntu. Tried with Debian just now.
    Gave it 10 minutes. Same result. Still hangs on “Starting new kernel”
    Accidentally posted this earlier in the wrong section.

  38. “I’ve noticed that when I plug my Chromebook (Acer C720 2G) in and it is off, it turns on. Also, when the Chromebook is off and I open the lid, the Chromebook does not automatically turn on like it used to.

    I am using the 3.14.17 LTS kernel.”

    Seabios 1.7.5-260814-9:51-johnlewis.ie

Leave a comment