GPD Win Max 2021 - Intel i7-1195G7

Remarks

  • alsa-sof-firmware needed to be installed into dom0 to get any sound cards recognised at all (not anybody’s fault. Tiger Lake CPUs are still relatively new)
  • The display needed to be configured with custom EDID (https://www.reddit.com/r/gpdwin/comments/ik3dje/gpd_win_max_display_fix_in_linux/)
  • Runs the latest 4.1 release release candidate perfectly. No modifications needed to be made to the default install
  • The touchscreen and display’s default orientation is sideways to the position of the keyboard (I have a feeling the screen is identical to an iPad Mini display, and they’ve just repurposed it), so the GRUB menu, Plymouth boot screen, and login screen are all sideways. I have fixed it with an XFCE login script (attached below), but I’m still working on rotating GRUB and Plymouth.
  • Qubes OS with a touchscreen is a lot more awesome that you might think! (I’m going to look for an x86 tablet now…)
  • The built-in keyboard and trackpad, 2x USB A ports, 2xUSB-C ports are each on their own separate USB bus, which is nice. The built-in Xbox 360 controller, however, is with the 2 USB-A ports (which doubles as a pointer device). A sys-usb qube is definitely possible.
  • Interesting quirk when closing the lid. It sleeps immediately. When opening the lid, the display turns on immediately, everything powers up, but then the entire system hangs for 1-2 minutes (it’s like the Scroll Lock key was pressed, that’s the best way I can describe it), before coming back to life. (I know because I watch the xscreensaver blue bar stay still for 1-2 minutes, before it suddenly starts going down, and I can move the mouse again). Not sure how to fix this, but to be honest, I haven’t really looked…
  • The display does some weird things sometimes. I try to avoid changing it’s resolution, because I then get tearing and…well…google image search “GPD Win Max display linux” and you’ll see what I mean :sweat_smile:
  • The internal keyboard (like most laptop keyboards) has things like volume, screen brightness, keyboard backlight control, etc. Fn + F1 acts as volume mute toggle. HOWEVER, when pressed, it makes Qubes OS mute and unmute the volume rapidly for about 2-3 seconds, and then kills the keyboard input (you can click on VM windows, but you cannot type in them, nor can you interact with anything in XFCE). It’s baked into the keyboard’s firmware, so you just have to make sure you don’t press Fn + F1. XFCE muting works without any issue (by clicking on it), just not Fn + F1.

More to be filled in later…

Attachments

Qubes-HCL-GPD-G1619_03-20211104-201700.yml (912 Bytes)

Bash script to fix GPD Win Max display on login (will do nothing on boot, as X11 isn’t running yet…)
#!/bin/sh

#Rotate display 90 degrees right with 1280x800 resolution
xrandr --newmode "800x1280_60.06" 68.500 800 816 832 880 1280 1283 1285 1296 -HSync -VSync
xrandr --addmode DSI1 "800x1280_60.06"
xrandr --output DSI1 --mode "800x1280_60.06" --rotate right

#Rotate touchscreen 90 degress right
xinput set-prop "pointer:Goodix Capacitive TouchScreen" --type=float 177 0 1 0 -1 0 1 0 0 1

#Map touchscreen to internal display only
xinput map-to-output "pointer:Goodix Capacitive TouchScreen" DSI1

I’m working on a udev rule to make this script run whenever a display is added/removed, otherwise the touchscreen is mapped to all displays combined.

1 Like

Thank you @alzer89 for your HCL report, which is now online.

1 Like

On that note, is there any chance of anyone giving me a hand with installing a custom EDID in Qubes OS 4.1 beta?

This piece of hardware does something very strange with its display that worked in the previous GPD Win Max, and didn’t work in this model.

…and it seems to almost completely ignore them.

When it boots with an external display plugged into the HDMI port, the internal display looks like this (perfectly fine):


Yes, GRUB is sideways, but I’ve learned to live with it…

…then you put you disk password in…

…and it works wonderfully, even if you then unplug the external HDMI display.

But when it boots with only the internal display present, it looks like this:


…perfectly fine until lightdm loads, and then THIS:



I have passed the following kernel parameters in grub.cfg:

video=DSI1:1800x280 drm.edid_firmware=DSI1:edid/gpdwinmax.bin fbcon=rotate:1

…and they worked on the other GPD Win Max models, but don’t seem to do anything at all on this one.

The value of /sys/devices/pci0000\:00/0000\:00\:02.0/drm/card0/card0-DSI1/edid is empty.

I have placed the EDID firmware of the original GPD Win Max in /lib/firmware/edid/gpdwinmax.bin.

Does anyone know anything I’ve missed?

I’ve been at it for about a week straight now, and would greatly appreciate any help anyone is willing to offer.

I’m happy to post this under the User Support category if it would make it better organized.

Thank you in advance to anyone who answers!

UPDATE

EDID Firmware No Longer Required

  • The custom EDID firmware is not required any more. It appears to be fixed in Qubes 4.1.

GRUB Kernel Parameters

  • Rotate internal display to the correct orientation, except the GRUB menu:
# The Display for some reason is named differently if you boot with an external display plugged in...
video=DSI1:panel_orientation=right_side_up # Only internal display plugged in at boot
video=DSI-1:panel_orientation=right_side_up # Additional display plugged in at boot

 # For Console Rotation
video=efifb:fbcon=rotate:1
  • Enable Tiger Lake Audio:
snd-intel-dspcfg.dsp_driver=1

Display Rotation

LightDM Greeter (Login Screen

# /etc/lightdm/lightdm.conf
[Seat:*]
greeter-setup-script=/etc/lightdm/greeter_setup.sh

# /etc/lightdm/greeter_setup.sh #You can name this whatever you like, as long as you tell LightDM where to find it

#!/bin/bash
xrandr -o right
for display in {"DSI1","DSI-1"}
     do
     xinput map-to-output "pointer:Goodix Capacative TouchScreen" $display
done
exit 0

The Machine Resumes From Sleep…Except The Internal Display…

  • The machine wakes from S3 sleep perfectly…except he internal display stays black (but illuminated).
  • The display can be turned on an off with xrandr, but it still only shows a black screen.
  • The machine is otherwise completely responsive and powered-up. I have used it successfully by visualising what would be on the display in my head, in order to avoid a hard reset (you know, things like saving open work, before I hard reset it to get the screen back).
  • If an external display is plugged in, it activates correctly, and the machine is usable. But the internal display still stays black. The internal display stays black if an external display is then unplugged, too.
  • I’m 70% sure it’s a BIOS thing, because identical behaviour is seen in live environments of other Linux bare metal distros. None of them have managed to get S3 sleep to reset the internal display. They’ve only managed S2Idle (which I don’t want, because the machine would overheat in a bag, case…)

  • If there is a way to “simulate” the internal display being disconnected and then reconnected like an external display, so that it recalibrates, I am fairly certain that this would completely solve this issue, and could be written as a systemd-sleep script, which would make sleep/wake fully functional.

(PLEASE TELL ME IF YOU KNOW HOW TO DO THIS :slight_smile: )

Keyboard Mute Button (Fn + F1) Fixed

  • Stop Keyboard Mute Button (Fn + F1) from spamming keypresses and killing your keyboard (and then borking your system):
# /etc/udev/hwdb.d/90-gpd-rules.hwdb
evdev:atkbd:dmi:bvn*:bvr*:svnGPD:pnG1619*:pvr*
 KEYBOARD_KEY_a0=!mute
1 Like