Featured image of post My NVIDIA Optimimus on Arch Linux 我的 NVIDIA 双显卡解决方案

My NVIDIA Optimimus on Arch Linux 我的 NVIDIA 双显卡解决方案

So NVIDIA, fxxk you!

前言

建议优先参考官方 wiki
ArchWiki·NVIDIA
ArchWiki·NVIDIA Optimus

在经历一系列的折腾(optimus-manager 配置失败 –> prime-run –> 又回头折腾 optimus-manager)之后,我偶然发现 Envycontrol 这一可行而简单的解决方案

安装N卡驱动

参考:archlinux简明指南·archlinux 显卡驱动

我选择的是开源驱动(我的内核:Linux-zen):

1
sudo pacman -S nvidia-open-dkms nvidia-settings lib32-nvidia-utils # 必须安装

prime-run

archlinux简明指南介绍的 optimus-manager 方案折腾不出来,各种报错,只能退而求其次

1
sudo pacman -S nvidia-prime

然后可在默认集显的环境下为程序临时启用 N 卡,如:

1
2
prime-run vlc
prime-run hmcl

但这只能作为应急方案,想全局使用 N 卡就得启动独显直连,很不方便。于是我们的主角登场了:

Envycontrol

EnvyControl is a CLI tool that provides an easy way to switch between GPU modes on Nvidia Optimus systems (i.e laptops with hybrid Intel + Nvidia or AMD + Nvidia graphics configurations) under Linux.

最近在玩 EndeavourOS(一个Arch系发行版),无意间发现其官网有介绍 N 卡切换的方案:

https://discovery.endeavouros.com/category/nvidia/

题外话:EndeavourOS 确实挺惊艳的,安装便捷不说,还有保姆级的懒人引导,默认主题也是相当酷炫。比较适合想了解 Arch 却望而却步的新手

一不做二不休,马上来试试

1
yay -S envycontrol

github 仓库:https://github.com/bayasdev/envycontrol

使用方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
usage: envycontrol [-h] [-v] [-q] [-s MODE] [--dm DISPLAY_MANAGER] [--force-comp] [--coolbits [VALUE]]
                   [--rtd3 [VALUE]] [--reset-sddm] [--reset] [--verbose]

options:
  -h, --help            show this help message and exit
  -v, --version         Output the current version
  -q, --query           Query the current graphics mode
  -s MODE, --switch MODE
                        Switch the graphics mode. Available choices: integrated, hybrid, nvidia
  --dm DISPLAY_MANAGER  Manually specify your Display Manager for Nvidia mode. Available choices: gdm, gdm3, sddm,
                        lightdm
  --force-comp          Enable ForceCompositionPipeline on Nvidia mode
  --coolbits [VALUE]    Enable Coolbits on Nvidia mode. Default if specified: 28
  --rtd3 [VALUE]        Setup PCI-Express Runtime D3 (RTD3) Power Management on Hybrid mode. Available choices: 0,
                        1, 2, 3. Default if specified: 2
  --reset-sddm          Restore default Xsetup file
  --reset               Revert changes made by EnvyControl
  --verbose             Enable verbose mode

强烈建议看看官方的 README.md,里面的说明很详细

示例

1
2
3
sudo envycontrol -s nvidia  # 切换到 N 卡
sudo envycontrol -s integrated  # 切换到集显
sudo envycontrol -s hybrid  # 切换到混合模式

踩雷💣

如果系统启动时提示:

1
a start job is running for load/save screen backlight brightness;"nvidia_0"

挂起 90s 后提示 Failed 才能进入桌面,并且关机时也有类似的毛病。那么只需修改一下 grub 启动参数:

sudo vim /etc/default/grub

1
2
# Add it
GRUB_CMDLINE_LINUX_DEFAULT="acpi_backlight=video"
1
sudo grub-mkconfig -o /boot/grub/grub.cfg 

重启即可

事后分析发现是 N 卡的锅,无论是sudo envycontrol -s nvidia还是 BIOS 里开启独显直连都会出现这个问题。这里添加的启动参数相当于绕过检查直接进入系统,参考ArchWiki·背光

附录

参考文献

[1]ArchWiki·NVIDIA
[2]ArchWiki·NVIDIA Optimus
[3]archlinux 简明指南·archlinux 显卡驱动
[4]ArchWiki·背光
[5]archlinux简明指南·archlinux 显卡驱动

版权信息

本文原载于https://blog.allenwu233.com/,复制请保留原文出处

Built with Hugo
主题 StackJimmy 设计