Ключевые слова:nvidia, video, tvout, xorg, (найти похожие документы)
From: hatred <hatred@iatp.festu.ru.>
Date: Mon, 23 Feb 2004 18:21:07 +0000 (UTC)
Subject: Настройка TV-OUT на GeForce4
Оригинал: http://linux.pk.ru/phorum/read.php?f=5&i=3&t=3
Долго я сидел на старой карте S3 Trio 64V+ с двумя метрами на борту -
для работы ее хватало за глаза, но ведь иногда и поиграть хочеться, и вот
подкопив денег купил безымянный GeForce4 с TV выходом...
И тут началось...
Первое с чем я столкнулся было то что со стандартными дровами GeForce не
многим отличается от моей старенькой S3 :) Проблема данная решается довольно
просто: на сайте nvidia.com сливаете драйвера и устанавливаете их, следуя
инструкциям в README (для слабых в английском рекомендую запастись словарем).
Как ставить я рассказывать не буду по двум причинам: 1. это просто и 2. про
это много написано, скажу лишь то, что перед этим следует выйти их иксов!
После этого, вдоволь наигравшись в UnrealTournament и Quake 3 мне захотелось
нормально смотреть фильмы, т.е. развалившись на диване, на приличной диагонали
и со стерео-звуком %), т.е. вы правильно поняли - подключить телевизор к видеокарте.
И началась череда чтения манов, точнее для всего достаточно README от
драйверов карты, но раз вы это читаете, значит вам или лень его
смотреть, либо у вас действительно большие проблемы с языком :) .
Первое что я решил сделать - это TwinView - т.к. просто :)
Покопавшись в README нашел какими опциями в /etc/X11/XF86Config можно его
включить. Мои настройки свелись к тому что TwinView включается по-дефолту,
когда стартуют иксы и если подключен телевизор на Tv-выход.
Все что надо для включения TvinView, это добавить следующие опции в секцию
"Device" (в которой описывается ваша видео-карта, далее идентификатор этой
секции будет card0), имеющее отношение к тв-выходу помечено *:
Section "Device"
Identifier "card0" # Идентификатор секции
Driver "nvidia" # это драйвер
VideoRam 65536 # сколько памяти на борту
VendorName "nvidia"
BoardName "GeForce 4 MX440 SDR TV-OUT"
Option "AGPMode" "4" # использовать AGP 4
Option "OverclockMem"
Option "HWcursor" # использовать аппаратный курсор
Option "RenderAccel" "on" # включить некоторое ускорение
#Option "CursorShadow" "on" # тень для курсора, баловство :)
#Option "CursorShadowAlpha" "200" # насколько тень сдвинута
Option "ConnectedMonitor" "TV" # * что у нас подключено как 2 монитор
# TV-телевизор
Option "TVOutFormat" "COMPOSITE" # * Тип выходного сигнала COMPOSITE - для
# "тюльпана", для s-video - SVIDEO
Option "TVStandard" "NTSC-M" # * Тип сигнала: см. README от драйверов
Option "SecondMonitorHorizSync" "30-50" # * диапазон горизонтальной развертки
Option "SecondMonitorVertRefresh" "60" # * Частота вертикальной развертки, почти на всех
# TV 60Hz
Option "TwinView" # * включаем TvinView
Option "TwinViewOrientation" "Clone" # * Что будем на телевизоре показывать: Clone -
# клонируем, остальные опции в README
# соответствие разрешений монитора, разрешению телевизора, первое
# разрешение в паре - для монитора, вторая - для телевизора
Option "MetaModes" "1024x768m,512x384; 800x600,512x384; 640x480,512x384"
EndSection
После всех этих не хитрых манипуляций, при запуске иксов на телевизоре будет отображаться
та же картинка что и на основном мониторе, для чего это надо решайте сами :)
Но самое интересное не это, подключить телевизор, как второй
полноценный монитор, и использовать его соответственно.
И так, для начала создадим еще одну секцию "Monitor" с таким
содержанием:
Section "Monitor"
Identifier "Monitor1"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30.0 - 50.0
VertRefresh 60.0
EndSection
Я предполагаю, что основной монитор у вас имеет идентификатор Monitor0
Параметры HorizSync и VertRefresh установите такими как указано в
паспорте на ваш телевизор, хотя скорее всего они будут такими же.
Следующим шагом будет дублирование секции "Device", но с учетом того
что все что касается TwinView брать. Всего нужно нужно будет создать еще 2 секции, с
примерно таким содержанием:
Section "Device"
Identifier "card1" # Идентификатор карты
Driver "nvidia"
VideoRam 65536
VendorName "nvidia"
BoardName "GeForce 4 MX440 SDR TV-OUT"
Option "AGPMode" "4"
Screen 0 # Это обязательно, указывает на номер экрана который будет
# отображаться на мониторе (0) или телевизоре (1)
EndSection
Section "Device"
Identifier "card2" # Идентификатор карты
Driver "nvidia"
VideoRam 65536
VendorName "nvidia"
BoardName "GeForce 4 MX440 SDR TV-OUT"
Option "AGPMode" "4"
Screen 1 # Это обязательно, указывает на номер экрана который будет
# отображаться на мониторе (0) или телевизоре (1)
EndSection
После этого создаем еще 2 секции "Screen", одну для монитора, и другую
для телевизора:
Section "Screen"
Identifier "Screen1" # Идентификатор экрана
Device "card1" # Идентификатор карты
Monitor "Monitor0" # Идентификатор основного монитора
DefaultDepth 16
SubSection "Display"
Depth 16
# строку Modes укажите какую вам нужно
Modes "1024x768" "800x600" "640x480" "640x400" "480x300" "400x300" "320x240" "320x200"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen2"
Device "card2"
Monitor "Monitor1"
DefaultDepth 16
SubSection "Display"
Depth 16
# Разрешение экрана телевизора
Modes "640x480"
EndSubSection
# Опции ниже уже встречались при настройке TwinView
Option "TVStandard" "NTSC-M"
Option "ConnectedMonitor" "TV"
Option "TVOutFormat" "COMPOSITE"
EndSection
И наконец создаем еще одну секцию "ServerLayout":
Section "ServerLayout"
Identifier "TV"
Screen 0 "Screen1" 0 0
Screen 1 "Screen2" RightOf "Screen1" # Позицию относительно друг друга смотрите
# man XF86Config
InputDevice "Mouse0" "CorePointer"
InputDevice "Mouse1" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Все! теперь стартуем иксы так:
$ startx -- -layout TV
И когда подведем курсор мыши к правому краю экрана он перескочит на
экран телевизора.
Чтобы запустить приложение на экране телевизора нужно передавать
программам следующий параметр:
-display :0.1 (это верно для всех программ для X11)
Удобно покажется запустить на экране телевизора свой оконный менеджер,
для этого нужно прописать, к примеру, в ~/.xinitrc следующее:
exec icewm -display :0.1 & # Запустим icewm на экране телевизора
exec icewm # его же, но на основном мониторе
После всего этого можно спокойно запускать на телевизоре mplayer и
смотреть кино, при этом набивая курсовую в OpenOffice на мониторе :)
ПРИЛОЖЕНИЕ А.
Пример моего XF86Config
# File generated by anaconda.
Section "ServerLayout"
Identifier "Anaconda Configured"
Screen 0 "Screen2" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Mouse1" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerLayout"
Identifier "TVR"
Screen 0 "Screen3" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Mouse1" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerLayout"
Identifier "TV"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Mouse1" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
# The location of the RGB database. Note, this is the name of the
# file minus the extension (like ".txt" or ".db"). There is normally
# no need to change the default.
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
FontPath "inet/127.0.0.1:7101"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
#Load "fbdevhw"
#Load "dri"
Load "glx"
Load "record"
#Load "freetype"
#Load "type1"
EndSection
Section "InputDevice"
Option"AutoRepeat""1 500"
# when using XQUEUE, comment out the above line, and uncomment the
# following line
#Option"Protocol""Xqueue"
# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
#Option"Xleds""1 2 3"
# To disable the XKEYBOARD extension, uncomment XkbDisable.
#Option"XkbDisable"
# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults). For example, for a non-U.S.
# keyboard, you will probably want to use:
#Option"XkbModel""pc102"
# If you have a US Microsoft Natural keyboard, you can use:
#Option"XkbModel""microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
#Option"XkbLayout""de"
# or:
#Option"XkbLayout""de"
#Option"XkbVariant""nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
#Option"XkbOptions""rwin:swapcaps"
Option"XkbOptions""grp:rwin_toggle,grp_led:scroll"
Identifier "Keyboard0"
Driver "keyboard"
#Option "XkbSymbols" "ru(winkeys)"
#Option "XkbGeometry" "microsoft(natural)"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc105"
Option "XkbLayout" "ru(winkeys)"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/psaux"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "no"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30.0 - 64.0
VertRefresh 50.0 - 100.0
Option "dpms"
# my 1024x768 @ 80.84 Hz, 64.59 kHz hsync
# оттюнингованная строчка моделайн: 80.84 Гц развертки против 75 Гц
Modeline "1024x768m" 85.00 1024 1032 1152 1316 768 772 775 799
# 1152x864 @ 100 Hz, 89.62 kHz hsync
Modeline "1152x864" 137.65 1152 1184 1312 1536 864 866 885 902 -HSync -VSync
# 1152x864 @ 60 Hz, 53.5 kHz hsync
Modeline "1152x864" 89.9 1152 1216 1472 1680 864 868 876 892 -HSync -VSync
# 1152x864 @ 70 Hz, 62.4 kHz hsync
Modeline "1152x864m" 92 1152 1208 1368 1474 864 865 875 895
# 1152x864 @ 78 Hz, 70.8 kHz hsync
Modeline "1152x864" 110 1152 1240 1324 1552 864 864 876 908
# 1152x864 @ 84 Hz, 76.0 kHz hsync
Modeline "1152x864" 135 1152 1464 1592 1776 864 864 876 908
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30.0 - 50.0
VertRefresh 60.0
EndSection
Section "Device"
Identifier "card0"
Driver "nvidia"
VideoRam 65536
VendorName "nvidia"
BoardName "GeForce 4 MX440 SDR TV-OUT"
Option "AGPMode" "4"
#Option "OverclockMem"
Option "DRI"
BusID "PCI:1:0:0"
#Option "Dac8bit" "on"
Option "RenderAccel" "on"
Option "CursorShadow" "on"
Option "CursorShadowAlpha" "200"
#Option "ConnectedMonitor" "crt,tv"
#Option "ConnectedMonitor" "TV"
#Option "TVOutFormat" "COMPOSITE"
#Option "TVStandard" "NTSC-M"
#Option "SecondMonitorHorizSync" "30-50"
#Option "SecondMonitorVertRefresh" "60"
#Option "TwinView"
#Option "TwinViewOrientation" "Clone"
#Option "MetaModes" "1024x768m,512x384; 800x600,512x384; 640x480,512x384"
Screen 0
EndSection
Section "Device"
Identifier "card1"
Driver "nvidia"
VideoRam 65536
VendorName "nvidia"
BoardName "GeForce 4 MX440 SDR TV-OUT"
Option "AGPMode" "4"
#Option "DRI"
BusID "PCI:1:0:0"
Option "HWcursor"
Option "RenderAccel" "on"
#Option "CursorShadow" "on"
#Option "CursorShadowAlpha" "200"
Screen 1
EndSection
Section "Device"
Identifier "card2"
Driver "nvidia"
VideoRam 65536
VendorName "nvidia"
BoardName "GeForce 4 MX440 SDR TV-OUT"
Option "AGPMode" "4"
#Option "OverclockMem"
Option "DRI"
BusID "PCI:1:0:0"
Option "HWcursor"
#Option "Dac8bit" "on"
Option "RenderAccel" "on"
#Option "CursorShadow" "on"
#Option "CursorShadowAlpha" "200"
Option "ConnectedMonitor" "crt,tv"
Option "ConnectedMonitor" "TV"
Option "TVOutFormat" "COMPOSITE"
Option "TVStandard" "NTSC-M"
Option "SecondMonitorHorizSync" "30-50"
Option "SecondMonitorVertRefresh" "60"
Option "TwinView"
Option "TwinViewOrientation" "Clone"
Option "MetaModes" "1024x768m,512x384; 800x600,512x384; 640x480,512x384"
EndSection
Section "Screen"
Identifier "Screen0"
Device "card0"
Monitor "Monitor0"
DefaultDepth 16
Option "IgnoreEDID" "true"
SubSection "Display"
Depth 16
Modes "1024x768m" "800x600" "640x480" "640x400" "480x300" "400x300" "320x240" "320x200"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen2"
Device "card2"
Monitor "Monitor0"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1024x768m" "800x600" "640x480" "640x400" "480x300" "400x300" "320x240" "320x200"
EndSubSection
EndSection
# Телевизор
Section "Screen"
Identifier "Screen1"
Device "card1"
Monitor "Monitor1"
#Device "card0"
#Monitor "Monitor0"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "640x480"
#Modes "400x300"
EndSubSection
Option "IgnoreEDID" "true"
Option "TVStandard" "NTSC-M"
Option "ConnectedMonitor" "TV"
Option "TVOutFormat" "COMPOSITE"
EndSection
Section "Screen"
Identifier "Screen3"
Device "card0"
Monitor "Monitor0"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "400x300"
#Modes "400x300"
EndSubSection
Option "IgnoreEDID" "true"
Option "TVStandard" "NTSC-M"
#Option "ConnectedMonitor" "crt,tv"
Option "ConnectedMonitor" "TV"
Option "TVOutFormat" "COMPOSITE"
Option "SecondMonitorHorizSync" "30-50"
Option "SecondMonitorVertRefresh" "60"
EndSection
Section "DRI"
Mode 0666
EndSection