Как мне настроить второй дисплей через DVI / viewport с Lenovo T420S?

13

Мой Lenovo T420S имеет дискретную графическую карту с технологией nvidia optimus. В основном я пытаюсь добиться следующего:

  • использовать второй дисплей - подключенный через DVI / viewport - на работе (VGA размыто)
  • достичь средней и хорошей производительности батареи во время путешествия (2 часа)

Насколько я понял, у меня есть следующие варианты:

  1. отключить Optimus, использовать исключительно внутреннюю графику
  2. отключи Optimus, используй исключительно nvidia
  3. включить Оптимус, использовать шмель ( домашняя страница ) / железная шкура

(1) дисквалифицирует, поскольку я прочитал (и испытал), что DVI / область просмотра технически не может использоваться через внутреннюю графику

(2) до сих пор не пробовал, просто быстрая тестовая установка, которая загрузилась в черный экран после того, как я добавил драйверы nvidia :-(

(3) следил за этим блогом , использовал шмель вместо железной шкуры. Шмель сработал (я вижу впечатляющие FPS на glxgears), но я не получил второй дисплей, который будет распознан . Я также чувствовал себя потерянным в nvidia-driver-hell и не имел возможности запустить nvidia-xconfig просто потому, что он не был установлен. Не знаете, если второй дисплей должен быть распознан из коробки? Нужно ли устанавливать больше? Нужно ли связываться с моим xorg.conf? Много вопросов, мало ответов.

Итак, что я могу сделать, чтобы достичь своих целей? Какой путь выбрать, и каковы дальнейшие шаги?

Любая подсказка приветствуется :-)

Обновление : спасибо всем, кто ответил. Я перенесу свою рабочую среду в «дискретную» установку и буду использовать «optimus / bumblebee» в качестве проекта параллельной игры и посмотрю, как далеко я доберусь ... Я буду публиковать будущие вопросы в новых темах.

джан грот
источник

Ответы:

5

У меня есть Thinkpad W520, и я много с этим возился. Я не уверен , сколько W520 и T420s имеют в общем, но я написал сообщение в блоге здесь с изложением большой ситуации на картину и дают некоторые предложения.

Вы должны быть в состоянии получить 2 часа автономной работы, используя карту NVIDIA с проприетарными драйверами полный рабочий день. Это также, вероятно, будет вариант, который включает в себя наименьшее количество хлопот при добавлении внешнего дисплея (программа "disper" очень полезна для этого). Если проприетарные драйверы nvidia для карты в T420s функционируют так же, как и для W520, они автоматически разгонят карту, когда она не используется в полной мере (они называют это «Power Mizer»), поэтому срок службы батареи будет не слишком какой ужас. Честно говоря, я могу увеличить время автономной работы только на 25 или 30%, отключив карту nvidia. Кроме того, я считаю, что с установленным Bumblebee вы, возможно, не сможете использовать свой внешний монитор, поскольку на карте nvidia уже запущен X-сервер «под капотом». Таким образом, я бы рекомендовал продолжить вариант (2).

Когда я установил и удалил Bumblebee, у меня возникли небольшие проблемы с тем, чтобы заставить работать собственные драйверы nvidia. Вот несколько вещей, на которые следует обратить внимание: (a) W520 имеет опции BIOS, связанные с тем, какая графическая схема используется. Я не уверен, что варианты T420, но если вы хотите использовать графику nvidia на вашем дисплее Thinkpad, вы, вероятно, должны быть в «дискретном» режиме. (b) Возможно, вам придется возиться с программой «жокей» в Ubuntu, чтобы заставить ее использовать проприетарные драйверы.

Удачи! Я надеюсь, что это помогло.

Zach
источник
... это определенно помогает, спасибо за ответ!
Ян Грот
После прочтения других комментариев по этой теме, кажется , что T420 будет не настроен таким же образом , как и W520 - интегрированная карта будет подключена к выходу VGA ( в отличие от W520 - это также объясняет , почему T420 способен на поддержка 3 внешних мониторов, в то время как W520 поддерживает только 2).
Зак
Так что вопрос в том, какие режимы BIOS доступны на T420? Из сообщения @ John видно, что есть хотя бы режим Optimus и дискретный режим. Если вы выбираете вариант (2), вы должны убедиться, что находитесь в дискретном режиме, таком как @John. Если вы находитесь в режиме Optimus, внутренний дисплей Thinkpad и внешний цифровой дисплей, вероятно, управляются разными видеокартами, и вам придется немного поработать с вашим xorg.conf, чтобы заставить это работать.
Зак
@ Зак: Спасибо за сообщение в блоге. Я бесстыдно украл как его последующую версию, так и переписывание Сагар Карандикар , и добавил в свой ответ некоторые обновления, относящиеся к самой последней версии Ubuntu .
krlmlr
7

Ubuntu 14.10 и более поздние версии : там намного проще. Пожалуйста, смотрите этот ответ и мой комментарий ниже.

Примечание : это работает только в Ubuntu 13.04. Есть некоторые различия в 13.10.

Мне удалось подключить два внешних монитора (в дополнение к встроенной панели) к моему ThinkPad T430 в Ubuntu 13.04 с включенным Optimus («Переключаемая графика») (опция 3 в вашем списке). Мониторы подключены через интерфейс DVI, один из них повернут. В отличие от других решений, все мониторы подключены к одному оконному менеджеру, поэтому окна можно свободно перемещать между мониторами. Это достигает цели увеличения срока службы аккумулятора, если он отключен, и использования внешних мониторов, если он подключен.

Ключевая идея здесь:

  • Внутренний графический адаптер отвечает за управление изображением (растровым изображением), которое фактически отображается
  • По умолчанию все отображается на внутреннем графическом адаптере
  • Приложения с GPU-ускорением используют дискретный графический адаптер, вывод копируется во внутренний графический адаптер
  • Для каждого внешнего монитора внутренний графический адаптер обеспечивает «виртуальный» дисплей
  • Вывод на внешние мониторы происходит с использованием второго X-сервера, содержимое «виртуальных» дисплеев постоянно копируется на второй X-сервер

Основное преимущество по сравнению с другими решениями заключается в том, что все дисплеи являются (по-видимому) частью одного сеанса X, поэтому вы можете свободно перемещать окна между дисплеями.

До сих пор я не заметил никакого снижения производительности.

инструкции

Вам нужно сделать следующее:

  • Установите Шмель от PPA
  • Сборка и установка пользовательского видео драйвера Intel
  • Скачайте, скомпилируйте и, наконец, установите небольшую программу
  • Редактировать два файла конфигурации
  • Перезагрузиться несколько раз

Для большинства действий вам понадобится терминал, текстовый редактор и root-доступ ( sudo). Подробные инструкции приведены ниже.

Установить шмель

Следуйте инструкциям в разделе «Основные настройки» . Выполните от имени пользователя root, последняя команда фактически инициирует перезагрузку:

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

Не пытайтесь запустить шмель только с драйвером nouveau? , Из моего опыта это не работает, по крайней мере, не в этой настройке.

Проверка

Вы должны быть в состоянии бежать 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. Нажмите на файл, нажмите кнопку «Raw», скопируйте 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первый вызов).

После завершения screencloneс помощью Ctrl + C (который был снова выведен на передний план с использованием fg), дискретный графический адаптер отключается. Вы можете проверить это с cat /proc/acpi/bbswitch. Тем не менее, пространство экрана зарезервировано для двух теперь отключенных мониторов. Чтобы переключиться обратно только на дисплей ноутбука, используйте

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

уборка

  • Скопируйте screencloneв каталог, который находится в PATH(например, /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-startи extmon-stop, что включать и выключать второй и третий монитор. Отредактируйте extmon-startскрипт в соответствии с вашей конфигурацией.

Ссылки

Мой ответ во многом опирается на следующие ресурсы:

krlmlr
источник
Это работает очень хорошо для меня, спасибо. Есть ли у вас проблемы с большим отставанием при использовании виртуальных рабочих столов и Compiz с этим решением?
Деймон
@blackrobot: Я использую Gnome Shell, есть небольшое отставание, но это меня не беспокоит.
krlmlr
@krlmlr: есть ли шанс получить такую ​​же настройку 13.10?
Flx
@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. nvidia отключена с помощью шмеля / bbswith
  3. и дополнительный тюнинг с pm-utils

И да, это батарея по умолчанию. Таким образом, вы должны легко получить 2 часа, так что:

(2) В /etc/X11/xorg.conf попробуйте с опцией «ConnectedMonitor» «DFP-0» для драйвера nvidia.

(3) Для использования вашего второго дисплея вам понадобится модифицированный шмель xorg.conf Подробнее см. Https://github.com/Bumblebee-Project/Bumblebee/issues/77 .

Анонимный трус
источник
1
Спасибо за ответ. Я правильно понял, что вы не используете второй (DVI) экран? Честно говоря: мне кажется невероятно сложным работать с проблемой, с которой вы связаны, - я, конечно, попробую, но у меня уйдут часы, пока у меня не появится даже небольшое представление о том, что я должен изменить (и почему). На самом деле, это мой ноутбук для работы, и я просто хочу, чтобы он работал. Видимо, надеялись, что такая задача, как подключение второго дисплея , не заставит меня преследовать открытые проблемы программного обеспечения, о котором я даже не слышал неделю назад ... :-(
jan groth
Это действительно просто, как в выпуске github. Просто удалите строки (новая строка). Параметр «UseEDID», «false» (новая строка). Параметр «ConnectedMonitor», «DFP» (новая строка) из /etc/bumblebee/xorg.conf.nvidia и шмеля с производить вывод на порт дисплея. Вы получите пустую картинку на старте. Например, вы можете получить xterm с помощью экспорта DISPLAY =: 8.0 (newline) xterm. (нажатием Enter введите здесь комментарий вместо создания новой строки)
Анонимный трус
2

Я использую T420 при работе с док-станцией типа 4438. Я могу использовать два широкоэкранных монитора (без основного монитора) или 1 широкоэкранный монитор с основным монитором через порты DVI на док-станции.

Я просто отключил Optimus и настроил его на использование карты NVIDIA. Затем я запустил nvidia-xconfig и использовал nvidia-settings для настройки двух мониторов, сохранил настройки в файле xorg.conf и перезагрузил компьютер.

Таким образом, я могу получить чуть более 2 часов автономной работы (без каких-либо других модификаций, чтобы увеличить время автономной работы). Основная проблема, с которой я столкнулся, заключается в том, что он не переключается автоматически на один монитор при перезагрузке с док-станции или удалении с док-станции. У меня не было времени, чтобы разобраться в этом, хотя.

Позже на этой неделе я попробую Bumble Bee, чтобы узнать, смогу ли я заставить его работать. Я постараюсь не забыть опубликовать здесь, если смогу заставить его работать.

Джон
источник
2

У меня точно такая же проблема. Я провел некоторое исследование и частично решил его. Я все еще работаю над полным решением.

Аппаратное обеспечение: Thinkpad T420s с графической док-станцией Thinkpad Nvidia 4200M + Intel HD 3000.

Симптом: T420s не может распознать внешний дисплей, подключенный к любому порту DVI на док-станции. Он может распознать внешний дисплей через порт VGA на док-станции. Однако качество оставляет желать лучшего.

Основная причина: 1. T420s имеет карту Nvidia, соединяющуюся с портом DVI, а карта Intel с портом VGA на док-станции. 2. В отличие от Win 7, Ubuntu не может переключаться между картой Nvidia и картой Intel. По умолчанию используется только карта Intel.

Решение: 0. Установите T420s в док-станцию ​​и подключите внешний дисплей к порту DVI. 1. Перейдите в BIOS, найдите «Дисплей», измените конфигурацию на «Дискретная карта» и «Отключить Nvidia Optimus». Теперь T420s вынужден использовать карту Nvidia. 2. Загрузите и установите драйвер Nvidia для Linux. Гугл подробные инструкции. 3. После установки выполните «sudo nvidia-settings». 4. Во всплывающем окне «Конфигурация дисплея X-сервера» нажмите «Определить дисплеи». Теперь вы сможете увидеть внешний дисплей. 5. На той же странице измените конфигурацию на «TwinView», разрешение «Auto» или собственное разрешение T420s, скажем, 1600x900. 6. Нажмите «Применить», вы сможете увидеть внешний дисплей рабочего стола. 7. Нажмите «Сохранить в X файл конфигурации».

[Обновить]

Используя Диспер, я могу переключать дисплей T420s и внешний дисплей вручную. Все еще не лучшее решение, но я думаю, что это достаточно хорошо для меня.

Поэтому, пожалуйста, попробуйте комбинацию дискретной графики + дисперсии Nvidia.

Новый Гумин
источник
... проблема с дискретной картой в том, что она очень быстро разряжает батарею ...
Ян Грот
Вы должны иметь возможность использовать порт дисплея в режиме nvidia optimus, используя метод, описанный здесь: zachstechnotes.blogspot.com/2012/04/post-title.html Таким образом, вы можете получить хорошее время автономной работы и использовать внешний монитор на порт дисплея (хотя вы будете рендерить с картой Intel, поэтому качество может быть не таким хорошим, как хотелось бы
Зак
1

Выход VGA на моем T520 прекрасно работает (не размыто) с использованием встроенной графики (настройка Intel BIOS), но я должен настроить монитор 1920x1200 так, чтобы он отображал только 1600 пикселей в ширину, поэтому я получаю черные полосы с обеих сторон. Без этой настройки монитор растягивает 1600 пикселей по всему экрану 1920 года, и тогда все выглядит размытым.

Я задал похожий вопрос несколько дней назад, и эти ответы меня смущают. Похоже, @Anonymous Coward работает только с внешним монитором, но я (и я полагаю, что OP) хочу иметь возможность управлять дисплеем ноутбука (на Intel) и внешним монитором через DisplayPort / DVI (на NVIDIA). Поэтому я думаю, что может потребоваться Optimus / Bumblebee.

Если я выясню эту проблему, я обязательно опубликую свои выводы; пожалуйста, сделайте то же самое, если вы дойдете до финиша первым.

OpenPrivacy
источник
1
Спасибо за ответ! Если я уменьшу разрешение моего внешнего монитора до 1600x1200, дисплей станет еще хуже ... Кстати, я обвиняю производителя дисплея в размытости - слышал пару историй о том, что аналоговые входные источники в настоящее время могут быть довольно низкого стандарта, потому что каждый использует цифровые соединения. О, и я, конечно, буду держать этот билет обновленным.
Ян Грот