Translation(s): none
DebianOn is an effort to document how to install, configure and use Debian on some specific hardware. Therefore potential buyers would know if that hardware is supported and owners would know how get the best out of that hardware. The purpose is not to duplicate the Debian Official Documentation, but to document how to install Debian on some specific hardware. If you need help to get Debian running on your hardware, please have a look at our user support channels where you may find specific channels (mailing list, IRC channel) dedicated to certain types of hardware. |
Models covered
GPD (GamePad Digital) Pocket
See this page for the PD pocket 2 silver
- Screen size: 7" - 128GB MMC, 8GB RAM
Overall Status
Core Components |
||
Boot Standard Kernel: |
|
|
LAN network card: |
[-] |
|
Detect CD/DVD: |
[-] |
|
Detect hard drives: |
|
|
Extra Features |
||
CPU Frequency Scaling |
|
|
Hibernation |
|
|
Sleep / Suspend |
|
|
Xorg |
|
|
- OpenGL |
|
|
- Resize-and-Rotate(randr) |
|
|
Switch to External Screen |
|
|
Mouse |
|
|
- Built-in (Trackpoint) |
|
|
- Built-in (Touchpad) |
[-] |
|
Modem |
[-] |
|
Wireless/Wifi |
|
|
Keyboard's Hotkeys |
[?] |
Legend :
= OK ; Unsupported(No Driver) ; = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
= Configuration Required; = Only works with a non-free driver and or firmware
Configuration
Display
Works via KMS in default kernel and X configuration, but the (landscape-format) display chipset is taken from a portrait-mode tablet so may need rotation under some configurations. The kernel seemed to figure it out automatically for me, however grub and Debian-Installer end up sideways (don't hurt your neck!). X is sideways too but can be configured to rotate via normal means, for example with something like xrandr --output DSI-1 --rotate right in an initialization script.
Backlight control is available by injecting values into /sys/class/backlight/intel_backlight/brightness but is not currently detected by the xrandr or the xbacklight utility when KMS is used (problem specific to Intel Bay Trail/Cherry Trail chipset support as of the time of writing, 2018-06-01). Booting with the nomodeset kernel parameter can supposedly work around this, but changing acpi_backlight boot parameter seems to have no effect currently. The backlight is extremely bright for my tastes, so I tend to set it to 25 rather than the default 100.
Additionally, the systemd-backlight service stores the last known value of the screen brightness. Xfce gives you an option to dim the screen to save power, and this was set aggressively on my system and it ended up running out of battery with the screen dimmed to 10%. If you boot up and your screen is unusable due to dimness, pass the systemd.restore_state=0 parameter at boot to temporarily prevent it from restoring the dim screen.
Audio
Due to https://bugs.freedesktop.org/show_bug.cgi?id=100488 (slated to be fixed in PulseAudio 12), the HDMI audio driver must be blacklisted so that the internal speakers and headphone jack will work. This can be done by putting blacklist snd_hdmi_lpe_audio into a new file named something like /etc/modprobe.d/snd-hdmi-lpe-audio-blacklist.conf and rebooting.
Mouse
Touchpoint works, though the device lacks a "middle" button. If you like having "chord-middle" behavior, this can be enabled via xinput set-prop "pointer:SINO WEALTH Gaming Keyboard" "libinput Middle Emulation Enabled" 1 in your X initialization.
Touchscreen works but needs rotation to match the landscape screen. This can be set in your X initialization with xinput set-prop "pointer:Goodix Capacitive TouchScreen" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1. After waking from hibernation, the touchscreen can act erratically, but this behavior can be corrected by unloading and reloading the goodix kernel module. (Suspend/resume does not seem to exhibit this problem, only hibernation.)
Power Management
Was working well with Linux 4.16.0, but regressions in 4.17 (now in Buster and Stretch Backports) seem to have limited the USB type-C interface to 5V 0.5A (the amperage can be raised to 2A by writing to /sys/class/power_supply/bq24190-charger/input_current_limit but not sure how to solve the voltage issue). Can boot earlier kernels (for example, during installation) but for maximum thermal control and battery life as well as charging speed, 4.16.0 or later is highly recommended. Waking from hibernation appears to cause the USB-C port to cease performing power distribution negotiation and relegates charging to 5V (this can probably be worked around by unloading and reloading the fusb302 kernel module but I haven't tried yet, also this doesn't seem to be a problem with suspend/resume, only hibernation).
Speaking of power, the USB-A port doesn't supply as much current as some devices would like to see. This can be worked around with a powered USB hub or by using the USB-C port instead. I spent more time than I'd like to admit trying different USB sticks during installation because the UEFI menu didn't seem to see any of the ones I tried initially, and I strongly suspect it was related to them having higher current expectations than the port could deliver.
TIP: If you have another operating system installed, you may quickly try a few USB sticks to see if one of them is recognized and use that.
WiFi
Supported except that https://bugzilla.kernel.org/show_bug.cgi?id=185661 currently means you need to obtain a working configuration file (e.g. the file attached to this wiki page or from the ChromiumOS repository linked in that bug report) and make it available to the kernel somewhere it will find it, for example /lib/firmware/brcm/brcmfmac4356-pcie.txt. Lack of this file will manifest during installation as the WiFi device getting detected and SSIDs are listed, but you'll be unable to actually connect to any of them.
If you're installing with a netinst image and need working WiFi during installation, you'll likely want a powered USB hub so you can provide the file when prompted without unplugging the boot media from the (only) USB-A port. It's possible that with a new enough installer image (booting linux 4.16.0 or newer) the USB-C port could be used for this instead. Worst case, you can use something like fdisk to add a third partition to the install media (after the EFI and ISO partitions), format it and use the "Execute a shell" option during an advanced installation to mount the extra partition and copy the file to the correct path on the ramdisk, then unload the brcmfmac kernel module and go back through the network hardware detection step.
Installation
Here are my crude notes on how I installed from a single device (USB-A to Micro-SDHC adapter with a Micro-SDHC card inserted):
prepare install media on another system by running the following (assumes your install media device is detected as /dev/sda): wget https://cdimage.debian.org/cdimage/unofficial/non-free/images-including-firmware/weekly-builds/amd64/iso-cd/firmware-testing-amd64-netinst.iso Navigate to https://chromium.googlesource.com/chromiumos/third_party/linux-firmware/+/f151f016b4fe656399f199e28cabf8d658bcb52b/brcm/brcmfmac4356-pcie.txt and download the file as txt. sudo wipefs -a /dev/sda sudo cp firmware-testing-amd64-netinst.iso /dev/sda sudo fdisk /dev/sda n [defaults] w sudo mkfs.ext4 /dev/sda3 sudo mount /dev/sda3 /mnt sudo cp brcmfmac4356-pcie.txt /mnt/ sudo umount /mnt insert prepared install media into gpd pocket power on and hold down del key until bios setup indicator appears select "Save & Exit" then something like "UEFI: Generic-SD/MMC 1.00, Partition 1" under "Boot Override" (what it's named will depend on the device you inserted) select "Advanced options ..." then "... Graphical expert install" (you can also used the text-based advanced installer) proceed into "Detect network hardware" and don't load additional firmware from removable media before "Configure the network" skip down to "Execute a shell" and enter the following: rmmod brcmfmac modprobe ext4 mount -oro /dev/sda3 /mnt cp /mnt/brcmfmac4356-pcie.txt /lib/firmware/brcm/ umount /mnt exit return to "Detect network hardware" and proceed normally
Alternatively, one can build an installer image with the file brcmfmac4356-pcie.txt already included:
1 #!/bin/sh
2
3 ORIG=firmware-testing-amd64-netinst
4 TARGET=$(echo "$ORIG" | sed 's/^firmware-/gpdpocket-/')
5
6 wget https://cdimage.debian.org/cdimage/unofficial/non-free/images-including-firmware/weekly-builds/amd64/iso-cd/"$ORIG".iso
7 mkdir "$ORIG" "$TARGET"
8 sudo mount -t iso9660 -o loop "$ORIG".iso "$ORIG"
9 ( cd "$ORIG"; sudo tar cf - . | ( cd ../"$TARGET"; sudo tar xfp - ) )
10 sudo umount "$ORIG"
11
12 wget 'https://wiki.debian.org/InstallingDebianOn/GPD/Pocket?action=AttachFile&do=get&target=brcmfmac4356-pcie.txt' -O brcmfmac4356-pcie.txt
13 mkdir firmware-brcm80211
14 sudo dpkg-deb -R "$TARGET"/pool/non-free/f/firmware-nonfree/firmware-brcm80211_20190114-1_all.deb firmware-brcm80211
15 sudo cp -i brcmfmac4356-pcie.txt firmware-brcm80211/lib/firmware/brcm/
16 sudo dpkg-deb -b firmware-brcm80211 firmware-brcm80211_20190114-1_all.deb
17 sudo mv firmware-brcm80211_20190114-1_all.deb "$TARGET"/pool/non-free/f/firmware-nonfree/
18
19 # see https://wiki.debian.org/RepackBootableISO
20 dd if="$ORIG".iso bs=1 count=432 of=isohdpfx.bin
21 ( cd "$TARGET";
22 sudo xorriso -as mkisofs -r -V 'GPD_Pocket' -o ../"$TARGET".iso \
23 -J -J -joliet-long -cache-inodes -isohybrid-mbr ../isohdpfx.bin \
24 -b isolinux/isolinux.bin -c isolinux/boot.cat \
25 -boot-load-size 4 -boot-info-table -no-emul-boot \
26 -eltorito-alt-boot -e boot/grub/efi.img \
27 -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus \
28 . )
System Summary
lsusb
lsusb -v | grep -E '\<(Bus|iProduct|bDeviceClass|bDeviceProtocol)' 2>/dev/null
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub bDeviceClass 9 Hub bDeviceProtocol 3 iProduct 2 xHCI Host Controller Bus 001 Device 003: ID 0000:0000 bDeviceClass 255 Vendor Specific Class bDeviceProtocol 1 iProduct 2 BCM2045A0 (Bus Powered) (Bus Powered) Bus 001 Device 002: ID 258a:0111 bDeviceClass 0 (Defined at Interface level) bDeviceProtocol 0 iProduct 2 Gaming Keyboard (Bus Powered) (Bus Powered) Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub bDeviceClass 9 Hub bDeviceProtocol 1 Single TT iProduct 2 xHCI Host Controller
USB Host controllers entries (without OHCI, UHCI, EHCI) are removed too.
Resources
Attachments
Some configuration files and sample outputs.
Configuration files:
brcmfmac4356-pcie.txt (needed during installation)
/etc/X11/xorg.conf.d/calibration.conf (for rotation of the touch input)
/etc/X11/xorg.conf.d/monitor.conf (for rotation of the output)
/etc/X11/xorg.conf.d/trackpoint.conf (for the trackpoint pointer device)
Useful Links
Installation report: https://bugs.debian.org/900609
Patched kernel for Ubuntu: https://github.com/petrmatula190/gpd-pocket-kernel
Interesting discussion about mainline kernel and patched kernel: https://github.com/stockmind/gpd-pocket-ubuntu-respin/issues/118
Bugs
Gnome: mutter on wayland fails, fixed in mutter/experimental: https://bugs.debian.org/905363
Linux: 4.16~rc6 or later needed for fan support: https://bugs.debian.org/893451
Linux: 4.16 or later needed for power management: https://bugs.debian.org/895164
Plymouth: newer upstream needed, or just apply three upstream changesets as patch: https://bugs.debian.org/905429