如何使用Lenovo T420S通过DVI /视口设置第二个显示器?


13

我的联想T420S具有采用nvidia optimus技术的独立显卡。我基本上想实现的目标如下:

  • 使用第二台显示器- 通过DVI /视口连接 -在工作中(VGA模糊)
  • 在旅行(2小时)时达到中等至良好的电池性能

据我了解,我有以下选择:

  1. 禁用擎天柱,仅使用内部图形
  2. 禁用Optimus,仅使用nvidia
  3. 启用擎天柱,使用大黄蜂(主页)/铁皮

(1)当我阅读(并经历)DVI /视口在技术上无法通过内部图形使用时,就丧失了资格

(2)到目前为止还没有真正尝试过,只是在添加nvidia驱动程序后快速测试安装启动后进入黑屏:-(

(3)跟随该博客,使用大黄蜂代替铁皮。大黄蜂工作正常(在glxgears上我可以看到令人印象深刻的FPS),但是我没有获得第二次展示。我也感到迷失在nvidia-driver-hell中,没有机会运行nvidia-xconfig,仅仅是因为它没有安装。不知道是否应该开箱即用地识别第二个显示器吗?我需要安装更多吗?我需要弄乱我的xorg.conf吗?很多问题,很少答案。

那么,我该怎么做才能实现自己的目标?遵循的路径,下一步是什么?

欢迎任何提示:-)

更新:感谢所有回答。我将把工作环境迁移到“离散”安装中,并将“ optimus / bumblebee”用作并行播放项目,并查看我能得到多少...我将在新主题中发布未来的问题。

Answers:


5

我有一台Thinkpad W520,并且已经对此进行了广泛讨论。我不确定W520和T420S有多少共同点,但是我在这里写了一篇博客文章概述了总体情况并提出了一些建议。

使用具有专有驱动程序的nvidia卡,您应该能够获得2个小时的电池寿命。添加外部显示器时,这也可能是最省事的选项(程序“分散”对此非常有帮助)。如果T420s中该卡的nvidia专有驱动程序的功能与W520相同,则它们在未完全使用时会自动对该卡进行降频处理(它们称为“ Power Mizer”),因此电池寿命不会太长可怕。老实说,关闭nvidia卡只会使电池寿命增加25%或30%。另外,我相信安装Bumblebee后,您可能无法使用外部显示器,因为nvidia卡已经“在幕后”运行了X服务器。总而言之,我建议进一步采用选项(2)。

当我安装和卸载Bumblebee时,让nvidia专有驱动程序重新工作有点麻烦。这里有一些需要注意的事项:(a)W520具有与使用哪种图形方案有关的BIOS选项。我不确定T420选项是什么,但是如果您想在Thinkpad显示器上使用nvidia图形,则可能必须处于“离散”模式。(b)您可能必须弄乱ubuntu中的“骑师”程序,才能使用专有驱动程序。

祝好运!我希望这会有所帮助。


...绝对有帮助,感谢您的回答!
jan groth 2012年

阅读此线程的其他意见后,似乎在T420是以同样的方式为W520配置-集成卡连接到VGA输出(不像在W520 -这也解释了为什么T420能的支持3个外接显示器,而W520仅支持2个)。
Zach 2012年

那么问题是T420可以使用哪些BIOS模式?从@ John的帖子看来,至少存在一个Optimus模式和一个离散模式。如果要使用选项(2),则要确保您处于@John之类的离散模式。如果您处于Optimus模式,则内部Thinkpad显示屏和外部数字显示屏可能由不同的图形卡控制,并且您必须对xorg.conf进行一些修改才能使其正常工作。
Zach 2012年

@Zach:感谢您的博客文章。我从其后续版本Sagar Karandikar的改写中偷偷偷走了,并在我的回答中添加了一些与最新版本的Ubuntu相关的更新。
krlmlr 2013年

7

Ubuntu 14.10及更高版本:那里要简单得多。请在下面查看此答案和我的评论。

注意:这仅在Ubuntu 13.04中有效。13.10有一些差异。

我已设法将两个外部显示器(除了内置面板之外)连接到Ubuntu 13.04上的ThinkPad T430,并启用了Optimus(“可切换图形”)(列表中的选项3)。监视器通过DVI接口连接,其中一个已旋转。与其他解决方案相比,所有监视器都连接到同一窗口管理器,因此可以在监视器之间自由移动窗口。这样可以达到延长电池寿命(如果断开连接)和使用外部监视器(如果连接)的目的。

这里的关键思想是:

  • 内部图形适配器负责管理实际显示的图像(位图)
  • 默认情况下,所有内容都呈现在内部图形适配器上
  • GPU加速的应用程序使用独立的图形适配器,将输出复制到内部图形适配器
  • 对于每个外部监视器,内部图形适配器都提供“虚拟”显示
  • 输出到外部监视器使用第二台X服务器,“虚拟”显示中的内容不断复制到第二台X服务器

与其他解决方案相比,主要优点是所有显示(似乎)都属于同一X会话,因此您可以在显示之间自由移动窗口。

到目前为止,我还没有发现任何性能损失。

使用说明

您需要执行以下操作:

  • 从PPA安装Bumblebee
  • 构建并安装自定义英特尔视频驱动程序
  • 下载,编译并最终安装一个小程序
  • 编辑两个配置文件
  • 重启几次

对于大多数操作,您将需要一个终端,一个文本编辑器和root访问权限(sudo)。详细说明如下。

安装大黄蜂

请按照说明中的“基本设置”部分进行操作。以root用户身份执行,最后一个命令实际上启动重新引导:

add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot

不要只使用nouveau驱动程序运行Bumblebee吗?。根据我的经验,它至少在这种设置下不起作用。

验证方式

您应该能够运行optirun glxgears

安装的修补程序版本 xserver-xorg-video-intel

选项1:从我的PPA安装(当前仅Ubuntu 13.04)

以root用户身份执行以下命令:

add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel

选项2:构建并安装自己的软件包

选择最新的补丁xserver-xorg-video-intel。单击文件,单击“原始”按钮,在浏览器中复制URL。在撰写本文时,这是https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch

sudo apt-get build-dep xserver-xorg-video-intel
cd ~
apt-get source xserver-xorg-video-intel
cd xserver-xorg-video-intel
# replace the URL below with the one you have noted, if necessary
wget https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch
patch -p1 < *.patch
# The next command will ask for a change log message. Supply something meaningful,
# this will later allow you to distinguish your patched package from the distribution's.
dch -l+virtual
dpkg-buildpackage -b
cd ..
sudo dpkg --install xserver-xorg-video-intel_*.deb

验证(1),针对两个选项

命令

apt-cache policy xserver-xorg-video-intel

应该显示修补版本(+virtual后缀)和原始Ubuntu版本。

这两个选项都需要13.04

将以下内容添加到中/etc/X11/xorg.conf,如果需要,请创建:

Section "Device"
    Identifier "intel"
    Driver "intel"
    Option "AccelMethod" "uxa"
    Option "Virtuals" "2"
EndSection

验证(2),两个选项

重新启动后,xrandr在终端中运行。输出应列出两个附加的虚拟显示。

下载并构建屏幕克隆

获取puetzk的screenclone分支及其依赖项,然后进行编译。

sudo apt-get install libxcursor-dev libxdamage-dev libxinerama-dev libxtst-dev git build-essential
cd ~
git clone git://github.com/puetzk/hybrid-screenclone.git
cd hybrid-screenclone
make

验证方式

该文件screenclone存在并且可以执行。(不过,它不会运行。)

编辑 xorg.conf.nvidia

  • /etc/bumblebee/xorg.conf.nvidia在文本编辑器中以root身份打开文件
  • 注释掉或删除读取UseEDID或删除的行UseDisplayDevice
  • 在中Section "ServerLayout",添加一个条目Screen "Screen0"
  • 在文件底部,添加以下内容:

    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        DefaultDepth    24
        SubSection     "Display"
        Depth       24
        EndSubSection
    EndSection
    
  • 重启

测试中

我的设置假定一个横向监视器连接到扩展坞的第一个DVI端口,一个纵向监视器连接到第二个DVI端口。从screenclone所在的目录在终端中运行以下命令,并根据需要进行调整。

xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
./screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg

请注意如何两次定义显示旋转。xrandr如果不需要旋转,则可以省略第二次调用(当然,--rotate left在第一次调用中也可以)。

通过终止screencloneCtrl + C(已使用再次将其放到前台fg)来关闭离散图形适配器。您可以使用进行验证cat /proc/acpi/bbswitch。仍然为两个现在断开连接的显示器保留屏幕空间。要仅切换回笔记本电脑显示,请使用

xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off

清理

  • 复制screenclonePATH(例如/usr/local/bin)中的目录

  • 创建bash脚本以自动启动和关闭外部显示器。该脚本将在启动时设置外部显示,并仅在退出时(例如,按Ctrl + C)切换到笔记本电脑显示。

    #!/bin/bash
    set -m
    xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
    trap "xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off" EXIT
    screenclone -b -x 1:0 -x 2:1 &
    sleep 1
    xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
    fg
    
  • 替代选项:我的脚本集包含两个脚本extmon-startextmon-stop,用于启用和禁用第二个和第三个监视器。编辑extmon-start脚本以适合您的配置。

参考文献

我的回答主要来自以下资源:


这对我来说真的很好,谢谢。在此解决方案中使用虚拟桌面和Compiz时,是否存在很多滞后问题?
damon

@blackrobot:我正在使用Gnome Shell,有一些非常轻微的延迟,但这不会打扰我。
krlmlr

@krlmlr:是否有机会在13.10上获得相同的设置?
flx 2013年

@flx:在13.10中,“虚拟” CRTC内置在库存xorg-xserver-video-intel驱动程序中,无需使用我的PPA或补丁。同样,无需编辑xorg.conf,可以根据需要创建“虚拟” CRTC。其余应该相似。现在,甚至有一个工具可以替换screenclone,它被称为intel-virtual-output并将与桌面的显示配置更平滑地集成。一旦完成旋转的三头设置,我将进行写操作。
krlmlr

1
@flx:您需要添加一个模式(xrandr --newmode;该cvt工具有助于计算模型),并将其分配给虚拟显示器(xrandr --addmode)。该模式应与实际显示的模式匹配。查看是否自动创建了第二个虚拟显示。这是该intel-virtual-output工具本身的功能,看起来最近的问题已经解决或将要解决。
krlmlr

2

不了解T420S,但是我的T420最多可以用9个小时

  1. 监控黑暗
  2. 英伟达禁用大黄蜂/ bbswith
  3. 以及pm-utils的额外调整

是的,这是默认电池。因此,您应该轻松获得2个小时,因此:

(2)在/etc/X11/xorg.conf中,为nvidia驱动程序尝试使用选项“ ConnectedMonitor”“ DFP-0”。

(3)要使用第二个显示器,您需要修改的bumblebee xorg.conf,有关详细信息,请参见https://github.com/Bumblebee-Project/Bumblebee/issues/77


1
谢谢回答。我没弄错您没有使用第二个(DVI)屏幕吗?坦白说:我发现处理您所链接的问题非常复杂-我当然会尝试,但是要知道一点我应该改变的内容(以及原因)还需要几个小时。实际上,这是我的笔记本电脑,我只希望它能正常工作。有点希望连接第二台显示器之类的任务不会让我追逐一个星期前我什至没有听说过的软件的未解决问题……:-(
jan groth,2012年

它非常简单,就像在github Issue中一样,只需从/etc/bumblebee/xorg.conf.nvidia和bumblebee中删除以下行(换行)选项“ UseEDID”“ false”(换行)选项“ ConnectedMonitor”“ DFP”(换行)在显示端口上产生输出。一开始您会得到一张空白的图片。例如,您可以通过export DISPLAY =:8.0(换行符)xterm获得xterm。(wtf在此处按Enter确实会提交评论而不是创建换行符)
Anonymous Coward 2012年

2

我在4438型扩展坞上使用T420。我可以使用扩展坞上的DVI端口将两个宽屏显示器(不带主显示器)或1个宽屏显示器与主显示器一起使用。

我只是禁用了擎天柱,并将其设置为始终使用NVIDIA卡。然后,我运行nvidia-xconfig并使用nvidia-settings设置双显示器,将设置保存到xorg.conf文件中并重新启动计算机。

这样,我的电池续航时间可以超过2小时(无需进行其他任何修改即可延长电池续航时间)。我遇到的主要问题是,从扩展坞重新启动或从扩展坞中移除时,它不会自动切换到一台显示器。我还没有时间研究这个问题。

我将在本周晚些时候尝试Bumble Bee,看看我是否可以使它工作。如果我可以正常运行,我会尽量记得在这里发布。


2

我也有同样的问题。我已经做了一些研究并部分解决了它。我仍在研究一个完整的解决方案。

硬件:具有Nv​​idia 4200M的Thinkpad T420s + Intel HD 3000图形Thinkpad扩展坞。

症状:T420无法识别连接到扩展坞上任何DVI端口的外部显示器。它可以通过扩展坞上的VGA端口识别外部显示器。但是,质量差。

根本原因:1. T420s的Nvidia卡连接到DVI端口,而Intel卡连接到扩展坞上的VGA端口。2.与Win 7不同,Ubuntu无法在Nvidia卡和Intel卡之间切换。默认情况下,仅使用英特尔卡。

解决方案:0。将T420s插入扩展坞并将外部显示器连接到DVI端口。1.进入BIOS,找到“显示”,将配置更改为“离散卡”和“禁用Nvidia Optimus”。现在T420s被迫使用Nvidia卡。2.下载并安装适用于Linux的Nvidia驱动程序。Google的详细说明。3.安装后,执行“ sudo nvidia-settings”。4.在弹出窗口“ X服务器显示配置”中,单击“检测显示”。您现在将可以看到外部显示器。5.在同一页面上,将“配置”更改为“ TwinView”,分辨率“自动”或T420s的原始分辨率,例如1600x900。6.单击“应用”,您将能够看到外部显示桌面。7.单击“保存到X配置文件”。

[更新]

使用分散,我可以手动切换T420s的显示和外部显示。仍然不是最好的解决方案,但我认为这对我来说已经足够了。

因此,请尝试使用Nvidia独立显卡+分散组合。


...离散卡的问题是它确实会很快耗尽电池电量……
jan groth 2012年

您应该能够使用此处描述的方法以nvidia optimus模式使用显示端口:zachstechnotes.blogspot.com/2012/04/post-title.html这样,您可以获得较长的电池寿命,并可以在显示器上使用外接显示器。显示端口(尽管您将使用英特尔卡进行渲染,所以质量可能不如您所愿
Zach 2012年

1

使用集成显卡(Intel BIOS设置),T520上的VGA输出效果很好(不模糊),但是我必须将1920x1200显示器设置为仅显示1600像素宽,这样我的两面都会出现黑色条纹。如果没有该设置,显示器将在整个1920屏幕上拉伸1600像素,是的,事情看上去会变得模糊。

几天前问了一个类似的问题,但对这些答案感到困惑。看起来@Anonymous Coward仅运行外部显示器,但我(我相信OP)希望能够通过DisplayPort / DVI(在nvidia上)运行笔记本电脑显示器(在Intel上)和外部显示器。因此,我认为可能需要擎天柱/大黄蜂。

如果我发现此显示问题,我一定会发表我的发现;如果您先到达终点线,请执行相同的操作。


1
谢谢回答!如果我将外接显示器的分辨率降低到1600x1200,则显示效果会更糟...顺便说一句,我责怪显示器制造商的模糊性-听到了几个故事,如今模拟输入源可能是非常低的标准,因为每个人使用数字连接。哦,我当然会保持这张票的更新。
jan groth 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.