Divulged this evening by Duncan Laurie on the coreboot mailing list:
If you want to boot SeaBIOS by default and you have unlocked the SPI flash write protection you can set flags in the (write protected) “GBB” flash region that will make it boot legacy mode by default.
In Chrome OS there is a script called set_gbb_flags.sh that will do this for you. Run the script with no arguments to get a list of possible flags and then to enable short dev mode screen (1 second timeout) followed by default legacy mode boot you could use these flags:
Could this do any damage if it’s done without first unlocking the write protection?
There has been the occasional report of the RW Legacy (i.e. SeaBIOS) slot being wiped out and unusable. I suspect this is because the person(s) perhaps didn’t disable write-protect, or perhaps some other issue. Just be aware it *isn’t* fool proof.
Thank you for this post.
I’m just curious what would happen if you pressed the space bar after performing these steps. Would it wipe out these settings? Could it potentially brick the machine?
I’ll try it myself and tell you. It shouldn’t erase anything, as I understand it, but you never know …
I’ve tried it myself. It beeps and gives a message about ‘x being prohibited because of GBB force_dev_switch=1’ or similar. Safe!
So I just run set_gbb_flags.sh 0×489?
You have to make sure the write-protect screw is removed before you do this, otherwise you’ll wipe out the SeaBIOS slot.
How i unlock the SPI flash write protection ?
I just try to run the set_gbb_flags.sh 0x489 and it apears:
/usr/bin/old_bubs/set_gbb_flags.sh: 81: flashrom: not found
Dont know what to do, help pls !
You have to open it up and remove a screw. Look at the ChromiumOS Developer Information for the C720 for pics.
( im using c720 on chrome os with developer mode ) And what i want to do, is not to push Control + D everytime i open my chromebook. Then i need to that ? and if i need to do it… ( like i was trying )
How i unlock the SPI flash write protection ?
I just try to run the set_gbb_flags.sh 0×489 and it apears:
/usr/bin/old_bubs/set_gbb_flags.sh: 81: flashrom: not found
Dont know what to do, help pls !
Also, make sure you run the script as root, otherwise it won’t work (sudo -s).
If you *just* want to get rid of the delay, as opposed to enabling the SeaBIOS slot by default, you will need to adjust the number you type there. Run the script without any arguments to get info on what each number means.
Is there a way to make SeaBios the default with in the linux side of things? I got a little hasty and compleatly removed my chrome os partiotion to make room for Xubuntu and any storage I could get out of the 16 GB SSD. Am I just going to have to re-install chrome os, removing Xubuntu in the process, and making Seabios the default from there? Also, if I do that and then remove chrome os again will it revert back to staying on the splash screen and defaulting to chrome os?
I think that script is in the CrOS SDK (albeit named with “old” at the front) so try installing the CrOS SDK (mini-layout) running it from there in your Xubuntu install.
It’s technically easier just to go back to ChromeOS, if you haven’t anything in your Xubuntu install that needs saving/preserving. And no, it won’t change the flags back unless you expressly do so with the script. For extra safety, once the flags are changed as above, the Chromebook won’t do anything if someone presses “space” by accident except beep. HTH.
Can someone please upload the c720 factory bios, I no longer have mine and would love to go back to factory for now. I have googled all I can but can’t seem to find the image. Thanks in advance.
Bill Richardson has a procedure for doing that at http://goo.gl/GziFh7
Jay Lee provided the link.
I would do it slightly differently but it’s swings and roundabouts.
I was getting really tired of my 2-year-old constantly button-mashing and wiping out my Ubuntu install. I removed the screw and ran the script as root with the flags you recommended (0x489) and everything works like a charm! Thank you so much!
You’re welcome. There are also working ROM’s which just have SeaBIOS now, in case you’re interested.
Hey there, thank you for the guide, it worked perfectly. I am looking to reset those flags to the default- do you know how I could do that?
I guess just set them to 0x0. Try it and see.
I want to not have to press Ctrl – D on boot up to pass Scary Boot Screen. So only the 0x000001 Flag I want, I have a HP Chromebook 14 Snow White and do not care about Seabios at all – I don’t use it.
Given this do I need to remove write – protect screw, if so where is it? I can’t seem to find any documentation online in regards to the screws position on HP Chromebook 14?
Does the chromebook still beep each time it boots up with shortened Boot Screen?
Regards – Harrison
Yes, changing the GBB flags requires removing the write-protect screw, because the ROM has to be read and rewritten during the process.
There is a picture of where the screw is somewhere, but I’m not sure I’d be able to find it easily. It is situated on the right-lower side of the board, and there is a gap in the surround (which the screw makes a circuit of when in). Can’t remember whether it’s on the top or bottom side, so you make have to take the board fully out to get at it.
I don’t know whether it still beeps with just that one flag, you will just have to try it.
Thank you for the work and publishing you’ve done regarding these BIOS.
I would utilize your Bios for the ‘falco’ but I am ‘concerned’ about the operational integrity of the chromebook when you state the power saving function is even worse than normal? Do I misunderstand? Would you say the Bios you have for the HP Chromebook 14 falco is satisfactory for use or useful with notable limitations?
If it still needs work, do you intend to work out the kinks, if so , any idea when?
Again thank you for the work you’ve done and the dissemination of that information.
I take it you’re using the guffy language because English is not your first?
You are probably better off just changing the GBB flags. The power saving problem is caused by the TPM module. There are a couple of patches which do away with the TPM code completely, when not using ChromeOS. However, they are of limited use, because the Linux kernel XHCI driver won’t currently allow the laptop to go in and out of suspend more than once, anyway. So, no, I don’t plan on doing any more with it until the kernel XHCI driver is sorted out.
I erased BEOS, is there any way to bring my Aser c7200 back to live ?
Now I have SeaBIOS, but its not working :)
Dear all is ok only driver not workin.
We waitin for another tutorial how to change in default factory google os. Windows work well but this model is disign for google os. any news pls let me know how to factory reset in G.OS
Make a ChromiumOS USB stick and change the flags back to 0. You’ll then be able to run recovery. Try Arnold The Bat’s build.
I have windows 7 in my acer c720. any procedure step by step pls.
I don’t know how to change flag to 0 :(
Please rephrase, I don’t understand the question(s).
What do you want to do?
Which bit are you stuck at?
The laptop is Acer C720. I have installed windows 7 is work well, but problem is for some driver.
Now need to change in chrome os.
What can i do?
You asked to create chrome os usb and to change flags back to 0.
How to change flags back in 0?
In my machine i have windows 7 for moment :/
Use one of Arnold The Bat’s ChromiumOS builds, written to USB stick. That will allow you run the script to change the flags back to 0.
Thanks for this steep.
I have created USB and work very good but in sudo -s need password?
What can i do?
And the moment i have run set_gbb_flags.sh 0×489
flashrom: not found
You just type in *your* password in order to use sudo.
my password? all is incorrect.
Are you have any video tutorial for this issue?
The password you login with.
“Bill Richardson has a procedure for doing that at http://goo.gl/GziFh7”
I have no access to that site, can you share the info?
It seems to be locking people out at times lately. It should be open to everyone. Anyway, after the last time it happened I decided I couldn’t trust it any more. That’s why you can download the static Flashrom from my site, and I’ve also done my own write-up on my own procedure (using kpartx is a whole lot easier than supplying losetup with the right sector, especially if it changes).
John Lewis: Thanks!
I ended using your tuto! Working like a charm.
Btw, I was using your last c720 build, but with the new kernel 1.17Rc1 or Rc2 my xbacklight is broken. Do you have any idea about that?
Yes. I am looking at the at the moment. It’s because of a change in the kernel and the way it deals with back-lights since 3.15. Currently, the kernel identifies whether to enable the back-light using the subsystem vendor ID’s written into the firmware. I have not been changing this value since I didn’t know what it was for, and it didn’t seem to do very much. However, to do things properly the video BIOS should report it has a backlight so that the kernel picks it up. So, I am looking at a way of getting such a BIOS, and including it in all the Haswell builds so that the back-light works, but the need for worrying about subsystem ID’s is obviated. Expect an update in the next day or so.
Here’s more info. Scott is the one who enlightened me about the issue.
If I have already installed linux on my chromebook (hp 14), and now I decide I want to shorten the developer screen and boot straight into linux by removing the write protection screw etc…will removing the screw and setting those flags wipe my linux that I have installed already? Therefore, forcing me to start over again…
It shouldn’t do, no.
Is it possible/safe to remove Chrome OS after doing this? How would one do this without reinstalling Linux or wiping the SSD?
It’s possible, but it doesn’t sound safe for you, as if you had the requisite knowledge to perform it safely you wouldn’t need to ask me. A wipe sounds like the safest option. Which distro are you running? Which model Chromebook do you have?
ACER C720 ubuntu 14.04 LTS
I used this guide to install it: http://www.linux.com/learn/tutorials/764181-how-to-install-linux-on-an-acer-c720-chromebook
This is my first time running Linux.
It’s easier just to get your data off, then install Linux in the same way you would on a normal laptop – wiping in the process.
Hi John, I have a c720 with crunchbang. I’ve stomped chromeos during ht e crunchbang install. is there any way to run the set_gbb_flags.sh script without chromeos on the machine? do I need to restore and then re install linux?
You can download, mount and chroot into a recovery image and run it from there. This will be some help in that regard. Beyond that, you’ll probably want to mount dev, sys and proc before you do the actual chroot’ing, i.e.
mount -t sys none /directory/where/chromeos/image/is/mounted/sys
mount -o bind /proc /directory/where/chromeos/image/is/mounted/proc
mount -o bind /dev /directory/where/chromeos/image/is/mounted/dev
chroot /directory/where/chromeos/image/is/mounted /bin/bash
I have removed the write-protect screw and switched to root. The problem I’m running into is that set_gbb_flags.sh does not exist in my /usr/bin/ directory (or anywhere else, as far as I can tell.
This is on an Acer c720 with a fresh install of ChromeOS in developer mode.
Any idea what I need to do? Thanks.
Of course as soon as I take the time to ask for help, I find the solution.
For me set_gbb_flags.sh was located in /usr/share/vboot/bin/set_gbb_flags.sh
Just in case someone else has the same problem.
I have the impression that functionality may have been moved into another script which *is* in (/usr)/(s)bin somewhere. If you could find it and tell me what it is, I can update the article accordingly.
The script has moved to /usr/share/vboot/bin/set_gbb_flags.sh and the flashrom command isn’t in your PATH by default so…
sudo /usr/share/vboot/bin/set_gbb_flags.sh 0x489
Are you sure that the functionality of that script is not provided by another, which is in $PATH?
Unable to set_gbb_flags.sh 0x489, keep getting an error:
/usr/bin/old_bins/set_gbb_flags.sh: 109: flashrom: not found
chronos@localhost / $ set_gbb_flags.sh
Changes ChromeOS Firmware GBB Flags value.
Usage: /usr/bin/old_bins/set_gbb_flags.sh [option_flags] GBB_FLAGS_VALUE
Defined flags (some values may be not supported by all systems):
To get a developer-friendly device, try 0x11 (short_delay + boot_usb).
For factory-related tests (always DEV), try 0x39.
-d,–[no]debug: Provide debug messages (default: false)
-f,–file: Path to firmware image. Default to system firmware. (default: ”)
–[no]check_wp: Check write protection states first. (default: true)
-h,–[no]help: show this help (default: false)
chronos@localhost / $ set_gbb_flags.sh 0x489
/usr/bin/old_bins/set_gbb_flags.sh: 109: flashrom: not found
Are you running it via “sudo -s” or prepending it with “sudo”?
set_gbb_flags.sh is in /usr/share/vboot/bin/
Thanks for the information!
Thank you for your article.
Is there any way of doing this from Linux (Ubuntu)? I don’t seem to have ChromeOS any more? Can we just download the script and run it or does it call other stuff?
I just wanted to have an easy to use Linus laptop where I don’t have to worry about the battery running flat and then losing my Linux environment (this happened to me a while back).
PS Are there other chromebooks that allow you to upgrade the SSD and come with a processor that’s easy to use with Linux. I quite like the Celeron the C720 comes with but would prefer nicer hardware like the original Toshiba 13″ but sadly the SSD is fixed. 4GB RAM would also be nice.
Thank Duncan Laurie, I just parroted his info.
You can run it from within a ChromeOS image. There’s an article on here about extracting one. Then it’s just like chrooting into any other Linux image – bind mount dev proc and sys, and then chroot.
It kind of stopped with the C720/HP14. We’ll have to see what the Broadwell based Chromebooks bring, next year, but sockets and connectors cost money, and Chromebooks are all about saving it. My recommendation is not to get too hung up on upgrading the interior storage – I’ve been running my HP14 with the original SSD and a *really* slow 128GB USB 3.0 stick, mounted to Downloads, the last 6 weeks, and it’s an almost undistinguishable experience from the upgraded SSD (which eventually b0rked) the previous 6 months.
Stay away from the Baytrail/ARM Chromebooks. Although the high IPS screens are really nice, the processors are way too slow and more suiting of a mobile phone. Broadwell will be the one to watch.
Hey John. Thank you for the article, this looks like exactly what I’m looking for. However, I’m still having some issues I’m wondering if you could give me some advice on, please:
I originally found this post after having my c720 with Elementary OS installed on it die after I let the battery die and reset the settings regarding legacy boot. Should’ve been no problem to put back, but I haven’t been able to install Elementary OS without it corrupting my Chrome OS installation. So, two questions:
Is it ok to carry out what you’ve detailed in this post before installing another OS, and will it stick if Chrome OS gets messed up? I’m worried about resetting these flags and then having the Elementary installation mess up and then not being able to get into any OS at all because it defaults to a legacy boot.
Is there a way that you know of to either edit these flags or edit the legacy boot settings from the Chrome BIOS? Pressing TAB at the Scary Spacebar Screen gives me information on both of these but doesn’t let me edit them.
Cheers for any help. I’m determined to make my cheap Chromebook into a reliable Linux machine that doesn’t randomly render my whole installation inaccessible when the battery dies!
It is okay to change the flags before OS install. If your battery dies again, you will lose the GBB flags you’ve set, but you can set them again with a ChromiumOS USB stick instead of wiping your beloved distro off. It’s a “feature” of the original C720 firmware.
Perhaps you should consider the custom firmware I provide, which will get rid of the ChromeOS specific stuff completely, and make your Chromebook behave like a conventional laptop.
Hello. You are doing some neat stuff. I set my daughter up with an ACER C720 for Christmas. It is running Ubuntu 14, not a dual boot though. I would like to get rid of the scary screen though because my daughter has already once wiped every thing clear by hitting the space bar instead of ctrl-L.
Can I set these flags in Ubuntu or do I have to be in ChromeOS? I have a recovery image of ChromeOS and am prepared to start over if necessary but it would sure be nice if I didn’t have to.
You should be able to run it by chrooting into a mounted recovery image. See the end of https://johnlewis.ie/extracting-the-shell-ball-rom-using-a-chromeos-image/ for details on successfully mounting the image. Chroot’ing is like chrooting into any other system i.e. bind mount /dev /proc /sys and sudo chroot /mnt /bin/bash
Got it! Thanks!
Hi I have followed the procedure as stipulated here and it works. However now I would like to restore the device to factory settings.
Does anyone know the procedure?
Have you still got the backup on USB?
yes I do and I can install chrome os back, the issue is I am not sure how to undo the script, it wont let me log back into the command line with any keyboard shortcuts.
and so chrome os will not boot
That doesn’t make a lot of sense to me. If you have written the backup ROM back to the device, using Flashrom, you will be able to load ChromeOS from a recovery, and so also boot ChromeOS. Please indicate which ROM your Chromebook is currently running.
I will try a gain soon and write down exactly the steps I took, I know its not very clear now.
How do I determine which ROM I am using?
If you aren’t getting a “ChromeOS is missing or damaged screen”, it means you’re still using one of my custom ROM’s. You flash the backup back using “./flashrom -w backup-date.rom” while cd’ed into the directory the USB stick is mounted on.
I’ve tried it and it works fine.
But now I want go back to only ChromeOs.
How can I reset the Bios-Settings?
Can anyone help me?
If you hold down ctrl + D at the boot screen (I think) it will attempt to boot ChromeOS. You can then recover and use the gbb_flags script to set the flags back to 0 i.e. 0x000
It works perfect.
Thank you very much and best regards.
Thank you so much for publishing this info. Would you be willing to write out the exact commands needed to execute these changes? I have limited command line experience.
This sounds like a SPAM comment. The exact command is given, but, you need to have developer mode enabled. That’s covered on the ChromiumOS website. Search.
I’m coming across a problem where I do this, it displays the correct hex 1e9 as the gbb flag, but will still look for the chrome os. I still have to press ctrl+l every time, but now I have to do it within a second of it posting. I don’t get it.
How do you know that 1e9 is correct?
I really need your help! :-O
Your rom works just perfekt but…
after i decided to upgrade my ssd to 128gb it won’t boot a usb stick. i tried to reinstall chromeos on the 128gb and run your script a second time to have a running linux on my ssd. but i can’t get into the chromeos recovery mode and i don’t know how to restore the usual chrome-rom :-/
Please help me :)
The easiest thing would be to get some bootable media working. Yes, it is fussy about makes and models. Did you try an SD card?
Looking for suggestions:
I bought a second-hand Acer C720 to do some tinkering, hence immediately removed the write-protect screw (#7 at http://www.chromium.org/_/rsrc/1381990807648/chromium-os/developer-information-for-chrome-os-devices/acer-c720-chromebook/c720-chromebook-annotated-innards.png ). Having removed it I was still unable to make /usr/share/vboot/bin/set_gbb_flags.sh executable — response was “read-only system”. Yes, I removed the correct #7 screw, I used “sudo su” within crosh, there is no corrosion in the machine unless you count a slight reddish haze on the inside of the back case, and I’ve read all the online discussions that mention removing the bleeping write-protect screw from a C720. Including the thread at https://plus.google.com/+PedroLarroy/posts/YWuxKoxJ98M . I tried putting a bit of insulating foam between the overlapping wire and the #7 metal. I tried cleaning out the area with a toothpick but there was nothing to clean out really. Anyone got any bright ideas out there?
Get another board, or flash externally.
I had a similar issue with a Lenovo N20P whereby removing the screw didn’t work. Out of desperation, I even tried scraping through the tracks on the board coming from the screw area. In the end, the only way I could flash was by “hard-pulling” a couple of the pins externally, and the board subsequently no longer allows me to flash the SPI at all, any more.
If removing the the write-protect screw doesn’t undo write-protect, what do you try next?
I replied to your previous comment.
Leave a comment