Modern Chromebook Setup Guide (with thunderbolt fixes)

Recently got an Acer Spin 713 for its thunderbolt 4 support and 16gb ram. After several hours of setup I decided to make this guide, mostly in case I reinstall for how to address ootb issues running arch linux.

(Note: I am running the Full Rom firmware)

Unexpectedly working OOTB on Arch linux with gnome:

  • touchscreen
  • auto rotate and tablet mode, touch correctly rotates with display

Easy to fix by reading documentation:

  • sound, fixed by running audio script
  • keyboard, already mostly working, but running the keyboard script restores functionality of fn keys (super + top row)

Miscellaneous fixes:

  • Device sleeps to less efficient s2idle mode instead of deep sleep. Fixed by adding mem_sleep_default=deep to kernel parameters
  • improve firefox video performance by installing intel-media-driver and settings media.ffmpeg.vaapi.enabled in about:config to true
    ̶-̶ ̶B̶y̶ ̶d̶e̶f̶a̶u̶l̶t̶ ̶g̶n̶o̶m̶e̶ ̶o̶n̶l̶y̶ ̶a̶l̶l̶o̶w̶s̶ ̶1̶0̶0̶%̶ ̶d̶i̶s̶p̶l̶a̶y̶ ̶s̶c̶a̶l̶e̶ ̶(̶t̶o̶o̶ ̶s̶m̶a̶l̶l̶)̶ ̶a̶n̶d̶ ̶2̶0̶0̶%̶ ̶(̶t̶o̶o̶ ̶b̶i̶g̶)̶.̶ ̶C̶a̶n̶ ̶b̶e̶ ̶f̶i̶x̶e̶d̶ ̶b̶y̶ ̶r̶u̶n̶n̶i̶n̶g̶:̶
    ̶̶̶̶ ̶g̶s̶e̶t̶t̶i̶n̶g̶s̶ ̶s̶e̶t̶ ̶o̶r̶g̶.̶g̶n̶o̶m̶e̶.̶m̶u̶t̶t̶e̶r̶ ̶e̶x̶p̶e̶r̶i̶m̶e̶n̶t̶a̶l̶-̶f̶e̶a̶t̶u̶r̶e̶s̶ ̶"̶[̶'̶s̶c̶a̶l̶e̶-̶m̶o̶n̶i̶t̶o̶r̶-̶f̶r̶a̶m̶e̶b̶u̶f̶f̶e̶r̶'̶]̶"̶ ̶̶̶̶
    ̶-̶ ̶I̶ ̶f̶o̶u̶n̶d̶ ̶1̶5̶0̶%̶ ̶t̶o̶ ̶b̶e̶ ̶j̶u̶s̶t̶ ̶r̶i̶g̶h̶t̶.̶ ̶D̶o̶i̶n̶g̶ ̶t̶h̶i̶s̶ ̶a̶l̶s̶o̶ ̶c̶a̶u̶s̶e̶d̶ ̶s̶o̶m̶e̶ ̶m̶i̶n̶o̶r̶ ̶v̶i̶s̶u̶a̶l̶ ̶i̶s̶s̶u̶e̶s̶ ̶w̶h̶e̶n̶ ̶m̶a̶x̶i̶m̶i̶z̶i̶n̶g̶ ̶f̶i̶r̶e̶f̶o̶x̶ ̶w̶h̶e̶n̶ ̶a̶ ̶s̶e̶c̶o̶n̶d̶ ̶m̶o̶n̶i̶t̶o̶r̶ ̶w̶a̶s̶ ̶c̶o̶n̶n̶e̶c̶t̶e̶d̶,̶ ̶w̶h̶i̶c̶h̶ ̶w̶e̶r̶e̶ ̶f̶i̶x̶e̶d̶ ̶b̶y̶ ̶s̶e̶t̶t̶i̶n̶g̶ ̶
    ̶w̶i̶d̶g̶e̶t̶.̶w̶a̶y̶l̶a̶n̶d̶.̶f̶r̶a̶c̶t̶i̶o̶n̶a̶l̶-̶s̶c̶a̶l̶e̶.̶e̶n̶a̶b̶l̶e̶d̶ ̶t̶o̶ ̶t̶r̶u̶e̶ ̶i̶n̶ ̶a̶b̶o̶u̶t̶:̶c̶o̶n̶f̶i̶g̶
    ̶-̶ ̶I̶n̶s̶t̶a̶l̶l̶i̶n̶g̶ ̶m̶u̶t̶t̶e̶r̶-̶d̶y̶n̶a̶m̶i̶c̶-̶b̶u̶f̶f̶e̶r̶i̶n̶g̶ ̶f̶r̶o̶m̶ ̶t̶h̶e̶ ̶a̶u̶r̶ ̶s̶e̶e̶m̶s̶ ̶t̶o̶ ̶i̶m̶p̶r̶o̶v̶e̶ ̶d̶e̶s̶k̶t̶o̶p̶ ̶p̶e̶r̶f̶o̶r̶m̶a̶n̶c̶e̶ ̶a̶ ̶b̶i̶t̶.̶
  • Ended up switching to KDE because it performed better with fractional scaling, had to add QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor to /etc/environment to get font rendering working well. I do not recommend using gnome on hidpi displays.

Fixing thunderbolt 3:

  • I don’t have any usb 4 devices, but I do have a thinkpad tb3 dock that I wanted to get working
  • I created the chromebook-usb4.service but it didn’t seem to do anything. Tb is now working fine with it disabled.
  • To get thunderbolt working, I downloaded ectool, make it executable, and copied it to /usr/local/bin
  • You can test it by running sudo ectool typeccontrol 0 2 1 which should activate your tb3 device if its connected to the top (closer to screen) usb 4 port
  • to turn on both ports at boot create and enable a systemd service with the following contents:
    /etc/systemd/system/chromebook-tb3-boot-enable.service:
Description=Set TypeC ports to Thunderbolt 3 on Boot

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/ectool typeccontrol 0 2 1
ExecStart=/usr/local/bin/ectool typeccontrol 1 2 1

[Install]
WantedBy=multi-user.target
  • Note: I ended up disabling this service because I used udev rules instead and they didn’t play nicely together.

  • Unfortunately, this breaks the ability to enter suspend when tb3 devices are connected and stops the tb3 devices from working when suspend fails, this can be fixed by creating /usr/lib/systemd/system-sleep/tb3control.sh

#!/bin/sh
case $1/$2 in
  pre/*)
    echo "Going to $2..."
    ectool typeccontrol 0 0
    ectool typeccontrol 1 0 
    ;;
  post/*)
    echo "Waking up from $2..."
    #ectool typeccontrol 0 2 1 #the udev rules make these lines redundant, but still useful to have them since they make it wake up a little faster.
    #ectool typeccontrol 1 2 1
    ;;
esac
  • Make sure to chmod +x /usr/lib/systemd/system-sleep/tb3control.sh

  • Now tb3 works as expected!

Fixing Tablet Mode:

  • Tablet mode mostly works, but there appears to be an issue with the ec firmware that stops the keyboard from being turned off in tablet mode. To get around this I installed linuxflip-git from the aur and created the following:
  • /etc/linuxflip/tablet
rmmod atkbd
  • /etc/linuxflip/laptop
modprobe atkbd
  • Then I made them executable with chmod +x
    Following this, I created and enabled a systemd service for it:
    /etc/systemd/system/linuxflip.service
[Unit]
Description=Start linuxflip at boot

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/usr/bin/linuxflip /etc/linuxflip/tablet /etc/linuxflip/laptop

[Install]
WantedBy=multi-user.target

Other notes:

  • The builtin ssd, as expected, seems to be a single nand dramless ssd, so I replaced it with a nicer 512gb one.
  • If you can, get a 16gb version of this chromebook, as 8gb really holds back the 1135g7, even in basic web browsing. Opening too many tabs causes slowdowns and the os may kill your browser to free up ram.
2 Likes

One problem that remains is that I still need to manually set the port to tb3 mode after unplugging from the dock and plugging back in. Perhaps this could be fixed by creating a udev rule or service that switches the port mode whenever the usb corresponding to the device is connected eg:

[ 2113.327679] usb 3-9.5: Product: 40AN
[ 2113.327683] usb 3-9.5: Manufacturer: VIA Labs, Inc.       
1 Like

Fixed!!!. The file is at
/etc/udev/rules.d/83-thinkpad-dock.rules

ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usb", ENV{ID_VENDOR_ID}=="2109", ENV{ID_MODEL_ID}=="8887", RUN+="/usr/local/bin/tb3init"

the script it runs (made executable of course) is just

#!/bin/bash
/usr/local/bin/ectool typeccontrol 0 2 1
/usr/local/bin/ectool typeccontrol 1 2 1
1 Like

My chromebook has an issue where the trackpad became slow after sleep, I was able to fix it by creating the script /etc/systemd/system-sleep/trackpad-fix.sh

#!/bin/sh
case $1/$2 in
  pre/*)
    echo "Going to $2..."
    ;;
  post/*)
    echo "Waking up from $2..."
    rmmod i2c_hid_acpi
    sleep 0.5
    modprobe i2c_hid_acpi
    ;;
esac

Not sure why this is needed, but removing that module instantly fixes the trackpad and stops the touchscreen from working, reloading it fixes the touchscreen and the trackpad still works.

1 Like