Wednesday, November 6, 2013

C710 Firmware Package

For anyone lacking a valid backup of their original Chrome OS firmware, I've constructed a ROM image with an invalid serial number from my C710-2847 (the launch model).

C710 Firmware.zip

I've included instructions on how to modify the image to match your actual device before you flash it, which I strongly recommend.  I can't predict how Google functionality may be effected by an invalid serial number or the default  firmware hardware ID.

Also, please note that these instructions may be specific for the C710-2847 so pay attention if you have another model.  There's only one recovery image for the C710, so I'm confident the firmware will work on all models.  But, you may need to change more than 8 digits of the serial number with other models, IDK.

[Edit]  If you have a C710-842G32ii, then I recommend using the BIOS.BIN contained in the shellball (which is also included).  For an explanation & discussion of the implications - see the comments below - specifically, my conversation with Schokobecher.

51 comments:

  1. Awesome Barry! I really owe you one!
    When I'm back home, I'll backup my stuff and try it :)

    ReplyDelete
  2. No problem. I tested it on mine, of course, but only briefly. I didn't go through with a complete Chrome OS restore process - I just booted Chromium OS from USB. So, I'll keep my fingers crossed! ;)

    My internet has been completely unreliable lately (down for 2 hours just this morning) so don't panic if I'm offline. I shall return!

    ReplyDelete
  3. Do you know if I can replace the motherboard with the 756 model ?

    ReplyDelete
    Replies
    1. You're talking about converting a C710 into an AO756?

      I don't know for certain, but I would have to say - probably. As far as I know, the modifications to the AO756 were superficial, so the AO756 motherboard should fit in the C710 housing. But, I'd look into the hardware supporting the keyboard & trackpad, Google has stuck in some odd stuff there and persisted in using it on all the Chromebooks.

      I'm assuming that you don't want to run Chrome OS on this Franken-book?

      Delete
  4. I'm trying to type in Parrot Nuthatch A-D 7569, but the text is going red, how do I fix this?

    ReplyDelete
  5. If I'm not mistaken, any byte you change will be red until you save the modified version. HTH.

    ReplyDelete
    Replies
    1. Ok, just wanted to make sure. Better safe than sorry.

      Delete
    2. Definitely! Sorry if I didn't make that clear in the instructions. BTW, not backing up isn't stupid, merely short-sighted. Nobody flashes their firmware assuming they'll want to go back! I did make a backup before bricking mine, but foolishly saved it to the HDD which instantly became inaccessible at reboot. :)

      Rather than dwell on my mistakes, I choose to focus on "What did I learn?" It's much healthier for the self-esteem! ;)

      Delete
    3. Thanks for all of your help, but now I'm getting an image size doesn't match error, what do I do now?

      Delete
    4. That's bizarre. Which model, C710-???? Is the image size still precisely 8.00 MB (8192 KB)? Is it possible you inserted the bytes you entered manually rather than replacing what was there?

      Delete
    5. C710-2847. I'm gonna retry it from the beginning though.

      Delete
    6. Same model as mine, that's what I tested it on. Just make sure you replace the serial # and firmware ID, bytes should NOT shift to the right when you type. HxD defaults to replace bytes (for me, anyway).

      Delete
    7. Be aware that once you flash back to CrOS firmware, you'll have to do a CrOS restore or recovery which will completely wipe the hard disk. So, backup anything you want to save to external media before then!

      Delete
    8. Ok, I put a different hwid on it (the one my original motherboard had, for the best anyways, the new one had some enterprise crap that made it a pain to log in with how often I powerwash) and it worked! Thanks for the files, they were a life saver!

      Delete
  6. Hey Barry,
    I tested this and gathered the following:
    Flashing works like a charm, but there is a major issue (at least for me):
    I have a C710-842G32II (dated 2013/03/12) and after restoring CrOS, suspend seems to be broken. If you enter that state (either running "suspend_stress_test" or closing the lid) the LED blinks orange (as usual), but when you wake up the C710 it flashes blue (still normal) and goes completely dead. If you press the power button again it does a cold boot.

    Is it only me?

    ReplyDelete
    Replies
    1. https://groups.google.com/forum/#!topic/chromebook-central/Bf-bM3CC5JQ

      This seems to be related...

      Delete
    2. I have no idea. I can backup the 4 distros on the HDD and go through the entire restore process to check, but that'll take a while. I'm short on free time ATM. In the meantime, I'd suggest a powerwash & hard reset:

      https://groups.google.com/forum/?fromgroups=#!starred/chromebook-central/8ywLgqhP-wE

      If that fails to help, try flashing the default firmware for all C710s and report back here. You shouldn't have to restore again. You can find it in the shellball:

      https://docs.google.com/file/d/0Bzig09VSdjW1MnlPdDFfYjVqdmM/edit?usp=sharing

      Delete
    3. That thread seems to imply that it may have nothing to do with the firmware. And I have seen kernel updates break stuff that was working perfectly before.

      Delete
    4. The shellball bios.bin did the trick! I adjusted Offset 0x611080 - 0x611093 (hwid), set gbb.flags to zero (else it would complain at startup) using "gbb_utility -s --flags=0 bios.bin bios_new.bin" and suspend works fine now! Where do I put my serial? The usual place is just FF

      Delete
  7. Great! Sorry about using you as a guinea pig. I think the serial # thing was why I avoided using it, clearly I need to reconsider. Let me take a look at it.

    Complain? About what? So, you turned off the Dev Boot Screen bypass?

    ReplyDelete
    Replies
    1. The only thing I can see to try is to copy 0x600600 - 0x60067F from the old version to the new one. IDK if that will work, but it's worth a try. Also, that firmware may have subsequently updated the RW version. I thought it did, but wasn't sure. Plus, it "felt odd" to me, I never figured out why.

      Delete
    2. If I do that, is there any way in confirming that it's at the right place and get's recognized by CrOs?

      Delete
    3. I think so, I think there's an info screen somewhere. Let me look for it.

      Delete
    4. Great, I will test this out ASAP.

      Delete
    5. I found: http://blatti.net/2012/12/chromebook-serial-number/

      The dump shows an "ActivateDate" which states "2013-45"
      I gonna force my S/N into the usual place and we see what happens. BRB!


      Soooo flashing was a success, but the dump still only shows "ActivateDate".
      So uhm yeah...

      Delete
    6. This Thread:
      https://groups.google.com/forum/#!topic/chromebook-central/DpTshRVX6hs

      almost makes me think that their is no way in displaying or accessing the S/N, the VPD stuff seemes to work on the Cr-48... maybe Acer is just not using this?
      Overall pretty interesting! ATM I don't see any drawbacks in flashing a generic firmware without specific device information.

      Delete
    7. I'm sorry, I completely forgot about this. Hmmm ... if it doesn't seem to have "worked" I'm not sure I'd leave it there. Let me try your method.

      Generic firmware - Well, Bill Richardson (Google) clearly thought it was O.K. but I wanted to get back to stock or as close as possible.

      Delete
    8. On a stock C710-2847 I get this:

      initial_locale=en-US
      initial_timezone=America/Los_Angeles
      keyboard_layout=xkb:us::eng
      serial_number=****
      gbind_attribute=****
      ubind_attribute=****
      ActivateDate=2013-41

      The **** represent real values that I suppressed. This is a completely stock "un-frakked with" unit. All I've done to it is switch to Dev mode.

      Delete
    9. FYI, I ran default firmware for about a month, I think and at some point, the RW copy of the firmware on a HDD partition got updated. I'm not sure because I wasn't going to stick with it anyway, but I thought you should be aware of the possibility.

      Delete
  8. I don't mind being a guinea pig, just toss me something to do :-)

    No, it was complaining about gbb.flags being nonzero (it was 0x00000039)
    Maybe it had to do with Dev mode being enabled but I couldn`t disable it while the gbb.flag stuff was shown. Setting gbb.flags to 0x00000000 made the warning go away and allowed me to switch back to verified boot mode.

    Reference: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-os-reviews/aM14MSP7HgI

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. Same thing happens when you follow the tutorial by John (Neutering the "developer mode" screen"), where you set gbb.flags to 0x01.

      So the default bios.bin has that flag at 0x39, which causes the warning screen to stay for 30 seconds + showing the information that gbb.flags is nonzero. (Just to clarify what's going on)

      GBB_FLAG_DEV_SCREEN_SHORT_DELAY 0x00000001
      GBB_FLAG_LOAD_OPTION_ROMS 0x00000002
      GBB_FLAG_ENABLE_ALTERNATE_OS 0x00000004
      GBB_FLAG_FORCE_DEV_SWITCH_ON 0x00000008
      GBB_FLAG_FORCE_DEV_BOOT_USB 0x00000010
      GBB_FLAG_DISABLE_FW_ROLLBACK_CHECK 0x00000020
      GBB_FLAG_ENTER_TRIGGERS_TONORM 0x00000040
      GBB_FLAG_FORCE_DEV_BOOT_LEGACY 0x00000080
      GBB_FLAG_FAFT_KEY_OVERIDE 0x00000100

      To get a developer-friendly device, try 0x11 (short_delay + boot_usb).
      For factory-related tests (always DEV), try 0x39.

      So it's alaways in Dev Mode by default!
      (Reference: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/firmware-parrot-2685.B%5E/scripts/image_signing/set_gbb_flags.sh)

      Delete
    3. Ooooh ... I see now! You sum the hex values, so 0x39 = 0x20 + 0x10 + 0x08 + 0x01. I can't believe that never clicked before! Or maybe it did & I've forgotten. The "old-timers" is getting worse! ;-) Forgot about including the shellball in the package too!

      FTR, bios.bin defaulted to Dev mode and the short delay on my 2847, but that was all I could tell. And now I think I can recall the Non-zero message, but didn't consider it an error.

      Delete
  9. Barry- Just a note to say THANK YOU! You and the other contributors here and there have been tremendously helpful!!!

    I turned a $170 open box c7 into a useful machine based on your help! I'm running:
    Kubuntu 13.10,
    Linux XX-Parrot 3.12.0-031200-generic #201311031935 SMP Mon Nov 4 00:36:54 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

    Only thing I had to do was swap my wifi card with the one from my desktop and plug in 4G of ram and my 128 SSD. Boots in 20 seconds!

    Thanks again, and happy holiday! I buy you a coffee when I'm in HSV (Decatur here)

    ReplyDelete
  10. The following is from your Readme file my HWID is 23 characters long I think?? See end of this post.

    2. You should also modify the hardware id (HWID) to match the original that was present on your device. So, use HxD
    to open Acer_C710_Firmware.bin again and select [Search] and [Find] from the menu. Enter the string "X86 PARROT TEST 8762"
    without the quotation marks. This will take you to the location of the HWID and highlight it. You could also jump to addr
    ess 0x00611080, the range to modify is from 0x00611080 to 0x00611093.

    If you can't recall the hardware id, consult the file parrot-recovery.conf.txt and perhaps one of the names will jog your me
    mory. If so, copy the 20 character HWID string and paste it over the one in the firmware by selecting [Edit] and [Paste inse
    rt]. If not, the firmware will work as is, but I'm not sure what effect the HWID from the shellball will have when it comes
    time to do a Chrome OS recovery.

    The line below contain the hardware ID of Rons Chromebook with the
    Serial Number NUSH7AA004999999991601 NOTE: I replaced my SN with the eight 9's
    hwid=PARROT LAPWING A-C 4258 This is 23 characters long NOT 20???
    Enter chrome://system into the chromebook browser and search for hardware_class you will get the hardware id above.

    Sorry I Am late to this party. Am I doing something wrong?

    Thanks Much In Advance for any help!!!
    Regards, Ron

    ReplyDelete
    Replies
    1. I'm having a similar issue. My HWID is PARROT GYRFALCON A-C 8465, which is 25 characters. Did you ever figure out how to adjust?

      Thanks,
      Michael

      Delete
  11. please tell me How do you flash the bin after editing?

    thanks

    ReplyDelete
    Replies
    1. http://chromebooklinux.blogspot.com/2013/09/how-to-turn-brick-back-into-chromebook.html

      Delete
  12. Sorry for the off-topic, Barry, but I thought you might want to know that I've created a community for discussing coreboot on Chromebook stuff. See https://plus.google.com/communities/112479827373921524726

    ReplyDelete
  13. Incidentally, I'm curious as to how this image supports the Ivybridge C710's (2834 + others) as that has a different graphics card ID to the older Sandybridge based C710's. I've had to produce a separate coreboot build for those models ...

    ReplyDelete
  14. Hello John,

    Thanks for all the info you provide. It's very helpful. I have an Acer C710-2856 that I believe is now bricked and do not wish to invest in a bus pirate, but would like to donate it to your cause. If you'll send me a mailing address, I'll ship it to you at no cost. Again, thanks for the research into this and I'll continue to follow progress and assist in any way I can.

    ReplyDelete
  15. I installed coreboot-parrot-seabios-windows-27102013.com and now when I try to load with the write protect jumper on the machine doesn't boot at all.

    :(

    ReplyDelete
    Replies
    1. I did the same the flash gave satisfactory and everything was fine but the video does not restart or anything. Help please.

      Delete
  16. well
    nevermind...

    I took the shot and tried to load the coreboot-parrot-seabios-suspend-27102013.rom and it went well with no jumper...

    :D

    ReplyDelete
  17. This comment has been removed by a blog administrator.

    ReplyDelete
  18. Not sure if this is relevant here but...my Acer C710-2833 crashed and the recovery won't go through...what should i do? Chromebook Ninjas and Acer support have been no help at all

    ReplyDelete
  19. Thanks for this. I was using a SeaBIOS rom and Linux Mint for some time on my C710-2833 and wanted to get back to stock. I realized I accidentally deleted my backup stock rom that had made. I used your rom image, made the adjustments, and it worked great. This is what I did for my C710-2833:

    1. The serial number needed more adjustment than just the 9999999 per the readme.txt, though it was easy to see the difference in a hex editor.
    2. Since "X86 PARROT TEST 8762" and "PARROT NUTHATCH A-D 7569" have a different number of characters, I modified 0x00611080 to 0x00611097 instead of 0x00611080 to 0x00611093.

    As far as I can tell, this seems to work properly.

    ReplyDelete
  20. Hi you can you help me put the bios correboot Acer C7 or put my system Chrome OS following your tutorial I put your firmware C710 nothing changed (I had not understood) now is always the message "Chrome OS damage or missing "help please ??

    ReplyDelete
  21. So I'm in the same boat as many of the readers here, my backup was made a long time ago (using another geek's instructions) and I can't seem to find it anymore. I'd like to put my Chromebook back to stock so I can resell it. I managed to use John Lewis' script to load the hack bios but it has a generalized hwid and loads the 2 second developer warning screen.

    I want to recreate my own bios.bin using my hwid and serial number. I'm hesitant to use the shellball bios.bin file posted here as my device has the 1.5 ghz 1007u celeron cpu. For reference, my device sticker shows C710-2856.

    Any help you could provide would be great - John Lewis is not helpful at all stating he won't help as I should have made a backup.

    ReplyDelete