Мы хотим установить 3 экрана с встроенным графическим адаптером Intel и картой NVIDIA.
Обе карты распознаются в lspci
01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2) 00:02.0 Display controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
И в основном работают: если я переключаюсь на консоль, я вижу вывод на карте Intel, X работает только на карте Nvidia.
Но когда я набираю xrandr | grep conn
, я получаю только один подключенный порт:
DVI-I-0 disconnected (normal left inverted right x axis y axis) VGA-0 disconnected (normal left inverted right x axis y axis) DVI-I-1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm HDMI-0 disconnected (normal left inverted right x axis y axis)
Я нахожусь на Ubuntu 12.10 (и XFCE) и установил собственный драйвер nvidia.
Я предполагал, что у X, возможно, есть проблема с автоматическим определением обеих карт, поэтому я подумал, что может помочь следующее xorg.conf
:
Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" Screen 1 "Screen1" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" EndSection Section "Files" EndSection Section "InputDevice" # generated from default Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" EndSection Section "Monitor" Identifier "Monitor0" VendorName "Unknown" ModelName "Unknown" HorizSync 28.0 - 33.0 VertRefresh 43.0 - 72.0 Option "DPMS" EndSection Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce 210" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection Section "Monitor" Identifier "Monitor1" VendorName "Unknown" ModelName "Unknown" HorizSync 28.0 - 33.0 VertRefresh 43.0 - 72.0 Option "DPMS" EndSection Section "Device" Identifier "Device1" Driver "intel" VendorName "Intel" BoardName "Internal Intel Graphics" EndSection Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Monitor1" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection
Но это все еще не работает.
xorg.conf
вручную? (потому что Ubuntu 12.10 нормально работает без xorg.conf
) xorg.conf
? Да, X может использовать несколько драйверов. У тебя очень похожая настройка, как у меня. У меня есть NVIDIA 9800 GT с двумя подключенными мониторами и карта Intel второго поколения с одним монитором.
Я не вижу проблем с вашим xorg.conf
. Я подозреваю, что вам нужно будет создать xorg.conf
хотя бы для того, чтобы X сказал использовать драйверы nvidia и intel. Мой xorg.conf
очень похож на ваш; У меня есть три секции монитора и экрана, потому что у карты nvidia два монитора, но я уверен, что X игнорирует эти секции.
Во-первых, вы должны убедиться, что xinerama отключена в xorg.conf
(возможно, нет необходимости).
xorg.conf
:
Section "ServerFlags"
Option "xinerama" "off"
EndSection
Когда вы делаете xrandr --listproviders
, вы должны увидеть обе карты.
cody@IRIS> xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x290 cap: 0x1, Source Output crtcs: 2 outputs: 5 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x48 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 6 associated providers: 1 name:Intel
Если вы не видите обе карты, возможно, вам не хватает драйвера. (Но OP говорит, что консоль использует один, а X использует другой, поэтому они, вероятно, оба работают)
Вы должны иметь возможность использовать xrandr --setprovideroutputsource
, чтобы добавить порты Intel в список, показанный вашим xrandr | grep conn
В моем случае я использую имена, заданные --listproviders
:
xrandr --setprovideroutputsource Intel NVIDIA-0
Если это не добавляет порты Intel, возможно, он уже подключен так, что вы его не видите. Отключите его с помощью:
xrandr --setprovideroutputsource Intel 0x0
Затем попробуйте подключить его снова:
xrandr --setprovideroutputsource Intel NVIDIA-0
Теперь должны быть показаны все выходные порты. И вы сможете добавить отображение с настройками дисплея gnome или с помощью xrandr
.
Поэтому, когда я наконец-то включил свой дисплей Intel, дисплеи nvidia решили, что им нужно панорамировать, когда я попытался переместить мышь на третий дисплей. Теперь будет отображаться содержимое третьего монитора как на третьем, так и на втором мониторе. И оригинальный контент второго сместился на первый монитор с контентом первого за кадром. Если бы я снова попытался переместить курсор на первый монитор, он бы вернулся в нормальное состояние.
Я наконец исправил это с помощью другого вызова xrandr
:
xrandr --output DVI-I-2 --panning 3840x1200+1680+0/1920x1200+1680+0/0/0/0/0
Этот вызов требует знания геометрии физического экрана и логического расположения. У меня есть монитор 1680x1050, 1920x1200 и 1920x1080. Они в таком порядке слева направо. Правое большинство связано с картой Intel.
Этот вызов устанавливает область панорамирования на среднем мониторе. --output DVI-I-2
это порт, подключенный к моему среднему монитору.
Первые четыре числа устанавливают область панорамирования на сумму среднего и правого экранов. 3840x1200 как ширина и высота и + 1680 + 0, чтобы сместить область, чтобы начать сверху слева на среднем мониторе. (Очевидно, [0,0] находится в верхнем левом углу левого монитора)
Следующие 4 числа являются областью отслеживания курсора. Я установил это, чтобы отслеживать курсор только на среднем экране. Таким образом, когда курсор покидает этот экран, он не пытается сместить изображение, чтобы следовать за курсором.
Последние 4 числа определяют границу вокруг области панорамирования. Я просто использую значения по умолчанию здесь.
Версии программного обеспечения, которое я использовал:
xorg-server-1.17.4
gnome-3.18.0
xrandr-1.4.3