System76 Oryx Pro
This article is specifically about the System76 Oryx Pro versions 6-8, all of which share the same chassis and a very similar architecture. The latest available model is oryp8.
The System76 Oryx Pro comes with two NVMe M.2 slots. Older models (pre-oryp6) have space for a 2.5" SSD/HDD. Booting from NVMe requires the use of EFI, while booting over SATA/AHCI does not. If you are not sure what to use, EFI is a sensible and safe default for all configurations of this machine.
The BIOS menu is extremely minimalist, with essentially no settings outside of boot order. All entries can be accessed from the keyboard, and should be easy to OCR.
There is no official documentation around which buttons to press to enter the BIOS. The splash screen says that
Esc opens the overall BIOS menu, and
Space starts the Pop!_OS recovery partition.
Within the BIOS menu, you can use the arrow keys (
Down) to move the cursor, the Enter/Return key to activate or save things,
PageDown to relocate things, and
Esc to cancel an operation or to go back to a previous menu. All lists are vertical, and progress from top-to-bottom.
- The first option in the BIOS menu is "Boot Default", and it is where your cursor starts out. Activate this to continue the boot as if you had not pressed
- The second option is "One Time Boot". This provides a menu of all boots known to the BIOS, in the order the BIOS knows to boot them. The cursor starts at the top of this menu. Activate one to boot to it.
- The third option is "Change Boot Order". This one is a bit odd, as you have to press Enter/Return twice to use it, after which you will be in an ordered list of possible boots, which can be mutated using the controls describe above. Note that
Escmust be pressed twice to return to the main menu. There is an open ticket to simplify this flow here.
- The fourth (and final) option is "Firmware Configuration Information". This page simply lists information about the firmware.
There is no diagnostic LED on the motherboard. The official technical documentation does not discuss whether the motherboard beeps when there is an issue, nor does it say what such beeps could mean.
There are three status LEDs on the front-left of the bottom half of the laptop. The left LED is for power, the center LED is for the battery, and the right LED is for IO. More information can be found in the official technical documentation.
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.
(The rest of this article will assume you have followed the steps given in this section.)
If you are replacing Pop!_OS on the NVMe that came with your laptop, it is recommended to leave the recovery partition intact. The BIOS is hard-coded to attempt to boot this on
Space, and this recovery partition can be a handy way to get out of a tight spot if something should happen that renders your Arch install unbootable.
System76 automatically updates this recovery partition from within Pop!_OS; at present, it is not known how to update it from within Arch Linux.
It may be possible to replace the contents of this recovery partition with any LiveCD you want, but as of now it is not known if anyone has tried.
While the oryp7 is known to at least boot with Linux 5.13, there will be missing functionality until 5.15 and higher, because System76 pushed several patches to upstream that were not merged until then. Accordingly, it is not recommended to use a kernel older than 5.15.
All necessary packages can be found in the AUR. It is recommended to install everything in the list below.
(There are also "-git" versions of many of these packages, if you wish to be bleeding edge.)
- AUR (needed for System76 switchable graphics and charging thresholds)
- AUR (seems to be needed for things like audio to work right)
- For whatever reason, these packages are prone to breaking. It would be nice if someone would be willing to provide a System76 repository with prebuilt binaries.
- Several of these are bundled in the Pop!_OS kernel. Building that kernel for Arch would get all the functionality of those packages in a single step. As well: there is some functionality in the Pop!_OS kernel that you can't get elsewhere; meaning that, without it, our Arch installs are deficient.
Once you have installed the above, you will need to tell your computer to use them.
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
system76-driver_i2c-nvidia-gpu.conffile. As such, this step may be skippable, for the time-being. Nevertheless, there is a known solution for the malformation: simply append
options i915in s76-i915-mkinitcpio.conf. (source)
Install the following:
- AUR (required if you want to know when there is a BIOS update available)
- AUR (required if you want to update your BIOS)
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
To update your system to the latest firmware on the next boot, run
- System76: If you want to use the hybrid graphics mode developed by System76, follow the instructions in #Installation and #OEM switchable graphics. This seems to use PRIME behind the scenes.
- Bumblebee: Some users have reported getting success with Bumblebee. Your mileage may vary if you are using a more complete DE like GNOME; this has only been tested with .
- NVIDIA: When in doubt, NVIDIA's official drivers should always work.
OEM switchable graphics
To enable System76's switchable graphics, run
system76-power graphics hybrid once; and then put
prime-run before every application you want to start with your dGPU. Note that this will only work for applications that use GLVND. (source)
- Officially, you need to cold-reboot your device every time you change your switchable graphics setting.
- The devs have confirmed that while you can technically switch between
computewithout restarting your whole computer, you must still restart X in order for the change to take effect.
- Switching from
integratedwill display as
computeuntil you restart. While confusing at first blush, this is intended behavior, and technically correct. (This note is here because at least one person was confused by this.)
To verify whether switchable graphics is working, run
prime-run glxinfo. These commands should succeed and have different vendors. If the latter command fails, go to #prime-run not working. (Note that you can limit the output to just the relevant information by appending
| grep -i vendor to the aforementioned commands.)
The Oryx Pro 6 has audio that works perfectly fine out-of-the-box.
- oryp7 / oryp8
Audio should work out-of-the-box with a USB headset; however, you may find that the onboard speakers are wholly unresponsive. Pop!_OS always has its kernel patched to work with Realtek PCI's quirks, thus avoiding this kind of issue; but Arch, which uses upstream Linux kernels, often has to wait quite some time to see these patches trickle down.
The following parameters can be added to
/etc/modprobe.d/clevo-p950.conf to get your speakers working if your kernel does not yet support them:
options snd-hda-intel model=clevo-p950. While the oryps 7 & 8 are not Clevo P950s exactly, this workaround provides the same
ALC1220_FIXUP_CLEVO_PB51ED_PINS quirk that the oryps need. (source) While this workaround does enable headphone and speaker audio, it may interfere with headset mics -- your mileage may vary. (source)
The oryp7 has a Realtek ethernet chip whose in-tree Linux driver is (as of Linux v5.15) guaranteed to fail link autonegotiation. You can work around this issue by manually setting your onboard ethernet's link negotiation to 'ignore' or '100mbps' (How you do so depends on your computer's network manager.); however, both options mean that your Internet speed will be capped at 100mbps. In order to get your ethernet port to work at speeds above that, you will need to install Realtek's out-of-tree driver, with
echo "blacklist r8169" > /etc/modprobe.d/r8169_blacklist.conf.
- Only keys with known functions are shown.
||No||Yes||Toggles power to the display|
||No||Yes||Changes keyboard color|
||No||Yes||Toggles power to keyboard backlight|
||No||Yes||Dims keyboard backlight|
||No||Yes||Brightens keyboard backlight|
||No||No||Toggles max state of fans|
||No||Yes||Toggles power to the webcam|
||No||Yes||Suspends the computer|
Fnin this combo is ignored on older versions of the EC.
Fnin this combo is ignored unless you have compiled and flashed an unreleased version of the EC.
SysRqhave the same scancodes on PS/2-style keyboards, so they require additional modifiers for the OS to understand them. (source)
- This key depends on your layout, and may be different if you are not using QWERTY.
You can control the brightness and color of your keyboard's LEDs. To do so, install
sys76-kb set -b $B -c $C, with
$B being how bright you want the keyboard (on a scale of 0-255) and
$C being a 6-digit color hex (eg, "
ffffff"). Since the keyboard's LEDs are controlled from the commandline, it is possible to script patterns and light shows.
Note that these settings are not maintained across boots; so you will need to reapply them on startup.
Weird hardware issues
Shut down − do not simply restart when encountering weird issues (e.g. where
system76-power throws a strange error, and rebooting does not help). As explained by a System76 developer at Southeast Linuxfest 2022, shutting down hard-resets certain components that stay on during reboots.
Bad thermals / excessive throttling
The oryp7, as with all System76 computers, comes with a fan curve designed to minimize noise. By default, your fans will only reach 100% at 90°C; but by the time you have reached that temperature, the CPU is already throttling hard. By setting a custom fan curve that reaches 100% at 70°C, you can easily avoid such unnecessary throttling. However, in order to customize the fan curve, you have to compile and flash the EC to your BIOS (There is an open issue to add runtime-configurable fan curves here.). Make sure to not set your lowest fan speed below around 25% on the oryp7, as doing so can cause rattling (see #163). Some people will be able to use values as low as 20%; others may need to go up to 30% or higher. There is an open pull request with settings optimized for the oryp7 here. Note that even with this better curve, your computer will still run hot. You will need to repaste the oryp6/7 if you intend to use the CPU for long periods of time.
Some have complained that the Oryx Pro's heatsink is insufficient for the CPU. At least one person claims to have resolved this issue by adding thermal pads between the CPU/GPU heatsink and the laptop's chassis.
fancontrol not working
AUR does not currently support runtime configuration of fan speeds, so
fancontrol will not work. There is an open feature request for this, though.
In the meantime, a custom fan curve can be configured by those willing to compile their BIOS manually. Quoth one of the devs: "The fan speed is controlled by the fan curve in the firmware: system76/ec@16778e4/src/board/system76/oryp8/board.mk. You can change the fan curve by changing the values in that file before you build firmware-open." You do not actually have to build
firmware-open, though -- you can simply build and flash the ec itself. The command to flash is
make BOARD=system76/oryp7 flash_internal.
prime-run not working
/etc/X11/xorg.conf.d/90-intel-nvidia.conf and adding the following to it:
Section "ServerLayout" Identifier "layout" Screen 0 "iGPU" EndSection Section "Device" Identifier "iGPU" Driver "modesetting" BusID "PCI:0:2:0" EndSection Section "Screen" Identifier "iGPU" Device "iGPU" EndSection Section "Device" Identifier "dGPU" Driver "nvidia" BusID "PCI:1:0:0" EndSection
BusID fields above to match the first field in the output of this command:
lspci | egrep "VGA | 3D" (you can omit leading zeroes). You will need to restart your X server for this to take effect.
Xorg fails to start with "No devices detected"
If you find (normally after an update & restart) that launching X (via
startx or otherwise) does not work, you may confirm that the
nvidia device is installed and working by doing the following:
Confirm the error in
nvidia kernel module should successfully load. You may also confirm the error with
Check whether both integrated and discrete graphics cards are available:
# lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Mobile) 01:00.0 VGA compatible controller: NVIDIA Corporation TU106M [GeForce RTX 2070 Mobile] (rev a1)
If you do not see the second entry (or some similar NVIDIA card), make sure the card has been turned on by
--help to explore options):
# system76-power graphics
Check whether the discrete NVIDIA graphics card is powered on usingAUR:
# system76-power graphics power
To power the discrete NVIDIA graphics card on, supply "on" as an argument (i.e.
system76-power graphics power on). After doing so and querying again, you should see:
# system76-power graphics power on (discrete)
Once the card is powered on, it should show up in the output of
lspci, and be detectable by Xorg, given that the appropriate NVIDIA driver is installed.
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
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.
X does not start
If you have anything plugged-into the HDMI port on the back, this is why. Unplug your HDMI cord, boot the computer, and plug it back in after X starts. This issue only happens when the Nvidia card is used for display, either in
hybrid mode; so if you do not want Nvidia to do your graphics anyway, switching to
integrated will fix this problem. If you actually do want to use your Nvidia card, though, there is currently no known fix; but watching Linus swear at Nvidia may prove therapeutic. Worth noting, though: Pop!_OS handles this just fine, so there may be something missing in Arch that is not missing in Pop!_OS.