Skip to content

Instantly share code, notes, and snippets.

@shinyquagsire23
Last active December 27, 2022 02:32
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shinyquagsire23/291a16f1b5fa3b555f8a9da7692b72ce to your computer and use it in GitHub Desktop.
Save shinyquagsire23/291a16f1b5fa3b555f8a9da7692b72ce to your computer and use it in GitHub Desktop.
Surface Go ChromeOS - Jan 2020
Based somewhat on http://www.nicholasmelnick.com/2019/02/installing-chromeos-on-surface-go/
EDIT April 11, 2020: Happy to report that a lot of this isn't necessary any more! https://github.com/sebanc/brunch seems to work
perfectly with the Surface Go using the dual boot option and rEFInd, no adjustments needed. Even fixes autorotation, which I hadn't
gotten working.
# Get chromefy stuff
git clone https://github.com/imperador/chromefy.git
cd chromefy
# Download nocturn (Pixel Slate) 76 from https://cros-updates-serving.appspot.com/
# Download ArnoldTheBat R76 Special from https://chromium.arnoldthebat.co.uk/index.php?dir=special&order=modified&sort=desc
# Extract both to the chromefy/ directory
# Download https://raw.githubusercontent.com/kvalo/ath10k-firmware/master/QCA6174/hw3.0/4.4.1/firmware-6.bin_WLAN.RM.4.4.1-00051-QCARMSWP-1
# to the chromefy/ directory
# Download http://www.killernetworking.com/support/K1535_Debian/board.bin to the chromefy/ directory
# Download https://drive.google.com/open?id=1ziw559MtK3FkcAac9H9KXI7U58OIHZOm to the chromefy/ directory (intel-hid.ko)
# Download surfacego-touchscreen and surfacego-touchscreen.conf from https://gist.github.com/shinyquagsire23/2a5b472abe3221c52b8be817d4145260
# Now create the image
# when prompted, make sure to answer Y for the ath10k prompt and N for "leave selinux enforcing"
# or ARC won't be able to function
sudo bash croissant.sh chromiumos_image.img chromeos_12239.92.0_nocturne_recovery_stable-channel_mp.bin swtpm.tar
# Now, we modify the image for our drivers...
# Please don't run this without reading what it is doing, the loop device may be different.
mkdir -p image_root
sudo losetup --show -fP chromiumos_image.img
sudo mount -o loop,rw /dev/loop0p3 image_root
# now, remove the old board/firmware and copy in the new one
sudo rm image_root/lib/firmware/ath10k/QCA6174/hw3.0/board-2.bin
sudo rm image_root/lib/firmware/ath10k/QCA6174/hw3.0/board.bin
sudo rm image_root/lib/firmware/ath10k/QCA6174/hw3.0/firmware-6.bin
sudo cp firmware-6.bin_WLAN.RM.4.4.1-00051-QCARMSWP-1 image_root/lib/firmware/ath10k/QCA6174/hw3.0/firmware-6.bin
sudo cp board.bin image_root/lib/firmware/ath10k/QCA6174/hw3.0/board.bin
# adjust the driver options...
echo "options ath10k_core skip_otp=yto" > ath10k.conf
sudo cp ath10k.conf image_root/etc/modprobe.d/ath10k.conf
# copy in the power button driver and set it to load
# it's possible that this doesn't actually work like this, if it doesn't
# just make sure to `sudo depmod -a` at some point
sudo cp intel-hid.ko image_root/lib/modules/4.14.120/kernel/drivers/platform/x86/
sudo echo "intel-hid " >> image_root/etc/modules
# The touchscreen will lag and produce tabs instead of swipes
# by default, these scripts fix the power management every time
# the tablet is suspended and returns from suspension to prevent that
sudo cp surfacego-touchscreen image_root/usr/sbin/surfacego-touchscreen
sudo chmod +x image_root/usr/sbin/surfacego-touchscreen
sudo cp surfacego-touchscreen.conf image_root/etc/init/surfacego-touchscreen.conf
# unmount and remove the loop device
sudo umount image_root
sudo losetup -d /dev/loop0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment