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)
Hi,
I get a LG ChromeBase but failed to execute your script :
w25q_disable_writeprotect() : error=1″
FAILED
…
Block protection could not be disabled!”
I think I found the screew that enable harwre wrtie protection bu removing it doesn’t solve the problem.
Where can I post some photographies of the main board ?
Regards
On Imgur, and then link them here.
Hi
I ran the script on a Thosiba chromebook (LEON), and the flashed to your costum ROM, however I can’t boot into SeaBoot with Ctrl + l . Legasy and USB boot was and is enabled with crossystem.
I ended up recovering ChromeOS and still cant boot into Seabios. Should I try to flash the bios one more time ?
Well, something went wrong because you are still running the stock BIOS – if you’re running one of my ROM’s the dev screen doesn’t appear at all any more. Try again, and post the output or I can’t help you.
Hardware protection has been removed before the flash:
flashrom v0.9.4 : 69c31b8 : Oct 31 2014 00:56:08 UTC on Linux 3.8.11 (x86_64), built with libpci 3.1.10, GCC 4.8.x-google 20140307 (prerelease), little endian
Block protection could not be disabled!
Reading current flash chip contents… spi_block_erase_52 failed during command execution at address 0x0
Reading current flash chip contents… spi_block_erase_d8 failed during command execution at address 0x0
Reading current flash chip contents… spi_chip_erase_60 failed during command execution
Reading current flash chip contents… spi_chip_erase_c7 failed during command execution
Uh oh. Erase/write failed. Checking if anything changed.
It hasn’t otherwise you wouldn’t have that error. Can you post a pic of the board with the screw removed so I can confirm?
Nice job on these ROMs, extremely helpful! Setup on a Lenovo X131e I just got today for this purpose. A little buggy on the keyboard at boot, but it does seem to be working with a little finesse. At the SeaBios prompt, I have to enter “ESC” and the number of the selection I want within about 250-500 msecs, after that the keyboard will stop working. I removed the mSATA and used that as a workaround to boot Tails via USB for the first few tests after the flash was done, but eventually I figured out that I could get the boot menu to work if I was lightning fast. It also works after a warm reboot. The GRUB menus, etc will not (usually) work either on a cold boot (nothing works until after a kernel init). I’ll be installing an SSD tomorrow and messing with some OS installs.
Yes, unfortunately I don’t have one of those Chromebooks to debug issues like that. As long as it works “enough” i.e. you don’t have a brick, I’m reasonably happy.
Hi, I’m looking for the ASUS-C200-RW_LEGACY.cbfs ROM… did you remove it? If so, why?
Thanks,
Moritz
It doesn’t work.
Hi John
Thanks for the help. The screw was removed, but I had not removed the conductive ring below (see picture).
The flash worked perfect now and Arch Linux is up and running :)
https://clubportalne.blob.core.windows.net/sitesite2520166560935931842/f/billeder/Chromebook_1.jpg
https://clubportalne.blob.core.windows.net/sitesite2520166560935931842/f/billeder/Chromebook_1.jpg
Good man, Christian! I’m not sure if some of the Chromebooks are shipping without the conductive sticker or whether it just tends to get stuck to the screw and come off by default more often that not, but most people aren’t having to remove it. I think it’s probably now the most likely explanation for anyone who still can’t write after removing the screw.
With the conductive ring:
https://clubportalne.blob.core.windows.net/sitesite2520166560935931842/f/billeder/Chromebook_2.jpg
windows 10 technical preview running in LG CHROMEBASE fully functional with the exception of audio (drivers) starting in just 4 seconds, ONLY WITH LEGACY BIOS MOD
thanks for your job
https://youtu.be/3HOQTaf54Yk
Mate, help me.
On your site, says it supports the Samsung series 5 550. I have the series 5, without the 550. Can i use the “550” bios?
Orther question
If took out the sdd and format in another computer, then put it back on the chromebook, will it work?
No.
Hi i flashed your rom, and now it wont boot into chrome os it says something like “booting the kernel.” how do i get back the backed up rom? (dont know if this matters but my write protection screw is still out) Chromebook model acer c720
You’ll want to boot off/install a Linux Live USB.
Sorry if this isn’t the best place to ask this.. I have a Toshiba CB30-A3120 “Leon.” So far suspend hasn’t worked very well, it seems like this ROM can help that. The only issue I’m having is figuring out how to open up my Leon for the write-protect screw. Ironically I replaced the LCD screen no problem with this thing, but I can’t seem to find any directions about opening up the bottom panel.
I expect it’s much like opening other Haswell based Chromebooks. Look at instructions for them for pointers.
There’s a picture of the write-protect screw here http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/toshiba-cb30-chromebook
i have asus chromebox m004. I used your script to flash the custom rom. Everything went fine and rebooted the box. Now i am unable to boot any distribution from a usb. I tried different flash drives, tried dd, tried unetbootin, tried universal boot. All gave me the same result it just says booting from hard drive and wont display the boot menu when pressing escape
Please advise and thanks
Only press ESC once at the correct time, or it will immediately exit out of the menu again.
Is there any way to change the default boot device in SeaBIOS?
See http://www.coreboot.org/SeaBIOS#Configuring_boot_order
Hi John,
I’d like to update the coreboot in my HP chromebook 14 in case there are any improvements in the last version. I’m on OpenSuse Linux now with already coreboot installed. How can I update please? THX
Hi,
The “improvements” (if there aren’t regressions/introduced bugs) will generally come from newer SeaBIOS versions. If you run the script it will automatically choose the latest version I have compiled.
Thanks John I was able to install ubuntu. I used external dvd which was detected as the first boot device and so started install. Also it seems that some keyboard is not detected and so I changed the keyboard and now boot menu is displayed
One other question my chromebox does not detect gigabit connection only fast ethernet and whenever i try to force it i loose the connection
Thanks for your hard work and advice
Which Chromebook is it, and what router/switch do you have? Are you sure the cables connecting the two devices are CAT6?
So I thought I’d give this a try on my Acer C720. I removed the write protection screw entered Dev mode. So far so good.
Entered the command to run the script and it started but then fails with:
Reading flash... backup-080415.rom: Read-only file system
FAILED.FAILED
*** Reading ROM failed, exiting... ***
Does this mean write protection is still active?
No, it means the directory the script is being run from is read-only. Can you clarify which command you ran?
Using ASUS Chromebox CN60 with write protection screw removed.
Went through flashing ROM process – no errors.
Trying now to boot from USB stick with ubuntu server on it.
It never gets to the legacy stick – It keeps coming up to
Booting from Hard Disk
early console in decompress_kernel
KASLR using RDRAMD\\Decompressing Linux… Parsing ELF… Performing relocation… done.
Booting the kernel.
and there it sits. never to move again.
Can’t boot with or without a stick
did I make a brick?
No, it’s not bricked – that’s just what happens when SeaBIOS tries to load a ChromeOS kernel. Did you manage to get into the menu?
hey john, how do I flash back to stock chrome OS. just so you know, I DID back up my original rom
Insert the USB stick you have the backed up ROM on (along with the version of flashrom from my site, which the script downloads). CD into if from the command line and type “sudo ./flashrom -w backup.rom” where “backup.rom” is the name of the backup. Then reboot.
Used this method to flash my C720 a few months ago., and had been using Ubuntu 14.04.
Experienced a kernel panic, and when I attempted to reboot, I can no longer access my kernel/partitions.
I can launch into JELKA, and I can plug in a a usb and run Ubuntu just fine without installing.
Although it would be great ot recover my data, I realize it may be lost. At this point, I’d simply be happy with installing a new copy of Ubuntu, but when I try to install, the system cannot find any partition to install on and gets hung up when I try to search.
While I’m no Linux expert, I’m usually able able to figure things out with the help of Google. This time I feel as if I just don’t know what to search. So far, I have tried Gparted, but that couldn’t find the partition either.
Any ideas/ advice would be much appreciated. Like I said, either recovering my data or deleting and reinstalling would be optimal at this point.
Sounds like your SSD is hosed.
Can you please give me a link to the flashrom download, I looked all over your website and I can’t find it, also there are 2 roms back up, one is called “backup-240315.rom”, the other is called “coreboot-peppy-seabios-181214.rom”. Wich one do i use?
https://johnlewis.ie/flashrom Make sure you “chmod +x” it before running the command.
The latter is the custom ROM the script downloaded, so use the former. Is “backup-etc.etc” not obvious enough?
The script didn’t work for me on linux kernel version 4.00
I get a critical error saying that /dev/mem doesn’t exist
Can you fix that?
No, something changed to do with kernel 4.0 – either use an earlier kernel version, or confirm that /dev/mem support is definitely compiled in.
Hello,
thanks for your script. it work wonderfully to finally get Linux Mint running on acer c710..
Any hints on how to get the touchpad working? I cant get the script to download the drivers. It fails at “can’t find file to patch at input line 5”.
I’ve come as close as to this patch option https://github.com/hugegreenbug/xf86-input-cmt. However I have no idea where to find the drivers for Linux mint 3.17.0. I appreciate any help..
You need to confirm the kernel module for the touchpad is loaded, before you go messing with drivers – lsmod |grep cyapa – if you get output, it’s loaded.
Hi, I have an Acer chromebook 15, can I install this? Thanks!
See this post https://plus.google.com/+JohnLewis-meh/posts/Q2ccySynbHc
For the touchpad in Linux you need the Elantech i2c mouse driver (amongst possibly other things). A suitable kernel config can be found in Hugh Greenberg’s Linux Mint for C740 kernel image package.
i have flashed coreboot-parrot-seabios-020914.rom on acer c710 chromebook, it boots but i get read error when booting from hard disk, and unaligned pointer 0x1 when trying to boot from usb ..
\i think i need some help ;))
Why did you flash that particular ROM? Did you even know from something someone else wrote that it works? Search for “grub usb” using the search facility above, so you can boot from a live USB.
Is there a way to keep chrome os or reinstall it to the computer after flash the rom.
No. :)
John, awesome work, one question, any chance your ROM supports the ACER Cheomebook 15 or will in the future?
Thanks. I don’t really see any need – VMX is enabled in the stock ROM’s. There is a legacy slot which I’m using myself though. See https://plus.google.com/+JohnLewis-meh/posts/Q2ccySynbHc I may incorporate that into the script if enough people are looking for Acer Chromebook 15 support.
can you tell me if this works with a ausu c200 chromebook?
That’s the kind of question you’d answer by trying it …
Step #3 of your script description is a bit confusing since you don’t mention a USB drive/stick anywhere prior in your article; I think that could be improved.
e: **GUIDE** Install Windows 8 on the Acer C720 [ Edited ]
Since we have so many models of the Acer C720, I’m releasing the keyboard part as a DSDT patch which you can apply to your own DSDT. (If you’ve hackintoshed before, you’ll know what a DSDT is so most of this should be similar).
Note: These steps are designed for Windows 8.1. If you’re running a different version, the last steps may be a bit different.
Tools Required:
1. DSDT Editor – http://www.insanelymac.com/forum/topic/287011-how-to-extract-and-compile-dsdtaml-with-dsdt-editor/
2. asl.exe from Windows 8.1 Driver Kit
64 Bit Download: https://www.dropbox.com/s/ne1r6v8x06i5smi/asl.exe?dl=0
32 Bit Download: https://www.dropbox.com/s/pq8elbqa35gs9bk/asl.exe?dl=0
3. CrosKeyboard DSDT Patch: https://ghostbin.com/paste/ukc9c
4. CrosKeyboard2 Driver: https://www.dropbox.com/s/j58b3pxjrhzf5qx/croskeyboard2.zip?dl=0
Steps:
1. Save asl.exe to your Desktop
2. Open DSDT Editor
3. Click File > Extract DSDT
4. Click Patch > New
5. Paste in the contents of the patch from the ghostbin link (make sure you copy all of it)
6. Click Apply and then Close
7. Click IASL > Compile
8. A box should show up. Warnings, Remarks and Optimizations are ok. Just make sure there are no errors. If there are, repeat steps 3 through 7.
9. Close the compile window and click IASL > Save AML As
10. Navigate to the Desktop and save as “dsdt.aml”
11. Right Click on the Start button and click “Command Prompt (Admin)”
12. In Command Prompt type in (without quotes): “cd %userprofile%\Desktop” and press Enter
13. In Command Prompt type in (without quotes): “bcdedit -set TESTSIGNING on” and press enter
14. In Command Prompt type in (without quotes): “asl -loadtable dsdt.aml” and press enter
15. Make sure it says “Table overloading succeeded.”
16. Reboot
After Rebooting:
1. Open Device Manager
2. Search for an “Unknown Device” with a Hardware ID of “ACPI\GGL0303”
3. Right click on the device and click “Update Driver Software”
4. Select “Browse my computer for driver software”
5. Browse to the folder where you saved croskeyboard and install.
6. Press the “Search” key on your keyboard and hopefully if everything went right, you should be on the Start screen Smiley Wink
Just wondering will this work on my HP chromebook 13? Thanks
sorry, messed up mine is a 14! pretty sure it does though :)
It depends which model it is. Some of the newer HP 14’s actually have an ARM processor, which won’t boot SeaBIOS.
Thank you !! I was able to install ubuntu onto my X131E, is nice booting right into ubuntu.
You’re welcome.
Cannot write to ‘md5sums.txt’ (Success).
*** For some reason download of coreboot-peppy-seabios-181214.rom failed. Please remove coreboot-peppy-seabios-181214.rom from the current directory and try again later ***
Did you do what it said?
Correct me if I’m wrong but all you have to do if I understand correctly is run the crosh script listed and then you are ready to go?
If you had actually *read* the Download page, you would know the answer to that question.
Yes I have read it a few times and I am just making sure I understand so I do not brick my device.
Quote “You need to be in dev mode and disable write-protect by enabling a jumper/removing a screw (located somewhere on the main board). Disabling write-protect is not necessary on the two legacy slot only models.” Which part of that is unclear? It’s not *just* a case of running the script, is it.
Hey John. I have an acer c720 running on your ROM. I saw on your FAQ page that you said it is possible to run Arnold the Bat’s Chromium OS buils on your ROM. I followed the instructions on Arnold the Bat’s website on how to put his build on a flash drive, but it will not boot on my chromebook. Please help
Well, I guess something must’ve changed then. I haven’t tried it on the C720 anyway. You’re going to have to give me more detail than it won’t work/boot, like what exactly is happening.
Hi John, thanks for all the work! I have used your legacy slot mode on my Acer chrome book 15 and it worked fine. However I am kinda curious about why this model can only use legacy mode? Is the problem on the hard disk or somewhere else? Thanks!
It’s not that it can *only* use legacy mode, it’s that there’s no compelling reason to go through the risk of a completely new ROM. VMX is enabled by default, and the scary screen only appears for a second if you’ve set GBB flags to 0x489. There’s no risk of wiping your install out, so I can’t think of a good reason to make a full ROM.
However, I have been working on something over the last week – a way of getting the best of both worlds – relatively low risk, but still gets rid of the horrid screen and to all intents and purposes de-Chromifies the device. I may get a new script out today.
Hi John!
Any plans on fiddling with samus/pixel 2?
Hi,
Not especially, no. Doesn’t the legacy slot already work on the Pixel 2? If you want an alternative legacy slot, the C910/C740 slot I made should also work on the Pixel 2. What would be the great reason behind the fiddling?
Hi again,
My Pixel 2 can’t no longer access the SSD. It shows up at Seabios menu, but can’t boot from it. I’ve tried diagnosing from an USB Arch Linux, but it doesn’t even show up in the dev folder. All I can figure out is an error message in dmesg that says it’s frozen.
Others, who had the same problem on different machines, have reported that updating the bios helps. So going in their direction I’ve ended up here.
Your flashrom works in Pixel 2, but all I need now is a working up-to-date working coreboot with Seabios.
I think updating the entire ROM is a bit drastic, and very likely unnecessary. I’ve updated the script to look for Pixel 2 (Samus) and flash it’s legacy slot, so you get different/updated SeaBIOS. I’m dubious over whether that will fix your problem, though. It sounds to me like the SSD itself is probably the problem. FWIW, the 32GB SSD in my Chromebook 15 died after only 2 weeks.
You’re right it didn’t help :/
Looks like I need to run on USB from now on.
But thanks for the help, really appreciated!
If you’re looking for a replacement drive, this is what I have in my Chromebook 15. Transcend should be better than most of the garbage that’s out there. It’ll probably fit your Pixel too, but you’ll want to check it’s the right form factor.
http://www.amazon.co.uk/gp/product/B00KLTPUU0?psc=1&redirect=true&ref_=oh_aui_detailpage_o02_s00
It will unfortunately not work. They’ve hardwired the SSD in the Pixel 2 and there isn’t an open slot like the one in the first…
Wow. I can’t believe you could spend that much on a device and not be able to replace the drive. That was really short sighted on their part.
Hi John,
Great work on this.
I just flashed it to my Toshiba CB30 Chromebook. I have a USB drive with Arch Linux on that I want to boot off. But now when I reboot, it says ‘Press F12 for boot menu’ (there is no F12 key) then about two seconds later:
Booting from Hard Disk...
early console in decompress_kernel
KASLR using RDRAND
Decompressing Linux... Parsing ELF... Performing relocations...done
Booting the kernel.
Which seems about right, I assume it’s booting Jeltka or something. But this is followed immediately by a blank screen without so much as a blinking cursor. I then have to power off.
This wouldn’t be as much of a problem if I could boot off USB, though!
Hi Russell,
Which option did you choose in the script?
Actually, don’t answer that, I deduced you ran option 1. I somehow missed adding the correct boot-menu files to that cbfs, so you’ll need to use an external keyboard to do the F12. Once you have something booted, if you run the script again, and choose option 1 again, the cbfs will be updated to use ESC as the menu key. HTH.
FYI, if you’re using option 1, that only updates the BOOT_STUB area of the ROM, which is 1 meg in size, and therefore not big enough for Jeltka.
Yes, it was option 1. I don’t know why it didn’t even occur to me to plug a USB keyboard in. It’s booted now =)
Thanks for the help.
Flashed option 4 this time. Now I have Jeltka. This is great. Thanks!
I’m a bit skint at the moment but I’ll try and donate something next month when I have the cash. =)
Did you backup your product data using option 3 beforehand?
btw when I flashed option 1 before, obviously it wasn’t booting Jeltka, it was trying (and failing) to boot Chrome OS.
Yes, you’re correct.
Let me start by saying thank you for giving us a way to make use of a chromebook! I followed your instructions on a c7 parrot and had no issues(except for a write protected thumb drive). So now im attempting this again on another c7(Parrot Coffinfish??) but when I check the status with flashrom Im getting
wp: status: 0x98
wp: status.srp0=1
wp: status.srp1=0
never had a srp1 before???
c710 2856
IDK either. I wouldn’t say it’s anything to worry about.
hi John, first much thanks for your great work. I could no longer stand chrimeos so my Acer has been running your bios for 4 months now.
but it intermittently won’t find the hard drive, looks like a connector problem to me. but, is there a way of booting into seabios ? tried all the f keys and ctrl-l. nothing
thanks
Hi,
I’m not sure what you mean by “booting into SeaBIOS”. If you mean a setup screen, there isn’t one. If drive detection is intermittent, it’s most likely a drive issue.
I flashed my rom to my dell chromebook 11 to coreboot ubuntu 14.04. I got the error “not enough memory to boot image”, and after pressing tab I was able to change the memory value to mem=2024m and this worked to installl ubuntu. However, my hardware has 4GB of memory and ubuntu is only showing 2GB. When I tried the change the memory value to mem=4036m the system crashes and I cannot install ubuntu. Is there a way to get my ubuntu bios to see all my memory?
Thanks
Apparently, memory recognition problems like that are generally an issue with Syslinux. So, once you have Ubuntu installed, and are using Grub2 to boot, the issue should disappear. Have you tried that?
I have an Acer C720 -2844 which comes with 4GB of RAM. Does your firmware work on the 4GB model? How is your custom firmware differ from the stock SeaBIOS?
Thanks for all your work!
Perhaps you could read the ROM Download page and then post back here if you still have questions.
Another question. How do I actually install your custom firmware? Does it just require running the command in a Chrome OS terminal window?