Notes for the GPD Pocket.

Specs

Display: 7inch IPS 1920x1200

CPU: Intel Atom X7-Z8750

RAM: 8GB LPDDR3-1600

Storage: 128GB eMMC SSD (non-replaceable)

Battery: 7000mAh

WiFi: Broadcom 4356 802.11ac

Bluetooth: Broadcom 2045

Audio: Realtek ALC5645

Ports: 1 x USB 3 type A, 1 x MicroHDMI, 1 x USB 3 type C, 1 x 3.5mm Headphone Jack

Installation

Automatic

You can download a pre-patched ISO from here.

Manual

Because WiFi is not working with the default configuration, you have to fix WiFi first(see #WiFi), or use a supported USB Ethernet/WiFi dongle.

Configuration

Automatic

During install append the following to /etc/pacman.conf:

/etc/pacman.conf

... [gpd-pocket-arch] SigLevel = Never Server = https://github.com/joshskidmore/gpd-pocket-arch/raw/master ...

Install the changes necessary for the GPD Pocket to run Arch properly. Install gpd-pocket-support .

Because the patch for alsa-lib is an optional dependency, it must be installed manually to get audio to work. Install gpd-pocket-alsa-lib .

Manual

WiFi

Install the package AUR and reload the WiFi kernel module:

# modprobe -r brcmfmac # modprobe brcmfmac

Backlight and KMS

In order to enable backlight control with early KMS change /etc/mkinitcpio.conf to match the following:

/etc/mkinitcpio.conf

... MODULES=(pwm_lpss pwm_lpss_platform i915) ...

Wayland

Basic Configuration

Create /etc/udev/rules.d/99-goodix-touch.rules to rotate the touchscreen, and fill it with:

ACTION=="add|change", KERNEL=="event[0-9]*", ATTRS{name}=="Goodix Capacitive TouchScreen", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1"

Right Click Emulation

Unlike Xorg, under which right click emulation can be enabled by the standard Xorg configuration files, under Wayland, such configuration is supposed to be exposed by the compositor, and unfortunately, some compositors (e.g. GNOME Wayland) does not expose these configurations properly. However, the regarding functionality is still available in libinput . Since these compositors normally loads /etc/profile.d , LD_PRELOAD can be used to hook into libinput and force apply these configurations.

A sample implementation of this approach is available here.

Xorg

Basic Configuration

Create /etc/X11/xorg.conf.d/30-monitor.conf to rotate the monitor:

Note: The Identifier may be different depending on your display driver of choice (either DSI-1 (modesetting) or DSI1 (xf86-video-intel))

/etc/X11/xorg.conf.d/30-monitor.conf

Section "Monitor" Identifier "DSI-1" Option "Rotate" "right" EndSection

Gnome and GDM

Edit ~/.config/monitors.xml (this file might not be present by default):

~/.config/monitors.xml

<monitors version="2"> <configuration> <logicalmonitor> <x>0</x> <y>0</y> <scale>2</scale> <primary>yes</primary> <transform> <rotation>right</rotation> <flipped>no</flipped> </transform> <monitor> <monitorspec> <connector>DSI-1</connector> <vendor>unknown</vendor> <product>unknown</product> <serial>unknown</serial> </monitorspec> <mode> <width>1200</width> <height>1920</height> <rate>60.384620666503906</rate> </mode> </monitor> </logicalmonitor> </configuration> </monitors>

This sets the correct rotation ( <rotation>right</rotation> ) and a scale factor of 2 ( <scale>2</scale> ). For fractional scaling, see HiDPI#GNOME.

For GDM, copy the above ~/.config/monitors.xml to /var/lib/gdm/.config/monitors.xml to set the correct rotation.

KDE

In System Settings > Display and Monitor change Orientation to 90° Clockwise, and Scale Display to a comfortable size.

Right Click Emulation

Create /etc/X11/xorg.conf.d/50-trackpoint.conf to scroll while holding right click:

/etc/X11/xorg.conf.d/50-trackpoint.conf

Section "InputClass" Identifier "GPD trackpoint" MatchProduct "SINO WEALTH Gaming Keyboard" MatchIsPointer "on" Driver "libinput" Option "MiddleEmulation" "1" Option "ScrollButton" "3" Option "ScrollMethod" "button" EndSection

SDDM

Change DPI to be readable, append the following lines to /usr/share/sddm/scripts/Xsetup :

/usr/share/sddm/scripts/Xsetup

# Set DPI xrandr --dpi 168"

Touchscreen Gestures

Install AUR , then edit the following line in /usr/share/touchegg/touchegg.conf :

/usr/share/touchegg/touchegg.conf

... <action type="SCROLL">SPEED=7:INVERTED=true</action> ...

Create /etc/X11/xinit/xinitrc.d/01_touchegg

/etc/X11/xinit/xinitrc.d/01_touchegg

... #!/bin/bash # starts touchegg application PREFIX="$HOME/.config/touchegg/.run" mkdir -p "$PREFIX" PIDFILE="$PREFIX/touchegg.$USER$DISPLAY.pid" LOCK="$PREFIX/touchegg.$USER$DISPLAY.lock" start_touchegg() { ( flock -n 9 || exit 1 touchegg 2>/dev/null >/dev/null & PID=$! echo "$!" >"$PIDFILE" wait $PID ) 9>"$LOCK" } start_touchegg &

Set the permissions on /etc/X11/xinit/xinitrc.d/01_touchegg

# chmod 0755 /etc/X11/xinit/xinitrc.d/01_touchegg

Making use of 半/全 key on Pocket 2

Out of the box the 半/全 key is configured to send the ` symbol and keycode 49, making it a duplicated of a regular `/~ key. In order to be able to map it to something more useful go to the GPD2 Firmware and download "GPD Pocket 2 Keyboard Firmware (Japan)". This must be flashed with the Windows 10 OS supplied with the device. It is advised to have a USB mouse, since the keyboard and mouse will be disabled during the update.

After the update is done 半/全 will send keycode 49 and ` symbol, while the dedicated `/~ key will send keycode 132. In order to fix this create a file ~/.Xmodmap

~/.Xmodmap

keycode 132 = grave asciitilde keycode 49 = XF86Launch1 NoSymbol

Test it immediately

$ xmodmap ~/.Xmodmap

For more information read xmodmap

Fan

With the latest kernel your fan should work out of the box.

Note: If you are having issues with your fan not functioning as intended - try the following:

# modprobe -r gpd-pocket-fan # modprobe gpd-pocket-fan temp_limits=40000,40001,40002

Once this has been completed - you should hear your fan start up at 40c - if you hear a clicking sound - power off the device, remove the back panel and very gently push the fan around a few times. Then re-attach the panel and power on the device - running the above commands again once logged in. It seems to be an issue with some devices that the fan cannot start properly when it has not been powered on in a while.

Once you have completed these steps and the fan is working properly - you should then either reboot or reload the fan kernel module in order to return the temperature limits to default:

# modprobe -r gpd-pocket-fan # modprobe gpd-pocket-fan

Note: By default fan is always spinning when on AC gpd-pocket-fan.speed_on_ac=0 to the By default fan is always spinning when on AC [1] . To override this behavior addto the Kernel parameters

Power Saving

Install and then edit following lines in /etc/default/tlp :

/etc/default/tlp

... # improve disk IO DISK_DEVICES="mmcblk0" DISK_IOSCHED="deadline" ... # disable wifi power saving mode (wifi speed drops MASSIVELY!) WIFI_PWR_ON_AC=off WIFI_PWR_ON_BAT=off ...

PulseAudio

Append the following lines into /etc/pulse/default.pa :

/etc/pulse/default.pa

set-card-profile alsa_card.platform-cht-bsw-rt5645 HiFi set-default-sink alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645_0__sink set-sink-port alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645_0__sink [Out] Speaker

Turn off realtime scheduling by editing /etc/pulse/daemon.conf :

/etc/pulse/daemon.conf

realtime-scheduling = no

Charge control

It is possible to control the charge current, charge end voltage and a few more settings.

See this reddit post for more information and an example script.





Known Issues

USB-C Power source status

USB-C power source status does not work on Kernel 4.14-15. Hans' kernel has a patch fixing this.

systemd-gpt-auto-generator failed to dissect

Due to this issue, an error message appears at boot:

systemd-gpt-auto-generator[199]: Failed to dissect: Input/output error .

To avoid the error message, add this boot parameter to your boot loader.

systemd.gpt_auto=0