System76 Galago Pro galp3

From ArchWiki
Hardware PCI/USB ID Working?
GPU (Intel) Yes
GPU (NVIDIA) No
Audio Yes
Microphone Yes
Speakers Yes
Webcam Yes
Bluetooth Yes
Ethernet Yes
Wireless Yes
SD-card reader Yes
Fingerprint reader No

OEM software

System76 develops a special distribution (Pop!_OS) for their computers, and it comes with many tweaks and tools to ensure a seamless end-user experience. Arch does not have these out of the box; and unfortunately, sometimes their computers do not work right without them. Thankfully, it is possible to get the same first-class hardware support in Arch Linux that you have in Pop!_OS -- it just takes a little elbow grease.

Packages

All necessary packages can be found in the AUR. It is recommended to install everything in the list below.

Modules
Daemons
Other

(There are also "-git" versions of many of these packages, if you wish to stay bleeding edge.)

Settings

Once you have installed the above, you will need to tell your computer to use them.

Services

Enable system76.service, system76-firmware-daemon.service and system76-power.service: (source)

Drivers

To make sure all drivers are being loaded correctly, run system76-driver-cli; this will automatically add necessary rules to /etc/modprobe.d, and execute mkinitcpio.

Note: However, as of 2021-04-06, this creates a malformed s76-i915-mkinitcpio.conf file, and a redundant (if you have system76-power.conf) system76-driver_i2c-nvidia-gpu.conf file. As such, this step may be skippable, for the time-being.

BIOS updates

To check your current BIOS version and whether there is a new version available, run firmware-manager as root. Keep in-mind that this is a GTK application, so you need to be running X or Wayland for it to run. (It has no CLI -- it does not even respond to --help.)

To update your system to the latest firmware on the next boot, run system76-firmware-cli schedule.

Suspend/hibernate

Out of the box, Arch Linux does not resume a previously suspended or hibernated session. To support hibernation, ensure that you have swap space equal to or greater than your system memory (RAM), and add "resume" to your /etc/mkinitcpio.conf file, per the instructions here.

NOTE: hibernation has yet to be tested on this device; but suspension seems to work... sometimes.

Function keys

Only keys with known functions are shown.
galp3
Multimedia keys
Key Visible? Marked? Effect
Fn+` Yes Yes XF86AudioPlay
Fn+F3 Yes Yes XF86AudioMute
Fn+F5 Yes Yes XF86AudioLowerVolume
Fn+F6 Yes Yes XF86AudioRaiseVolume
Display keys
Key Visible? Marked? Effect
Fn+F2 No Yes Toggles power to the display
Fn+F8 Yes Yes XF86MonBrightnessDown
Fn+F9 Yes Yes XF86MonBrightnessUp
Number pad keys (NumLock off)
Key Visible? Marked? Effect
Fn+M Yes No KP_Insert
Fn+. Yes No KP_Delete
Fn+? Yes Yes KP_Add
Fn+J Yes No KP_End
Fn+K Yes No KP_Down
Fn+L Yes No KP_Next
Fn+; Yes Yes KP_Subtract
Fn+U Yes No KP_Left
Fn+I Yes No KP_Begin
Fn+O Yes No KP_Right
Fn+P Yes Yes KP_Divide
Fn+7 Yes No KP_Home
Fn+8 Yes No KP_Up
Fn+9 Yes No KP_Prior
Fn+0 Yes Yes KP_Multiply
Number pad keys (NumLock on)
Key Visible? Marked? Effect
M Yes Yes KP_0
. Yes Yes KP_Decimal
? Yes Yes KP_Add
J Yes Yes KP_1
K Yes Yes KP_2
L Yes Yes KP_3
; Yes Yes KP_Subtract
U Yes Yes KP_4
I Yes Yes KP_5
O Yes Yes KP_6
P Yes Yes KP_Divide
7 Yes Yes KP_7
8 Yes Yes KP_8
9 Yes Yes KP_9
0 Yes Yes KP_Multiply
Misc toggle keys
Key Visible? Marked? Effect
Fn+1 No No Toggles max state of fans
Fn+F4 No Yes Cycle keyboard backlight brightness
Fn+F1 Yes Yes XF86TouchpadToggle
Fn+F10 No Yes Toggles power to the webcam
Fn+F11 ? Yes XF86RFKill
Fn+F12 ? Yes Suspends the computer
Fn+Insert Yes Yes Num_Lock
Fn+Delete Yes Yes Scroll_Lock
Fn+Return Yes Yes KP_Enter
Broken keys
Key Visible? Marked? Effect
Fn+F7 No Yes Label: Toggle displays
Reality: Apparently behaves like Super_L and XK_l ?
Fn+PrintScreen Yes Yes Label: SysRq
Reality: PrintScreen (ignores Fn)
Fn+Pause No Yes Label: SysRq
Reality: Pause (ignores Fn)

Troubleshooting

system76-firmware: EFI mount point not found

If using the new (replacement) EFI mount point /efi, ensure you have the mount present in etc/fstab. You may find the appropriate device to mount by using a combination of lsblk and fdisk -l.

# fdisk -l # List disks (one device will be designated as "EFI System")
# lsblk    # List devices and mount points, you should see the EFI system device, and confirm whether it is mounted/unmounted
# mount device /efi
#
# genfstab -U / # (optional) print fstab configuration for inclusion/merging into /etc/fstab

After doing the above, it might be a good idea to schedule a firmware update:

# system76-firmware-cli schedule

With grub

After scheduling a firmware update, ensure that GRUB is set to use the EFI partition like so:

# grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=grub
# cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak
# grub-mkconfig -o /boot/grub/grub.cfg

Restart to trigger the firmware update.