by ferris

The week before my vacation, I thought I'd have a light week for everyweeks by following this OS tutorial in Rust finally, which I've been wanting to do for awhile but never wanted to carve out the time to do it. When I finally started, however, I realized it was pretty annoying to try to follow some of it on OS X.

Because of this and the fact that I've been wanting a dedicated linux machine for awhile, I took a quick drive to Fry's to pick one up. When I got there, I found a small machine with a great form factor and price point - a chromebook! In particular, this chromebook. So, without much further thought, I picked it up and took it home.

That's when I was in for a "treat" - I learned chromebooks aren't particularly linux-friendly out of the box, which I found a bit ridiculous. Most of them (including mine) won't boot from external storage by default, and require some hacking to do so. Luckily, I found this page where someone's prepared a bunch of boot images and a utility to flash the internal chromebook ROM, and included in the supported devices list was my device. Awesome!

So, I open the machine, remove the hardware write-protect screw, and flash the ROM.



Nothing. Zilch. NADA.

The machine warms up a bit but other than that shows no signs of life (there are no LED power indicators etc on this device). Bricked.

While part of me was a bit upset about bricking a new machine, part of me was also excited to learn how to possibly fix this - after all, I flashed the boot ROM, which should be possible to flash back. So, if I had the original ROM, I should be able to fix it, right? Turns out I might have been on to something - back on John's blog, I found a blog entry where he unbricked a similar chromebook by attaching a breakout clip to the chip and flashing it with a bus pirate. I went ahead and ordered some of these clips (as I'm sure they'll be nice to have around in the future as well), and continued looking for solutions.

Unfortunately, I didn't have the original boot ROM. But cheeky Jake with his fresh Christmas bonus at hand had a wonderful idea - buy a second one, and pull the ROM off of that. Wheeee!!

So, I headed back to Fry's, picked up a second one, and pulled the ROM (with some extra pulls just to make sure it was reading consistently) and pushed to a private github repo for backup. Cool.

Now that I had a backup ROM, I thought I'd try to flash the new chromebook's ROM like I did the first, just to make sure it wasn't some fluke. You can probably guess what happened, but basically, I ended up with two large, black, chromebook-sized paperweights.

So, time to look into physically reflashing the ROM again. I looked around at the board to try to find the specific ROM chip, and I found one near the CPU that looked flash-y. A quick google for the part number yields this datasheet, which looks like the right kind of part with the right size storage (8MB, same as the ROM I pulled from the second chromebook). Nice!

Side note: this is when my vacation started, and amidst all the traveling and seeing friends and family, I unfortunately totally forgot my everyweeks and broke my near 20-week streak. Bummer!

Before actually touching any wires, though, I read around a bit and read that when many chromebooks are bricked, they will still boot properly, albeit without certain peripherals (such as the display). I thought it'd be a good idea to see if that was the case here.

If the machine was fine and could still boot from a flash drive, then I could theoretically boot up linux with ssh enabled, ssh into the machine, and reflash the ROM without ever needing the display. So, I just needed a linux usb with ssh. This part was particularly frustrating. I tried for hours with very slow iteration cycles trying to get one of these up and running. Long story short, I ended up making an Ubuntu liveusb, which I used to install Ubuntu onto a second usb (at the small expense of trashing my Windows machine's MBR, but that was fairly easy to fix with a third Win10 restore usb). So, I set up the Ubuntu install with ssh and everything, and ensured that worked on a working test machine.

I then fired up the chromebook again (I think) and tried to boot the USB blind. Unfortunately, nothing happened. No dice.

At this point, the next stage is to try to flash the boot ROM physically. I hopped onto SparkFun and ordered a Raspberry PI 2 (because the chip is SPI, and RPI can communicate with SPI devices over GPIO), a logic level converter, and some various wires etc to hook it all together. So, that will be it for this week - I'll come back to this once those parts have arrived :)

Last Edited on Sun Jan 10 2016 00:15:58 GMT-0500 (EST)

baggers commented

So stoked for the next chapter in this saga!

on Sun Jan 10 2016 18:03:31 GMT-0500 (EST)

Zach Harvest commented

Best of luck. I would have said fuck it lol. I almost did a project like this for a palm pilot but didn't have the funding to get the stuff I needed so it just sat there, fucked and broken.

on Mon Jan 11 2016 10:54:43 GMT-0500 (EST)