Dualhead na Radeonie, XFree86 i FreeBSD
Aby używać dwóch monitorów pod X-ami na Radeonie, wystraczy zmodyfikować odpowiednio plik konfiguracyjny /etc/XF86Config.
Oczywiście sama karta musi obsługiwać tryb dwumonitorowy, najlepiej upewnijcie się u sprzedawcy czy dany model to potrafi. Chip graficzny powinien być w wersji VE (ale nie jest to reguła). Ja posiadam "jakąś" chińską produkcję z chipem 7500 i 3 gniazdami wyjściowymi: analogowe SVGA, cyfrowe DVI i S-Video (TVout). Wypróbowałem także z powodzeniem kartę graficzną 7000VE, która posiadała wyjścia: SVGA i TVout (chinch) a drugie wyjście SVGA było montowne na dodatkowym "śledziu". Nas interesują gniazda SVGA i DVI. Jeśli oba monitory są podłączane poprzez analogowe VGA będzie nam potrzebna przejściówka DVI/VGA (część markowych kart posiada taką przejściówkę w komplecie). Monitor, który pod X-ami ma być monitorem podstawowym musi być podłączony do gniazda DVI (odwrotnie niż w MSWindows). Ale można zamienić monitory wpisem określającym kolejność monitorów (wyjaśnienie poniżej). Niestety przy stosowaniu przejściówki DVI/VGA i wyszszych głębiach kolorów (16 bitów i więcej) na monitorze pojawia lekkie zniekształcenie obrazu, trochę podobne do efektu "moire", być może winna jest przejściówka lub niemarkowa karta graficzna. Muszę jeszcze dodać, że im większa głębia - tym większe zniekształcenia.
Zanim podłączyłem oba monitory nie znałem ich możliwości, tzn, maksymalnej rozdzielczości i częstotliwości odświerzania. Podłączałem więc po kolei moniory do gniazda VGA i komendą (jako root):
stworzyłem dla nich osobne pliki konfiguracyjne. Pamiętajcie, że plik zrzucany jest zawsze pod tą samą nazwą, więc gdy za drugim razem będziecie uruchamiać X-y z flagą -configure nadpiszecie stary plik konfiguracyjny. Dlatego warto zaraz za pierwszym razem zmienić jego nazwę, np.
Następnie uruchamiałem "gołe" X-y (można uruchamiać razem z jakimś desktopem, ale mi zależało na czasie) i dla każdego z nich i z konsoli xterma uruchamiałem narzędzie xvidtune, które zaraz po uruchomieniu wyświetla synchronizację poziomą i pionową a po naciśnięciu przycisku show, wartości jakie wpisać należy do linii ModeLine. Następnie połączyłem oba pliki konfiguracyjne w jeden i zmieniłem identyfikację (monitor0, monitor1, Screen0.... itd.). Warto tutaj dodać, że monitory mogą pracować w różnych rozdzielczościach i częstościach odświerzania. ale głębia kolorów musi pozostać taka sama.
#########################################################################
#
# file: /etc/XF86Config
# desc: dualhead on Radeon and FreeBSD
# hardware:
# vga: Radeon 7500 (1xDVI,1xSVGA, 1xS-Video)
# monitor0: Philips 105S + analog adapter DVI/VGA
# monitor1: IBM G51
# date: 07.08.2003
# author: Mariusz Pilipczuk
# e-mail: marpil@wp.pl
#
#########################################################################
Section "ServerLayout"
Identifier "Simple Layout"
Screen 0 "Screen 0"
# Poniżej znajduje się wpis określający po której "stronie"
# znajduje się drugi monitor. Dostępne opcje:
# Rightof, Leftof, Below, Above
Screen 0 "Screen 1" Rightof "Screen 0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
# Mechanizm Xinerama rozszerza nasz desktop o szerokość następnego
# monitora, dzięki czemu można przemieszczać okna z jednego monitora
# na drugi. Blokując tą linie będziesz uruchamiał 2 niezależne desktopy
# - możliwe będzie tylko przemieszczanie myszki.
# I tutaj już tylko jeden krok do 2 klawiatur i 2 myszek ;).
Option "Xinerama"
EndSection
Section "Module"
Load "dbe"
Load "dri"
Load "extmod"
Load "glx"
Load "record"
Load "xtrap"
Load "speedo"
Load "type1"
Load "freetype"
EndSection
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/local/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/URW"
FontPath "/usr/X11R6/lib/X11/fonts/TTF"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath "/usr/X11R6/lib/X11/fonts/latin2/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/latin2/100dpi"
FontPath "/usr/X11R6/lib/X11/fonts/latin2/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/latin2/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/non-cjk"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "Keyboard"
Option "XkbModel" "pc104"
Option "XkbLayout" "pl"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
EndSection
Section "Monitor"
Identifier "PHL"
HorizSync 30-60
VertRefresh 50-120
# Poniższa linia może zastąpić dwie powyższe.
# ModeLine "1024x768" 78.80 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
Option "DPMS"
EndSection
Section "Monitor"
Identifier "IBM"
HorizSync 30-54
VertRefresh 55-100
Option "DPMS"
EndSection
# Sterownik "ati" można zastąpić sterownikiem "radeon".
Section "Device"
Identifier "Radeon0"
Driver "ati"
BusID "PCI:1:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Radeon1"
Driver "ati"
BusID "PCI:1:0:0"
Screen 1
EndSection
# Głębia kolorów na obu Screenach musi być taka sama.
Section "Screen"
Identifier "Screen 0"
Device "Radeon0"
Monitor "PHL"
DefaultDepth 16
Subsection "Display"
Depth 16
Modes "1024x768"
# Modes "800x600"
EndSubsection
EndSection
Section "Screen"
Identifier "Screen 1"
Device "Radeon1"
Monitor "IBM"
DefaultDepth 16
Subsection "Display"
Depth 16
# Modes "1024x768"
Modes "800x600"
# Modes "640x480"
EndSubsection
EndSection
###########################################################
#
# Koniec pliku /etc/XF86Config
#
###########################################################
quex, wt., 26/02/2008 - 22:29
