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.

Supported Chipset Matrix


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

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


      1. Dear John Lewis,
        This is Skullkeeper8. I was wondering if there is any way you could possibly help me out with my Chromebook, I just want to know if it’s even possible to do a full ROM flash. Since the RW_LEGACY flash doesn’t load correctly when I want to boot off of a USB ( the OS
        being Kaspersky Rescue Tool). When I say it doesn’t work, I mean, when I press the integrated mouse it doesn’t click at all, but it lets me move the mouse around. Things get weirder, though, if I click before the OS’s GUI finishes loading in completely, it works, but when the EULA finishes rendering, it won’t let me click anything!!! I really need some help, any guidance would be extremely appreciated!

        Kind Regards,


        1. Maybe someone else has a full ROM which will work, but I don’t think I do, and I’m not doing this any more anyway. How is that going to fix the mouse? Seems like a driver or settings issue to me, seeing as it partially works. In Linux tap to click isn’t enabled by default and you have to press bottom left of pad like a mouse button (it’s almost a click). Failing that, you should be able to use tab and space to navigate and click around without the mouse.

          1. Thank you for responding, I truly appreciate that! I will try the tab space thing and get back to you later, but in the mean time I have one more question. I hope it’s not too invasive either. Why did you discontinue this? I mean, you are super brilliant! The world needs someone like you, man! I don’t know, I guess I just find it hard to believe that you can’t not make a career out of something like this, you are plenty good at it! Anyway, thank you for responding and you can get back to me whenever you feel, I’m on vacation anyway! 😂👍

            1. Ok, I just tried the tab + space trick and it unfortunately didn’t work, do you have anymore useful tips and trick I could possibly try? It would be very appreciated! Thank you, and take care!

              1. So, hitting tab does not move the cursor focus? If it does not, maybe there is another key that will do the same thing (cursor arrows?). Otherwise than that, have you tried plugging an external mouse in?

            2. No problem. Chromebooks have become less compelling, especially since memory and disk are soldered down. The Linux kernel also doesn’t properly support newer Chromebooks (lack of sound being a big gripe). On a personal level, I’m also a busy person. I work 9 hours a day for an open source company, and I live on my own with my 3 children, so spare time is at a premium!

    1. Nah – I need the actual id’s from lspci output – it’s so I can tell the rom to initialise the graphics. Otherwise you won’t be able to see anything until a Linux kernel initiliases the graphics for you.

  1. Yes, this gives an output. What do you need of it exactly?
    There are about 20 lines in the output. Hard to capture them and pass it to my other system…

    1. Use “lscpi -vnnn”, and then look for a section similar to this:

      00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:591b] (rev 04) (prog-if 00 [VGA controller])
      Subsystem: Dell Device [1028:07be]
      Flags: bus master, fast devsel, latency 0, IRQ 136
      Memory at eb000000 (64-bit, non-prefetchable) [size=16M]
      Memory at 80000000 (64-bit, prefetchable) [size=256M]
      I/O ports at f000 [size=64]
      [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
      Kernel driver in use: i915
      Kernel modules: i915

      I need the bit that is like this “[8086:591b]”, but the “591b” will likely be something else in your output.

  2. Is there a way to connect (telnet, ssh, etc.) to the Chromebook from my other system? I know the ip is and I can ping it…

  3. Script states that coral is not currently supported at all. Is there an updated script that has coral support?

          1. ok the vga compatible controller is [8086:5a84],

            what do you need from the /proc/cpuinfo

            and anyway i can help with the flash chip size issue?

  4. I am not pushing you at all. I will put the beast aside until I have some news from your part.
    I will set up another system (no Chrome OS) to Fedora…
    BTW – my background: I am founder of Autodesk, Inc and have been a developer of AutoCAD at the very beginning (1982)…

    1. That was odd – seemed like nginx was using an out of date copy of the cert, even though it was correctly renewed by certbot. I think maybe I need to get cron to restart Nginx everyone week or similar.

          1. I actually get the error in the crosh shell after running the script and selecting option 1. The error is:
            “#=#=- # #
            curl: (60) SSL: no alternative certificate subject name matches target host name ‘’
            More details here:

            curl failed to verify the legitimacy of the server and therefore could not
            establish a secure connection to it. To learn more about this situation and
            how to fix it, please visit the web page mentioned above.

            ERROR: legacy-slots/legacy-seabios-latest.cbfs.tar.bz2 could not be downloaded. Please try again later.”

            p.s. thanks for the quick response! :)

            1. Sorry about the slow response this time. :P

              When I manually renewed the certficate (recently) I think I may have got rid of www. as a subdomain, while it was still being referred to inside the script. Hence the error you received. I have removed the reference(s) to and replaced with All should now be okay. Please check and report back.

  5. Hi John,

    I had the opportunity to swap my hardware. I got a new Acer Aspire 5 A515-52-776H 39,6 cm Multimedia Notebook (Intel Core i7-8565U, 8GB RAM, 512GB PCIe SSD, Intel UHD) from a friend. He took my Chromebook for it…
    There is no need for a ROM now as he will stay on Chrome OS.
    Thanks for your efforts.

  6. Just a proposal!

    Would you like to get the Chromebook (that one I dropped for a laptop) for free? I could send it over to Ireland if you wish…
    It’s brand new. Attention: German keyboard which is similar to US one but QWERTZ !!!

    Let me know what you think about

    1. That would be amazing if you did – I would like to see what the state of things now is, as I haven’t worked on a “normal” Chromebook for a couple of years. Don’t worry about the keyboard – I have an Acer Chromebook 15 with a german layout. got used to it. ;)

      Is it okay for me to email you my address? I’m in the UK, BTW – just used to be in Ireland hence the .ie



      1. No problems at all. My email is
        It’s quite good to send it right now. We don’t want to run into custom duty problems, yes?


        1. You don’t want to get spammed by every bot on the web. :P

          I have your email from your user registration and your donation anyway, Rudolf – I was merely asking for permission to use it.

          Lol – given the way Theresa has wasted everyone’s time so far, I think customs issues are still some time away. :P



  7. Hello there John,

    I recently bought an HP Chromebook G4 11 off a person on Offer Up. I didn’t pay much attention, sadly, so when I booted it up, I quickly realized that it is an Enterprise/Education Edition. I called the organization it was issued to, to make sure it wasn’t stolen, fortunately, it was just decommisioned. The reason this matters is due to developer mode being disabled. I’ve tried to bypass it to no avail. I, however, found these ROMs, and I was intending to use them. I plan to flash the eepROM chip using a Raspberry Pi and an SOIC clip. I was wondering if you have the plain .bin/ROMs for download. I’ve done some poking around, and looked at the archived versions. I couldn’t find anything that could suit my needs. Please reply when convenient, and do tell me if I’ve overlooked something, or if you need any more information.


    1. Hi,

      The file you want is and you need to write it to the RW_LEGACY portion of the ROM. You will also either need to flash a shellball (if you don’t care about losing model name/serial number from ROM – updates in ChromeOS will not work without the former) or read and modify your existing firmware to enable dev mode and relevant GBB flags. Follow for information on extracting the shellball. In that resulting directory are scripts you can also use to modify the existing firmware’s flags.



  8. Thankyou John,

    I should have mentioned this before, but from looking at the Baytrail compatibility list, BOOT_STUB seems to remove the developer functionality. Does BOOT_STUB also support booting externally or replacing Chrome OS entirely with another operating system, such as Ubuntu, or is full rom required(of which I know is not compatible with Baytrail)? I plan on replacing Chrome OS in order to make this Chromebook function as a general laptop.


    1. Replacing BOOT_STUB isn’t recommended or supported any more – updating RW_LEGACY will allow you to run Linux. You can simply change the GBB flags to 0x489 to default to RW_LEGACY after a 3 second delay.

      1. Once again, thankyou,

        Alrighty, I will do that then. For the sake of anyone else browsing these comments in the future for a similar purpose, I’ll update you once I’ve completed the flash in the next few days (waiting on the SOIC clip in the post).

        1. As a final response (hopefully), and some help to those in a similar situation,

          I received the SOIC 8 clip and some jumper wires in the post. Make sure you do the following after confirming that the device has been sold from the organization, not stolen. I followed the shellball extraction tutorial to the point of having the bios.bin file for the Chromebook G4 11. I then used flashrom on a Raspberry Pi to flash the new bios to the eepROM on the motherboard of the Chromebook (can be found on the underside of the motherboard, opposite to the RAM), using the SOIC clip. Oddly, flashrom initially stated that it could not write to the eepROM, but after failing a few times, it returned with “at least something changed”. After reassembling the Chromebook, and attempting to boot into Developer Mode, the flash worked and I was in. To prevent this from happening again, and to dis-enroll the device from the Enterprise License, I changed the device’s serial number to a non-enterprise serial number (A random serial number will usually do the trick). Tutorials for flashing eepROM (search “Unbrick my Chromebook”) and changing a Chromebook’s serial number (search “Change serial number on Chromebook through Developer Mode”) can be found online.

          You can stop here if you just want a normal, unrestricted Chromebook. I, however, wanted to install an alternative linux OS.

          To do this, I flashed the Chromebook’s bios through Developer Mode’s terminal with RW_Legacy. I then used the same utility used to flash RW_Legacy to change the primary boot handler to legacy. Remember to enable legacy boot. From there it’s as simple as creating a live USB for your chosen linux OS, using GParted to re partition the internal emmc to one fat32 partition, and installing your distro by booting from the USB drive. In my case, I installed Kali by Offensive Security, and found no driver problems.

          I can’t post every line of code and step here, so if you want a more detailed explanation, referring to tutorials on this site and others, and piecing together the information isn’t too hard. After a few hiccups, the process only took me two hours.


          1. Thanks for figuring that stuff out yourself, and thanks for fleshing out what was actually needed, beyond my pointers. I hope you enjoy you new, shiny, Linux Chromebook, but unfortunately I think you’ll find that processor a bit slow.

  9. Let me start by saying that I am shiny new at this and really don’t know what I’m doing. I have figured out that I need the legacy firmware so that I can boot from the USB on my Acer chromebook 11 CB3-131. When I try to run the script in at the crosh prompt, however, I get “unknown command: cd;”. What am I doing wrong?

    1. So far I can tell that you are not in shell. Go to terminal type in shell. And to get deeper permission try getting root permission by typing this after your in shell. “Sudo su” or “sudo -i”

  10. Hey I just wanted to know if there is a way to coreboot HP Chromebook 14 G5, I have managed to install seabios but only works when I press ctrl-d. Is there anyway I could install a custom/ full BIOS. So I dont need to see the developer screen or the beeping sound.

    1. There undoubtedly is a way of putting coreboot on the HP Chromebook 14 G5, but I don’t know what it is, and you might spend a long time getting nowhere. I would suggest trying one of the other people that make custom Chromebook firmware to see if they already have a complete replacement.

      Other than that, have you set the short delay and set the RW_LEGACY slot as default, so there’s the minimum of interaction with/fuss from the dev screen?

  11. Hey there! I have a HP Chromebook 14 (Falco Codename), but when I try running the cURL command it fails because it could not validate the identity of your website when downloading. I’ve tried overriding the error with -k and –insecure but both still send up the same.

    Any tips?

    1. Someone else reported the same problem – think it was because I removed “www.” as a valid subdomain of the certificate. Should be okay now. Please try again and report back.

  12. Hi John, I have a Lenovo 100e Chromebook, and I got an error: “Coral is not currently supported at all using this script”. This Chromebook has a Intel Celeron N3350 (Apollo Lake). What can I do?

    1. Which md5sum’s where? There was a problem with the cert subdomain that has just been fixed, but it has nothing to do with md5sum’s. Maybe just try again and let me know if you still have a problem + more detail this time please.

  13. I have Samsung Series 3 Chromebox (stumpy). Choosed “3”, full rom install, there were no errors, “you may reboot” you said :) Now I have a blank screen, can you help me ? Thank you

      1. Update: Changed to DVI from display port, I can see “seabios version” for 1 second then it goes black and nothing happens, any chance to recover?

          1. Last question (for now) :) Can I install full Linux after booting blind from live USB ? Thank you for you time.

            1. Yes, you can.

              That will not fix the SeaBIOS graphics initialisation problem though.

              Also, depending on the boot-order in the firmware, the Chromebox may try to boot ChromeOS off the internal drive as opposed to booting from the USB, but you won’t know until you try – give the USB at least 30 seconds (possibly several minutes) to bring the display to life for you. It’s also possible the Live USB distro could be broken and not initialiase the display itself, so try several USB sticks and several distro’s.

              1. Non of any Live USB did work, because ESC does not work for boot media and device wants to boot from ssd only. But i fixed that :) You wanna know how ?

                  1. My first try but that did not worked either with gnub errors after. I dismounted ssd, then stumpy booted from USB, then i put back ssd back while device is still on ! and whola :)

                    1. My real last question now and thank you for your time since yesterday, can I flash an other bios firmware to have the option boot from USB ( I need that), or stumpy does not support this feature, what you think ?

    1. Pretty sure there’s a “hopefully” in there somewhere but read it the way you want. ;)

      You just need to boot “blind” from a Linux Live USB – graphics is the problem here, and the Linux kernel will initialiase the graphics when it boots.

  14. Hi John, I have a Lenovo 1ooe Chromebook with Intel Celeron N3350 Processor (Apollo Lake), and when I try to update ROM, I got this error: “Coral is not currently supported at all using this script”. I found on the internet that Apollo Lake Processors are not yet supported by Linux. What can I do?

  15. Dear John, I installed your BIOS on my acer C720P and then installed debian 9. It works well thanks!
    I did that a while back and I wanted to update the BIOS, so I ran again your script. But it complains that it does not dmidecode. However, the dmidecode package IS installed. What can I do? Thanks.

      1. root@debian:~# cd;bash <(curl
        % Total % Received % Xferd Average Speed Time Time Time Current
        Dload Upload Total Spent Left Speed
        100 10016 100 10016 0 0 57297 0 –:–:– –:–:– –:–:– 57563

        ERROR: This script requires that dmidecode is installed, please install it
        using your distro's package manager.

          1. OK, I found the problem. It was because sudo is not installed by default on debian. The command ‘sudo which demidecode’ was returning an error.

  16. Hi John,
    Legacy boot (Ctrl L) worked without changing the bios on my chromebook so I installed Ubuntu. Unfortunately when I let the battery run down, Ctrl L stopped working, apparently a known problem. Fixing it looks like it is going to be a pain. If I use your modified bios (RW_LEGACY) will I still have this problem?
    Otherwise, I notice you say disconnecting the battery will stop it trying to run OS recovery, so will that make Ctrl L work again or is that the problem in the first place?
    This is on an Asus Chromebook flip.
    Any help would be appreciated.

    1. How are you going to get my legacy slot on there, if it won’t boot? No, it won’t fix it anyway. You have to modify a ChromeOS recovery to enable the legacy slot again. There’s an article on the ChromiumOS website about doing it for the HP Chromebook 14 (from about 5 years ago). Should be same principle for yours, I think.

      1. Thanks, but my question is, if I recover the system, will updating the bios stop this happening again?

    2. ERROR: asuka is not currently supported at all using this script
      Chromebook 3380, any suggestions?

  17. I have a question… I flashed my chromebook c710 with your link above but when i try booting Windows 7 it give me an bios apci is not fully complaint what should i do? Please help

    1. It’s saying that part of the ACPI tables it expects to be there is missing. Windows has it’s own ACPI specific bits which aren’t in ChromeOS firmware, under normal circumstances. Search for someone else’s firmware. The next hoop after that is drivers for keyboard and mouse, but you should be able to find them the same place you got the firmware.

  18. Hello esteemed Mr. Lewis, save my peppy? Please?

    flashrom v0.9.9 : 870d8af : Jan 16 2019 09:47:01 UTC on Linux 3.8.11 (x86_64)
    coreboot table found at 0x7bf7a000.

    INPUT REQUIRED: About to flash your peppy’s entire ROM, repeat
    ‘If this bricks my peppy, on my head be it!’ observing exact case
    and punctuation: If this bricks my peppy, on my head be it!

    flashrom v0.9.9 : 870d8af : Jan 16 2019 09:47:01 UTC on Linux 3.8.11 (x86_64)
    Calibrating delay loop… OK.
    coreboot table found at 0x7bf7a000.
    spi_block_erase_52 failed during command execution at address 0x0
    spi_chip_erase_60 failed during command execution
    spi_chip_erase_c7 failed during command execution

    INFO: Assuming you didn’t get any errors you may reboot. Otherwise, do not
    reboot under ANY circumstances, and post a comment @

  19. Hi, John. Thank you for your work, first of all!
    I have followed the procedure and tried to flash a full rom on the Google Pixel 2013 on which I am writing right now.
    After the script was run, I got the following warnings:
    flashrom v0.9.9 : 3fc9f2f : Jul 27 2018 21:39:58 UTC on Linux 3.8.11 (x86_64)
    Calibrating delay loop… OK.
    coreboot table found at 0xacedd000.
    spi_block_erase_52 failed during command execution at address 0x0
    spi_chip_erase_60 failed during command execution
    spi_chip_erase_c7 failed during command execution
    I didn’ t reboot and I’m here to ask you what I should do now.
    Please advise.
    Thanks again, best,


    1. Hi Jacopo,

      spi_block_erase_52 failed during command execution at address 0x0

      The “0x0” means that it failed writing from the very beginning of the ROM chip (i.e. therefore hardware/software write-protect is still enabled).

      Can you check that both are disabled please (i.e. that the relevant internal screw is removed, and that flashrom –wp-disable has been run).

      As the write failed completely, it’s completely safe for you to reboot.



  20. Hi, I have 4 chromebook pixel 2015 with defect in ssd, I want to update the firmware, but it is not possible to load the chromeOs by the pendrive or card, always ends with a msg: an unexpected error has occurred. please refer to this url for troubleshooting tips “this happens with a pendrive or SD card, I believe the solution and write the BIOS, with soic 8. The help I need is: do I have another alternative to running windows or linux? to record bios with eprom recorder and only feature? How do I get firmware to record?

    1. I can’t remember what the exact situation is with Windows on that Chromebook, but I would be highly surprised if you didn’t come across a missing driver. I can therefore not recommend putting Windows on there. In terms of hardware support, some form of Linux really is your best bet on that machine. In terms of writing the flash chip, you need to get voltage to the WP pin on the chip to hardware bypass the write restrictions. Check the datasheet for the specific chip (probably Winbond IIRC) to find out which pin is WP, and also what the correct voltage is (probably 3.5v IIRC again).

      In terms of SOIC chip for actual writing, I can only recommend the Pomona 5250. A Raspberry Pi of some description will be a relatively quick and cheap hardware for writing the chip.

      1. john, fought with the help, already got Pomona, and also removed tension for the WP pin on the chip to ignore the recording restrictions. I checked the Winbond chip (25q64fvig) but how would Raspberry Pi work in that Chromebook ?

        1. forgot to tell me that I own TL866CS PROGRAMMER, it has support for Winbond chip (25q64fvig),

  21. Can this be run from Linux to flash the SeaBIOS? I tried a UEFI one from a MrChromebox, but now the fan does not work on my Thinkpad X131e, so I’m thinking about reverting to the SeaBIOS I had before.

  22. Hi John,

    Not Google fan and for privacy reasons I wanted to try getting Linux (Ubuntu) on my Chrome Book!
    I have an Asus, C720.

    I followed this guide :

    I followed it to the letter until I entered : If this bricks my peppy, on my head be it!

    Afther that. I got 6 messages.

    Flashrom v0.9.9 : 0abd534 : May 07 2019 01:52:53 UTC on Linux 3.8.11 (x86_64)
    Calibrating delay loop… Ok.
    coreboot table found at 0x7bf7a000.
    spi_block_erase_52 failed during command execution at address 0x0
    spi_simple_write_cmd failed during command execution
    spi_simple_write_cmd failed during command execution
    Then it says that if I did get errors, I shud post a comment here.
    Please help me not break my peppy? :)
    Thanks a lot!

    1. OMG I’m so dumb, I guess this is related to removing the write protection by removing a screw?

      I have not still not touched the laptop, it is still working and on the console screen. What steps should I take to make the Full Rom work? ( I previously had an option allowing Full Rom, so I assumed it is working with this laptop, since Haswell based CPUs work on most laptops as written up here?)

      1. yes, it’s because of the screw.

        Nothing was written to the ROM because it failed at address 0x0, so it is also safe to reboot.

        I’m assuming that negates some of your other questions, so try again, and let me know if you’re stuck.

        1. So yesterday I really didnt want my Laptop to shut down, but I left it up for too long and it went into a screen saver mode. When it came back, I had to shut it down.
          When I rebooted, I first got a message asking me to “Press Esc to choose a boot mode”, but it wouldn’t let me choose anything. I shut it down again, thinking it was bricked, and when it came back up it let me choose the boot mode, so I booted it from the USB key and managed to install the Linux Rom.

          Ubuntu is now installed and working, by some weird magic sent straight from the gods. Do you believe I will still have issues with it?

  23. Hello. I’m at the part where I have to enter this command “cd;bash <(curl" and when I hit enter, i get this message "Error: Grunt is currently supported at all using this script" Then it told me to go here.

    Could you help me out?

  24. Hello! Can you help me? I have a Samsung “Alex” Chromebook. The script (cd; bash <(curl does not work on it. Throws an error: ERROR: alex is not currently supported at all using this script.
    Can you help me install the ROM?

    1. Hi! No I can’t! XD For one thing, I’m not really doing this any more (the site is here for posterity), and for another, that Chromebook is so old, it’s from a time before Google were using coreboot as their firmware. You’re banjaxed I’m afraid.

      Just curious, but did you actually read the page? I have a notice at the start and end now that I’m not doing this any more, so I’m wondering if you saw it.

Leave a comment