20080220

Настройка выхода на проектор с помощью режима TwinView для Nvidia GeForce 8400MG

Сегодня понадобилось настроить работу проектора на ноутбуке Acer Aspire 5520. Подсистема видео — Nvidia GeForce 8400MG. Надо было настроить Xorg так, чтобы одно и то же изображение выдавалось и на экран ноутбука, и на проектор.

Дополнение: в комментариях говорят, что можно всё было настроить с помощью графической утилиты nvidia-settings.

Дополнение: пользователям ноутбуков с видео Intel или ATI подключать ноутбук к проектору гораздо проще. Включить VGA-выход и задать на нём нужное разрешение можно командой xrandr.

Что наблюдалось: подключаю проектор, запускаю машину, при загрузке изображение на проектор выдаётся нормально, потом запускается KDM, изображение на проекторе пропадает, нажатие кнопки переключения видеовыхода ни к чему не приводит. При переключении в виртуальную консоль (Ctrl-Alt-F1) изображение на проекторе появляется, при переключении обратно в сеанс X (Ctrl-Alt-F7) — пропадает. Нажатие Fn+5 (переключение видеовыходов) ни к чему не приводило.

Я уже давно и старательно выбираю системы только со встроенным видео Intel, так что в этот раз пришлось погуглить. В результате, я только сегодня узнал, что у nVidia есть специальный режим TwinView для вывода на два монитора, и его-то и надо должным образом настроить. Использовался видеодрайвер nvidia.

Как поступать правильно, честно говоря, не знаю. Просто добавил в /etc/X11/xorg.conf в раздел Screen следующие строчки (ноутбук уже отдал хозяину, и пишу по памяти, повторно подглядывая в найденные в интернете советы и рецепты):
Option "TwinView" "1"
Option "TwinViewOrientation" "Clone"
Option "TwinViewXineramaInfoOrder" "DFP-0,CRT-0"
Option "MonitorLayout" "LFP,LFP+CRT"
Option "metamodes" "DFP: 1280x800 +0+0, CRT: NULL; DFP: 1024x768 +0+0, CRT: 1024x768 +0+0; DFP: 800x600 +0+0, CRT: 800x600 +0+0"
После этого стало возможно переключать метарежимы (комбинации режимов для ЖК-экрана и для внешнего VGA-выхода) по Ctrl-Alt-Fn-+/-. В данном случае режим 1280×800 показывается только на ЖК-экране, режимы 1024×768 и 800×600 показываются и на экране, и на внешнем проекторе. Как легко заметить, метарежимы отделяются друг от друга точкой с запятой, а режимы каждого из устройств вывода — запятыми. Изменение «+0+0» на что-нибудь вроде «+1280+0» позволяет настроить работу двух экранов рядом (если указано «+0+0» — изображения на экранах совпадают). Как я понял, порядок устройств, указанный в опции TwinViewXineramaInfoOrder влияет на то, на каком из двух экранов будет рисоваться приглашение KDM/GDM, панель KDE и прочее. Впрочем, поэкспериментировать особо времени не было.

Надо отметить, что у меня проектор был подключен сразу при запуске машины. Похоже, это имеет значение. В интернете встречаются советы добавить опцию «Option "ConnectedMonitor" "CRT,CRT"». Впрочем, у меня всё заработало без неё. Если этот ноутбук ещё раз попадёт мне в руки — может быть попробую.

К сожалению, я не знаю иного способа изменить виртуальное разрешение (разрешение рабочего стола), иначе, как поставив первым другое разрешение в списке режимов. В результате, во всех трёх метарежимах виртуальное разрешение остаётся одним и тем же, 1280×800. Так что решение половинчатое. Ничего лучше, чем запускать второй X-сервер специально для показа чего-либо на проекторе — в голову пока не пришло.

Если кому интересно: на ноутбуке стояла Mandriva 2007, работало всё, кроме проектора, вроде бы гладко, но ставил не я, поэтому не могу сказать, сколько там до этого требовалось плясок с бубном.

Ссылки по теме:

How to use linux laptop in presentations ★★★
Getting a projector to work under Ubuntu Linux with Nvidia drivers
Nvidia, TwinView and xorg.conf
Gentoo Wiki: Dual Monitors Howto
Как включить VGA-выход на проектор (используя xrandr)