Skip to content
Matt Tuchfarber edited this page Oct 20, 2023 · 26 revisions

Firmware updates

WARNING: If you have a Surface Go EMMC Model (model with Ram 4GB and with eMMC 64GB as internal storage) and plan on updating firmware, it's best to avoid taking the 1.0.34.0 firmware update for the UEFI by temporarily disable Windows Updates until Microsoft disables that problematic firmware update. Multiple users have been affected by a bug, likely introduced in this update, that leads to a "No Bootable Device" issue when try to boot from eMMC internal storage.

Your millage may vary but updates can be made without the need for Windows at your risk using: https://github.com/linux-surface/surface-uefi-firmware

Wi-Fi firmware

Note: This only applies to older firmware packages. Newer firmware releases have a fix. See https://github.com/linux-surface/linux-surface/issues/542 for details. Only continue with the text below if you experience any Wi-Fi related issues and/or your distribution does not provide recent firmware updates.

To install and set up Wi-Fi firmware for the Surface Go, you will first need to install linux-firmware if you are not using Debian or firmware-atheros if you are.

The upstream Wi-Fi firmware included in linux-firmware/firmware-atheros unfortunately does not contain the necessary board data (see e.g. this linux mailing-list post). To fix networking, you have to replace or override the firmware. This can be done in two ways:

We provide a workaround that does this for you in the surface-ath10k-firmware-override package. Simply installing this package and booting with a Surface kernel should fix any Wi-Fi issues. Wile the Surface Go works well without any special kernels, the packaged workaround unfortunately requires a patch that is not (and likely never will be, as it is a workaround) upstream. If you're interested in the details, have a look at the repository of the package.

Your second option is to manually replace and remove the existing board files:

LTE

See this page for setup information.

SD card reader breaks S0ix

There is a report [1] that the SD card reader prevents the system from reaching S0ix power states, thus causes higher power draw during suspend (s2idle). If you're not using the SD card reader, you can disable it in the UEFI settings to save power.

If you know more about this issue like the following:

  • confirmation that the SD card reader really breaks S0ix
  • report that actually SD card reader doesn't break S0ix
  • dmesg log
  • fix to this issue

Let us know by opening an issue (or posting to the existing issue if already exists.) or IRC channel.

To check the S0ix achievement, take a look at this FAQ

Dual-Booting Linux and Windows

The Surface Go will probably not boot from GRUB or rEFInd after installing a Linux distribution alongside Windows 10 and your new Linux installation will not appear in the device's Boot Menu.

For more details about this problem, check the corresponding section in the Surface Go 2 Wiki page:
https://github.com/linux-surface/linux-surface/wiki/Surface-Go-2#dual-booting-linux-and-windows

Using a USB-A memory stick and a USB-C hub

If you are using a USB-A memory stick as the installation media for your initial operating system installation, and a USB-C hub with multiple USB-A ports, you may need to try different USB-A ports on your hub before you find one which is recognized by the Surface Go at pre-boot stage, to allow you to boot from it.

Trouble booting from USB drive?

Sometimes regardless of the USB flash drive working in other machines and your surface UEFI options set to boot from USB, it just won't recognize it. One solution that works is to use GParted to wipe your drive and format it to FAT32, then mount it and use UNetbootin to copy the installation ISO to the drive. I believe the issue is that the surface doesn't read non-FAT32 formatted drives. It specifically didn't work with an ISO9960 drive (a copy of the an ISO file).

[1] https://github.com/jakeday/linux-surface/issues/554#issuecomment-682290246

Clone this wiki locally