HP Chromebook X2 (google-coachz)
This device is supported as part of a generic port. Refer to Google Trogdor Chromebook (google-trogdor) for installation instructions and more information. |
File:TODO | |
Manufacturer | HP |
---|---|
Name | Chromebook X2 |
Codename | google-coachz |
Released | 2021 |
Type | tablet |
Hardware | |
Chipset | Qualcomm Snapdragon 7c (SC7180) |
CPU |
2x Kryo 468 Gold 6x Kryo 468 Silver |
GPU | Adreno 618 |
Display | 2160x1440 IPS |
Storage | 64 GB |
Memory | 8 GB |
Architecture | aarch64 |
Software | |
Original software The software and version the device was shipped with. |
ChromeOS |
Extended version The most recent supported version from the manufacturer. |
ChromeOS |
postmarketOS | |
Category | community |
Mainline Instead of a Linux kernel fork, it is possible to run (Close to) Mainline. |
yes |
Generic port | Google Trogdor Chromebook (google-trogdor) |
Device package |
![]() |
Kernel package |
![]() |
Internal storage eMMC, SD cards, UFS, ... |
Works
|
---|---|
SD card Also includes other external storage cards |
Works
|
Battery Charging and battery level reporting works |
Works
|
Screen Display works. Ideally with sleep mode and brightness control. |
Works
|
Touchscreen |
Works
|
Keyboard Build in physical keyboard |
Works
|
Touchpad Build in Touchpad |
Works
|
Stylus |
Works
|
Multimedia | |
3D Acceleration |
Works
|
Audio Audio playback, microphone, headset and buttons. |
Works
|
Camera |
Broken
|
Connectivity | |
WiFi |
Works
|
Bluetooth |
Works
|
Modem | |
Mobile data |
Untested
|
Miscellaneous | |
FDE Full disk encryption and unlocking with unl0kr. |
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 |
Works
|
Hall Effect Also known as flip cover sensor |
Untested
|
Users owning this device
Stylus
Unless you're using KDE Plasma, chances are the cursor position is only correctly displayed in portrait orientation. To make the stylus work correctly in any orientation, do the following (source):
Create the following file:
# mkdir /etc/libwacom
# nano /etc/libwacom/google-coachz.tablet
Insert the following text:
[Device]
Name=gt7375p 27C6:0E94 Stylus
ModelName=
DeviceMatch=i2c|27c6|0e94
Class=ISDV4
Width=9
Height=5
IntegratedIn=Display;System
Styli=@generic-no-eraser
[Features]
Stylus=true
Touch=false
And also supplement or create a file:
# nano /etc/libinput/local-overrides.quirks
[Google Chromebook Coachz Stylus Digitizer]
MatchUdevType=tablet
MatchDeviceTree=*coachz*
MatchBus=i2c
ModelChromebook=1
AttrPressureRange=1100:1000
Small note: The stylus can feel a bit unresponsive, and the palm rejection is pretty bad. For that, feel free to tweak or remove values to your liking, as follows:
[Google Chromebook Coachz Touch Digitizer]
MatchName=gt7375p 27C6:0E94 Stylus
AttrPalmSizeThreshold=14
[Google Chromebook Coachz Stylus Digitizer]
MatchUdevType=tablet
MatchDeviceTree=*Coachz*
MatchBus=i2c
ModelChromebook=1
AttrTabletSmoothing=0
After all this is done, execute this and reboot:
# libwacom-update-db
After a reboot, the digitizer should take into account the screen rotation, and will now be able to tweak some values directly in GNOME settings (possibly on other desktops too). Other USI styli may not work (remembering that USI 1.0 pens are completely unsupported for this model due to the in-cell display technology).
Type Cover
The keyboard on the type cover does not get properly disabled in tablet mode. This might be caused by keyd, the service used to remapp the keyboard. (Issue) I was unable to find the root cause, but I use this script and udev rule to fix the issue.
#!/bin/sh
# replace with your device ID, can be found with lsusb and look for Google Inc. Hammer
KEYBOARD_VIDPID="18d1:504c"
# The file that indicates we are in tablet mode.
STATE_FILE="/run/system/in_tablet_mode"
toggle_keyboard() {
ACTION="$1" # Expects "on" or "off"
BUSDEV=$(lsusb | grep "$KEYBOARD_VIDPID" | awk '{print $2, $4}' | sed 's/://')
if [ -z "$BUSDEV" ]; then
echo " -> ⚠️ Warning: Keyboard with ID $KEYBOARD_VIDPID not found." >&2
return 1
fi
BUSNUM=$(echo "$BUSDEV" | awk '{print $1}')
DEVNUM=$(echo "$BUSDEV" | awk '{print $2}')
DEVICE_PATH=$(udevadm info -q path -n /dev/bus/usb/"$BUSNUM"/"$DEVNUM")
PORTID=$(basename "$DEVICE_PATH")
if [ -z "$PORTID" ]; then
echo " -> ⚠️ Warning: Could not determine USB port ID for keyboard." >&2
return 1
fi
case "$ACTION" in
off)
echo " -> ⌨️ Disabling keyboard (Port: $PORTID)..."
echo "$PORTID" | sudo tee /sys/bus/usb/drivers/usb/unbind > /dev/null
;;
on)
echo " -> ⌨️ Enabling keyboard (Port: $PORTID)..."
echo "$PORTID" | sudo tee /sys/bus/usb/drivers/usb/bind > /dev/null
;;
esac
}
find_tablet_device() {
for device in /dev/input/event*; do
if evtest --query "$device" EV_SW SW_TABLET_MODE > /dev/null 2>&1; then
echo "$device"
return
fi
done
}
echo "🔍 Searching for tablet mode switch device..."
TABLET_DEVICE=$(find_tablet_device)
if [ -z "$TABLET_DEVICE" ]; then
echo "❌ Error: Could not find a device with a tablet mode switch." >&2
exit 1
fi
trap 'rm -f "$STATE_FILE"' EXIT
echo "✅ Found tablet mode device: $TABLET_DEVICE"
echo "-----------------------------------------------------"
echo "👀 Monitoring for mode changes... Press Ctrl+C to stop."
echo ""
last_state="unknown"
evtest "$TABLET_DEVICE" | while read -r line; do
case "$line" in
*"SW_TABLET_MODE"*)
current_value="${line##* value }"
if [ "$current_value" != "$last_state" ]; then
if [ "$current_value" = "1" ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') - Mode Change: 📱 Tablet Mode activated."
toggle_keyboard "off"
touch "$STATE_FILE"
else
echo "$(date +'%Y-%m-%d %H:%M:%S') - Mode Change: 💻 Laptop Mode activated."
toggle_keyboard "on"
rm -f "$STATE_FILE"
fi
last_state="$current_value"
fi
;;
esac
done
# replace with your device ID, can be found with lsusb and look for Google Inc. Hammer
# Disable the Google Hammer keyboard if it's connected while in tablet mode
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="504c", TEST=="/run/system/in_tablet_mode", RUN+="/bin/sh -c 'echo -n $kernel > /sys/bus/usb/drivers/usb/unbind'"
# Re-enable the keyboard when leaving tablet mode (by triggering a rebind)
ACTION=="remove", SUBSYSTEM=="dummy", KERNEL=="in_tablet_mode", ENV{ID_VENDOR_ID}=="18d1", ENV{ID_PRODUCT_ID}=="504c", RUN+="/bin/sh -c 'echo -n $kernel > /sys/bus/usb/drivers/usb/bind'"