Q. How are you able to produce custom Chromebook firmware?

Google uses coreboot to produce Chromebook firmware. coreboot is an open source project and is the most open, widely available firmware in the world. This means that anyone can download the source via Git and try compiling their own firmware (if they’re brave enough, and don’t mind buying some relatively inexpensive hardware to debrick when it doesn’t work). See http://johnlewis.ie/compiling-your-own-coreboot-firmware-for-the-samsung-series-5-550-chromebook/

Q. Is coreboot *completely* open?

Yes, but, in the case of Intel chipsets, there are at least 2 binaries blobs required for the hardware to function correctly – the system agent and management engine binaries. Without the first, the system will not boot at all. Without the second your Chromebook will auto switch-off after 30 mins. The vast majority of coreboot compatible Intel hardware also requires a VGA blob.

Q. How much do these ROM’s cost?

I make these ROM’s freely available to people who either haven’t got the expertise or the time to compile/make their own. Their is no warranty implicit or declared, and it may also invalidate your Chromebook’s warranty. You bought it you broke it, YMMV, etc, etc.

Q. Will these ROM’s work on ARM based Chromebooks?

No. SeaBIOS is x86-centric. Nope, nada, never gonna happen. Suck it up.

Q. I’ve flashed one of your BOOT_STUB’s and I have a blank screen. Help!

You possibly had a hang, and the only way you thought you could reboot was by pressing the ESC – F3 (Refresh) – Power button combination. Unfortunately, this key combination is still active with a modified BOOT_STUB and as with the stock ROM, it tries to activate recovery mode. Obviously recovery mode is no longer available, and it therefore doesn’t do anything (even initialise the screen). Pulling the battery power resets the activated CMOS flag and returns things to normal (except for a wild date and time which will need to be rectified, possibly before you are able to connect to wireless/ethernet).

Q. My USB device will not show up in the SeaBIOS boot menu?

The device is taking longer than 100ms to announce itself on the bus, and is therefore not strictly USB compliant. It’s possible to add a file to the firmware CBFS to increase this timeout, but there will still be some USB devices which don’t show up unless you increase it to something ridiculous like 5 seconds. For instance, I have a USB 3.0 stick which takes 3.5 seconds to announce itself. Obviously, increasing the timeout will increase the time SeaBIOS takes to get to OS, which is not desirable, IMO.

Q. What happens if I accidentally flash the wrong ROM?

Worst case, you’ll have a bricked Chromebook. Slightly less worse case, you won’t be able to see any display, but the Chromebook will be otherwise functional. In the latter case you can fly blind (press ESC a second or so after switching on, then “2”) to boot off a Linux USB stick with an SSH server installed, and reflash over the network.

Q. Help! I’ve bricked my Chromebook. What now?

You need a Raspberry Pi (or BeagleBone Black, or Bus Pirate, in that order of preference), Pomona 5250 SOIC clip (the 3M one doesn’t fit well), and some appropriate jumper wires (female to female for RPi, male to female for BBB/BP).

See https://github.com/bibanon/Coreboot-ThinkPads/wiki/Hardware-Flashing-with-Raspberry-Pi#raspberry-pi-c720-chromebook if using an RPi and ignore the stuff about the “bridged” wiring – you almost certainly don’t need it.

Q. Can I run Windows?

Almost all the ROMs/mods don’t contain the necessary ACPI information to run Windows.

Q. Power-saving doesn’t work, can you fix it?

If you’re using a Sandy/Ivybridge based Chromebook and the BOOT_STUB modification, suspend and VMX will not work. If those things are important, rerun the script and flash a full ROM (after backing up your RO_VPD and GBB regions, of course).

Q. I don’t see a ROM for <insert my Chromebook/box here>. Will you make one?

It depends. Even though compiling coreboot doesn’t require dev knowledge, it is still a non-trivial process, which can take many man-hours in order to produce something that works – I do also have a family to feed you know …

Q. My touchpad doesn’t work! Help!

It’s likely that you aren’t running a new enough kernel. In the case of Baytrail Chromebooks, you need at least kernel 4.0 (and possibly higher). Kernel 4.0.4 in Fedora 22 works OOTB with Baytrail Chromebooks. There is also a well known problem with the touchpads on the Acer C710 which makes them vulnerable to static (especially when on battery). There are work-arounds to properly earth/ground the pad. Other models may also suffer from this.

Q. Can I continue to use ChromeOS with a modified BOOT_STUB/Full ROM?

Yes, see https://johnlewis.ie/dual-boot-chromeos-linux-on-a-chromebook/ but bear in mind it does not work on Baytrail Chromebooks.

Q. I didn’t make a backup of my existing ROM, but I would like to go back to the stock firmware. What can I do?

Use the script referenced on the ROM Download page to flash a shellball ROM.

Q. <Insert my distro here> won’t boot from Live USB, I get a kernel panic/error?

Try adding “mem=1952M” to the kernel command line. Also try a different distro – I had an issue today whereby Fedora 22 wouldn’t boot on my son’s HP Pavilion Chromebook (and would go into a boot loop), although Ubuntu 15.04 worked fine.

Q. I have an ARM Chromebook, can I run Linux natively?

Not really. Upstream kernel/Xorg still does not (and is not likely to) have the requisite graphics support required for accelerated display. You can shoehorn Fedora/Arch/etc on there, but there are packages which aren’t available/don’t-work under ARM.

 Q. My <insert-distro-here> USB key won’t boot, what can I do?

As a reliable baseline, I recommend dd’ing a Fedora/CentOS ISO to your USB key, and booting from that. You can also use an external USB CD/DVDROM drive. See https://fedoraproject.org/wiki/How_to_create_and_use_Live_USB#Command_line_.22direct_write.22_method_.28most_operating_systems.2C_non-graphical.2C_destructive.29 Make sure you use the dd parameter “conv=fsync” to ensure the data is written to the drive before dd completes, and you pull the USB stick out. I have also had success with Fedora Live USB Creator. Unetbootin is know to be problematic. YMMV, etc, etc.

Q. My keyboard won’t work at the SeaBIOS menu, what can I do?

The keyboard controller can sometimes get itself in a knot, especially if you’ve hard powered off a number of times. Switch the power off for about 30 seconds and try again. Also make sure you don’t repeatedly press the keyboard *before* the SeaBIOS menu has appeared.

Join the conversation


  1. Saludos john,
    He hecho la instalacion windows 7 en mi acer c710-2847 y me funciona, perfecto todo… a excepcion del teclado y el touch pad, aunque cuando inicia el equipo funciona, pero donde no funciona es cuando windows esta arriba, quisiera saber si todavia no le tienes solucion, aunque de inicio, es bueno poder subirle windows a la acer c710.
    Henry Florian
    Dominican Republic

    Greetings john ,
    I made the installation windows 7 on my acer c710-2847 and it works , perfect everything … except the keyboard and touch pad, but when you start the computer works, but where it works when Windows is not up , I wonder if you still do not have solution , but start , it is good to turn up the Acer c710 windows .

    Henry Florian
    Dominican Republic

  2. Hey john,
    Impressive work on the older chromebooks.
    I have a problem right now that I can’t seem to get passed, can’t find any information anywhere either.

    When I load into the seabios and boot from my USB, my distro’s splash screen appears (elementary os freya). But after a short while I get “cannot find medium with Bootable live usb” or something of that sort.
    How can I fix this?
    I’m on the c720 with the i3, so the Seabios slot was already there.
    Legacy and usb boots are always set to 1 as well.

    1. Hey,

      It sounds like there’s something wrong with the way the USB stick is built, or the ISO image used. Did you check the checksums against the ISO image once you downloaded it?

  3. I haven’t checked the checksum of the ISO, but I downloaded ElementaryOS Freya from the actual Elementary website. I might not be building, or dd’ing the image correctly to the USB stick.

    1. Well you should. That is rule number one of downloading any ISO – check it against it’s checksum. That is more than likely the reason you’re not able to boot from it. Other culprit’s include Unetbootin.

  4. Thank you so much for the custom firmware! It seemed to work great for me and I didn’t brick my C720p, but it’s only after starting to configure things in DragonflyBSD that I’ve noticed that something seems to have gone wrong: the cyapa device isn’t appearing on boot at all (doesn’t appear in dmesg). I believe this to be either a hardware or a firmware issue. The touchpad worked well in Chrome OS prior to flashing the firmware, but no longer seems to now.

    Do you have any advice? I know that you’re providing this for free, and a new laptop with a working touchscreen and no trackpad is better than a new broken laptop, but I would greatly appreciate if there’s anything I can do to help get this working again.

    Thank you!

    1. It was the case with older kernels that there was no cyapa module. I know BSD tends to be a lot more stable and slow-moving than Linux, so I would tend to think it’s a missing driver. Can you confirm there is a cyapa module/driver for you to load in the kernel you’re currently running? Have you tried updating to the latest kernel this distro has to offer?

  5. I’m currently running the latest Dragonfly version and there is support for it in the kernel. The laptop is well supported for DFly, (http://www.dragonflybsd.org/docs/newhandbook/ConfigChromebook/), and I already went to the IRC there for advice. I’m pretty sure that it’s either a hardware or firmware issue at this point, as I’ve even read through my dmesg line by line to see any mention of a touchpad/trackpad.

    I should specify that I chose to flash a full custom ROM and that everything else seems to be working fine. I may just have to live without a touchpad, but I thought I’d check here first for advice. I’d have gone to the G+ page but I have no G+ account.

    I also intend to donate some money later today.

    1. Thanks for the donation, much appreciated.

      Well, that ROM has been used quite a lot, over the last 6 months, and no one has complained of touchpad not working. So perhaps the hardware is faulty. What can also happen is that the chromeos_laptop module doesn’t pick up which Chromebook you have on boot, and you have to reload it. I’ve only had that with the older HP Pavilion Chromebook though.

    2. You could also confirm it’s definitely not the firmware by flashing back to stock and then choosing option 1 to update the BOOT_STUB. That will leave the original coreboot on, just with a changed payload. You could also put ChromeOS back on with the stock firmware as a baseline to test the touchpad.

  6. After much testing, I’ve been left a little bewildered. Flashing back to the factory image (minus product information, because I lost my backup of that) and swapping in the Chrome OS hard drive allows my trackpad to work again. If I select option 1 and boot an alternate OS, however, then the trackpad stops working again. It doesn’t appear to be a hardware issue. I’ve got the C720p/4GB model.

  7. There might be something deeper going on, because I have a lot going on. I’ll try to describe everything for you. Fedora Core 22 (installed on USB) does not detect a trackpad with option 4 yet refuses to boot entirely (same usb) with option 1 selected. Option 1 in turn was flashed in Chrome OS after things were almost back to stock. Fedora Core 22 does not detect a trackpad yet detects at touchscreen. dmesg also does not yield any trace of a cyapa mention, so the OS doesn’t seem to be seeing it. DragonflyBSD (installed to hard drive) does not see a trackpad with either option 1 or 4 (in dmesg). Strangely, it sees the touchscreen when running under both options 1 and 4, but it only actually works with option 4.

    I tried Ubuntu a while ago (14.04) with option 4 flashed, and neither the touchscreen or the touchpad functioned, which lead me to switch to Fedora Core for testing.

    I tried to use Arch Linux (on USB) to test things, yet dmesg isn’t particularly helpful there and it runs out of if I try to install x.org during the live install, leaving me unable to use xinput –list. I don’t know if these input/output errors are related to the BIOS or not, but DragonflyBSD has no issues running xorg so I don’t think that has anything to do with it.

    I occasionally have issues where the BIOS screen doesn’t register keypresses, which led me to believe that I was locked out of my hard drive (F1, and it was still defaulting to F5). It worked after a few reboots, though. I really haven’t an earthly clue if this is related to anything else here, but I thought it would be helpful to mention everything.

    Sorry for the wall of text! I’m a little resigned to accepting my lack of a trackpad, but hopefully the information helps you to uncover an issue or two.

  8. Output of demidecode:

    lsmod | grep chrome shows that the chromeos_laptop module is indeed loaded by Fedora Core.

    Thank you again: no worries if it doesn’t reveal much. I feel I’ve taken up enough of your time.

    1. Well, dmidecode output looks ok (GOOGLE, Peppey), and that’s further confirmed by the presence of chromeos_laptop. This should mean that cyapa loads and the mouse works. Are you sure that there’s not something going on with sensitivity? With various Chromebook’ I have had issues with the trackpad only responding to very high pressure.

  9. Sorry for the delayed response. I’m sure it’s not a matter related to sensitivity, as none of the OSes I have tried even report a trackpad in dmesg. It’s as if the hardware is disconnected entirely. I also believe that my issues surrounding the keyboard during boot were my own fault at this point, and not an actual error.

    Still, thanks for taking the time. It’s not looking like I’ll get it working easily. I probably just flashed something wrong initially.

  10. Yes, the trackpad is connected and works when Chrome and the full default BIOS is restored. I have no idea what wizardry is going on to make things not work.

  11. Hi, so I’m getting to the part where I need to type in the phrase to continue, and it simply won’t work. I’ve tried it exactly how it says, with quotes, all lower case, etc, and it still says I’m typing it in wrong. Is it bugged or am I missing something really obvious?

    1. Well, there’s something wrong with the way you’ve typed it in. Although that looks okay, you might have put an extra space in at the end, or the wrap around could make it look like it’s wrong, when it’s actually right. I’ve done that last one myself. I find if you backspace at or after the wrap-around, you’ll encounter that problem. So, do it one key at a time if you have to but don’t rely so much on what you see on the screen, as that is probably misleading you.

  12. Full rom install went well on asus i3 chromebox , running full version of elementary os installed from usb stick, however selecting Jeltka at boot menu gets a blinking cursor:

    Booting from CBFS…

    1. Yeah, Jeltka doesn’t seem to like booting on some models. It’s probably something to do with a missing driver, and is the consequence of trying to get a kernel + Busybox + utils to fit inside 3.5 MB.

      Sometimes leaving it there for an extended period will allow Jeltka to boot.

  13. Hey, John, I would like to start by saying thanks for the work you have done. It worked like a charm on my Acer c720, running Debian Jessie neigh flawlessly.

    That being said, I recently got an upgrade to my Google Drive and want to revert the c720 back to Chrome OS. I tried searching around but couldn’t find any actual instructions on how to do this. Any links or tips you could give would be greatly appreciated.

    Thanks a bunch!

  14. Hi John,

    Thanks for your work. I ran your script last night on a 2013 Pixel. Upon reboot I experienced the same issue as others here with the keyboard not working. An external keyboard solved that. However the strange thing was that when I would boot an amd64 (debian) distro. It would load the debian installer, and then the screen flashes a few times, and then reboots. I tried with a sd card and usb drive and two different downloaded images. Same results. Downloaded a different distro, same thing. The keys boot fine on another machine. Writing the x86 image worked fine, booted, installed.

    Is there a history of this? Admittedly I haven’t gone through all the FAQ. I tried the MEM=1952M and other variants.

    I have my gbb.bin and rovpd.bin

    but I saw in one of your posts how to restore how to restore, but you say I need a 64 bit install to do it, so maybe I can’t do it.

    I’m sure I’m missing something simple here, if you could point me in the right direction, I’d appreciate it.. Otherwise for the moment, my x86 debian 8.1 is running fine.


  15. So, it must be something kernel or distro specific. I was using debian 8 based distros, had the same issue with amd64 not booting. Switching to debian jessie on amd64 there were no issues booting or install. Using the latest arch amd64, no problems as well. The latest version of fedora produced the same behavior as Debian 8. I’m guessing there must be a boot option I can pass to make it work, but there are no real errors displayed to guide me.

  16. Hi kupo

    There is a bug in the version of syslinux used by the amd64 jessie installer images which can result in the installer not running correctly:


    If you want to install an amd64 jessie system, probably the easiest way is to install the base system using a wheezy image (ie 7.0), then upgrade it to jessie.

    Alternatively, the stretch installer should work fine (although will give you a testing system, rather than stable!)


  17. Hi John,
    I was flash rom for Acer C7 chromebook but i don’t can install win7/win8.1. It hang up at windows logo screen.
    I want flash other rom or go back original rom. How i can make a LinuxLive USB boot?


  18. I have an ASUS Chromebox (panther) which I flashed with your new BIOS a few years back and has been running great, but now I have a new TV and the Chromebox won’t boot with the TV connected.

    Will a newer ROM fix this?

    I don’t remember how I installed it originally. I guess I just need to flash RW_LEGACY using the install script now from a linux root shell.

    1. It’s worth a try.

      It may be down to the build of coreboot that’s underlying the RW_LEGACY slot. There are other people who make firmware for that device, whose work you may also want to try out in the hope of fixing it.

      1. Thanks, I tried the latest and it did not help. However I found a weird mode setting on my TV (HDMI mode 1 / mode 2) which did help.

        Now the latest BIOS does not seem to boot automatically from the internal SSD though. It says “Booting from hard disk” then says something about press F11 for the recovery environment (which doesn’t actually do anything).

        If I hit escape before that and get the SeaBIOS boot menu, I can choose the SSD and it boots fine, but it is not the first device in the list now (the external USB HDD is, which is not bootable). Can I fix this somehow?

        1. I guess there are two potential ways around it that spring to mind:

          1. Make sure that the boot sector on the USB disk is completely empty, so SeaBIOS just skips over it – https://www.cyberciti.biz/faq/linux-clearing-out-master-boot-record-dd-command/

          2. Modify the RW_LEGACY slot file, removing the “bootorder” file from the CBFS filesystem using cbfstool (which you may find in coreboot-utils package, depending on distro, or you can clone the coreboot repo and compile it yourself, or you can download and use the statically linked version the script uses). Then write it to the RW_LEGACY slot using flashrom.

          1. The easiest way was to install my bootloader on the external disk as well, so it doesn’t matter which the SeaBIOS picks up.

            1. I don’t like that as a solution, because one day you may well decide to try booting without the USB stick in, then it might not boot and you could end up doing some head-scratching before you remember why that might be. Nevertheless, you’ve found a solution that works for you so happy days.

  19. By the way, do you have any experience with memtest86 or memtest86+ on the Chromebox? My Chromebox is crashing randomly under linux (after 1-8 days) so I tried to run memtest86/memtest86+ booted from grub, but it crashes instantly. I have removed both DIMMs in turn and it did not make any difference. I am not sure if there is some real fault or some incompatibility with the tester.

    1. The Mediawiki side of things was taken down some time ago (as in years). Some bod (possibly from the Free Software movement), asked me if I could give them an archive of the wiki, so that it may be preserved, which I did, although I am unsure as to where it is, or even if they did something with it, apart from try to mine admin passwords. :P

      Why do you think you need that url? It is not related to putting the firmware on which will allow you to install Linux.

      You just use script, flash “Full ROM”, boot from USB stick, and away you go …

  20. Hi,I installed seabios full Rom on my thinkpad 11e Chromebook,I usually use to boot from USB but now its like the bios is corrupted it does not take me to efi shell on startup again,it goes directly to bios settings and shows me nothing under boot options(where I usually see boot windows boot boot manager,and available USB) and something under device manager(and bios settings reset after reboot)
    …..please I need your help cause I can’t install any rom

  21. John, thank you so much!1
    Got thinkpad 11e expecting to install linux on it. Found out it’s somewhat tricky after I ordered it.
    Thanks to your script did the thing real quick.

Leave a comment