Copied from Rob Sickler
Chrome OS is Google's fork of the Chromium project which is based on the Linux kernel. Google's first release of the OS was in the summer of 2011. Many schools like to use Chromebooks, which run Chrome OS, because Google's ecosystem is pretty friendly and reliable. They are also marketed toward first-time computer users due to their simplicity. I personally have a few Chromebooks and like to tinker a bit with them.
Working on a Chromebook (CB) is pretty simple; there's really not much to them. In most modern CBs, there's a motherboard, a wireless NIC (WNIC), a battery and a daughterboard for an additional USB port. Some of the older systems were initially designed as netbooks so they may have a cooling fan.
You can log into the device and check the version but it's nice to figure it out before going through all that. For instance, collecting a few hundred CBs and deprovisioning them in the Google Admin Console is easier when you can just see the serial without having to log in. Or, if you're in the process of upgrading the OS on a mess of them, you can see the version before you go through the process of upgrading one that didn't need said upgrade.
One of the more common things I've seen done to CBs is a powerwash. Basically, the powerwash sequence allows you to revert it back to factory defaults. In doing so, all local profiles will be wiped. However, that's generally not a big deal as Google's ecosystem tends to save everything in the cloud anyway. Generally speaking, you can powerwash your device all you want. Once you log back into it, all your settings and content come back down from the cloud.
The sequence is pretty simple but is still a little different than an unmanaged device. Most official1) Chromebooks have their standard keyboards - which are different than a keyboard you'd find on a typical laptop. The following key sequence can be used regardless whether or not the device is on and logged into. It uses the top row of keys…
After that, it should boot up and look like it's the first time anyone is logging into the device. That's basically true as there should be no more profiles on the device once it has been reverted back to the factory default state.
You can use the steps, outlined above, to powerwash a CB but unmanaged devices typically have a couple ways of doing it. These additional ways are outlined below.
This can be used via the GUI while logged in. I've had to use this method when certain keys didn't work.
A quick keyboard combo will do the same thing - so long as it hasn't been disabled by your admin.
Sometimes, a powerwash isn't really needed; sometimes you just need a reboot. Powering off the device and bringing it back up isn't the same, from what I've read.
Developer Mode is a special mode that allows you access to lower areas of the OS and device. Chromebooks have several layers of access and Developer Mode allows you to do things you just can't do in normal mode. I typically get into it so I can install the RMA SHIM Tool from the manufacturer and/or change the serial number4) while in a virtual console.
If the device is managed via the Google Administration Console, you may not be able to enter Developer Mode as it may be blocked. In those cases, you will likely need to deprovision the device first. Moreover, you may need to deprovision it while it's in contact with the management servers - which can be tough when the device doesn't want to boot up and make said connection.
This is an optional step and you only need to do this when you actually want to write changes to the chip on the motherboard. There is no single answer as it will likely vary between manufacturers and models. Some models have a screw while others have a soft switch5) The easiest thing to do is search the web for pictures and help for your specific device. Write-protection is in place so you can't write data to a certain chip on the board.
For those that have a screw, it's typically one of the screws holding in the motherboard. In my experience, the write-protect screw is typically threaded through the only hole in the motherboard that has solder points/beads circling the hole so, when the screw is fully seated, it completes or shorts a circuit and prevents write-access. Furthermore, the screw is typically covered by a small sticker - unless you've already been inside, messing around and removed it.
The sequence isn't overly difficult but there are several steps and some can be skipped - depending on what you're trying to accomplish.
There are a couple ways you can use to get out of Developer Mode…
You can also exit Developer Mode via the command line - which may also help when you can't seem to get out of Developer Mode. Sometimes, when you attempt to get out of Developer Mode, you'll see some black & white text in the upper left corner of the screen. In said text, you may see a message like:
WARNING: TONORM prohibited by GBB FORCE_DEV_SWITCH_ON
When you see the aforementioned warning, you'll likely have to use the method below in order to get out of Developer Mode:
/usr/share/vboot/bin/set_gbb_flags.sh 0x0
sudo.reboot
You typically don't need to change the serial number unless you've changed the motherboard and wish to keep the serial in sync with what's listed on the bottom of the device. I've replaced several for devices that are under warranty. Yes, I could have just sent the device back to the manufacturer but where's the fun in that?
You should easily be able to do this with the RMA SHIM Tool from the manufacturer but I've had mixed results with that. On some occasions, it worked. Most, however, have failed miserably. Because of the failure rate, I tend to use a virtual terminal session. The virtual terminal sessions allows for some low-level access to the OS at a command line. Most Linux distros have several virtual terminal sessions you can access.
chronos
sudo su
vpd -l
mlb_serial_number and serial_number as those will be what you want to change Just find and replace the appropriate field(s). In some cases, I've changed both. Even when there was only one to begin with, doing the other will only add it and I've not had any issues with making sure both are in place when only one was there initially. In fact, I've had instances where having the mlb_serial_number but not the serial_number kept the device from enrolling back into our management.[warn] vpd partition not formatted
vpd -s "serial_number"="9999999999999999999999"
vpd -s "mlb_serial_number"="9999999999999999999999"
mlb_serial_number entry is typically found to be something other than the serial number when you dive into machines fresh out of the box. However, I've been making the same as the serial number without any issues when doing my repairs.vpd -l
vpd -d "serial_Number"
dump_vpd_log --force
reboot
The section above that describes how one can change the serial number via some VPD commands but you can also tweak some other things. This comes in handy for anyone who wants to use the Guest Login feature. It sets the aforementioned settings at the login screen. So, if you were an American living in Canada with a Chromebook with Canadian firmware, and you had American friends who would come to visit, you could set these tweaks and the users wouldn't get Canadian settings at the login screen. You'll see the settings I've used below but you can find more here if you wanted other locales and timezones.
vpd -s "initial_locale"="en-US"
vpd -s "initial_timezone"="America/New_York"
vpd -s "keyboard_layout"="xkb:us::eng"
vpd -s "region"="us"
vpd -s "model_name"="Lenovo 300e Chromebook 2nd Gen MTK"
vpd -s "asset_tag"="IT-12345"
vpd -s "mtm"="81QC"
"service_tag"="1GWZ083"
"mfg_date"="2020-11-28"
"wifi_mac0"="04:6c:59:31:1b:ff"
I've had several instances where a bad HWID kept me from getting updates. All I could do was reload the OS via USB to get the device updated; I couldn't update it via Settings > About Chrome OS. After that, you were still stuck at that version until you did another manual update.
For us, it was largely an issue with Lenovo 100e (81ER) motherboards that had been swapped out while they were under warranty. They were coming to us with a test HWID and that wouldn't allow us to update the device via typical means. We didn't notice it because our SOP is to reload the OS via USB since we don't have very good luck with the SHIM tool. Naturally, the OS on the installation media is up-to-date so we never knew they weren't going to update after they left our workbench. In retrospect, we should have been doing regular checks regarding the versions of Chrome OS on our network.
cd /tmp
flashrom --read --image GBB:gbb.bin
gbb_utility --get gbb.bin --hwid
gbb_utility --set --hwid "ROBO D5B-B4K-E5Q-45M-Y8C-A92" gbb.bin
flashrom --write --image GBB:gbb.bin
reboot
Within this documentation, there are several examples of commands being used in the virtual terminal. Here are some more.
This comes in handy when you're replacing a motherboard with a built-in11) WNIC and you run a radius server in your wireless environment. You're already in the terminal, reserializing the board so you might as well grab this bit of info if you need it for your radius server or MAC white-list.
connectivity show devices | grep -i "address:"
Address: a81d16157bd7
Now and then, you need to use the RMA SHIM Tool to update firmware and whatnot for these things. Ideally, one should use it to prep a CB for the end user but it will often fail to Finalize for various reasons. One reason is the failure to write the HWID. Sometimes you can get beyond this error by manually setting the date.
date -s "20191231"
In Chrome OS, you can get into a System Diagnostics page. It allows you to see certain things that aren't found in the typical Settings screens. You can see the OS version number, hardware class, MAC address, IP address, memory usage, the battery's model number, various logs, etc.
ifconfig and network-devices sections.network-devices section.No, this is not about taking apart the device and unplugging your battery… This is how CBs are shipped. There's a sequence that allows the device to be powered down and a software switch disconnects the battery for long-term storage. To get out of this mode, you have to plug the CB into a power source - just like you have to do when you unbox a new CB.
To get the device to power on after being put into a battery-disconnect state, simply plug the device in and power it on.