From postmarketOS


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 Corsola Chromebook google-corsola AArch64 testing MediaTek MT8186
Google Asurada Chromebook google-asurada AArch64 testing MediaTek MT8192
Google Cherry Chromebook google-cherry AArch64 testing MediaTek MT8195
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 community 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

All devices

See All Chrome OS devices page.


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.

If this throws errors regarding flags preventing sudo like

sudo: The "no new privileges" flag is set, which prevents sudo from running as root.

sudo: If sudo is running in a container, you may need to adjust the container configuration to disable the flag.

which seems to happen more with newer ChromeOS versions after 116, please follow these steps:

  1. Ctrl + Alt + Refresh/F3 to open VT2 (full screen terminal)
  2. log in as chronos (default no password)
  3. Enter sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0

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.

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 --disk=/dev/mmcblk0
    • Make sure your eMMC is /dev/mmcblk0, otherwise replace it with correct device
    • For FDE use --fde
    • If you have a custom bootloader and you don't want a cgpt partition table use --no-cgpt (doesn't work on veyron)

Keyboard mapping

We have some custom keyboard mapping using keyd service:

  1. media keys perform their function
  2. holding Search and pressing media keys will result in functional keys, for example Search + Back results in KEY_F1
    • This can be configured to work vice-versa, so functional keys will be default and media keys will work holding Search. Open /etc/conf.d/cros-keyboard-map and set inverted_functional_row="true"
  3. Alt + Backspace -> delete
  4. Alt + Brightness Down -> keyboard backlight down
  5. Alt + Brightness Up -> keyboard backlight up
  6. Ctrl + Scale -> print
  7. Ctrl + Alt + Backspace -> Ctrl + Alt + Delete

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 it 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 the 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 issues.

See also

Pages in category "ChromeOS"

The following 95 pages are in this category, out of 95 total.