Hatred's Log Place

DON'T PANIC!

Nov 13, 2014 - 4 minute read - linux

Linux, ThinkPad T530 и miniDP (displayport)

На Thinkpad T530 есть два порта для подключения внешних мониторов: VGA и miniDP (Display Port). Если ноутбук с дискретной графикой, то DP разведён на дискретную карту nVidia, соответственно без шаманства графику туда не выведешь.

Используйте данную ссылку только для ознакомительных целей! Подробности под катом.
А если вопросы производительности не стоят остро, то рекомендую посмотреть в сторону Nouveau драйвера. В случае его использования и DRI3 не придётся настраивать ничего. Подробности.

Полное и законченное описание подключения и вывода по ссылке:
http://www.unixreich.com/blog/2013/linux-nvidia-optimus-on-thinkpad-w520w530-with-external-monitor-finally-solved/

Если коротко, то в современных реалиях от туда нужно брать только часть информации. К примеру:

  1. Теперь не нужно отказываться от bbswitch как средств сбережения питания в настройках Bumblebee.
  2. Не нужно принудительно оставлять запущенным X-сервер на дискретной карте

Это всё при условии современного intel-virtual-outputs. Т.е. рекомендацию по сборке оного из статьи выше взять нужно:

sudo apt-get install xorg-dev git autoconf automake libtool
git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-intel
cd xf86-video-intel 
./autogen.sh 
cd tools
make 
sudo cp intel-virtual-output /usr/bin/ 
sudo chmod +x /usr/bin/intel-virtual-output

В сухом остатке - у нас всё будет работать практически при дефолтной установке Bumblebee. Но ложка дёгтя есть. Или, даже, пара.

Дело в том, что для того, что бы optirun работал без подключенного физического монитора в новых версиях Bumblebee в конфиге /etc/bumblebee/xorg.conf.nvidia появилась строка:

Option "UseDisplayDevice" "none"

Всё хорошо, но она мешает работе intel-virtual-output: он запускается без ошибок, но монитор, покдлюченный к miniDP порту в упор не видит((поправочка: ошибка всё же есть, если запускать с ключём -f от программа сразу завершает свою работу, а без данного ключа - не остаётся в режиме демона)). Коментируешь строку, перезапускаешь - всё работает. Понять - какой вариант использовать и как это сделать автоматически, я пока не знаю. Точнее задумка есть: при подключении монитора к miniDP прилетает ACPI эвент, мол монитор есть. Если монитор подключен, то optirun будет работать. Проблема в том, что при отключении ничего не прилетает. Так бы было возможно настроить обработчик acpid и подменять конфигурационные файлы.

В сухом остатке: нужно всегда выбирать, или работаем с внешним монитором, тогда конфиг без этой строки. Или работает без внешнего монитора, тогда конфиг с этой строкой. В противном случае, что-то откажется работать: или optirun без подключенного монитора, или монитор через intel-virtual-outputs.

В рекомендациях Bumblebee ещё говорят включить эти опции при работе с внешним монитором, я их решил не игнорировать:

# в секции ServiceLayout
Option "AutoAddDevices" "true"

# в секции Device
Option "UseEDID" "true"

Есть ещё мнение, что с intel-virtual-outputs где-то кешируются и не перенстраиваются параметры монитора, поэтому переключение другого монитора требует рестарта иксов. Проблема пока не проверена.

Всё выше проверено на стеке Xorg lts-vivid и lts-wily в Linux Mint 17.3. Ядро 4.6.3.

К слову, утилита intel-virtual-outputs поставляется вместе с драйверами для карты Intel в этих стеках. На lts-vivid она не работает, на lts-wily - работает. Но лучше собирать самому.

При изменении стека обязательно нужно выбрать Mesa в качестве альтернативы для OpenGL:

sudo update-alternatives --config i386-linux-gnu_gl_conf
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
sudo ldconfig

иначе не будет ни технологии Optimus, не OpenGL даже для встроенной видео карты: альтернатива nvidia имеет куда больший приоритет.

2016-08-26: к слову, помимо отсутствия Optimus и вообще OpenGL у вас может начать валиться Cinnamon с сообщением в ~/.xsession-errors:

(cinnamon:2813): Clutter-CRITICAL **: Unable to initialize Clutter: <тут может быть любой текст>

Он вообще как-то странно относится к драйверам nVidia(( раз, два и вообще достаточно много такого)), а тут ещё подстава: драйвера одни (точнее реализации OpenGL), а карта вообще другая.

Столкнулся после обновления на Mint 18 с 17.3, путём превращения системы в фарш и лепки пельменей из неё обратно.

Ещё, модули ядра, если вздумали попробовать свежие драйвера nVidia из линейки 367, то крайне желательно создать файл /etc/modprobe.d/bumblebee-367.conf с таким, примерно, содержимым:

# 367
blacklist nvidia-367
blacklist nvidia-367-updates
blacklist nvidia-experimental-367

# Workaround to make sure nvidia-uvm is removed as well
remove nvidia rmmod nvidia_uvm nvidia_drm nvidia_modeset nvidia
softdep nvidia_367 post: nvidia_367_modeset nvidia_367_drm nvidia_367_uvm

что бы появилась возможность у Bumblebee выгружать все части nVidia.

Кроме того, стоит запретить работу gpu-manager и снести /etc/X11/xorg.conf, который генерируется им:

echo manual | sudo tee /etc/init/gpu-manager.override
sudo service gpu-manager stop
sudo rm -f /etc/X11/xorg.conf

А то он очень хочет сделать вам nVidia карту основной. На ноутбуке, я думаю, карты меняются сильно не часто, и прожить без этой чудо утилиты вполне реально.

Стоить отметить, что за год стабильность работы значительно улучшилась. А если придумать способ автоматической подмены конфигурации Xorg для Bumblebee, то ещё и работает без привbлегий root.

Материалы: