Chrome OS devices

From postmarketOS
Jump to navigation Jump to search


Generic device ports

These devices are combined into generic ports. Refer to chipset when looking for your device.

Device Codename Architecture Category Chipset
Google Oak Chromebook google-oak aarch64 community MediaTek MT8173C
Google Kukui Chromebook google-kukui aarch64 community MediaTek MT8183
Google Trogdor Chromebook google-trogdor aarch64 community Qualcomm Snapdragon 7c
Google Gru Chromebook google-gru aarch64 community Rockchip RK3399
Google Veyron Chromebook google-veyron armv7 community Rockchip RK3288
Google Chromebooks with x64 CPU google-x64cros x86_64 testing Various x86-64

Non-generic device ports

Other devices that are not combined into generic ports.

Device Codename Architecture Category Chipset
Acer Chromebook 13 (CB5-311) google-nyan-big armv7 testing Nvidia Tegra K1 (T124)
HP Chromebook 11 G1 google-spring armv7 testing Samsung Exynos 5250
HP Chromebook 14 G3 google-nyan-blaze armv7 testing Nvidia Tegra K1 (T124)
Samsung Chromebook google-snow armv7 community Samsung Exynos 5250
Samsung Chromebook 2 11.6" google-peach-pit armv7 community Samsung Exynos 5420
Samsung Chromebook 2 13.3" google-peach-pi armv7 testing Samsung Exynos 5800


Enable developer mode

Note NOTE: Switch to developer mode will factory reset your device (erase all user data).
Note NOTE: The process is different depending on keyboard presence.

Enable developer mode on laptop or tablet with keyboard

  1. Turn off the device.
  2. Press esc + Refresh + Power.
  3. Press Ctrl + D.
  4. Confirm switch to developer mode.

After that you have to press Ctrl + D to boot from internal storage.

Enable developer mode on tablet without keyboard

  1. Press Volume Down and Volume Up buttons at the same time and boot the device.
  2. You should see prompt saying Please insert a recovery USB stick with a helpful image showing USB port that doesn't exist on Duet.
  3. Press Volume Up button, now you should see a menu with options like "Show Debug Info", "Cancel", "Power Off", and "Language".
  4. Press Volume Up and Volume Down buttons at the same time. Option "Show Debug Info" will be replaced with "Confirm Disabling OS Verification".
  5. Select this option by using volume buttons and confirm by pressing Power.

Enable booting from external storage

  1. Boot into Chrome OS.
  2. Open console: Ctrl + Alt + T.
    • without keyboard: open chrome-untrusted://crosh in the browser.
  3. Enter shell in console.
  4. Enter sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0 in shell.

After that you can boot from external storage (SD or USB) with Ctrl + U.

It might be necessary to reseat the storage (SD or USB) between bootup and triggering the boot from external storage.


Installation to SD card or USB storage

There are 2 ways to install it: prebuilt image or pmbootstrap. See Installation article.

Installation from pmbootstrap requires another device with pmbootstrap installed, but installation from prebuilt image is possible from Chrome OS itself.

You can find images at

Installation to eMMC

  1. Install pmOS to SD card or USB and boot it.
  2. Install pmbootstrap with apk add pmbootstrap
  3. Go through pmbootstrap init command
  4. Figure out which block device is your eMMC with lsblk
  5. Use pmbootstrap install --sdcard=/dev/mmcblk0
    • Make sure your eMMC is /dev/mmcblk0, otherwise replace it with correct device
    • For FDE use --fde --add unl0kr
    • If you have a custom bootloader and you don't want a cgpt partition table use --no-cgpt (doesn't work on veyron)

GBB flags

Firmware on armv7 devices has a bug that causes losing boot from USB setting on battery discharge. Follow this to workaround it.

This also reduces the developer mode screen from 30 to 2 seconds which will avoid the annoying beep. If you don't want the Ctrl+U boot option as default (maybe want to pretend it is a normal ChromeOS device) use --flags=0x18 instead.

Setting GBB flags from Chrome OS

  1. Disable write protect
    • On older devices (all armv7) there is a special screw on motherboard to remove
    • On newer devices with cr50 remove battery
  2. Enable developer mode if it is not enabled
  3. Boot into Chrome OS
  4. Run crossystem | grep wpsw_cur, make sure it is 0
  5. Run flashrom -p linux_mtd --wp-status
    • If it reports that software write protect is enabled run flashrom -p linux_mtd --wp-disable
  6. Run flashrom -p linux_mtd -r backup.bin and save it somewhere
  7. Run futility gbb --set --flash --flags=0x19
    • Google has made modifications to the futility/gbb_utility behavior, you may need to use their wrapper script instead.
    • if the above reports 'ERROR: unrecognized option (possibly "--flash")', then you'll want to use the Google provided GBB wrapper scripts
    • /usr/share/vboot/bin/ -d -e to read the current flags setting and print out the flags it will interpret that as
    • /usr/share/vboot/bin/ 0x19 to set the flags you want (per above 0x19 is to shorten the boot time and default to internal storage, use 0x18 to default to external).
    • Use /usr/share/vboot/bin/ with no arguments to see the flags it can define
  8. (optionally) Run flashrom -p linux_mtd --wp-enable

Setting GBB flags from pmOS (or another Linux OS)

Assuming you've already disabled write protect Assuming you've already enabled developer mode and possibly forced USB boot to be enabled via GBB flags

  1. Boot into pmOS or Alpine
  2. Check write protect status
    • Since we are missing a crossystem dependency, its functionality is limited, so it throws some errors, this suppresses them while querying all supported crossystem entries
    • Run crossystem 2>/dev/null | grep -v '(error)', this prints successful queries, a much shorter output than in ChromeOS
    • Run crossystem wpsw_boot, this should print 0, and means write protect is still disabled
  3. Install flashrom with sudo apk add flashrom
  4. Run sudo flashrom -p linux_mtd --wp-status
    • If it reports that software write protect is enabled run sudo flashrom -p linux_mtd --wp-disable
  5. Run sudo flashrom -p linux_mtd -r backup.bin and save it somewhere
    • The latest futility has removed `--flash` option, instead preferring the user to use flashrom to create a bios_bin backup file for it to alter.
  6. Run sudo futility gbb --get --flags backup.bin which will show any flags you'd set previously
  7. Run sudo futility gbb --set --flags=0x19 backup.bin set a new set of flags, in my case enabling the shortened boot 0x19 vs the 30 second 0x18 to get rid of the beep
  8. Run sudo flashrom -p linux_mtd -w backup.bin to write the updated firmware back to the system
  9. (optionally) Run flashrom -p linux_mtd --wp-enable



There are too many variants of these devices. We are trying to do our best to support them all, but sometimes there are unexpected issues appearing on devices that haven't been tested.

You can help us by joining our Testing Team. See Testing Team page for more details.


See Chrome OS devices TODO.