ASUS Chromebox Owners Rejoice!

I have a fix for the nasty bug which stops you booting from USB in SeaBIOS on the ASUS Chromebox. It’s an updated CBFS filesystem for the RW_LEGACY slot of the firmware, which contains an updated version of SeaBIOS. Simply download the file and apply it in the Crosh shell like so (you don’t need hardware write-protect disabled)

sudo flashrom -w -i RW_LEGACY:asus-chromebox-SeaBIOS-new.bin

http://johnlewis.ie/asus-chromebox-SeaBIOS-new.bin

md5sum dc200444a02eafcce0486fedf86bf4f1

Beer me on your way out!

103 thoughts on “ASUS Chromebox Owners Rejoice!”

  1. Just got mine today and have been looking around online for a fix like this. Trying it out now. Thanks!

    One quick note though, the pre tag above with the command in it (for me anyway) cuts off the _ in RW_LEGACY (with a horizontal scroll bar). Having never done this before, that threw me off a bit more than I’d like to admit.

  2. I’m not sure exactly what you mean. I’m able to triple click on that line, it selects the whole thing, and then I can copy and paste it into the terminal. It looks okay to me. As well as the standard

     (preformatted) tags, there's also [bash][/bash] for the syntax-highlighting.
  3. Oh, yes. Copy/Paste would certainly work fine. I had my laptop out researching stuff alongside the running chromebox. I was reading it off the laptop screen and typing into the terminal on the chromebox. It’s not a big deal but i mentioned it in case anyone else had the same issue.

    Heres a screenshot of what I meant. I just missed the underscore because its not visible.

  4. Can’t see any picture.

    I think I only see pre tags if the page didn’t finish loading, for some reason. Anyway, not to worry.

    If you’re trying to boot some live distros, you may need to add “mem=1952m” to the kernel command line to get them to boot, or get a “non enough memory” errror.

  5. Is there any need to backup (or have a backup of) the factory SeaBIOS — in case things go badly (or one just wants the original back again). If so, where/how could this be done, and how could it be re-applied?

    1. You can run the same command with “-r” and a different filename to save the original out. There isn’t really any need though, as you can just extract the factory SeaBIOS from the shell-ball ROM. However, making your own copy is quicker and easier.

  6. Another related question which would immediately follow being able to boot off an external drive on the Chromebox: can anyone direct me to docs describing *which* partition on the existing 16gb ChromeOS drive is suitable for shrinking to make room for a new one, and how much I can afford to steal? Alternatively, can an external drive be used to contain the alternate Linux distro *without* the need to steal any space from the internal SSD? Take note: I (sortof) understand GRUB2 stuff, but this SeaBIOS is totally alien to me :/

    1. You would generally reduce the size of the partition labelled “STATEFUL” using cgpt. There are various informations around the webz on doing this, and I forget what the syntax is as I hardly ever use it. :)

    2. In theory, you should be able to boot off any external drive. However, my updated SeaBIOS doesn’t like trying to automatically boot USB first, for some reason, so you would need to hit ESC and then press “2” to boot the external drive.

  7. John, is your fixed SeaBIOS likely to end up on the Chromebox ‘official’ updates, and that we would all eventually get it automatically?

  8. Are these other commands required in order to make these changes effective?

    sudo crossystem dev_boot_usb=1
    sudo crossystem dev_boot_legacy=1

    If so, what would happen if these commands are *not* run?

    For now, I think I will avoid the ‘extra’ ones (i.e. sudo set_gbb_flags.sh) that require ‘write protect screw’ adjustments, since my impression is that mistakes at that level can brick the Chromebox (?)

    1. Not as far as I’m aware. Indeed, I didn’t run them on my HP Chromebook 14.

      Unless the Chromebook inexplicably loses power during the process, you won’t brick your device changing the flags. Worst that I’ve seen happen so far is people screwing up their RW_LEGACY slot by *not* having the screw removed before changing the flags.

  9. Thanks for your help with my questions! After putting the pieces together from various threads, I concluded that the ‘crossystem’ commands above were required in order for ‘CNTL L’ to work its magic. After the SeaBIOS patch was installed, and those commands run, ‘CTRL L’ gave me the boot options that I was looking for — and I was able to install my beloved LMDE distro on a USB3 external drive :)

  10. would running this enable an install of a hackintosh? I’m guessing so, and perhaps that’s not your forte, but I greatly appreciate all of your work regardless.

  11. Trying to make a chromebox usable for a novice user.

    Anyway to get it to boot to legacy by default? I tried the new legacy bios and:
    sudo crossystem dev_boot_usb=1
    sudo crossystem dev_boot_legacy=1

  12. uh…mine gives the error “Block protection could not be disabled” but then continues the flash.

    I reboot, still the same “does not support usb boot” error.

  13. Thank you so much for this fix! I’m very pleased to be running Fedora on my Chromebox now. I didn’t even have to remove the write-protect screw. It just works :)

    1. You’re welcome. An enterprising chap on the G+ community has also put together a complete ROM which works with external keyboard, USB 3.0 devices, and still boots USB first.

  14. Hmm… I’m so tempted by this little box. Is it available anywhere in Ireland or even Europe? I’m looking around and finding only the Samsung version :(

    1. Not yet. Think it’s slated for October. In the meantime you can get the latest generation Acer, HP, and Toshiba Chromebooks here. PC World online and Argos are your friends …

    1. The graphics card PCI id’s are likely different, so no. On the Celeron 2995u based devices id’s are 8086:0406 or 8086:0a06 depending on firmware. What id’s has the i3 version got?

  15. James, hit me up on G+ if the i3 legacy BIOS has the same issue(s) as the celeron one. I can crank one out for you if John doesn’t get to it first :)

  16. Just tried this on i3 Chromebox, M075U, no dice. Blank screen on start up and it hangs up with blank indefinitely after hitting crl + l. With stock seabios, I get a blank screen on start up but ctr + l brings me to the bios page which hangs after displaying Loading from Hard disk.

    lspci -nn gives
    VGA controller drive id: 8086:0a16

    Hope this helps.

  17. Not yet, I am looking to do a clean install, don’t want to dual boot unless I have too.

    1. Well, that’s why it’s hanging – ChromeOS won’t boot directly from SeaBIOS because the SeaBIOS portion isn’t verified. See if you can boot from a Linux USB and get something installed. If you’re not able to do that then I’ll look at doing an RW_LEGACY slot update for the i3 ASUS Chromebox.

  18. I already got Ubuntu 14.04 onto my Chromebox but apparently I did something funny to the boot options and now it’s impossible to boot ChromeOS, so I don’t think I can run their version of flashrom. (And I count myself lucky that I didn’t screw things up so completely that it wouldn’t boot from SeaBIOS too!)

    This is something I’d like to fix; apparently I need to update to your new version of SeaBIOS and clear some boot flags, but both of these depend on ‘flashrom’ working right. There IS a version of flashrom available on Ubuntu but it’s only 0.9.4 (ChromeOS apparently uses something newer) so it’s unclear what programmer I’d use, what device drivers need to be loaded, or what the ‘flash layout’ is. Where might I find these things? Or am I just stuck?

  19. Phil,
    updating SeaBIOS isn’t going to change the boot flags, those are stored in a different area of the firmware. Your best bet is likely to boot to a ChromiumOS USB stick, then use the set_gbb_flags.sh script to reset the boot flags to 0x0 from a shell prompt (sudo set_gbb_flags.sh 0x0).

    If you can’t get that going, hit me up on G+ or hangouts and I’ll guide you thru it.

    cheers,
    Matt

  20. Hi John,

    I seem to have bricked my ChromeBox after flashing and rebooting. The white screen comes up, but just sits there – hitting CtRL-D, CTRL-L, or any of the commands that are supposed to work, don’t.

    I’ve tried with various USB keyboards, and am at a loss as to what to do now. Any suggestions would be appreciated.

    Thanks,
    Nathan

  21. Hi John,
    Thank you for a great tutorial. Im trying to install android ISO on my asus chrome box. I’m able to se SeaBios loading screen after CTRL+L but the system doesn’t allow me to get to a booting menu. It shows ”Booting from Hard Disk….” , tried ESC key on the keyboard many times during SeaBIOS boot, still doesn’t work.
    Oleh

  22. Hi,
    I am not able to apply this patch:
    localhost / # sudo flashrom -w -i RW_LEGACY:asus-chromebox-SeaBIOS-new.bin
    flashrom v0.9.4 : 51c8a16 : May 07 2014 03:37:05 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!
    Cannot stat file asus-chromebox-SeaBIOS-new.bin: No such file or directory.
    Error handling ROM entries.
    FAILED

    What am I doing wrong?

    Thanks

  23. Thanks John,

    You have been very quick and helpful as always.
    Success, now I am heading to install manjaro on my box.
    Thanks again!!!

  24. It is meant to be able to show the boot menu if nothing is setup?
    Because I have patched my chromebox with your file (and it says it is yours in seabios) but pressing esc does nothing and after your patch pressing control + u on the main screen now flashes the screen and beeps a few times (vs only doing it once without your file).

  25. So it turns out that it is very hard to get the boot menu to show up, I have found that pressing esc 3 times gets it to come up.

    1. Perhaps try Matt DeVillier’s version off the community and see if that is any better. I take it your keyboard is otherwise in perfect working order?

  26. After applying the SeaBIOS update to my Asus Chromebox (Celeron), I was able to boot USB 2.0 devices including the SD card but I have no luck with USB 3.0 devices. Any ideas?

  27. No, I did not try Coreboot. I want to continue running Chrome OS and have ability to boot Puppylinux off of SD card or USB stick occasionally.

  28. I am having an issue with no video, here are the steps I used and where I am now. Any advise would be helpful.
    1. Downloaded the asus-chromebox-SeaBIOS-new.bin from a windows machine to a USB drive
    2. Started up the Chromebox, entered CTRL+ALT+T and then “shell” to get to the command prompt
    3. Put in the USB key containing SeaBIOS and navigated to /media/removable/USB Drive. Once there ran the command “sudo flashrom -w -i RW_LEGACY:asus-chromebox-SeaBIOS-new.bin”
    4. The process reported one error (“Block protection could not be disabled!”) but otherwise said it completed fine.
    5. I removed that USB drive, inserted the one with my OS on it, and restarted the box. On the screen telling me that ChromeOS verification has been turned off I press CTRL+R and get a black screen.

    I am looking for help with two items. One, is the above process missing anything important? Two, has anyone else had this black/blank screen issue and knows how to fix it?

    Thank you in advance for your help.

    1. I’m not familiar with “CTRL+R” being used as a boot combination. What is it supposed to do on stock Chromebook/box firmware?

      That doesn’t even sound like you’re booting the legacy slot, so if that’s the case, it has nothing to do with you flashing that file.

  29. Maybe I am confused and forgive me if I am way off base. I ultimately want to install Ubuntu on the Chromebox and believed that this BIOS would allow me to install the new OS off a USB key. Is that at all what this BIOS is intended to allow you to do?

    Also if anyone has any advise on where I can get info on how to install Ubuntu on the Chromebox (for a somewhat novice user) please let me know (yes I did Google it, and no crouton
    does not work, the instructions fail on the download step).

  30. The statically linked flashwrite worked and your new BIOS can see the USB keyboard. Thanks for saving me from a near-bricking. Here’s a few bucks to help the cause.

  31. Thanks. Matt DeVillier’s version worked for my Silicon Power Blaze B10 32GB USB3.0 flash drive, but not for my Lexar S33 32GB USB3.0 flash drive.

  32. They were both formatted FAT32 with grub4dos. By the way the USB 3.0 card reader did not work either. They all work on another machine with USB2.0. My Chromebox is the only USB3.0 machine I have.

    1. Well, we can try various versions of SeaBIOS in the LEGACY slot, and we can try a full firmware, to see if we can get something that “does it all”. If one of the SeaBIOS’ from the last couple of years doesn’t work, would you consider a full flash?

  33. John,

    First off, thanks for all your hard work. I am the proud owner of an asus chromebox which I intend to turn into a headless server. I’ve flashed your latest bios and installed ubuntu server. Everything works fine if I have an HDMI display attached. However, if I remove the hdmi cable the chromebox does not boot. Plugging the cable back in shows it sitting on the bios screen to press ESC to boot etc. Shortly after the cable is plugged in the boot process continues. Is there anything that can be done avoid this requirement. Note: if the monitor is plugged in that ESC message disappears within a second and the boot completes. It’s as though a display is required to get past it. Thoughts? And thanks in advance.

  34. Well,

    I went ahead and tried the set_gbb_flags.sh 0×489 on this ASUS chromebox I have sitting here, before I knew of the built in seabios USB keyboard bug. Any way to recover?

    I tried recovery mode and a recovery install of the chromeos but it hangs on boot. Will chromiumos boot from legacy seabios? Perhaps I could try to instlall chromiumos to the SSD card via revcovery mode?

    Thanks for any help.

  35. Tried Matt DeVillier’s build, but nothing happened after it showed message that it started booting from USB..
    Is this build issue or my USB device issue or the Ubuntu 14.04 installation file I have on my USB?

    Thank you!

  36. Hey
    I applied your bios update just after I got the Chromebox but now I wanted to add a new RAM stick and it won’t work. There’s a chance this stick is defective, but it’s brand new and 100% compatible. The system doesn’t detect it though. I’ve read somewhere that at least HP recommends owners of their Haswell laptops to update their BIOS in order to avoid some issues with adding more memory, could the same be happening here, could it be that the BIOS is preventing the new RAM stick from being detected?

    1. It’s possible – I had a Samsung Series 5 550, and the first time I built upstream coreboot for it, it would only recognise 2 of the 4 GB of RAM. However, I think it is more likely to be the RAM stick that’s the problem at this point. Which Chromebox have you got?

  37. I have the Asus one, the Celeron version. I tried Matt’s latest version of the legacy fix as well but still no luck.

    1. The RW_LEGACY slot just contains SeaBIOS, which likely won’t have much effect on memory recognition. There’s a chance that Matt’s complete build might sort the problem out (if it isn’t the memory that’s the problem), as it’s built using a different codebase (upstream coreboot) to the stock ROM (which uses a branch of CrOS coreboot).

    1. There are no patches. These ROM’s are built on coreboot or CrOS-coreboot depending on model.

      If you aren’t accepting of binaries, don’t use Intel hardware, it contains 3, the biggest of which is 1.5 MB and a closed box …

  38. booting doesn’t work still.
    i tried to dd Ubuntu, Fedora, linux mint on USB sticks and SD card (directly and through USB adapter) – no luck
    Only once (not sure, but i guess it was Fedora with USB stick) I got another error complaining that the some files are lacking to perform boot.
    I am also having extra memory installed and tried to put back the native 2GB stick – no difference.

  39. Hey
    I can’t seem to bring up the boot menu for the life of me. I press ctrl+L, there’s a message saying “Press [esc] to go to the boot menu” but nothing happens when I do. I’ve tried Matt’s seabios as well, same thing happens. Any ideas?
    Thanks

    1. It sounds like you haven’t flashed the LEGACY_RW slot correctly, as that is the default behaviour. Please try again, and post a screen shot of the CLI to confirm you’re doing it right. Matt has a script which will automate the procedure, did you try that?

  40. Hi.
    After successfully used your script (no errors) my ASUS Chromebox M004U writes only:
    SeaBIOS (version 1.7.5-040914-10:53-johnlewis.ie)
    Booting from Hard Disk ….
    What now? Is it problem with usb stick? Is it not correctly recognized? How can I boot to ChromeOS to install new version with USB3 boot support? Do I need special format for this USB?

    1. Did you press ESC to get the boot menu, and then choose the USB stick? I would recommend dd’ing a Fedora/CentOS ISO to the USB stick as a control test, because those are known to work consistently.

      Also, you can boot Jeltka and install a distro from there – that’s what it’s largely for (as well as rescue).

  41. Hello John.
    Well I am ready for bus pirate now…
    I just write you all steps i did and please send me, what was the wrong one.

    1) A have ASUS Chromebox M004U
    2) Paperclip – Developer mode – restart to developer mode
    3) Remove ROM Writeprotection screw
    4) KB, Ethernet, mouse, USB Key – boot
    5) CTRL-ALT-2 to console
    6) login as chronos
    7) cd; rm -f getnflash_johnlewis_rom.sh; curl -k -L -O https://johnlewis.ie/getnflash_johnlewis_rom.sh; sudo bash getnflash_johnlewis_rom.sh
    8) Script ended because there is no USB drive to backup current ROM. Why?
    9) sudo -s
    10) fdisk -l -> OK, there is /dev/sda and also /dev/sdb
    11) mount -> usb is not mounted
    12) mkdir /media/removable/transcend, mount /deb/sdb1 /media/removable/transcend and check with mount -> OK
    13) touch /media/removable/transcend/test.txt -> OK
    14) run getnflash_johnlewis_rom.sh -> backup successfully created, firmware downloaded, checksum tested + OK, firmware written script, ended succesfully without errors
    15) Reboot
    16) There is SeaBIOS (version 1.7.5.-040914-10:53-johnLewis.ie) – is it from april 2014? Press ESC for boot menu. Select boot device. I can select 1) internal SSD 2) USB Key with Kubuntu 14.04 LTS created with unetbootin 3) Payload [Jeltka]. Neither works.
    17) If I select 2 or 3 nothing happens. The system writes Booting from Hard Disk, or Booting from CBFS…. that is all… Power LED remain white.
    18) If I select 1 it is the same, just the power led is a little bit blue….
    Sorry for my “inglis”

    1. Your “Inglis” is good. Unetbootin is known to be problematic, even outside the Chromebook world. I’d reccommend dd’ing a Fedora/CentOS ISO to the USB key and trying that.

  42. Hello John.
    dd was the clue. Kubuntu 14.04.01 LTS installed and running without issues.
    Wondering on this ASUS CHROMEBOX OWNERS REJOICE! Do I need it? I am just curious about JELTKA. It does not boot and it can be a lifesaver in some situations.

Comments are closed.