linux解决仅外接屏幕时卡顿问题

-
-
2025-04-16

什么情况?

我买了款XR眼镜,相当于一副内嵌了显示器的眼镜,带着它躺着看视频很爽。

但没有止步于此,我想躺着coding,于是我把眼镜的TypeC口插到了我的电脑上。

xrandr检查发现了新的设备连接,很好。我给设置成与主屏复制的模式

xrandr --output DP-1-1 --same-as eDP-1

Good,奏效了。但是我要是躺着用,笔记本自己的屏幕就没用了,我准备关掉它。

xrand --output eDP-1  --off

问题来了,主屏幕的确是黑了,但眼镜里只有鼠标可以动,键盘操作过一会才响应,卡的很。

什么情况??

排查

按CapsLock 大写灯还有反应,说明键盘连接良好,Kernel也没挂。

先试着切tyy,Ctrl+Alt+F4 幸运的是tty还在主屏幕工作。重启Xorg后恢复正常了

切回tty2,sddm自动恢复了,再次登陆进去关闭主屏幕,又复现了。

检查Xorg状态也正常。我试了plasma/X11、xfce、i3wm和plasma/Wayland,只有plasma/wayland工作正常。

说明还是Xorg到显示器这个环节有问题,于是我去/etc/X11/下检查xorg.conf 。

里面配置了Intel和nvidia两张显卡,现在默认是nvidia,怀疑是nvidia驱动问题,

我切换为Intel显卡modesetting驱动,重启Xrog 。

主屏幕好了,但找不到DP设备了。怪。

这说明DP接口和nvidia设备有关。检索了一下,大概和Optimus配置有关。


游戏笔记本通常都是双显卡,默认情况下使用核心显卡,因为核心显卡在功耗和发热较低,低负载时更合适,所以核心显卡是直接连接笔记本内屏的,而外部视频接口通常连接在独立显卡上,因为外接显示器通常比内屏更高端,需要更强的性能。

那么就产生了一个问题,同时使用内置显示器和独立显卡时怎么办?不能说没有外接显示器就不能用独显吧。

厂商也早就设计好了,在独立显卡和内置显示器之间加入了一个叫“复用交换机”(MUX switch)的东西,

这玩意把显示器和显卡解耦了,有内屏时输出到内屏,插入外屏时也可以输出外屏。

常见的双显卡架构是i+n即Intel核心显卡+Nvidia独立显卡,NVIDIA显卡通过技术称为"Optimus"来与Intel核心显卡进行切换。

这个技术在Windows上默认已经配置好了,所以大多数人都没有感知这个东西。

但在Arch上就需要手动配置了,当然一些发行版封装了一些显卡切换工具可以开箱即用(Manjaro好像就有显卡切换工具

解决

Optimus

ArchWiki——>NvidiaOptimus 有目前Optimus的几种实现,

Optimus-manager的开发者好像是Archuser,对arch的支持可能更好,另外还支持Prime分别渲染程序。

optimus-manager和他的前端optimus-manager-qt均在AUR中

paru -S optmus-manager optimus-manager-qt

先保证你的系统驱动是可用的,比如安装了nvidia或nvidia-beta。 

然后启用它

sudo systemctl enable optimus-manager

重启系统,不出意外的话,它应该正常工作

systemctl status optimus-manager
● optimus-manager.service - Optimus Manager Commands >
     Loaded: loaded (/usr/lib/systemd/system/optimus->
     Active: active (running) since Tue 2025-04-15 20>
 Invocation: 145c9ea5ccf445708690f923b77191a0
    Process: 730 ExecStartPre=/usr/bin/python3 -u -m >
    Process: 784 ExecStartPre=/usr/bin/python3 -u -m >
   Main PID: 946 (python3)
      Tasks: 1 (limit: 18834)
     Memory: 220K (peak: 124.1M, swap: 6.4M, swap pea>
        CPU: 2.519s
     CGroup: /system.slice/optimus-manager.service
             └─946 /usr/bin/python3 -u -m optimus_man>

然后你就可以通过前端或指令切换显卡了

optimus-manager --switch [nvidia\integrated\hybrid]

需要注销Session才可以生效。

我切换到混合模式Hybrid后,开启第二屏关闭主屏

Ok~,一切正常~

 

 

参考

https://bbs.archlinuxcn.org/viewtopic.php?id=10940

https://wiki.archlinuxcn.org/wiki/NVIDIA_Optimus#可用方法

 

“您的支持是我持续分享的动力”

微信收款码
微信
支付宝收款码
支付宝

目录