Forum: Mikrocontroller und Digitale Elektronik Darstellungsfehler mit LVDS


von Günter (Gast)


Lesenswert?

Hi,

ich hab mir ein 10,4Zoll Toshiba LMT10C286 geholt und es per LVDS mit 
einem Asus AT4NM10-I verbunden. Die Grafikkarte ist eine Intel GMA 3150. 
Hat auch alles super funktioniert. Nun hab ich aber das Problem das die 
Auflösung nicht richtig dargestellt wird obwohl ich die native Auflösung 
des Displays eingestellt habe (800x600). Wenn ich das Seitenverhältnis 
ändere passt es von der höhe aber links wird ein breiter schwarzer 
Balken angezeigt und das Bild ist nach rechts verschoben.

Könnte das ganze etwas mit der Pixel Clock zutun haben oder mit der H 
und Vsync Rate?

Danke für eure Hilfe

mfg Günter

von Achim M. (minifloat)


Lesenswert?

Polarität der H-Sync-Signale ist falsch. es wird "auf die falsche Flanke 
geschaut". Der Impuls könnte zu lang sein, weswegen bei der falschen 
Flanke erst Bilddaten rein geschoben werden.
mfg mf

von Günter (Gast)


Lesenswert?

Danke für deine schnelle antwort leider wirft die mehr fragen auf.
Muss das irgendwie in den Treibern einstellen bzw im OS? Oder hab ich da 
was am Stecker verpolt?

von red claw (Gast)


Lesenswert?

was hast du den für ein Betriebsystem?

von Günter (Gast)


Lesenswert?

Linux

von red claw (Gast)


Lesenswert?

Ok ich habe keine Ahnung

von Tobyas (Gast)


Lesenswert?

Mini Float hat schon recht mit dem falschen horizontalem Timing.
Das ist der Fall, wenn das Display-Timing nicht VESA-kompatibel ist.
Beim LVDS selber liegt das Problem dann am falschen DE-Sync Signal,
da hier H+V-Sync kombiniert sind und als Datum (DE-Sync Bit) mit
übertragen wird.

Wenn dem so ist, musst du X11 nur die korrekten Timings aus dem
Datenblatt des Displays mitgeben. Dazu einen 'Mode' in der
Sektion 'Monitor' der Datei /etc/X11/xorg.conf hinzufügen
und diesen 'Mode' in der Sektion 'Screen' auch hinzufügen.
1
z.B.    Mode "960x540p"
2
                DotClock 37.26
3
                HTimings 960 976 1008 1104
4
                VTimings 540 542 548 563
5
                Flags "+HSync" "+VSync"
6
        EndMode

siehe auch
  http://www.x.org/archive/X11R6.8.1/doc/xorg.conf.5.html#sect9

Beispiel (für HD video wie oben gezeigt):
  http://wilsonet.com/mythtv/xorg.conf-HD.txt

Zu Schade nur, dass es zu deinem Display kein Datenblatt gibt.
Das liegt entweder daran, dass es kundenspezifisch ist oder du die
falsche Nummer abgelesen hast. ;-)
Also musst du wohl von den 'normalen' (VESA) Timing-Werten ausgehen
(s.u.) und ein bischen herumprobieren mit dem H-Sync, bis es passt.

http://www.xfree86.org/3.3.6/Config7.html
1
# VESA 800x600@60Hz Non-Interlaced mode
2
# Horizontal Sync = 37.9kHz
3
# Timing: H=(1.00us, 3.20us, 2.20us) V=(0.03ms, 0.106ms, 0.61ms)
4
#
5
# name        clock   horizontal timing     vertical timing      flags
6
 "800x600"     40      800  840  968 1056    600  601  605  628 +hsync +vsync

Wichtig ist, dass du vorher ein Backup von der xorg.conf machst
und weißt wie du die Datei editierst, wenn du mal nicht funktionierende
Timing Settings einstellst...

von red claw (Gast)


Lesenswert?

Vielen Dank Tobyas. Du hast recht ich habe mich beim LCD verschrieb (ich 
idiot -.-) es heißt natürlich LTM10C286. Ich hab auf dieser Seite 
http://tech.groups.yahoo.com/group/linux-on-portege/message/191 eine 
Xorg.conf gefunden. Da hat einer die Xorg von seinem Labtop gepostet 
kann ich die einfach so verwenden?

von Tobyas (Gast)


Lesenswert?

Ja, mit LTM10C286 findet man wenigstens heraus, dass es angeblich in ein 
Toshiba Portege 3010CT reingehört. Somit sollte die von dir gefundene 
xorg.conf funktionieren. Du solltest aber nur die relevanten Zeilen in 
deiner xorg.conf ändern.

Also das hier in der Section "Monitor" eintragen.
(Wird wahrscheinlich Identifier "Default Monitor" sein.)
1
HorizSync 30-64
2
VertRefresh 50-100
3
# 800x600 @ 100 Hz, 64.02 kHz hsync
4
Modeline "800x600" 69.65 800 864 928 1088 600 604 610 640
5
-HSync -VSync

Und in Section "Screen" Modes passend ändern.
1
Modes "800x600"

Ich denke übrigens, dass die genannte xorg.conf nicht 100% korrekt ist. 
Dort wird DefaultColorDepth 16 gesetzt. Das Notebook (und damit das 
Display) hat aber angeblich 24bit Farbtiefe. 16 währe auch entsetzlich. 
;-)
Außerdem sind 100 Hz wahrscheinlich auch nicht notwendig. Aber was 
solls.

von Günter (Gast)


Lesenswert?

Danke ich probiers gleich morgen früh aus ich mach jetzt schon 4 tage am 
Stück an dem Ding rum. Es soll übrigends hinterher eine Stereoanlage 
werden mit Touchscreen die 2 Endstufen und das Gehäuse hab ich schon.

mfg Günter

von Günter (Gast)


Angehängte Dateien:

Lesenswert?

Also ich weiß nicht woran es liegt aber es scheint meine modeline nicht 
zu übernehmen. Was auch seltsam ist das die größe in der Log datei 
übernommen wird aber wenn ich xrandr eingebe steht wieder 0mm x 0mm. 
Auch die Frequenz ist irgendwie immer auf 40.00 obwohl sie eigentlich 
auf 69.65 sein sollte. Habt ihr vielleicht ne idee was ich falsch mache.

von Tobyas (Gast)


Lesenswert?

Übernommen wurde deine modline schon. (Zeile 247) Es wird aber eine der 
anderen modlines ausgewählt. Und zwar die aus Zeile 257 im Logfile
1
(II) intel(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz)

Beide heißen ja "800x600". Wie du jetzt X11 dazu überredest die richige 
Modeline zu nehmen und warum xrandr was falsches ausgibt weiß ich aber 
auch nicht.

Kannst du mal versuchen deinen spezifischen Mode anders zu benennen, so 
dass es keine zwei gleich benannten Modi gibt?
Also in xorg.conf beispielsweise folgendes verwenden;
1
Modeline "Toshi_800x600" ...
2
...
3
Modes "Toshi_800x600"

von Günter (Gast)


Lesenswert?

Also ich glaub ich bin ein Schritt weiter die Modeline scheint er jetzt 
teilweise zu akzeptiern. Dein Tip war goldwert. Die Auflösung stimmt und 
die richtigen Rates werden angezeigt aber egal was ich für die Rates 
einstell verändert sich nicht die Position des bildes.

von Tobyas (Gast)


Lesenswert?

Das höre ich gerne!
Das das Bild immer noch verschoben ist kann eigentlich nurnoch daran 
liegen, dass die von dir gefundenen Timings für den Toshiba Portege 
3010CT nicht zum LTM10C286 passen. Kann ja sein, dass in dem Notebook 
verschiedene Displays verbaut wurden.
(Oder, dass der Treiber für deine Intel GMA 3150 Graphikkarte einfach 
Parameter aus der Modeline ignoriert. Das wäre aber böse.)

Bist du dir sicher, dass du an den richtigen Parametern gedreht hast?

Wie dir schon gesagt wurde, kann die horizontale Verschiebung des 
Displayinhalts nur durch falsche Polarität des H-Sync oder falsche 
hsyncstart und hsyncend Position kommen. Probiere doch beides mal aus.

Ändere einfach die aktuell verwendete Modeline mal ab.
1
Modeline "Toshi_800x600" 69.65 800 864 928 1088 600 604 610 640 -HSync -VSync
2
                         hsyncstart^^^ ^^^hsyncend              ^^^^^^low aktiver Hsync

Einmal versuchen mit high aktivem Hsync. (Alternativ ausgehend von dem 
weiter oben genannten VESA timing versuchen, da unterschiedliche 
Polarität für hsync und vsync unüblich ist.)
1
Modeline "Toshi_800x600" 69.65 800 864 928 1088 600 604 610 640 +HSync -VSync
2
                                                                ^^^^^^high aktiver Hsync

Und einmal mit um 30 pixel nach links verschobenem HSync.
1
Modeline "Toshi_800x600" 69.65 800 834 898 1088 600 604 610 640 -HSync -VSync
2
                         hsyncstart^^^ ^^^hsyncend

Markiere dir am besten oben am Display genau wo das Bild jeweils 
angefangen hat. Dann siehst du direkt ob es verschoben wurde.

P.S.: HorizSync müsste eigentlich auch auf HorizSync 30-65 geändert 
werden. (also 64 -> 65) Weil laut Kommentar die hsync Frequenz mit 64.02 
kHz über 64 liegt.

von Günter (Gast)


Angehängte Dateien:

Lesenswert?

Erstmal vielen dank für deine Geduld mit mir.
Also mittlerweile glaub ich der Treiber ignoriert die Modeline. Ich hab 
mal die verschiedenen scaling modes fotografiert IMG_1759 = Full Aspect, 
IMG_1761 = Center, IMG_1763 = Full. Ich hab bei allen die verschieden 
Hsync Polaritäten ausprobiert leider ohne erfolg. Ich habe auch versucht 
das Bild um die 30px zu verschieben aber er wills einfach nicht 
annehmen.

Im anhang ist die aktuelle xorg.conf, x.log, und die 3 bilder

mfg Günter

von Tobyas (Gast)


Lesenswert?

Das die Modeline ignoriert wird glaube ich auch immer mehr. Außer du 
hast vergessen den X-Server neuzustarten, damit die Änderungen in der 
xorg.conf übernommen werden.

Was mir an deinem Bild IMG_1761 (= Center) auffällt ist, dass die 
horizontale Verschiebung ca. 300 Pixel beträgt. Das ist extrem viel. Das 
einzige was mir noch einfällt ist, dass du folgendes noch in der 
Modeline ausprobieren kannst;

+CSync  (anstatt +-HSync +-VSync)
oder
-CSync  (anstatt +-HSync +-VSync)
oder
HSkew -300 (falls negative Werte nicht erlaubt sind, dann HSkew 756)

Kannst du erklären, wie du die Einstellungen Full Aspect, Center und 
Full vorgenommen hast?
Deine Bilder sehen so aus, als ob ein virtueller Screen mit etwa 
1600x1200 erzeugt wird, von dem dann nur ein Ausschnitt von 800x600 auf 
dem Display gezeigt wird. In der xorg.conf sehe ich davon aber nichts.

von Günter (Gast)


Lesenswert?

Also das Seitenverhältnis verändere ich über
1
 xrandr --output LVDS1 --set "scaling mode" Full
Also ich starte den Xserver nicht neu nur den ganzen PC ich weiß nicht 
ob das einen unterschied macht? Leider verändert CSync nichts und HSkew 
geht auch nicht, bei einem negativen wert startet er den xserver 
garnicht mehr und bei dem positiven ignoriert ers wieder.

Ich hab jetzt mal versucht den Virtual Screen zu verändern auf 800x600 
aber das hat auch nichts gebracht.

mfg Günter

von Tobyas (Gast)


Lesenswert?

Hallo Günter,

nein es macht keinen Unterschied Xserver neu starten oder Linux 
komplett.
Ich starte auch immer den Rechner neu...

Leider weiß ich jetzt auch nicht weiter und wollte dir gerade empfehlen 
mal in einem Linux Hardware Forum nachzufragen. Aber ich sehe gerade, 
dass hast du gestern schon gemacht. ;-)

Viel Erfolg bei der Lösung des Problems!

von Günter (Gast)


Lesenswert?

Danke schönes WE noch

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.