15 Jul 2018
I recently decided to move from OSX to Linux and settled on a System76 new Oryx Pro (Jun 2018). They officially support Ubuntu and their own Pop! OS which work really well. I decided to use Archlinux though as it is my distribution of choice.
This post contains the details of how I managed to set it up and get all the functionality you get in Pop! OS.
Turn off discrete graphics card
This machine has a Nvidia discrete graphics card, either a 1060/1070 GTX
depending on your configuration. Because of the way this card interacts with the
kernel ACPI code there are times when it can hang up the system if you run
or some sort of hardware scanning tool like
Let’s turn it off during install to avoid running into any problems :
Don’t worry. We’ll get it working later on.
Do a regular UEFI install. You have you make sure that your EFI
/boot/efi instead of
/boot since this is required for
System76’s firmware update utilities to work.
My setup looks like this:
System76’s utilities require you to pass
ec_sys.write_support=1 as an argument
for the kernel. You need to configure your bootloader for that. In my case I use
grub so here is my
/etc/defaults/grub changes to pass this on and a few other
(like the resume swap partition for hibernation).
System76 utilities (post-setup)
System76 offers some utilities for Ubuntu and Pop! OS to enable better support for their hardware and firmware upgrades. The AUR has all of these packages too. Disclaimer: I maintain a couple of them.
This is system76 kernel module that gives support to the keyboard backlight, nvidia sound (hdmi) and a few other things. If you have a System76 machine you definitely want this:
This package contains a daemon that is used by
system76-driver to schedule
This package contains the interface to the firmware daemon and a few other utilities. You don’t really need most of them in Archlinux. They are mostly support for older hardware.
This is how the firmware UI tool looks like:
This is the utility you want to set up some pre-configured power management profiles for your machine and to control the Nvidia discrete graphics card.
Managing the discrete graphics card
System76 Pop! OS setup is designed to make you switch between Intel and Nvidia, reboot and then use that card solely during that session. I don’t find that particularly good since this is a laptop and I want to maximize battery life as much as I can. I want to run Intel’s card and use the discrete card only on demand.
In order to accomplish this, I use bumblebee and primus. I don’t use bbswitch which is used to control the discrete graphics card power since it is unstable in this machine (at this point in time) and we can use system76-power to turn the card on and off more reliably.
Turn card on
If you want to use the discrete card:
Turn card off
Run the following:
You will probably get the following error message:
You have to unload the graphics drivers first:
You can check that it worked with:
In order to make this easier I use the following aliases:
- There seems to be a fingerprint reader in this machine but the default kernel doesn’t seem to pick it up and I haven’t made much of an effort to try to make it work. I didn’t test it on Pop! OS. If you know which driver it needs please let me know.
- Multiple monitors, I don’t have an external monitor so I haven’t tested this. Depending on which graphics card the HDMI/Display ports are wired the setup would be different. I’ll update the post once I try this.
The webcam, sd card reader, sound, wifi, ethernet work out of the box.
I really hope this guide works for you as it took me a while to figure all this out (and even had to bring a bring a couple of System76’s utilities to our own AUR).