Will Styler's Homepage
Will Styler

Associate Teaching Professor of Linguistics at UC San Diego

Director of UCSD's Computational Social Science Program

Some Notes on running Linux on the GPD Pocket 4

Lovingly recalling the ‘Netbooks’ of yore, and cyberdecks of the present, I recently purchased a GPD Pocket 4 with AMD’s newest flagship ‘Ryzen AI HX 370’ chip and enough RAM to run serious models, which is particularly interesting to me as a computational linguist.

This is a real laptop, with real laptop internals, in tiny form factor. It ships with Windows (in Chinese), but screw Windows, so I immediately wiped it and installed Linux. Here’s a repository of information about setting that up, and some thoughts on the device.

Fedora Install was Easy (if sideways)

I went with Fedora Kinoite 42 to match my other machines. Aside from the fact that the installer was sideways, more on this later, everything installed fine, and most things worked out of the box. Webcam, Mic, ports, all fine

The Damned Screen

One awkward part of this whole thing is that the screen on it is sideways. They have taken a vertical screen and used it horizontal, without changing the firmware for the monitor or doing anything else. Which means a few things:

Once in KDE Display settings, you just need to use the Display Settings to rotate the panel and it’s fine within the GUI, but the LUKS unlock screen and KDE Login screen will be rotated. There is a way to modify this with kernel parameters, which makes the LUKS unlock screen and login screen orient properly:

sudo rpm-ostree kargs --append=fbcon=rotate:1 
sudo rpm-ostree kargs --append=video=eDP-1:panel_orientation=right_side_up

… but doing this has the downside of making the below screen orientation code rotate 90 degrees too far, so failing the time to modify the udev file below to fix that, I don’t have that enabled.

Note also that out of the box on KDE, ‘Mirror Screens’ is messy. I’ve submitted a bug report to KDE about this with details, but you have to manually do the configuration to get true mirroring, as the aspect ratios ‘don’t match’ with rotation not accounted for.

Making Screen Orientation Sensing Work

The best way I’ve found to fix this, thanks Reddit and elsewhere, is to first create a file /etc/udev/hwdb.d/61-sensor-local.hwdb


# GPD Pocket 3
sensor:modalias:acpi:MXC6655*:dmi:*:svnGPD:pnG1621-02:*
 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1

Then run:

sudo systemd-hwdb update
sudo udevadm trigger -v -p DEVNAME=/dev/iio:device0

Then reboot or sudo systemctl restart iio-sensor-proxy.service. This makes automatic screen rotation actually work, although the ‘only in tablet mode’ approach doesn’t seem to.

Waydroid

Waydroid works fine out of the box with the device in Tablet mode, giving you a (somewhat janky and not uniformly supported by apps) Android tablet for free with your device, but Waydroid isn’t very good at changing resolutions to match the window, so auto-rotate doesn’t work. To get the right size from Waydroid, you have to run:

waydroid start
waydroid prop set persist.waydroid.width 1150
waydroid prop set persist.waydroid.height 1800
waydroid stop

This is janky, and the numbers depend on your fractional scaling, but once configured, it works.

Reducing Fan Noise

Turns out that KDE’s built in power management slider does a remarkably good job with constraining the processor and reducing the fan noise accordingly. So, if I need relative quiet, I switch to the ‘Power Save’ performance profile, but even then, it can become audible when it’s chugging. I’m probably going to repaste with PTM phase-change pads soon enough, I’ll update once I do. I do wish they’d chosen a quieter fan.

EDIT: Repasting with a bit of PTM 7950 phase change pad yielded incredible improvements. I saw idle temps go from 45-50°C down to 40°C, and all core loads went from 85-95°C all the way down to 65°C. Even with full CPU load on just a few cores (which appears to be the thermal worst case), I can’t get the device to go past 82°C with out-of-box fan settings, and even with fan mute mode engaged, the same load seems to top out around 92°C. I’ve also noticed that the temperature (and thus, the fan speed) drops much more quickly after load, mirroring my experience on other laptops with PTM. This was about a 15 minute process, and it is wildly better.

Using the KVM Module

The KVM module is a cute little card that attaches in the back and has an HDMI capture card, and a USB-C out port allowing your keyboard and mouse from the device to be plugged into an external machine. In short, it turns your computer into an interface for a headless machine.

Both sides work fine on Linux, although it’s worth noting that the USB-C out will completely capture the keyboard and mouse from the local system until unplugged.

Things that still don’t work (well)

Fingerprint Sensing

I’m still not able to get the Fingerprint Sensor working, and it’s not detected out of the box. But those tend to be inconsistent in Linux anyways, and I haven’t tried too hard yet. Please let me know if you’re able to get it running in Fedora, and I’ll add details.

Trackpad

The trackpad works OK, but it’s not detected as a trackpad at all. It’s actually a mouse emulator. This means that you don’t get smooth scrolling, instead, you get periodic ‘pulses’ of mouse scroll wheel turn events, meaning that it scrolls in fits and starts, and trackpad gestures don’t work. Similarly, ‘two finger press to right click’ isn’t able to be turned on or off, although tapping to left click does. Most scrolling I tend to do with the ‘hold down middle mouse button and mouse to scroll’ option, although turning the scroll speed down does help considerably to smooth scrolling.

One other thing to consider with this arrangement: If you regularly play games (e.g. Factorio) where you need to be WASD moving and right clicking at the same time, this arrangement won’t work well at all, as you have to remove your hand from the WASD to right click. So, pack a mouse, or plan on some extra twisting

Tablet Usage in KDE

KDE is in need of some love with Tablet usage. Getting the onscreen keyboard to show up when desired is not trivial, and things don’t quite work well. Compared to an Android tablet, this is a big step down, but Waydroid allows you to get that experience with limited pain.

I know this is something the KDE folks are working on, though, so I expect this bit to change over time.

Overall Impressions

There are a number of things I like:

There are some downsides:

This device sort of scratches the itch of a long term desire for me, a ‘convergence device’. Something that is portable enough to be easy to bring with me and compact on the road, but powerful enough that when I plug it in, it’s a real computer with real heavy lifting. This is an incredibly strong computer, at any size, and when docked, it’s an incredibly potent (if loud) choice. Yet, the size makes it very portable, very easy, and very nice for cramped economy seats, and is enough to be able to just throw it into a pack without thinking. As a host for AR glasses, it’s spectacular, as I can carry both it and the glasses, and have a 30” monitor workstation with me in the front seat of a car. This is silly, but it is excellent.

Maybe my biggest worry with this device is in repairability. I don’t see replacement parts available through GPD, and although all the screws are Phillips and things seem easy enough, I’m very concerned about what will happen if there’s a problem down the road. GPD has been around for a while, but I don’t know that I believe that after-sales support will be particularly strong, and I’d rather have a parts store (ala Framework) and good tutorials, than relying on goodwill of manufacturers for a $1700 device.

On the whole, it’s a very neat device. It’s a nerdy thing, and I don’t know that it should be anybody’s only device, but with a docking station, it very well could be, and I can see this appealing to lots of people who value portability over all else, and want the port loadout. I can particularly see somebody who’s a traveling IT tech loving this, because of all the ports, the KVM, the built-in ethernet, and the small form factor.