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. 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,

        Skullkeeper8.

        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!

          2. Hey john im trying the the cd;bash <(https://John Lewis.ie/flash_cb_fw.sh) in the shell and ive trued the phrase ‘If this bricks my celes, on my head be it!’ And it won’t work I’ve tried for 3 hours now can you help me?

        2. certain OS doesnt offer mouse and keyboard drivers supported by ChromeOS especially booting USB. You need an external mouse and keyboard just to install the OS and if youre lucky can find some supporting drivers within your new OS.

    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. Okay, I understand.
    I am in Developer mode and in shell. How can I get this information from there?

  2. 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]
      Capabilities:
      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.

  3. Okay, I got this information finally:
    The VGA compatible controller is at [8086:5917]

    Ufff !!!

  4. No problems at all. The Chromebook will go off meanwhile.
    I use my other systems (Fedora 29)…

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

  6. 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?

      1. cpu info:
        processor : 0
        vendor_id : GenuineIntel
        cpu family : 6
        model : 92
        model name : Intel(R) Celeron(R) CPU N3350 @ 1.10GHz
        stepping : 9
        microcode : 0x38
        cpu MHz : 800.000
        cache size : 1024 KB
        physical id : 0
        siblings : 2
        core id : 0
        cpu cores : 2
        apicid : 0
        initial apicid : 0
        fpu : yes
        fpu_exception : yes
        cpuid level : 21
        wp : yes
        flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch intel_pt ibrs ibpb stibp kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms mpx rdseed smap clflushopt sha_ni xsaveopt xsavec xgetbv1 dtherm ida arat pln pts md_clear arch_capabilities
        bugs : spectre_v1 spectre_v2
        bogomips : 2188.87
        clflush size : 64
        cache_alignment : 64
        address sizes : 39 bits physical, 48 bits virtual
        power management:

        processor : 1
        vendor_id : GenuineIntel
        cpu family : 6
        model : 92
        model name : Intel(R) Celeron(R) CPU N3350 @ 1.10GHz
        stepping : 9
        microcode : 0x38
        cpu MHz : 1101.000
        cache size : 1024 KB
        physical id : 0
        siblings : 2
        core id : 2
        cpu cores : 2
        apicid : 4
        initial apicid : 4
        fpu : yes
        fpu_exception : yes
        cpuid level : 21
        wp : yes
        flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch intel_pt ibrs ibpb stibp kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms mpx rdseed smap clflushopt sha_ni xsaveopt xsavec xgetbv1 dtherm ida arat pln pts md_clear arch_capabilities
        bugs : spectre_v1 spectre_v2
        bogomips : 2188.87
        clflush size : 64
        cache_alignment : 64
        address sizes : 39 bits physical, 48 bits virtual
        power management:
        *~~~~~~~~~~~~~~~~*
        then for lspci:
        00:00.0 Host bridge [0600]: Intel Corporation Device [8086:5af0] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0
        00:00.1 Signal processing controller [1180]: Intel Corporation Device [8086:5a8c] (rev 0b)
        Subsystem: Intel Corporation Device [8086:5a8c]
        Flags: fast devsel, IRQ 16
        Memory at c2b10000 (64-bit, non-prefetchable) [size=32K]
        Capabilities: [d0] Power Management version 3
        Capabilities: [e0] Vendor Specific Information: Len=0c
        Kernel driver in use: proc_thermal
        00:00.2 Non-Essential Instrumentation [1300]: Intel Corporation Device [8086:5a8e] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 23
        Memory at c2800000 (64-bit, non-prefetchable) [size=1M]
        Memory at c2000000 (64-bit, non-prefetchable) [size=8M]
        Memory at c2b39000 (64-bit, non-prefetchable) [size=512]
        Capabilities: [40] MSI: Enable- Count=1/1 Maskable- 64bit+
        00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:5a85] (rev 0b) (prog-if 00 [VGA controller])
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 366
        Memory at c0000000 (64-bit, non-prefetchable) [size=16M]
        Memory at b0000000 (64-bit, prefetchable) [size=256M]
        I/O ports at 1000 [size=64]
        Expansion ROM at [disabled]
        Capabilities: [40] Vendor Specific Information: Len=0c
        Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
        Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
        Capabilities: [d0] Power Management version 2
        Capabilities: [100] Process Address Space ID (PASID)
        Capabilities: [200] Address Translation Service (ATS)
        Capabilities: [300] Page Request Interface (PRI)
        Kernel driver in use: i915
        00:03.0 Multimedia controller [0480]: Intel Corporation Device [8086:5a88] (rev 0b)
        Flags: fast devsel, IRQ 21
        Memory at c1000000 (64-bit, non-prefetchable) [size=16M]
        Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
        Capabilities: [ac] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [d0] Power Management version 3
        00:0e.0 Multimedia audio controller [0401]: Intel Corporation Device [8086:5a98] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 25
        Memory at c2b18000 (64-bit, non-prefetchable) [size=16K]
        Memory at c2900000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: [50] Power Management version 3
        Capabilities: [80] Vendor Specific Information: Len=14
        Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
        Kernel driver in use: snd_soc_skl
        Kernel modules: snd_hda_intel, snd_soc_skl
        00:0f.0 Communication controller [0780]: Intel Corporation Device [8086:5a9a] (rev 0b)
        Flags: bus master, fast devsel, latency 0
        Memory at c2b1e000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [50] Power Management version 3
        Capabilities: [8c] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [a4] Vendor Specific Information: Len=14
        00:14.0 PCI bridge [0604]: Intel Corporation Device [8086:5ad6] (rev fb) (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0, IRQ 365
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
        I/O behind bridge: None
        Memory behind bridge: c2a00000-c2afffff [size=1M]
        Prefetchable memory behind bridge: None
        Capabilities: [40] Express Root Port (Slot+), MSI 00
        Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
        Capabilities: [90] Subsystem: Device [0000:0000]
        Capabilities: [a0] Power Management version 3
        Capabilities: [100] #00
        Capabilities: [140] Access Control Services
        Capabilities: [150] #00
        Capabilities: [200] L1 PM Substates
        Kernel driver in use: pcieport
        00:15.0 USB controller [0c03]: Intel Corporation Device [8086:5aa8] (rev 0b) (prog-if 30 [XHCI])
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, medium devsel, latency 0, IRQ 367
        Memory at c2b00000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [70] Power Management version 2
        Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: xhci_hcd
        00:16.0 Signal processing controller [1180]: Intel Corporation Device [8086:5aac] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 27
        Memory at c2b21000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b22000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:16.1 Signal processing controller [1180]: Intel Corporation Device [8086:5aae] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 28
        Memory at c2b23000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b24000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:16.2 Signal processing controller [1180]: Intel Corporation Device [8086:5ab0] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 29
        Memory at c2b25000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b26000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:16.3 Signal processing controller [1180]: Intel Corporation Device [8086:5ab2] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 30
        Memory at c2b27000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b28000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:17.0 Signal processing controller [1180]: Intel Corporation Device [8086:5ab4] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 31
        Memory at c2b29000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b2a000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:17.1 Signal processing controller [1180]: Intel Corporation Device [8086:5ab6] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 32
        Memory at c2b2b000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b2c000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:18.0 Signal processing controller [1180]: Intel Corporation Device [8086:5abc] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 4
        Memory at c2b2d000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b2e000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:18.1 Signal processing controller [1180]: Intel Corporation Device [8086:5abe] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 5
        Memory at c2b2f000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b30000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:18.2 Signal processing controller [1180]: Intel Corporation Device [8086:5ac0] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 6
        Memory at c2b31000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b32000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:19.0 Signal processing controller [1180]: Intel Corporation Device [8086:5ac2] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 35
        Memory at c2b33000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b34000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: intel-lpss
        00:1b.0 SD Host controller [0805]: Intel Corporation Device [8086:5aca] (rev 0b) (prog-if 01)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 3
        Memory at c2b35000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b36000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: sdhci-pci
        00:1c.0 SD Host controller [0805]: Intel Corporation Device [8086:5acc] (rev 0b) (prog-if 01)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 39
        Memory at c2b37000 (64-bit, non-prefetchable) [size=4K]
        Memory at c2b38000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14
        Kernel driver in use: sdhci-pci
        00:1f.0 ISA bridge [0601]: Intel Corporation Device [8086:5ae8] (rev 0b)
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, medium devsel, latency 0
        00:1f.1 SMBus [0c05]: Intel Corporation Device [8086:5ad4] (rev 0b)
        Subsystem: Intel Corporation Device [8086:5ad4]
        Flags: medium devsel
        Memory at c2b3a000 (64-bit, non-prefetchable) [size=256]
        I/O ports at 1040 [size=32]
        Kernel driver in use: i801_smbus
        01:00.0 Network controller [0280]: Intel Corporation Wireless 7265 [8086:095a] (rev 59)
        Subsystem: Intel Corporation Dual Band Wireless-AC 7265 [8086:5010]
        Flags: bus master, fast devsel, latency 0, IRQ 368
        Memory at c2a00000 (64-bit, non-prefetchable) [size=8K]
        Capabilities: [c8] Power Management version 3
        Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Capabilities: [40] Express Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [140] Device Serial Number a8-6d-aa-ff-ff-79-cd-5e
        Capabilities: [14c] Latency Tolerance Reporting
        Capabilities: [154] L1 PM Substates
        Kernel driver in use: iwlwifi
        Kernel modules: iwlwifi

  7. 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’m having issues with the certificate as well. Did you ever get that cron job setup?

          1. I actually get the error in the crosh shell after running the flash_cb_fw.sh script and selecting option 1. The error is:
            “#=#=- # #
            curl: (60) SSL: no alternative certificate subject name matches target host name ‘www.johnlewis.ie’
            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.

            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 http://www.johnlewis.ie and replaced with johnlewis.ie. All should now be okay. Please check and report back.

              1. Hi, I’m getting this same error, but I never saw this conversation reach a resolution. Can you help or check the CA certificate?

                1. As far as I’m aware, there is nothing wrong with the certs or authority on my site. I would suggest that the time/date is wrong on your machine, or there is an intermediate proxy serving it’s own cert in place of mine, and that has failed, or you just plain need to update ca-certificates on your machine. Works fine for me. Nothing to see here.

  8. 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.

  9. 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

      Cheers,

      John.

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

        Cheers
        Rudolf

        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

          Regards,

          John.

  10. 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.

    -Svech

    1. Hi,

      The file you want is https://johnlewis.ie/Chromebook-ROMs/legacy-slots/legacy-seabios-baywell-latest.cbfs 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 https://johnlewis.ie/extracting-the-shell-ball-rom-using-a-chromeos-image/ for information on extracting the shellball. In that resulting directory are scripts you can also use to modify the existing firmware’s flags.

      Cheers,

      John.

  11. 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.

    -Svech

    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.

          -Svech

          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.

  12. 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”

  13. 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?

  14. 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.

  15. 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.

  16. 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.

  17. 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?

  18. 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 https://johnlewis.ie/flash_cb_fw.sh)
        % 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.

  19. 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?

  20. 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.

  21. 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.
    SUCCESS

    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 @
    https://johnlewis.ie/custom-chromebook-firmware/rom-download/

  22. 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,

    Jacopo

    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.

      Regards,

      John.

  23. 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),

  24. 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.

  25. 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 :

    https://askubuntu.com/questions/898833/how-to-uninstall-chrome-os-and-install-ubuntu-16-04-fully-not-crouton-on-a-chr

    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?

  26. Hello. I’m at the part where I have to enter this command “cd;bash <(curl https://johnlewis.ie/flash_cb_fw.sh)" 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?

  27. Hello! Can you help me? I have a Samsung “Alex” Chromebook. The script (cd; bash <(curl https://johnlewis.ie/flash_cb_fw.sh)) 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.

  28. Hello I was running the flash script and received the following output, do I need to worry about rebooting my chromebook?

    flashrom v0.9.9 : b2d845b : May 29 2019 13:27:30 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
    ——————————————————————————-

    INFO: Assuming you didn’t get any errors you may reboot. Otherwise, do not
    reboot under ANY circumstances, and post a comment @
    https://johnlewis.ie/custom-chromebook-firmware/rom-download/

  29. Sorry for bothering, I want to flash full rom ,but I accidentally chose option 6 , a full shellball rom ,and I don’t know what it is and got thg stock recovery screen . Should I usb the stock recovery method or just have a way back to full rom firmware? Thanks!

      1. Yep, i solve that with stock usb recovery, and right now I want to kown how to change boot order (important for me) cause I install linux on sd card. By the way, I found that your custom firmware may no support keyboard backlight

        1. Take a look at https://www.coreboot.org/SeaBIOS#Configuring_boot_order and the existing bootorder file in the ROM. If you need to ask me how exactly to do that and you can’t search to find out, this is beyond your skill level.

          Running Linux from an SD card will be as slow as molasses.

          Could be the firmware, could be Linux that’s missing support. Try someone else’s firmware and compare/contrast.

          Please also note (although it’s written at the top and bottom of this page) – I no longer work on Chromebook firmware, and my site only exists for historical purposes.

  30. Hello!
    i have a problem with my acer c710-2487, i run you script for flash bios rom, i installed ubuntu 14.04 and run perfect. But I backed up the rom and installed this coreboot-parrot-seabios-windows-27102013.rom (download from https://johnlewis.ie/Chromebook-ROMs/parrot/) because i wanted to install windows 10, and now it just turns on and you can’t see anything, not even with an external monitor. I need your help.
    Sorry for my english, i speak spanish.
    Thanks.

    1. The problem will be that the PCI id’s for the graphics card will be wrong in that old ROM – so basically you will need to boot from a Linux live USB (which will initialise the graphics card for you, so you get a dispay). Only problem is, you will have to press ESC and no. 2 at the correct times, otherwise it will try to boot from the internal HD, and will appear to do nothing. There will be previous comments around here which detail how long to wait with each key – can’t remember off the top of my head.

  31. Hi John!

    I ran the script with the full rom replace option (#5) on my Haswell i7 Asus CN60, but all of the writes failed. I did open it up and remove the firmware write prevention screw. I just double checked to make sure it was the correct one. The script told me to post here about it. Any advice?

    1. Actually the device turned itself off and I can boot to my installation USB now. Thanks for your hard work!

  32. Hi. install the old rom for c710 and everything comes to the bios and then when I go to install the Windows the first bar is loaded and then it stays stuck in the part that says starting Windows. This is when I am going to install it that starts loading the installer where the language is placed and that. has that part never comes.

    I would appreciate your help.

  33. Hey,
    I’ve got an Acer Chromebook 14 (which is Braswell). I see here that only legacy (not full rom) is supported. What does it mean? I want to install windows 7 or linux (not win 10). I know there is another firmware coreboot. Will yours be more or less likely to work with windows 7?
    I don’t know why everybody supports only win 10 on such slow devices. I understand some drivers may not work, but I think firmware should at least enable people to try it.

    1. Basically, it’s like an optional part of the ROM to run, rather than a complete replacement.

      Less likely to run windows at all, since I never make a rom intentionally run it.

  34. Hi Johnlewis,
    I appreciate your entire efforts. I need your help on my Acer Chromebook 14 CB3-431. I need to install windows 10 on it. I have removed the bios write-protect screw, I turned it into developer mode, connected it to wifi. Ran the shell command and tried to flash the bios to Full Rom. I did this with a command, cd ~; curl -L -O http://coolstar.org/chromebook/setup-firmware.sh && sudo bash setup-firmware.sh. All went ok and even backed up my previous bios firmware to the flash. But when it went to download it stoped and said ”firmware download checksum fail:download corrupted,cannot flash”. My question is do you have a bios update or flash firmware that I can use to flash my Bios so that I install win10 or 8.1? If Yes, please help me.

  35. flashrom v0.9.9 : b2d845b : May 29 2019 13:27:30 UTC on Linux 3.8.11 (x86_64)
    coreboot table found at 0x7f77a000.
    SUCCESS

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

    flashrom v0.9.9 : b2d845b : May 29 2019 13:27:30 UTC on Linux 3.8.11 (x86_64)
    Calibrating delay loop… OK.
    coreboot table found at 0x7f77a000.
    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
    ——————————————————————————-

    INFO: Assuming you didn’t get any errors you may reboot. Otherwise, do not
    reboot under ANY circumstances, and post a comment @
    https://johnlewis.ie/custom-chromebook-firmware/rom-download/

    1. That means you haven’t disabled write protect. As well as removing the screw, you need to remove the write protected region with flashrom –wp-disable

  36. I am working with an Acer Chromebook 14. Cb3-431

    I run the command to download and then enter my password. Then I am given this:

    “What would you like to do? (note: options will be hidden based on model)

    ERROR: Lars is not currently supported at all running this script. If you feel this is an error please post a comment @ https://johnlewis.ie/custom-chromebook-firmware/rom-download/

    Is there something I can do or is this only as a result of this being outdated?

  37. Hey John! I know you dont maintain this, but thought I would try anyway. I ran your script on my Dell chromebook 11 and got the “spi_simple_write_cmd failed during command execution” let me know if you need more info. thanks for all you do

Leave a comment