@ Карта сайта News Автора!

Bog BOS: Linux и NVIDIA: драйверы, TV-Out, датчики, TV-In, разгон

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL

Последнее изменение файла: 2008.05.28
Скопировано с www.bog.pp.ru: 2024.11.23

Bog BOS: Linux и NVIDIA: драйверы, TV-Out, датчики, TV-In, разгон

В статье для счастливых пользователей Linux и GPU NVIDIA

NVIDIA versus ATI

Почему GPU от NVIDIA? Потому что осталось всего 2 компании, производящих GPU потребительского уровня (т.е. дешевые) с нормальной скоростью 3D операций. От графконтроллеров ATI я отказался после 2 лет бесплодных ожиданий работоспособного драйвера OpenGL (после чего фирма мило заявила, что поддерживать такие старые чипы она не будет и скоро выпустит драйверы для новых графконтроллеров, подождите немного ;).

Модели

Разницу между сериями GPU от NVIDIA легче всего узнать на ее российском официальном сайте

Для вывода на TV-Out производители видеоплат могут использовать следующие чипы (БД, собранная пользователями, производители могут использовать на видеоплатах с одним названием различные чипы TV-Out!):

На описании и тестировании конкретных моделей видеоплат специализируется сайт IXBT.

У меня под рукой оказалась ASUS V7700PRO/T/32M/PAL/R (ASUS V9280/TD/P/64M/A), о которой можно рассказать следующее (MB на чипсете Intel 845E, P4):

Драйверы для NVIDIA GPU в Linux

Входящий в состав XFree86/X.org драйвер nv работает с GeForce как с обычным SVGA, т.е. нет поддержки 3D и вывода видео. К тому же у него проблемы с разрешением 1600x1200 и выше.

Компания NVIDIA выпускает собственный драйвер nvidia (XFree86 4.0.1 и выше, X.org 6.7 и выше), поддерживающий аппаратно OpenGL 2.0.0, GLX 1.3, XVideo, X-Video Motion Compensation и прочие полезные возможности. К сожалению, он поставляется только в двоичном виде, что сильно осложняет его использование (в исходном виде поставляется переходник между ядром и драйвером; откомпилированные версии переходника для некоторых дистрибутивов входят в поставку, иначе его необходимо откомпилировать во время установки; в любом случае модуль ядра линкуется "на месте" так что необходимые инструменты и заголовки должны быть установлены). Драйвер поддерживает любую видеокарту (GPU) или интегрированное графическое ядро (IGP), выпускаемые фирмой NVIDIA, и обеспечивает ускорение 2D операций и OpenGL.

Поддержки ACPI нет (прощай STR, aka ACPI S3), а в новых Linux системах APM отключён.

Установка 1.0-7667

Начиная с версии 1.0-4349 драйвер поставляется с собственной программой установки (nvidia-installer) в виде самораспаковывающегося sh-архива (atrpms предлагает в виде rpm, но я не пробовал). Для FC5 необходимо иметь работающее обновлённое ядро (ядро из поставки не загружает не-GPL модули), пакеты kernel-[smp-]devel, xorg-x11-server-sdk, pkgconfig и отключить SELinux (или настроить его). Перед установкой драйверов необходимо перевести систему с уровня 5 (с использованием X Window System) на уровень 3 (без использования X Window System):

init 3

Запустить процедуру установки (имеет ключи --help и --advanced-options; в примере я привожу ключи, пригодившиеся мне):

sh NVIDIA-Linux-x86-1.0-7667-pkg1.run --expert

Использование ключа --expert приводит к тому, что установщик предупредительно спрашивает что куда поставить и создаёт отчёт в файле /var/log/nvidia-installer.log. Если вкратце, то он сохраняет старые версии библиотек libGL, libGLcore и libglx, компилирует интерфейс модуля ядра, собирает и устанавливает модуль ядра (/lib/modules/2.6.12-1.1372_FC3/kernel/drivers/video/nvidia.ko - 5MB!), устанавливает библиотеки libGL, libGLcore, libnvidia-tls, libXvMCNVIDIA и libglx, устанавливает X модуль nvidia_drv, /usr/include/GL/, nvidia-settings-user-guide.txt, /usr/share/doc/NVIDIA_GLX-1.0/README, /usr/bin/nvidia-settings, /usr/bin/nvidia-installer, создаёт устройства nvidiactl и пр. (с учётом наличия devfs или udev), запускает /sbin/ldconfig и "/sbin/depmod -aq".

Теперь необходимо отредактировать /etc/X11/xorg.conf: заменить драйвер nv на nvidia; убрать загрузку модулей dri и GLcore, добавить загрузку модуля glx.

Возвращаем систему на уровень 5:

init 5

Если всё хорошо (при загрузке модуля появляется каталог /proc/driver/nvidia/, X Window System запускается, glxgears показывает разумные числа, в tuxracer можно играть, glxinfo, xvinfo, /var/log/Xorg.0.log), то переходим к настройке (рекомендую начать с gtf и только потом переходить к xvidtune).

Драйвер не прописывает карту в /proc/mtrr, а восход солнца вручную не приносит обещанного счастья (адрес из журнала X):

reg00: base=0x00000000 (   0MB), size= 512MB: write-back, count=1

echo "base=0xd0000000 size=0x8000000 type=write-combining" >| /proc/mtrr

reg00: base=0x00000000 (   0MB), size= 512MB: write-back, count=1
reg01: base=0xd0000000 (3328MB), size= 128MB: write-combining, count=1

Установщик позволяет удалять установленные файлы (с восстановлением предыдущих библиотек) и обновлять драйвер (необходим доступ в Интернет).

После каждого обновления ядра драйвер необходимо переустановить (установщик имеет ключ для сборки модуля под новое неработающее пока ядро).

Общие замечания об установке в старом (до 1.0-4349) стиле

Драйвер состоит из 2 частей: модуль ядра NVIDIA_kernel (NVdriver или nvidia.o в новой версии; больше 1 МБ закрытого кода работает в режиме ядра!) и пакет NVIDIA_GLX (драйвер XFree86 и библиотеки OpenGL). Версии пакетов должны совпадать. Модуль ядра жестко привязан к версии ядра Linux и д.б. переустановлен (пересобран) при смене или сборке ядра. NVIDIA поставляет пакеты в форме .rpm, .srpm и .tar.gz. Я рекомендую брать NVIDIA_kernel в виде .srpm и пересобирать его самостоятельно непосредственно перед установкой, а NVIDIA_GLX брать в виде готового RPM (все равно SRPM и .tar.gz не содержат ни одного исходного текста). Предполагается, что загрузка системы происходит в текстовом режиме (id:3:initdefault: в /etc/inittab), иначе у вас будут большие проблемы при неудачной установке. Перед установкой новой версии (или при смене ядра) надо самостоятельно удалить оба пакета (-U может сработать неправильно).

Предварительная подготовка для построения своего ядра: имеется пакет kernel-source-2.4.18-14, для которого было сделано (может быть не все эти действия обязательны, но как говорится - кашу маслом не испортишь ;)

  1. cd /usr/src/linux-2.4
  2. make distclean (может достаточно make mrproper?)
  3. make menuconfig (загрузить нужный вариант из директории config и выйти с сохранением)
  4. make dep
  5. make bzImage (warning: kernel is too big for standalone boot from floppy, но я и не собираюсь его устанавливать, но если ядро не собрать, то модуль потом не загружается)
  6. make modules (не компилируется drivers/addon/cipe, убрал ее и поменял drivers/addon/Makefile)

Установка версии 1.0-4191 (release 40)

Версия 1.0-4191 (release 40) имеет множество улучшений по сравнению с предыдущей версией: OpenGL 1.4 вместо 1.3, GLX 1.3 вместо 1.2, поддержка AGP 3.0 (8x), вместо XFree86 XAA используется собственная архитектура акселератора 2D, поддержка нескольких отдельных экранов на GPU с TwinView (GeForce2 MX и любой GeForce4), перестал ронять приложения с плавающей арифметикой. Однако отзывы на нее резко отрицательные. Одновременно с небольшим ускорением 3D операций (glxgears на 15%) резко замедлились 2D операции. Их можно несколько ускорить, если установить одноцветный фон в Gnome и отключить в Nautilus опцию "nautilus draw icons on the desktop option", однако замедление относительно предыдущей версии остается двухкратным. Рекомендуется также запустить какое-нибудь приложение libGL (например, glxinfo ;). При попытке включить акселератор 2D (Option "RenderAccel" в /etc/X11/XF86Config) X сервер зацикливается через несколько минут работы.

Процедура установки аналогична предыдущей версии, только модуль ядра переименован из NVdriver в nvidia.o

В версии 4349 скорость 2Д операций вернулась почти к уровню 3123 (но не совсем). К сожалению, при этом скорость 3Д также вернулась к уровню драйвера 3123. RenderAccel включать нельзя по-прежнему. Вместо RPM используется собственная программа установки (полная справка выдается при запуске с ключем -А), которая молча "сносит" предыдущие библиотеки libGL*. Если у вас GeForce FX, нужен OpenGL 1.4 или вы поставили Red Hat Linux 9 с новой библиотекой работы с нитями, то без драйвера 4349 вам не обойтись. Остальным можно подождать следующей версии и оставить версию 3123.

Установка 1.0-2960 и 1.0-3123 (release 25)

В версии 1.0-3123 (release 25) добавлена поддержка GeForce4 MX, GeForce4 Ti 4800 SE и GeForce4 4200.

Процедура установки

GeForce 4 Ti 4200-8x не возвращается в а/ц режим. Помогает следующий танец с бубнами (пункты 1-3 надо выполнять только один раз за сеанс):

  1. запустить второй X сервер, например для вывода на ТВ (см. ниже): X -ac -layout LayoutTV :1
  2. вернуться к основному X серверу (Ctrl-Alt-F7)
  3. перейти в а/ц режим (Ctrl-Alt-F1), изображение отсутствует
  4. перейти ко второму X серверу: [Ctrl-]Alt-F8
  5. вернуться в а/ц режим (Ctrl-Alt-F1), изображение появилось!

Параметры модуля ядра

modinfo NVdriver показывает, что при загрузке модуля можно задавать следующие параметры (я привожу не весь список, описание в os-registry.c):

modinfo nvidia в FC3 (ядро 2.6.10) не показывает наличия параметров, но они есть! Параметры остались те же самые и достаточно внести в /etc/modprobe.conf

alias char-major-195 nvidia
options nvidia NVreg_EnableAGPFW=1 NVreg_EnableAGPSBA=1

После этого перезагрузить модуль

init 3
rmmod nvidia
modprobe nvidia
init 5

И убедиться, что режимы Fast Write и SBA теперь включены (agpgart в последнее время стало модно включать непосредственно в ядро):

cat /proc/driver/nvidia/agp/status

Status:          Enabled
Driver:          AGPGART
AGP Rate:        4x
Fast Writes:     Enabled
SBA:             Enabled

Опции раздела Device XF86Config

Опции задаются в секции Device файла /etc/X11/xorg.conf (XF86Config или XF86Config-4 для старых дистрибутивов), я привожу только опции, специфические для драйвера nvidia (и то не все - например, я не использую QUADRO и ноутбуков с NVIDIA; см. также xorg.conf(5x) или XF86Config(5x)):

Опции OpenGL

Опции OpenGL задаются установкой переменных окружения перед запуском прикладной программы:

nvidia-setting: графический и командный интерфейс управления

Графическая утилита nvidia-setting позволяет в легкоусвояемой форме управлять различными параметрами драйвера, отдельно для каждого экрана и устройства (подробный help прилагается):

Конфигурационный файл - ~/.nvidia-settings-rc (кстати, позволяет узнать, наконец, на каком из экранов разместился видеооверлей с возможностью аппаратного управления яркостью и т.д., а какой довольствуется XVideoBlitter).

Имеется режим командной строки:

Подключение видеопроектора (DVI)

Постановка задачи. Имеется видеоплата на NVIDIA GeForce4, к первому (DFP-0) каналу (DVI-I) по интерфейсу DVI-D подключён ЖК проектор, ко второму (CRT-1) каналу (VGA) подключён CRT монитор. Один из каналов (не помню какой, TV-0?, а телевизора у меня сейчас нет) можно переключать для вывода по интерфейсу S-Video, но это извращение описано ниже. Требуется обеспечить работу в обычном режиме на мониторе с возможностью запуска программ (tuxracer ;) с выводом на экран проектора, не мешая основной деятельности.

Итак, добавляем в /etc/X11/xorg.conf секции для описания монитора и проектора (Modeline, естественно, по вкусу):

Section "Monitor"
        Identifier   "MonitorSamsung"
        VendorName   "Samsung"
        ModelName    "SyncMaster 1200NF"
        HorizSync    30.0 - 121.0
        VertRefresh  50.0 - 185.0
        Option       "dpms"
# 92 Hz
        Modeline "1600x1200"  239 1600 1616 1808 2080  1200 1204 1207 1244 +HSync +VSync
# "2048x1536": 340.5 MHz, 120.2 kHz, 75.0 Hz
        Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -HSync +VSync
EndSection

Section "Monitor"
        Identifier      "MonitorProjector"
        VendorName      "Hitachi"
        ModelName       "PJ-TX100"
        HorizSync       30.0 - 97.0
        VertRefresh     50.0 - 100.0
        ModeLine "ATSC-720-60p"  74.25  1280 1320 1376 1648 720 722 728 751
        Modeline "1280x720_60"   74.25  1280 1352 1432 1648 720 725 730 750
        Modeline "1280x720_50"   74.25  1280 1680 1720 1976 720 725 730 750
        Modeline "1280x720_30"   74.25  1280 3000 3080 3304 720 725 730 750
        Modeline "1280x720_25"   74.25  1280 3660 3740 3960 720 725 730 750
        Modeline "1280x720_24"   74.25  1280 3824 3904 4128 720 725 730 750
EndSection

Теперь добавляем секции с описанием устройств (на самом деле это одно устройство, совмещение обеспечивается BusId, но номера экранов разные, значение BusId можно подсмотреть из старого X.0.log, может потребоваться NoDDC - иногда бывают проблемы с DDC (EDID) в двухканальном режиме):

Section "Device"
        Identifier  "NVIDIA GeForce 4 Ti 4200-8x Projector 0"
        Driver      "nvidia"
        BusId       "PCI:1:0:0"
        Screen      0
#       Option      "NoDDC" "on"
        Option      "NoLogo" "on"
        VendorName  "ASUS"
        BoardName   "V9280 TD"
        Option "ConnectedMonitor" "CRT-1"
EndSection

Section "Device"
        Identifier  "NVIDIA GeForce 4 Ti 4200-8x Projector"
        Driver      "nvidia"
        BusId       "PCI:1:0:0"
        Screen      1
#       Option      "NoDDC" "on"
        Option      "NoLogo" "on"
#       Option      "ExectModeTimingsDVI" "on"
        VendorName  "ASUS"
        BoardName   "V9280 TD"
        Option "ConnectedMonitor" "DFP-0"
EndSection

Описания экранов 0 и 1 для нашего будущего layout (имена устройств и мониторов должны соответствовать описанным выше):

Section "Screen"
        Identifier "Screen0Projector"
        Device     "NVIDIA GeForce 4 Ti 4200-8x Projector 0"
        Monitor    "MonitorSamsung"
        DefaultDepth     24
        SubSection "Display"
                Depth     24
                Modes    "2048x1536" "ATSC-720-60p" "1920x1440" "1600x1200" "1400x1050" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
EndSection

Section "Screen"
        Identifier "ScreenProjector"
        Device     "NVIDIA GeForce 4 Ti 4200-8x Projector"
        Monitor    "MonitorProjector"
        DefaultDepth    24
        SubSection "Display"
                Depth   24
                Modes   "ATSC-720-60p" "1280x720_60" "1280x720_50" "1280x720_30" "1280x720_25" "1280x720_24"
        EndSubSection
EndSection

И, наконец, объединяем всё вместе в нашей секции ServerLayout (пока не ставить её первой!):

Section "ServerLayout"
        Identifier     "LayoutCRTProjector"
        Screen  0       "Screen0Projector"
        Screen  1       "ScreenProjector" leftOf "Screen0Projector"
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Для экспериментов желательно перевести систему в режим текстовой загрузки и запускать X Window System вручную:

  1. init 3
  2. создаём ~/.xinitrc, содержащий строку: exec gnome-session
  3. редактируем /etc/X11/xorg.conf
  4. запускаем X командой:
    startx -- -logverbose 5 -layout LayoutCRTProjector
    
  5. DISPLAY=:0.1 tuxracer
  6. при неудаче смотрим результаты в /var/log/Xorg.0.log (для первой видеоплаты) и переходим к пункту 3

После успешной отладки переместить LayoutCRTProjector в начало файла, удалить (переименовать) ~/.xinitrc, перейти в графический режим: init 5.

Недостаток: видеоверлей работает только на первом экране, поэтому аппаратной регулировки яркости и контрастности не будет (а мой проектор отказывается регулировать яркость при подключении по DVI :(). Можно сделать его первым экраном, но могут быть проблемы с запуском программ по умолчанию на втором экране (до какого-то момента на втором экране даже WM не запускался самостоятельно). Мышка и клавиатура делятся между экранами - для игры это неудобно, а для просмотра фильмов можно использовать пульт ДУ.

Можно наделать много layout-ов для разных ситуаций: монитор и проектор, проектор и монитор (видеоверлей на проекторе), только монитор, только проектор, монитор и проектор в режиме TwinView, то же в сочетании с телевизором (см. ниже).

TV-out. Способ первый - без монитора

Простейший способ вывести изображение на телевизор - отключить монитор! При загрузке компьютера видеоплата обнаружив, что телевизор является единственным устройством, подключенным к ней, начинает выводить изображение (прямо с первого собщения BIOS) на TV-Out.

При подключении телевизора к компьютеру необходимо их предварительно обесточить (выдернуть вилки из розеток!) и вынуть антенный кабель (и не втыкать его обратно, пока не рассоедините телевизор и компьютер!).

Если вам достаточно для работы а/ц режима, то дальше можете не читать, все уже сделано. Для запуска X Window System на телевизоре необходимо дополнить файл /etc/X11/XF86Config (обязательно после стандартного Layout!)

Section "ServerLayout"
        Identifier      "LayoutTV"
        Screen          "ScreenTV"
        InputDevice     "Mouse0" "CorePointer"
        InputDevice     "Mouse1" "SendCoreEvents"
        InputDevice     "Keyboard0" "CoreKeyboard"
EndSection

# VendorName и ModelName подставляйте свои (ни на что не влияют)
Section "Monitor"
        Identifier      "MonitorTV"
        VendorName      "Philips"
        ModelName       "21PT166B/60"
        HorizSync       30.0 - 50.0
        VertRefresh     50.0 - 60.0
EndSection

# Device должен соответствовать Identifier в секции Device (описание см. выше)
Section "Screen"
        Identifier "ScreenTV"
        Device     "NVIDIA GeForce 2 GTS (generic)"
        Monitor    "MonitorTV"
        DefaultDepth    24
        SubSection "Display"
                Depth   24
# для телевизионного кодировщика Bt871, Connexant 25871, GeForce4 (?)
# (тип кодировщика можно узнать из файла /var/log/XFree86.0.log в строке "Detected TV Encoder")
# можно задать режим "1024x768"
                Modes   "800x600" "640x480"
        EndSubSection
# для адаптированных под Россию телевизоров именно PAL-B,
# хотя на моей плате задается джампером NTSC/PAL (на всякий случай ;)
	Option  "TVStandard" "PAL-B"
# "SVIDEO" или "COMPOSITE"
        Option  "TVOutFormat" "SVIDEO"
        Option  "ConnectedMonitor" "TV"
EndSection

Теперь можно запускать X и работать как на обычном мониторе, хотя и без удовольствия (фильмы смотрятся гораздо лучше, чем на мониторе):

startx -- -layout LayoutTv

TV-out. Способ второй - два X

Редактировать тексты, глядя на экран телевизора - невозможно, перезагружаться каждый раз, когда хочется посмотреть фильм - утомительно. Поэтому предлагается запустить два X сервера - каждый для своего устройства (напоминаю, что речь идет о GeForce 2, который не умеет выводить 2 независимых изображения). Конфигурация XF86Config совпадает с описанной в предыдущем разделе. Первый X сервер запускается как обычно (я запускаю его командой startx). Второй X сервер запускается командой (используется ключ -ac, потому что я не знаю другого способа снять защиту при такой форме запуска)

X -ac -layout LayoutTV :1

Теперь у нас "крутятся" сразу два X сервера с общей клавиатурой и мышкой. Переключения между ними производятся по нажатию Ctrl-Alt-F7 и Ctrl-Alt-F8 (предполагается наличие 6 виртуальных а/ц консолей, иначе клавиши будут другими). Закрывается сервер обычным сочетанием Ctrl-Alt-Backspace, главное не перепутать, какому серверу в момент нажатия принадлежит клавиатура.

Сразу после запуска "текущим" является второй сервер - ему принадлежит клавиатура, на его экран (телевизор) выводится изображение. Переключаемся обратно на первый сервер (Ctrl-Alt-F7) и запускаем, например, mplayer

DISPLAY=:1 mplayer -vo xv dvd://1

Пока он раскручивает диск, переключаемся на второй сервер (Ctrl-Alt-F8). По окончанию просмотра втрой сервер останавливать необязательно - он никому не мешает.

TV-out. Способ третий - nvtv

Преодолеть оставшееся чувство неудовлетворения поможет программа nvtv. Она позволяет гибко настраивать параметры вывода (вплоть до прямого доступа ко всем регистрам телевизионных кодировщиков и CRTC NVIDIA!) и выводить одновременно на монитор и телевизор для видеоплат без TwinView (к сожалению, одинаковое изображение). Не работает с GeForce3 и выше. Включена в состав xine.

Установка nvtv 0.4.3:

Для доступа к регистрам программе nvtv требуются либо права root (их можно обеспечить с помощью механизма suid или вспомогательного демона nvtvd), либо работающий драйвер NVIDIA (обеспечивается совместимость с версиями не старше 3123). Есть слухи, что nvtv работает с GeForce4, если тот проинициализирован фирменным драйвером. Исходный текст программы доступа к внутренним структурам драйвера NVIDIA (через /dev/nvidia*) представляет самостоятельный интерес. При использовании драйвера NVIDIA программу nvtv необходимо запускать после запуска X с ключом -N.

При запуске в графическом режиме nvtv предоставляет обширные (я бы даже сказал, что чрезмерно обширные) возможности по настройке формата вывода. Я рекомендую подсмотреть список режимов (закладка Mode, ключи -r и -s), доступных вашему ТВ кодировщику, а в дальнейшем использовать текстовый режим. Список режимов зависит от режима цветности, например, мой chrontel 7007 для SECAM выдает пустой список режимов. Включение вывода на телевизор одновремено с выводом на монитор и переход к разрешению 768x576:

nvtv -N -X -t -r 768,576 -s Large -S PAL -C SVHS

После этого изображение будет выводиться одновременно на телевизор и монитор. Монитор может не поддерживать выбранное разрешение и режим работы. В этом случае попробуйте другой режим. Например, мой монитор не любит режимы 800x600xLarge (обрезает картинку), 768x576xSmall (срывается кадр), 640x480xLarge (рекомендуемый для NTSC DVD 4:3 - мельтешение на экране, Small - нормально). Некоторые режимы невозможно смотреть ни на мониторе, ни на телевизоре (для меня такой режим - 800x450). Для нестандартных разрешений рекомендуется завести соответствующий Modeline в секции Monitor (основной монитор, не MonitorTV) и включить его в список Modes соответствующей подсекции Display, например (nvtv поменяет частоты синхронизации при использовании ключа -t)

  Modeline  "pal"  50.00  768 832 856 1000  576 590 595 630  -hsync -vsync
...
  Modes "1600x1200" "pal"

Виртуальное разрешение останется прежним (у меня 1600x1200), так что окно с фильмом приходится искать на этом бескрайнем поле и центрировать, а также бороться с излишним рвением некоторых программ к масштабированию и обеспечению "правильного" соотношения сторон (mplayer -noaspect). Надеюсь, что это умение придет к вам с опытом, описать это невозможно. Если ваш телевизор имеет возможность для просмотра широкоэкранных фильмов, то лучше использовать ее и выводить в режиме 4:3, чем использовать дискретное масштабирование плейера и режим вывода типа 800x450.

Выключение вывода на телевизор и возвращение исходного разрешения экрана:

nvtv -N -m -X -r 1600,1200

nvtv позволяет задавать в текстовом режиме множество параметров с помощью ключа --set (полный список и интервал значений выдается по nvtv -h, используемый ТВ кодировщик может поддерживать не все параметры):

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

TV-out. Способ четвертый - TwinView

GPU GeForce2 MX и GeForce4 имеют два CRTC и могут выводить 2 независимых изображения (с различным разрешением и частотой) на монитор и телевизор. Настройки задаются с помощью TwinView и не должны вызвать затруднений в простом случае (один монитор и один телевизор).

DPMS не работает на втором мониторе (ТВ) - может это и правильно?.

nvclock

Утилита nvclock позволяет изменить частоту работы GPU и памяти. Версия 0.6.2 неправильно показывает частоту памяти и "подвешивает" компьютер при попытке изменить что-либо на Ti 4200-8x.

Установка:

Утилита не сохраняет измененные значения частот в NVRAM, так что ее необходимо вызывать каждый раз после запуска X Windows (например, поместить в .xinitrc). Если запускать ее до X Windows, то требуются права root, а модуль nvidia может сбросить изменения. Ключи запуска:

Не все значения частоты памяти возможны, например у меня они устанавливаются с шагом 7 МГц (утилита сообщает реально установленную частоту). Утилита имеет свои представления о максимально возможных частотах. Их можно преодолеть с помощью ключа -f, но я не советую. Рекомендуется постепенно повышать частоту GPU (пока компьютер не зависнет ;), затем перезагрузиться и постепенно повышать частоту памяти (пока опять не зависнет ;). Не рекомендуется работать постоянно на максимально возможной частоте - это сильно сокращает время жизни видеоплаты и может привести к зависаниям при повышении температуры за бортом в самый неподходящий момент.

У меня получилось поднять частоты с 200/401 до 228/451 МГц (при этом используются ключи -n 228 -m 449). glxgears ускорилась с 1225 fps (87 fps при 1600x1200) до 1425 fps (101 fps при 1600x1200). Правда, через некоторое время я заметил зелёные точки на серых полях и понизил частоту памяти до 415 MHz. x11perf (-all требует 3 часов работы, запускать на только что загруженном компьютере, необходимо убить процесс xscreensaver, отключить запуск updatedb и прочих программ, освободить левый верхний угол 800x800) отчетливо показывает какие операции выполняются CPU (не ускоряются совсем), GPU (ускоряются в 228/200 раза). Некоторые операции ведут себя странно. Например, putimagexy и getimagexy временно блокируют компьютер (5 секунд на квадрат 500x500).

Сенсоры и TV-In

Для видеокарт с аппаратным контролем возможно извлечь значения температуры и частоты вращения вентилятора с помощью пакета rivatv. Основное назначение пакета - видеозахват, но в этом качестве я его не пробовал. (о видео захвате с помощью AverMedia TVPhone98 или аналогичных карт на Bt848/878 смотрите мою статью).

Установка:

Параметры модуля rivatv

При запуске sensors-detect ошибочно ссылается на пакет rivatv как i2c-riva (в исходных текстах действительно есть i2c-riva.c, но при сборке он включается в rivatv.o)

  Use driver `i2c-riva' for device 01:00.0: GeForce2 GTS
  Load `i2c-riva' (say NO if built into your kernel)? (YES/no)

Далее следуете всем указаниям, которые выдает sensors-detect. Пример моей борьбы (борьбы, потому что поддержка I2C реализована в Linux отвратительно) с датчиками смотрите в описании установки Red Hat 8.0.

Если все сделано правильно, то программа sensors среди прочей информации выдает (устройства с 1-50 по 1-57 - это нераспознанная информация: то ли настройка самой видеокарты, то ли настройка внешнего чипа TV-Out Chrontel 7007)

eeprom-i2c-1-50
Adapter: NVIDIA display adapter bus 0
Algorithm: Bit-shift algorithm
...
eeprom-i2c-1-57
Adapter: NVIDIA display adapter bus 0
Algorithm: Bit-shift algorithm

w83781d-i2c-0-2d
Adapter: NVIDIA display adapter bus 1
Algorithm: Bit-shift algorithm
VCore 1:   +2.04 V  (min =  +0.00 V, max =  +0.00 V)       ALARM
VCore 2:   +1.52 V  (min =  +0.00 V, max =  +0.00 V)       ALARM
+3.3V:     +3.34 V  (min =  +2.97 V, max =  +3.63 V)
+5V:       +4.89 V  (min =  +4.50 V, max =  +5.48 V)
+12V:     +11.97 V  (min = +10.79 V, max = +13.11 V)
-12V:      -0.14 V  (min = -13.18 V, max = -10.78 V)       ALARM
-5V:       -0.06 V  (min =  -5.48 V, max =  -4.50 V)       ALARM
fan1:     7670 RPM  (min = 3000 RPM, div = 2)
fan2:        0 RPM  (min = 3000 RPM, div = 2)              ALARM
fan3:        0 RPM  (min = 3000 RPM, div = 2)              ALARM
temp1:       +53°C  (limit =  +60°C, hysteresis =  +50°C)
temp2:     +53.0°C  (limit =  +60°C, hysteresis =  +50°C)
temp3:     +42.5°C  (limit =  +60°C, hysteresis =  +50°C)
vid:      +0.000 V

Ссылки

@ Карта сайта News Автора!

Bog BOS: Linux и NVIDIA: драйверы, TV-Out, датчики, TV-In, разгон

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru