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. hello.
    I know you said you’re not supporting new updates to your tool, but I figured I would post since I’ve spent several days on my issue now.
    I bought a new cheap chrome OS laptop from walmart ($160) it’s a Lenovo ideapad 3. My whole plan was to use this hardware to boot chrome and a Linux bootable USB I already have.
    But it feels like that’s impossible. Your tool says “lick is currently not supported at all”. The mrchromebox tool all the options are greyed out and it says my device isn’t supported.
    I have developer mode on, write protect off… when I bootup and press CtrlU it just beeps at me and does nothing.
    Is there any other firmware or methods of booting from a usb?

    1. If mrchromebox hasn’t done it, chances are there isn’t any other available firmware for it, at this time.

      The good news is, it is definitely an Intel CPU, so should be possible “in theory”.

      However, even if you bought the bits so you could debug (which might not be possible, depending on model type) and reflash the chip as necessary, and finally got something that worked, there’s a fair chance that not all the hardware, like maybe soundcard, will work under Linux.

      So, in summary, I’m saying it’s possible, but you have a lot of hurdles to jump through, and it almost certainly won’t work perfectly.

      1. Actually Lanovo has a windows version that matches most of their Chromebook models and contains a full zip with all the windows drivers you would need the only problem I would see is getting it to pick up the install media.

  2. Hello, I have a Acer Chromebook 311 (BOBBA). When I run the script 1 hour ago, it tells me “bobba is not currently supported at all using this script”. So what I can do then?

        1. It sounds like the processor in that will be too new for existing firmware – what firmware codename is displayed on the dev mode boot screen? If the script doesn’t recognise it, it won’t be able to flash firmware for it.

          1. Hi!
            Thanks for your video, but at the “Shell” part, when I wrote that : “cd;bash <(curl https://johnlewis.ie/flash_cb_fw.sh)" it tells me this: "cd;bash <(curl https://johnlewis.ie/flash_cb_fw.sh)
            % Total % Received % Xferd Average Speed Time Time Time Current
            Dload Upload Total Spent Left Speed
            0 0 0 0 0 0 0 0 –:–:– 0:00:01 –:–:– 0
            curl: (60) SSL certificate problem: certificate has expired
            More details here: https://curl.haxx.se/docs/sslcerts.html

            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." and when I tried to add this : "cd;bash <(curl https://johnlewis.ie/flash_cb_fw.sh -k)
            " tells me this : "What would you like to do ? (note: the options will be hidden depending on the model)
            ERROR: bloog is currently not supported at all by this script.
            If you think this should not be the case, please post a comment @
            https://johnlewis.ie/custom-chromebook-firmware/rom-download/&quot; , so please what should I do in this case ?
            I LOOK FORWARD TO YOUR REPLY

              1. Here All information of firmware :
                Device: HP Chromebook x360 12b (BLOOGLET)
                ** Platform: Intel GeminiLake
                ** Fw Type: Stock ChromeOS w/RW_LEGACY
                ** Fw Ver: Google_Bloog.11297.127.0 (12/13/2019)
                ** Fw WP: Enabled

            1. The ssl cert error is because the root ca’s are out of date on whatever version of Linux you’re running this on (presumably Chrome OS). Make sure the Chromebook is up to date.

              As expected, the Chromebook isn’t supported by the script. If you want it potentially supported by my script, someone will need to send me an example of the Chromebook so I can try and make it work. Even if I am able to make it work, driver support in Linux may not be complete. So, basically, is it really worth bothering?

  3. Hello there ;)
    I am using stout (x131e) – i’ve flashed it long time ago. Ever singe i’ve happily used it as a linux machine, however then-flashed version was found buggy (it sets date to year 2170 when power is lost, amongst others).
    My question is: is there a way to flash updated BIOS bundle (u-boot/ coreboot/ seabios) while running linux, or am i forced to get back somehow to Chrome and then run flasher with apropriate firmware?
    And hey – thanks for all hackery that you’ve made, even if you discontinued your project, your legacy will stay here forever :)

    1. Hi :)

      You should be able to run the script under straight linux too, and it will (hopefully) complain if commands are missing. I haven’t ran the jenkins job to create new firmware, for a while, so if you try the latest and it doesn’t improve things, can give you a newer build in the hope that might do something good with a newer version of seabios.

      The time being reset to a stupid value is actually a “feature” ;) of Chromebooks – to save every penny, they don’t have a cmos battery, so when the main battery drains down, arbitrary stupid value is generated (which can stop network manager from connecting wireless network). All good fun, lol

      You’re welcome. It’s a shame I don’t find Chromebooks especially compelling, any more. :)

  4. hello, ive reccently left school and had my chromebook unenrolled and wish to install ubuntu but when i try using “cd;bash <(curl https://johnlewis.ie/flash_cb_fw.sh)" i receve an error saying snappy is not suported. is there a way i can install ubuntu as a primary OS

    im using a HP chromebook 11 G6 EE

    1. The script is designed to be used over an internet connection. If you look at the script and determine where the files should be downloaded, then download them to that place, it may be that the script can work without a connection. But I’m not confident of that – YMMV. The other alternative is to flash manually

    1. Hi Carlos,

      Yes – I haven’t done any development for some time and so the script doesn’t support your model as it’s too new. I would recommend going to one of the other people that make custom chromebook firmware and try their script(s).

      Cheers,

      John.

      1. Hey again John, Thank you very much for replying my comment . I would ask, can you show me or share the link for the people or they blog that make custom chromebook firmware beside you, please ? So sorry if my english is so bad to understand :(

        1. No worries – you were lucky I was available. People have been waiting weeks for me to reply, lately. I don’t want to link to his site, because he’s a bit of a glory-knob, but if you do a search for “custom chromebook firmware”, he comes up first for me, in google. At least he should have something that works anyway. Good luck with it, Carlos!

Leave a comment