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

- 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




Sleep / Suspend




- OpenGL


- Resize-and-Rotate(randr)


Switch to External Screen



- Built-in (Trackpoint)


- Built-in (Touchpad)






Keyboard's Hotkeys


Legend :
{OK} = OK ; {X} Unsupported(No Driver) ; /!\ = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
{i} = Configuration Required; X-( = Only works with a non-free driver and or firmware



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.


Due to (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.


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.


Supported except that 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.


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):
    Navigate to and download the file as txt.
    sudo wipefs -a /dev/sda
    sudo cp firmware-testing-amd64-netinst.iso /dev/sda
    sudo fdisk /dev/sda
    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
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
   3 ORIG=firmware-testing-amd64-netinst
   4 TARGET=$(echo "$ORIG" | sed 's/^firmware-/gpdpocket-/')
   6 wget"$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"
  12 wget '' -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/
  19 # see
  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/ \
  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 -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.



Some configuration files and sample outputs.

Configuration files:

  • [get | view] (2018-07-30 14:32:29, 2.7 KB) [[attachment:brcmfmac4356-pcie.txt]]
  • [get | view] (2018-07-30 03:18:08, 0.2 KB) [[attachment:calibration.conf]]
  • [get | view] (2018-07-30 03:18:21, 0.1 KB) [[attachment:monitor.conf]]
  • [get | view] (2018-07-30 03:18:32, 0.2 KB) [[attachment:trackpoint.conf]]
 All files | Selected Files: delete move to page copy to page