{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

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):

# XFree86 -configure

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.
# mv /root/XF86Config.new /root/XF86Config.new0

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.
#   Oto przykładowy plik konfiguracyjny:

#########################################################################
#                                                                  
# 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        
#       
###########################################################

Autor: 
Mariusz Pilipczuk
Porozmawiaj o tym artykule na forum: 

quex, wt., 26/02/2008 - 22:29