Note, as of Nov 3 2020, this has been automated. Check out the repo here.

Hello there! I recently got Fedora Linux running on the GPD Win Max I received in the mail. After replacing the stock Windows m.2 with a blank Sabrent Rocket 1tb m.2, I decided to install my stable distro of choice, Fedora on there.

Below is a shot of it before then.

gotta love windows updates

Sept 15th 2020

However, after booting the Fedora live installer and finishing the installation, I was met with an unwelcome sight.

Not a fun time when your display isn't properly configured

So, next, I had active conversations on the /r/gpdwin reddit with other users that were actively gettig Linux to run on theirs. Windows is fine and all for those who don’t like customizing or having fun with their software-hardware config, but I’ll always be a tinkerer at heart. Not to mention, most retro emulators go fullscreen by default in Linux….it’s the small things haha!

After conversing with a few people, user /u/Low_Tension_80 helped me out, as a fellow Fedora user, for illustrating how he went about getting Fedora on his Win Max. It appears I had written in prior GRUB entries wrong, so for the sake of keeping the guide alive on the internet, I will reproduce it below, with some added notes of my own.


Sept 16 2020 First, I install my distro of choice. In this case I'll be using Fedora. I SSH'd into my GPD Win Max over Ethernet, since there's a port on the side. May as well use it. We highly recommend installing the RPMFusion repos (free and nonfree) after running updates when your install finishes. This simple task can set you up for success in the future when you want to install Steam, install NVIDIA drivers for eGPU etc.

After SSHing in from a laptop or desktop in a terminal, and typing loginctl you will likely see this:

$ loginctl
SESSION  UID USER SEAT  TTY  
      2 1000 eric seat0 tty2 
      4 1000 eric       pts/2

2 sessions listed.

Note the user is eric, which was the original redditor creating this guide. Your username will likely be here in place of "eric". This is fine if you see this while SSH'd in, everything is according to plan. Next, we will see whether wayland or x is being used for the GNOME display session on this bad boy. Type the command below.

$ loginctl show-session 2 -p Type
Type=wayland
$ loginctl show-session 4 -p Type
Type=tty

If you get type=x11 instead of wayland on the non-tty session, you are not ready to proceed. To set wayland as default, although Fedora should already be running it as default, use nano or vim and open vim /etc/gdm/custom.conf, then adding the line or uncommenting WaylandEnable=true, then, if in vim, use esc and :wq! to save and exit the file.


Now we get to the part of the guide that will truly change your experience from using this fun little device from having a borked display output to a usable one. Below is the extract of the firmware Windows uses to properly utilize the display. Linux can make use of this too.

AP///////wAJ5QMAAwAAAAEdAQOACxF4LwAAoFdJmyYQSE8AAAABAQEBAQEBAQEBAQEBAQEBwhog
UDAAEFAQEDIAbKwAAAAYAAAA/ABUVjA4MFdVTS1OTDAKAAAA/QA8PBAQBwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAMM=

Take that info, paste it into a text file and save it. If you're new to that, do something like this: vim firmware. Then, ctrl+shift+v to paste that firmware in the file. Esc and then :wq! to save and close the file.

Now run this command to create the edid directory that we will store the firmware in: sudo mkdir /lib/firmware/edid. Now to decode the firmware from the text file we pasted that stuff from above (I did it as root but using sudo should be fine)

base64 --decode /home/eric/firmware > /lib/firmware/edid/gpdwinmax.bin

Note that in this case, your username will be in place of "eric" in this command.

Now we're going to make an addition to the GRUB config files to make sure that the Win Max sees the firmware on boot and also rotates the console output. vim into /etc/default/grub and note that you may need to be sudo Hit enter and insert this line at the end of the GRUB file:

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

Make sure to Esc and :wq! or your changes won't be saved, if using vim.

Now that that is out of the way, we can update the GRUB file. Note that Fedora is different than Ubuntu for the below command. Ubuntu uses update-grub while Fedora uses the below command:

sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

Now when you reboot, everything should be fine....after one last change. When you boot up, you will see your login screen is rotated. That is fine, sign in as you usually would. When you boot to the desktop, hit superalso known as the Windows key, and type Display. When you open your display settings, choose rotate to Portrait Left. If that doesn't work, choose Portrait Right and hit apply.

Now you should be good to go! Feel free to sudo dnf install steam retroarch from the command line if you want to start playing your retro games and PC games! Lutris is a fine option if you want to game using launchers outside of Steam. Here is a guide to running most Steam games on Linux easily.

In the end, you will have a working steam install and be able to start gaming!

In the end, you will have a working steam install and be able to start gaming!

Another good point to make, is that the controller/mouse mode switch on the side of the GPD Win Max works out of the box in Fedora.


It took a while, but upgrade complete!

It took a while, but upgrade complete!

October 30 2020

As you can see in the above screencap, the upgrade from Fedora 32 to 33 worked flawlessly on the GPD Win Max as well.

The touchscreen still works fine, the touchpad and built-in swappable modes for the controller work fine as well. Here’s to a glorious future for handheld devices running Linux!

March 17 2024

This original handheld from 2019 that I received in 2020 is now pretty much set to be running an Arch-based distro, as those are the ones that seem to work without any tinkering now. I wiped the GPD Win Max and installed ChimeraOS on it a few months ago, which has all associated patches on it and working fine.

Looks like after running an update and rebooting, the ChimeraOS install on this guy is also on a fairly recent kernel too, that’s good to see.