Jump to content

Google Chromebooks with x64 CPU (google-x64cros)

From postmarketOS Wiki
Google Chromebooks with x64 CPU
Lenovo IdeaPad 3 Chromebook (11IGL05) ("Google Lick") running postmarketOS
Lenovo IdeaPad 3 Chromebook (11IGL05) ("Google Lick") running postmarketOS
Manufacturer Google
Name Chromebooks with x64 CPU
Codename google-x64cros
Type generic
Hardware
Chipset Various x86_64
Architecture x86_64
Software
Original software ChromeOS
FOSS bootloader yes
postmarketOS
Category community
Pre-built images
Whether pre-built images are available here.
yes
Features
USB Networking
After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system).
Untested
Battery
Charging and battery level reporting works
Works
Screen
Display works. Ideally with sleep mode and brightness control.
Works
Touchscreen
Untested
Keyboard
Build in physical keyboard
Works
Touchpad
Build in Touchpad
Works
Multimedia
3D Acceleration
Works
Audio
Audio playback, microphone, headset and buttons.
Works
Camera
Works
Connectivity
WiFi
Works
Bluetooth
Works
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Broken
USB-A
Full-sized USB-A port works (Usually applicable to SBCs and laptops).
Works
USB OTG
USB On-The-Go or USB-C Role switching
Works
HDMI/DP
Video and audio output with HDMI or Display Port works.
Untested
Sensors
Accelerometer
Auto screen rotation works in desktops e.g. Phosh or Plasma Mobile
Untested
Magnetometer
Sensor to measure magnetism
Untested
Ambient Light
Untested
Proximity
Untested
Hall Effect
Also known as flip cover sensor
Untested
Barometer
Sensor to measure air pressure
Untested
Power Sensor
Sensor to monitor current, voltage and power. Not fuel gauge!
Untested


This device allows postmarketOS to run on x86_64 ChromeOS boards by using its verified boot mechanism.

Contributors

Based on the Generic x64 UEFI device port contributed by:

And ChromeOS-specific postmarketOS integration by:

Installation

See Chrome OS devices page.

Firmware

There are three types of payloads you can use with x86_64 Chromebooks.

  1. Default (called "Depthcharge").
  2. EDK2 (provides UEFI runtime services).
  3. SeaBIOS (legacy, unsupported payload providing standard BIOS interfaces).

It's important to note that writing secondary payload to RW_LEGACY region will not fix ACPI issues and use of that method is discouraged.

Depthcharge

The default firmware which comes preinstalled on ChromeOS devices is perfectly fine for usage with postmarketOS (as long as they use the Depthcharge payload - most devices do). Biggest downside of using this method is that Google does not update their firmware very often, and your device will no longer receive firmware updates if Google stops supporting it.

EDK2

Note This payload requires the usage of MrChromebox's Firmware Utility Script to work. This is a tool unaffiliated with postmarketOS, and as such YMMV.

An alternative UEFI implementation for Chromebooks is EDK2, provided by MrChromebox. This payload receives periodic updates (unlike Depthcharge, as it is a community effort). It makes booting Linux much easier on Chromebooks and even allows for the booting of "normal" distros such as Fedora or Ubuntu.

There are two options to this approach:

  • "RW_LEGACY", which writes UefiPayloadPkg to dedicated region in SPI flash
  • "Full ROM", which completely replaces stock coreboot build with one maintained by the community

Please keep in mind however that:

  • RW_LEGACY usually does not work 100% correctly due to limitations in stock firmware (coreboot built by Google from their custom branch) but allows you to boot Linux alongside ChromeOS.
  • Full ROM will essentially turn your ChromeOS device into a regular x86 system with UEFI firmware, removing the ability to run ChromeOS.

SeaBIOS

Note This payload requires the usage of MrChromebox's Firmware Utility Script to work. This is a tool unaffiliated with postmarketOS, and as such YMMV.

It was the de-facto method of booting Linux on Chromebooks before upstream EDK2 (UefiPayloadPkg) was ported to coreboot. This method doesn't work in postmarketOS (or any other modern Linux distribution). It is recommended to use MrChromebox's Firmware Utility Script to flash a new version which fixes bugs present in stock firmware. This method is deprecated and no longer supported. Please use full, custom coreboot build on devices no longer supported by Google.

Common Issues

Audio on Intel laptops

Starting with Skylake, Intel introduced SST (Smart Sound Technology). As of the time of writing this page, there are two Linux modules supporting those systems:

  1. AVS (Audio Voice Speech): used on Skylake, Kabylake and Apollolake family of devices (6 and 7gen).
  2. SOF (Sound Open Firmware): used on Geminilake, Cometlake, Tigerlake, Alderlake, Meteorlake and so on (10, 11, 12, 13gen).
  • Sound Open Firmware works perfectly fine after installing out-of-tree ALSA UCM configuration (available in postmarketOS as alsa-ucm-conf-cros package, which is preinstalled on chromebook images).
  • Audio Voice Speech is a work in progress. Because this driver doesn't implement speaker safety, chrultrabook project recommends leaving speakers disabled on devices using Maxim MAX98357A amplifiers. Enabling them in the current state poses a very real risk of burning your speakers (see link for example).

Sources:

Audio on AMD laptops

StoneyRidge (AMD A4/A6)

In order to have working audio on those devices, you need to build your own kernel with AMDGPU=Y (NOT as module) and include GPU firmware. This makes kernel a lot bigger, but (for unexplained reason) allows the ACP driver to bind to the device correctly.

You also need to enable DESIGNWARE_I2S, which often breaks due to work being done on RISC-V in upstream Linux kernel.

Picasso (Ryzen 3000 Series)

Audio on those systems should work perfectly. If you encounter any issues, please submit a bug report.

Cezanne (Ryzen 5000 Series)

These laptops don't have working audio out of the speakers, however, the headphones should still work.

Mendocino (Ryzen 7000 Series)

Audio on those systems should work perfectly, but require at least kernel 6.8 - meaning 6.6 LTS (current as of time of writing) will not work. If you encounter any issues, please submit a bug report.

See also