12. 01

Ich habe von meinen Eltern zu Weihnachten einen schicken 16:10-TFT bekommen, welcher natürlich auch Digital angesteuert gehört. Und dann bitte auch in seiner nativen Auflösung von 1680x1050 Pixel. Aber genau das führte zu viel Kopfzerbrechen - der Xserver startete immer nur in 1280x1024 oder auch 1024x768 :/

Nun hatte ich zwar passende Einstellungen in der xorg.conf, aber diese haben keinen Effekt gehabt:

Section "Screen"        
        Identifier      "Default Screen"
        Device          "NV15"
        Monitor         "SyncMaster"
        DefaultDepth    16
        SubSection "Display"
                Depth           16
                Modes           "1680x1050" 
        EndSubSection                                                         
        SubSection "Display"
                Depth           24
                Modes           "1680x1050"
        EndSubSection
EndSection
Es fand sich auch keine brauchbare Fehlermeldung in der /var/log/Xorg.0.log – bis ich irgendwo den Parameter für das Debug-Level des Xservers fand: startx -- -logverbose 5 Nun hatte ich auch das erste mal eine brauchbare Aussage in der Logdatei, woran es denn liegt:
[...]
(--) NVIDIA(0): Connected display device(s) on GeForce FX 5200LE at
(--) NVIDIA(0):     PCI:1:0:0:
(--) NVIDIA(0):     Samsung SyncMaster (DFP-0)
(--) NVIDIA(0): Samsung SyncMaster (DFP-0): 135.0 MHz maximum pixel clock
[...]
(--) NVIDIA(0): Detailed Timings:
(--) NVIDIA(0):   1680 x 1050 @ 60 Hz
(--) NVIDIA(0):     Pixel Clock      : 146.25 MHz
[...]
Für diese Auflösung wird eine Pixelrate von über den 135Mhz, den die Grafikkarte maximal liefern kann, benötigt. Und somit muss es mich nicht wundern, dass es nicht tut. Aber damit gab ich mich nicht zufrieden...

Bei Wikipedia im Artikel über DVI hatte ich etwas über reduced Blanking gehört. Hier wird letzten Endes bei der Übertragung der Signale an den Monitor die Pause, in welcher ein normaler CRT seinen Elektronenstrahl von der rechten an die linke Seite zurückbewegt, ausgelassen. Dadurch bekommt man logischerweise mehr Informationen in der gleichen Zeit. Nun musste ich der Grafikkarte noch klar machen, dass sie auch reduced Blanking verwenden soll. Sämtliche Timingparameter werden bei xorg über so genannte Modelines gesteuert, sofern sie nicht vom Xserver berechnet werden. Aber das hat bei mir ja, wie man sah, nicht geklappt. Durch füttern von Suchmaschinen mit passenden Begriffen stieß ich letzten Endes auf CVT, einen paar Zeilen C-Code, die genau diese Aufgabe erledigen:

.-(/tmp)----------------------------------------------------------------------(moritz@denkpfad)-
`--> gcc cvt.c -o cvt -lm -Wall 
.-(/tmp)----------------------------------------------------------------------(moritz@denkpfad)-
`--> ./cvt 1680 1050 60 -r                                                           
  # 1680x1050 @ 60.00 Hz Reduced Blank (CVT)
  #   field rate 59.88 Hz; hsync: 64.67 kHz; pclk: 119.00 MHz
  Modeline "1680x1050_60.00_rb"  119.00  1680 1728 1760 1840  1050 1053 1059 1080  +HSync -Vsync

Theorethisch hatte ich nun meine Modeline mit einer Pixelrate von für die Grafikkarte machbaren 119Mhz, aber am Verhalten des Xservers hatte sich immer noch nichts geändert - bis auf die Fehlermeldung:

(WW) NVIDIA(0): Mode "1680x1050_60.00_rb" is too large for Samsung SyncMaster
(WW) NVIDIA(0):     (DFP-0); discarding.
Auf Verdacht habe ich nun in Richtung Grafiktreiber gesucht, und in der Dokumentation zu NVidias Treiber wurde ich nun auch fündig:
Option "ExactModeTimingsDVI" "boolean"
Forces the initialization of the X server with the exact timings specified in the ModeLine. Default: false (for DVI devices, the X server initializes with the closest mode in the EDID list).
Ich zwinge ihn nun also, genau die Parameter aus der Modeline zu verwenden - und siehe da, es geht!

Tags für diesen Artikel: ,

Trackbacks


Keine Trackbacks

Kommentare

Ansicht der Kommentare: (Linear | Verschachtelt)

Cool! In der Tat haben anscheinend viele FX Karten 'nen billigen TMDS encoder gekriegt.

Ich musste nur noch die

Option "ModeValidation" "NoDFPNativeResolutionCheck"

dazu eintragen, sonst hat sich der
Treiber geweigert 1680x1050 zu
akzeptieren.

P.S. Der windoofs user sieht diesmal voll in die rohre :-)
#1 reicht hier noch nit am 22.11.2007 20:47
Hallo,
bei mir war noch etwas mehr notwendig bis es klappte:
Section "Monitor"
Option "ReducedBlanking" Option "ModeValidation" "NoMaxPClkCheck"
Option "ExactModeTimingsDVI" "true"
Modeline "1680x1050_60.00_rb" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +HSync -Vsync
Option "PreferredMode" "1680x1050_60.00_rb"
EndSection

Section "Screen"
...
SubSection "Display"
# Virtual 1680 1050
Viewport 0 0
Depth 24
Modes "1680x1050"
EndSubSection
EndSection
#2 Anonym am 05.01.2008 22:38
#3 rabe (Homepage) am 06.01.2008 22:30

Kommentar schreiben


Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Pavatar, Gravatar, MyBlogLog, Monster ID, Pavatar Autoren-Bilder werden unterstützt.
HTML-Tags werden in ihre Entities umgewandelt.
BBCode-Formatierung erlaubt
 
 


Tags

Blog abonnieren

Fnord


Github
Google+

Impressum

Verwaltung des Blogs