Installing EndeavourOS on the GPD Win Max

A detailed guide on how to install and set up EndeavourOS on your GPD Win Max.

Installing EndeavourOS on the GPD Win Max

If you've been wanting to try running Linux on your GPD Win Max, you'll likely have found that there is only one flavor available that works out of the box for the GPD Win Max, namely Ubuntu Mate.

Fortunately it is not too challenging to get a different flavor of Linux up and running on your Max though, it just requires a little bit of patience and ideally an external monitor, although that is not strictly required. The main and really only issue when setting up EndeavourOS on the Max is with the display not being correctly recognized. In this guide we'll fix that and also walk through some good first configuration options and tools to help get the most out of your Max, especially for gaming.

If you're interested in installing Manjaro Linux with GNOME on Wayland instead, I have a guide for that right here.

Before we start

This guide assumes you'll already have created a bootable USB stick with the EndeavourOS installer. This will also assume you're installing EndeavourOS on the built-in drive. I will not cover dual booting as an option as I personally never really use that, but if you want that I'm sure you can combine bits of existing guides on that subject with this one.

Be sure to have all important files backed up and/or sycned before continuing, as the installation will wipe whatever is on your drive.

As mentioned, using an external monitor can help make the process easier, though this is not strictly required. You can make do with the distrorted display until the right configuration is in place, or even SSH into the device from another machine.You can make do with the internal display though, as there's a way to make it at least partially legible for the initial steps.

EndeavourOS comes with quite a few desktop environment choices builtin, including KDE Plasma, GNOME, and XFCE. In my testing KDE Plasma performed quite sluggishly on the Max for reasons I don't really understand, so I probably wouldn't recommend this one, but it is of course fully up to you.

Installing EndeavourOS

With your bootable USB stick prepared and plugged in to your Max, go ahead and start it up. As soon as you do, start hitting the DEL key so you can enter the BIOS.

Bios boot order

Once in your BIOS, head over to the Boot menu. In the FIXED BOOT ORDER Priorities section, ensure your USB stick is the first boot option, with the NVMe listed as the second boot option. Head over to the Save & Exit screen and select Save changes and Reset. Your Win Max should reboot straight into the USB boot selector.

The EndeavourOS live environment should automatically boot up after a few moments, with a beautifully garbled display on your Max' internal display.

Making the internal display usable enough for installation

If you're not relying on an external monitor, you can change the internal display's resolution to get half the display showing up fairly well, which is enough for us to get through the installation steps. Take a moment to get familiar with what's happening on-screen; you'll see two mouse cursors, with the left one being the "true" one, and the right one some ghost-like copy. When targeting buttons and what-not, focus on the real mouse cursor and in cases where you may see two copies of the same button, the left one is usually the "real" one.

Click the "EndeavourOS" menu in the bottom left, type "Displays" and hit enter. Don't use the welcome screen's change display resolution. Then, set the resolution to 800x600, and the rotation to Right. Click the Apply button, and the now the left half of the display should be usable.

With that out of the way, let's install EndeavourOS!

Installation

You'll first probably want to connect to wifi if you're using that or have a network cable plugged in so that the installer can download all the recent-most packages. You can find the network icon in the bottom right hand side, next to the battery icon. EndeavourOS natively supports the WiFi and Bluetooth of your Max.

Click the "Start the installer" option from the welcome screen, and select your relevant locale settings, disk partition settings, and when asked select the desktop environment you'd like to use. If you want to leave as much memory as possible available for games, you might want to consider one of the more lightweight options, but to be honest I don't think most games capable of running on the Max are memory-deprived, even on a desktop environment with richer experience.

There's no wrong choice here, although I must admit that in my testing KDE Plasma seemed sluggish on the Max somehow, I am not entirely sure why. I recommend you go with what you know already or have been curious to try.

The rest of the guide will assume GNOME was chosen as it's the one I'm most familiar with and I feel it performs very nicely on the Max. Only relatively minor parts like how the login screen behaves might need a different solution if you choose a different desktop manager, but the overall process should be close to identical.

Once you're all set, hit start and let the installation process do its thing. Especially if you have connected to the internet be ready to give it a bit of time, as it downloads a multitude of packages and updates in the background at the same time. Grab a cup of coffee and come back a bit later. Once it's finished, reboot with the USB stick removed and log in to your freshly installed EndeavourOS.


Fixing the display

First things first, let's fix the display. After rebooting you'll have the same distorted internal display as before, so if you're following this guide without external monitor, it'll probably be useful to set the resolution to 800x600 rotated right once again so that you can at least see what's going on.

Create an EDID firmware file

Open up a terminal window (You can type terminal into the menu search box or use the ctrl+alt+t shortcut in most cases) and run the following command:

❯ sudo mkdir -p /lib/firmware/edid && echo "AP///////wAJ5QMAAwAAAAEdAQOACxF4LwAAoFdJmyYQSE8AAAABAQEBAQEBAQEBAQEBAQEBwhog
UDAAEFAQEDIAbKwAAAAYAAAA/ABUVjA4MFdVTS1OTDAKAAAA/QA8PBAQBwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAMM=" | base64 --decode | sudo tee /lib/firmware/edid/gpdwinmax.bin

What this does is:

  • Creates an edid folder inside /lib/firmware if it does not already exist
  • Decodes the base64 encoded data shared by Reddit user yann-v and writes it to a file called gpdwinmax.bin inside the newly created /lib/firmware/edid folder.

Adding it to and updating initramfs

Open the /etc/mkinitcpio.conf file in your favorite text editor using sudo, and locate the MODULES="" and FILES="" variables. We'll modify both so that they instead read like this:

MODULES=(i915)

# (...snip...)

FILES="/lib/firmware/edid/gpdwinmax.bin"

Save your changes, and then run the following command to have new initramfs images generated:

❯ sudo mkinitcpio -P

Configure Grub

Next, we need to modify the Grub config file so that your system will start using this new edid firmware file. Using your favorite text editor and sudo, open /etc/default/grub and add the following to the GRUB_CMDLINE_LINUX variable:

video=eDP-1:800x1280 drm.edid_firmware=eDP-1:edid/gpdwinmax.bin fbcon=rotate:1

The end result should look something like this:

GRUB_CMDLINE_LINUX="video=eDP-1:800x1280 drm.edid_firmware=eDP-1:edid/gpdwinmax.bin fbcon=rotate:1"

Run the following command to have your changes applied:

❯ sudo grub-mkconfig -o /boot/grub/grub.cfg

Optional: Install ZEN kernel

Before we reboot to have these changes applied, now might be a good time to install the ZEN linux kernel for fsync support, if that's something you'd like to use. You can skip this now if you're planning on using a different kernel or are content with the stock kernel, of course.

To install the zen kernel, run the following command:

❯ sudo pacman -S linux-zen linux-zen-docs linux-zen-headers

You should reboot your Max first before continuing, so go ahead and do that now.

Fixing the login screen orientation

After rebooting, your internal display should now look a lot better. Things are actually readable now, albeit rotated. You can go ahead and log in, open display settings once again, and change the orientation of the internal display to Right (or the applicable equivalent your display manager of choice shows).

Now let's fix the login screen.

GNOME

You can copy your account's monitors.xml file after first setting the right orientation and resolution to make it the system default in the same way as I described in the Manjaro guide:

❯ sudo cp ~/.config/monitors.xml /var/lib/gdm/.config/monitors.xml

KDE Plasma

Open up a Terminal window and, using your favorite text editor, open up /usr/share/sddm/scripts/Xsetup for editing. Add the following to the end of the file, and save it:

xrandr -o right

Now create a new file inside /etc/sddm.conf.d, you can call it something like screen-rotation.conf for example, and add the following to it:

[X11]
DisplayCommand=/usr/share/sddm/scripts/Xsetup

Save and close the file, and we should be good to go now. Try it out by logging out, your login screen should now display in the right orientation. Nice!

Other display managers

Unfortunately I don't have experience with other display managers and their specific ways of dealing with login screen orientation. For other X11 based systems that use SDDM the method described for KDE Plasma might work. Otherwise it might be best to search for your specific choice of display manager, as there likely was at least one person out there who uses a vertical monitor setup that wanted to fix their login screen orientation.


Setting things up

At this point you should have a fully working EndeavourOS installation. Where you go from here is fully up to you, but as the Win Max is made for gaming, you'll probably at least want to install Steam and Lutris.

Install Steam

❯ sudo pacman -S steam

If you want to use something like GloriousEggroll's custom proton builds, make sure you launch Steam at least once (log in, too), then close it fully. Download the custom proton builds you'd like, and with theze .tar.gz files in your Downloads folder run the following:

❯ mkdir -p ~/.steam/root/compatibilitytools.d;
❯ tar -xvf ~/Downloads/Proton*GE*.tar.gz -C ~/.steam/root/compatibilitytools.d/

What this does is create a folder called compatibilitytools.d inside Steam's root folder, and then extract the custom proton build you have just downloaded into it.

Now you can re-open Steam, go to Settings > Steam Play, and enable Enable Steam Play for all other titles. Either the custom GE version you have just downloaded as the default version here, or you can select this on a game by game basis. Steam Experimental can also be a good default, depending on the kinds of games you play.

Wine & Lutris

Here's a one-liner for everything you need to install for proper wine and Lutris support. It's a big one, but it contains everything you need in one go:

❯ sudo pacman -S wine-staging giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse libgpg-error lib32-libgpg-error alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo sqlite lib32-sqlite libxcomposite lib32-libxcomposite libxinerama lib32-libgcrypt libgcrypt lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader lutris

...and More

I have made a separate article specific for optimizations, configurations and other useful tools for getting the most out of your Max running Linux. It might be a useful next step for you, as it covers several topics like undervolting, setting TDP limits, and other things.

Linux Optimizations for your GPD Win Max
Power management, TDP limitations and more.

GPD Max

GPD Pocket 2