GPD MicroPC (v2)

Small and light laptop, tested with FreeBSD 13.1

The portable form factor and the variety of jacks and ports, including RS-232, make it useful for field work. When used with an external monitor and a keyboard it's a nice general purpose computer that can handle demanding tasks.

This device can be made to work very well with FreeBSD with the GENERIC kernel. See the notes below for details.


1. Hardware


2. Support overview

Component

Status

Details

Graphics

Graphical sessions

(./)

Using drm-kmod port. The screen hardware was designed to be rotated 90 degrees to the left, and FreeBSD can't currently fix this from the console. But all is fine if you rotate it in X. See 20-monitor.conf

Backlight (brightness) control

(./)

Using acpi_video

Input devices

Keyboard backlight

(./)

No OS support needed

Touchpad

(./)

Works properly. Two finger scrolling for some reason doesn't work well, so see middle-button configuration in notes and 30-touchpad.conf.

Touch screen

-

Trackpoint

-

Media keys

Brightness keys

(./)

Using acpi_hidd port.

Volume keys

(./)

Network

Ethernet

(./)

Wi-Fi

(./)

Other

Battery

{i}

The battery works correctly but GPD omitted a charge limiter, so if it's left on the charger battery lifetime will be short, perhaps < one year.

Bluetooth

{X}

Support for the Intel 7265 is incomplete at this time.

CD/DVD drive

-

ExpressCard reader

-

Fan

(./)

There's a switch to turn off the fan and use passive cooling, but support for passive cooling on multiprocessors is broken in 13.1 so it will overheat and shut down if you do anything CPU intensive with the fan shut off.

Fingerprint reader

-

PC card reader

-

SD card reader

(./)

SIM card slot

-

Smart card reader

-

Suspend & resume

{i}

Suspend and resume works fine but X crashes quite often immediately after resume. It's happening on other systems so it's not specific to the GPD MicroPC. There are two workarounds: either switch to a vt console before suspending and switch back after resume, or disable acceleration in X (see 10-modesetting.conf)

Webcam

-

Ports

DisplayPort

-

FireWire

-

HDMI

(./)

Thunderbolt

-

USB

(./)

VGA

-

Sound

Headphone jack

(./)

Stereo output, set hw.snd.default_unit=0

Microphone jack

(./)

Set hw.snd.default_unit=0 for the jack, 1 for the case microphone. The case microphone will pick up the cooling fan noise very effectively if the fan is running.

Speakers

(./)

There's just one speaker! Set hw.snd.default_unit=1. There are grills under the case for two but only one gets put in. There is another output to the HDMI port for unit 3, so you can use this to watch movies.

Last update: 2022-06-22T03:16:10+0000

Legend

(./) OK

{i} Somewhat OK: requires additional tweaking or works worse than expected

/!\ Present but status unknown or untested

{X} Does not work

- Not present

3. Notes

3.1. BIOS/ACPI

3.1.1. BIOS passwords

Even if you set an administrative password, the BIOS will let you enter a null password and provide access (in user mode) to the BIOS settings. And user mode is quite permissive and you can set things like the SSD password within it. If you set the user password the settings are protected by the user password, but you have to enter it every time to boot the computer.

3.1.2. ACPI notifications fail

The ACPI functions that go through the EC controller will not work at all on a new installation. This is serious, because they include the power button, the lid switch, the brightness keys, and other notifications. The problem is that the particular EC controller on this machine only works in burst mode, and that's off by default in FreeBSD. So put this into /boot/loader.conf:

debug.acpi.ec.burst=1

3.1.3. ASL errors

There are a couple of bugs in the BIOS that will cause error messages during startup but which are harmless. I fixed them because ACPI notifications weren't working and they involved the EC controller, so they were the first place I looked. Refer to the patch in acpi.asl.diff.

The first bug involves an obscure syntax used to denote fixed I/O ranges, and since it's wrong the FreeBSD kernel complains. It's boilerplate from AMI, is present in a lot of AMI BIOSs, and is probably for ISA. The kernel complains and ignores the range, and there don't appear to be bug reports resulting from this. It's likely the only problem it causes is the kernel error message.

The second bug is a genuine error, but it does not prevent anything in the ACPI system from working. The EC controller registers are not supposed to be accessed until it's initialized. Once it's initialized, ECAV should be set to say it's active. Only then should the registers be used. For some reason GPD decided to just set ECAV true before initialization, so the initial check for battery status tries to access an uninitialized register and errors are generated. The patch will cause the ACPI system to skip the first check, but even without it the ACPI system will try again after the EC controller is ready.

There's also a harmless syntax error that Microsoft's asl compiler ignores but the Intel/FreeBSD compiler flags as an error.

If you want to fix these, download the patch. Decompile and save the asl file from your computer using

acpidump -dt > acpi.asl

Apply the patch, recompile it with iasl, put the compiled AML in /boot/acpi.aml, and add the following lines to /boot/loader.conf:

acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/acpi.aml"

When you reboot the errors should be gone. If you somehow manage to mess it up enough to make it hard to boot your machine, boot from a memory stick and remove the acpi.aml file from /boot, or use a bootenv you set up earlier.

3.2. Disable unused hardware

There's an mmc attached to sdhci_pci0, but nothing's attached to it and it will hang on resumes and sometimes on startup. So disable it by putting this into /etc/device.hints:

hint.sdhci_pci.0.disabled="1"

3.3. Brightness control keys

The screen brightness control keys will require the acpi_hidd driver, available eventually from the ports and right now from

3.4. Rotated screen

Until someone writes code to rotate the vt console, you might want to put these into your /boot/loader.conf to make the native console text a little easier to read before you start X:

exec="gop set 0"
screen.font="12x24"

3.5. Suspend / Resume

3.5.1. Time after resume

If you suspend and resume the computer you may find the time becomes incorrect, usually by a few minutes to a few hours. This is a bug in FreeBSD 13.1, and only occurs if you are running ntpd. If you want to suspend and resume the computer don't run ntpd. The onboard clock is good and I find running ntpdate when I start the computer to be adequate.

3.5.2. Suspending while using X

This is an important feature on a device used in the field, but when resuming from a suspend, the X server will frequently crash with 'Caught signal 6 (Abort trap)' in unw_step.

The problem has been widely reported and isn't specific to the GPD MicroPC.

While there's no solution at this time (13.1, 6/2022), there are workarounds.

The intel driver doesn't work well; uxa acceleration doesn't do any acceleration and sna acceleration is full of artifacts and causes a different type of resume failure.

So use the modesetting driver. It will work fine as long as you remember to manually switch to a vt console before suspending, and to switch back after resuming. The sysctl kern.vt.suspendswitch does not work, you have to do it manually. Of course, if you forget or you have the machine set to suspend automatically you'll lose unsaved work. The other workaround is to disable acceleration. You can easily do this by uncommenting the obvious line in 10-modesetting.conf. Although using the cpu will use more power and battery life will be shorter, in most cases the graphics speed will be fine for technical work. You can always restart X with acceleration when it matters.

3.6. Touchpad

Install 30-touchpad.conf to enable using the middle mouse button as a scroll wheel modifier for the touchpad.

3.7. Bluetooth

Bluetooth on the Intel 7265 isn't quite working yet. The correct firmware needs to be downloaded, and there's something wrong that causes delays.

3.8. Additional Resources

There's a very nice page, "Installing Debian on the GPD MicroPC", at

which has a number of generally helpful tips about setting up the machine. In particular see

which has a nice section at the bottom regarding the setup of X windows on the GPD MicroPC, and from which the attached X config files were obtained.

3.9. Summary

Almost everything works. The problems that remain affect many computers and they will probably eventually be fixed.


4. Files

  • [get | view] (2022-06-23T18:09:28+0000, 0.2 KB) [[attachment:10-modesetting.conf]]
  • [get | view] (2022-06-23T18:08:56+0000, 0.2 KB) [[attachment:20-monitor.conf]]
  • [get | view] (2022-06-23T18:08:12+0000, 0.2 KB) [[attachment:30-touchpad.conf]]
  • [get | view] (2022-06-22T08:27:15+0000, 1.4 KB) [[attachment:acpi.asl.diff]]
 All files | Selected Files: delete move to page copy to page


CategoryLaptop

Laptops/GPD_MicroPC (last edited 2022-06-23T21:41:11+0000 by CyrusRahman)