带 Bumblebee 的外接显示器

带 Bumblebee 的外接显示器

我正在尝试使用 Bumblebee 和 Optimus 配置将外接显示器(通过 VGA 电缆)连接到笔记本电脑。

我有一台联想 W520,配有 Intel GMA HD 3000 和 Nvidia Quadro 2000M。BIOS 有三个与显卡相关的选项 - 集成、独立和 Optimus。

用例非常简单。工作时,我只使用集成卡和笔记本电脑显示器;但看电影时,我想使用投影仪。现在,在这种情况下我要做的是:

  • 重启
  • 启动窗口
  • 看电影

感谢 Bumblebee,我现在能够始终保持设置不变为 Optimus。

在使用 BB 之前,每次我想看电影时,我都必须更改 BIOS 设置,因为即使在 Windows 中,使用集成显卡也会导致系统无法检测到投影仪(我想这就是他们通常所说的“硬连线输出”,并且 VGA 输出硬连线到独立卡)。

现在,我想要做的是能够连接外部显示器而无需切换操作系统,也就是说,在 Ubuntu 中使用它。

是否可以?

现在,如果我想在 Ubuntu 上使用外接显示器,唯一的选择是更改 BIOS 以使用独立显卡,然后使用 nvidia-settings。

如果我使用 Optimus 设置,即使我使用“optirun nvidia-settings -c :8”运行它,我也无法获得任何外接显示器的选项。

我能做些什么吗?

答案1

我有一台 W520。它的设置与 T420 不同 - VGA 输出连接到 nvidia 卡,因此 Samsagax 的“此”链接不起作用。我准备了一篇博客文章这里概述您拥有的选项。我无法让任何外接显示器与 Bumblebee 配合使用,而且我认为 W520 也不可能做到这一点。但是,您可以在 Optimus 模式下使用外接显示器,但您必须使用 xinerama 或在外接显示器上打开单独的 X 屏幕。

答案2

(重定向自 linux-hybrid-graphics 列表)

我有一台 Thinkpad T420,它可能类似(但也可能不类似)。

在我的 T420 上,VGA 连接到 Intel,Display-Port 连接到 NVIDIA。因此,对于 VGA 输出,我可以使用通常的兰德

Display-Port 则不同。为此,我必须更换xorg配置文件来自大黄蜂/etc/bumblebee/xorg.conf.nvidia

该选项ConnectedMonitorDFP(默认)到DP1DisplayPort。

答案3

英特尔驱动程序的较新版本包含一个名为的程序,intel-virtual-output它大大简化了 W520 上的双显示和三显示设置。

intel-virtual-output命令为 Intel 卡上的 X 服务器提供了一种将屏幕复制到另一个 X 服务器的方法。它查看远程显示器上的可用屏幕,并将它们作为 VIRTUAL1、VIRTUAL2 等显示在 Intel X 服务器上。

以下脚本(以 root 身份运行)对我来说有效,但很可能您需要进行一些调整:

#!/bin/sh

# Power on the nvidia card with bumblebee.
modprobe bbswitch
echo ON > /proc/acpi/bbswitch

# Run X display :8 on the nvidia card.
optirun true

# Tell the intel card to create virtual screens on :0 and
# copy whatever they're displaying to equivalent screens on :8
intel-virtual-output

# Configure my monitors the way I like them.
xrandr --output VIRTUAL3 --auto
xrandr --output VIRTUAL1 --auto --right-of VIRTUAL3
xrandr --output LVDS1 --off

此设置启用了左侧的 DisplayPort 转 DVI 电缆 (VIRTUAL3) 和右侧的 VGA (VIRTUAL1)。它还禁用了笔记本电脑屏幕。

请注意,由于这些只是来自驱动程序的虚拟屏幕,理论上,运行后您的 GUI 显示配置工具应该能够弄清楚intel-virtual-output

实际上,xubuntu 中的显示配置工具并没有真正完成连贯的事情。这就是这些xrandr命令存在的原因。如果您正在运行 gnome 或 kde,在使用 之前,可能值得尝试 GUI 工具xrandr。否则,在运行此工具之前,您可能需要针对实际使用的任何设置调整一些内容。运行只会xrandr告诉您当前连接的显示器。您可以连接和断开显示器,以查看哪个插头连接到哪个 VIRTUAL[0-9] 显示器。笔记本电脑屏幕是 LVDS1。然后只需使用、、等xrandr命令即可将东西放到正确的位置。--right-of--left-of--below

当你想再次使用移动设备时,你可以运行此命令(再次以 root 身份运行):

#!/bin/sh

# Turn on the laptop screen.
xrandr --output LVDS1 --auto

# Turn off my the other screens.
xrandr --output VIRTUAL1 --off
xrandr --output VIRTUAL3 --off

# Kill the xorg server running on the nvidia card.
kill $(ps ax | grep Xorg | grep :8 | awk '{print $1}')

# Wait plenty of time for it to die.
sleep 5

# Remove the nvidia kernel module so we can shut down the card.
# If you're running another driver this might be something different.
rmmod nvidia

# Use bumblebee to turn off the nvidia card and save power.
echo OFF > /proc/acpi/bbswitch

我正在运行 xubuntu 14.04,使用专有的 nvidia 驱动程序版本 337.25。我还从https://launchpad.net/~bumblebee/+archive/ubuntu/stable

有趣的是,此设置与通常的 Optimus 设置相反。通常,您会选择性地在 nvidia 卡上运行程序,并将缓冲区从 nvidia 卡复制到实际上与显示器通信的英特尔卡。在这种情况下,您会在英特尔卡上运行所有内容,并将相关的屏幕缓冲区复制到 nvidia 卡。

如果您想知道,是的,这会使运行 nvidia 加速应用程序变得困难。我还没有找到让游戏表现良好的方法,即使是高清视频,它也会随着时间的推移而变慢。它甚至似乎不是双缓冲,因为在播放相当高分辨率的视频一段时间后,您会看到从左到右的自上而下的扫描。话虽如此,大多数投影仪可能都没问题。

答案4

也许尝试

但依赖于硬接线。

相关内容