- Registriert
- 4 Aug. 2008
- Beiträge
- 1.666
Im DELL Precision M4400 gab es seinerzeit ein WUXGA-Display LTN154CT04 von Samsung mit RGB-LED-Backlight (soweit ich weiß das einzige in 15,4" 16:10), wodurch es laut Kalibriergerät 96 % sRGB und 92% Adobe RGB abdecken kann. Dieses Display im T60/T61/T500 zum Laufen zu bekommen hat mich schon länger gereizt. Seit Anfang diesen Jahres habe ich das Display nun drin. Da ich noch wem einen Post zu diesem Thema schulde hier nun der entsprechende Thread.
Das Hautpproblem bei dem Umbau ist die Tatsache, dass das RGB-Backlight des Displays im M4400 über einen I²C-Bus geregelt wird. In den Thinkpads wird das Backlight jedoch ausschließlich via Backlight_on-Signal und PWM-Signal kontrolliert. Daher war die erste Aufgabe, die I²C-Kommandos, die das M4400 zur Kontrolle des Displays sendet, möglichst vollständig auszulesen. Danach musste eine Firmware geschrieben werden, die die beiden Kontrollsignale vom Thinkpad ausliest und dazu entsprechende I²C-Kommandos an das Display (bzw. dessen RGB-Backlight-Controller) schickt.
Ich habe dafür einen Atmel ATtiny 13 genommen. Im Nachhinein betrachtet hätte ich einen etwas mächtigeren µC mit mehr Flash und I²C in Hardware nehmen sollen. So habe ich dann nämlich ziemlich lange rumprobieren müssen, um die Firmware klein genug zu bekommen, so dass sie noch in den Flash vom ATtiny 13 passte. Die Firmware benutzt die I²C-Library von hier. Die Fuses müssen auf 4,8 MHz eingestellt und die Delay-Funktion in i2cmaster.S entsprechend angepasst werden:
Der I²C-Bus wird im DELL M4400 mit 50 kHz betrieben. Die Delay-Funktion muss eine halbe Periode Delay (in dem Fall also 10 µs) erzeugen. In der main.c wird der Teiler für den Takt auf 1:2 gesetzt, so dass der Takt am Ende 2,4 MHz beträgt. Bei diesem µC-Takt muss die Funktion also 24 Taktzyklen dauern. Mit anderen µCs kann/muss man das natürlich alles entsprechend anpassen.
Das zweite Problem war, dass das Display einen speziellen Stecker mit spezieller Belegung hat. Eigentlich wäre es daher nötig gewesen, die Signale vom Displaystecker am Mainboard des DELL M4400, für den ich den Schaltplan und daher auch die Pinbelegung des Steckers für das Displaykabel habe bis zu ebendiesem Stecker zu verfolgen und so die Pinbelegung des Steckers am Display rauszufinden. Glücklicherweise fand sich aber das Datenblatt eines anderen Displays LP154WP2-TLC2 mit dem gleichen Stecker, welches ebenfalls von DELL in der Precision-M4400-Reihe verbaut war. Mit den Infos daraus konnte dann direkt ein Adapterkabel gelötet werden.
Für die LVDS-Signale und die Stromversorgung gibt es beim Displaystecker Testpunkte auf der Platine, an die sich die Kabel bequem anlöten lassen. Für die Stromversorgung der Hintergrundbeleuchtung und die beiden I²C-Signale findet man dagegen bessere Punkte zum Anlöten in der Gegend des RGB-Backlight-Controllers (Platinenaufdruck beachten). Dies ist ein Mikrocontroller STM32F101T6, der über I²C den angeschlossenen Farbsensor ausliest (auf dem ersten Bild links unten) und je nach Messwert die LED-Treiber für Rot, Grün und Blau entsprechend ansteuert, ebenfalls über I²C.
Interessanterweise ist auf dem Displaystecker auch ein Pin für PWM, allerdings habe ich nicht rausgefunden, wie sich das Backlight über diesen steuern ließe.
Hier die entsprechenden Bilder dazu (zeigen die gesamte Display-Platine):
Die umgebaute Inverterplatine mit dem Mikrocontroller:
Pinbelegung des Inverter-Steckers. Für den µC braucht man GND, VCC3M, BL_ON und BL_PWM. Die USB-Leitungen gibt es nicht bei allen Geräten. Wenn man dem Schaltplan vom T61 15,4" Wide Glauben schenke darf dann sollen die USB-Signale bei diesen Geräten am Inverter anliegen. Ich habe aber nicht ausprobiert, ob die wirklich gehen.
Das Display mit Displaykabel. Der Bereich für das Thinklight muss verlängert werden. Außerdem wurde der Webcam-Stecker entfernt und das Kabel wie benötigt geknickt.
So kann man das nun einbauen. Beim Einbau in ein T61 müsste rechts noch was vom Structure-Frame und dem Scharnier im Displaydeckel weggesägt werden, damit es reinpasst. Im T500 reicht der Platz auch so gerade noch.
Hier kann man erahnen, wie überzogen die Farben (besonders Rot) bei nicht farbkorrigierter Darstellung sind, besonders bei dem Hintergrundbild im sRGB-Farbraum. Im Gimp-Fenster wird das gleiche Bild mit aktivem Farbmanagement dargestellt (leider ist auch die Spiegelung einer Leuchtstoffröhre mit drauf).
Hier das Bild mit aktivem Farbmanagement in Gimp auf einem T61 mit LG WUXGA-Display und nachgerüstetem Dual-LED-Backlight (Post dazu) links sowie rechts daneben auf dem T500 mit dem Samsung WUXGA mit RGB-LED-Backlight. Die Unterschiede in der Darstellung kommen auch durch die unterschiedliche Farbtemperatur des Backlight und die unterschiedliche Helligkeit zustande.
Das gleiche Bild ohne Farbmanagement:
Gemessene Farbraumabdeckung (ICC-Profil):
Das, was bei Rot zu viel ist, fehlt bei Blau und Grün, um 100% AdobeRGB abzudecken. Trotzdem dürfte das neben dem Sharp WUXGA eines der besten verfügbaren Displays für diesen Formfaktor sein. Die beiden Hauptnachteile im Vergleich zum LG im T61, was ich vorher im T500 drin hatte, sind die deutlich höhere Minimalhelligkeit und die Glossy-Oberfläche.
EDIT August 2019:
Seit Erstellung des Posts habe ich mittlerweile noch drei weitere Displaydeckel mit dem Display ausgerüstet. Bei allen Displaydeckeln benutze ich mittlerweile den ATtiny85 und einen Step-Up/Step/Down-Converter, damit die Spannung für das RGB-Backlight auch im Akkubetrieb hoch genug ist. Im Folgenden Infos aus PMs von mir zu dem Thema an jemanden, der das nachbauen will:
Firmware für ATtiny85: Download
Pinbelegung:
[TABLE="class: grid, width: 500, align: center"]
[TR]
[TD]30 pin CCFL WUXGA[/TD]
[TD]50 pin RGB LED WUXGA[/TD]
[/TR]
[TR]
[TD]1, 10, 13, 16, 19, 22, 25, 28 - GND[/TD]
[TD]3, 6, 9, 12, 15, 18, 21, 24, 27 - VSS[/TD]
[/TR]
[TR]
[TD]2, 3 - VCC[/TD]
[TD]32, 33 - VDD[/TD]
[/TR]
[TR]
[TD]4 - V_EEDID[/TD]
[TD]2 - VEEDID[/TD]
[/TR]
[TR]
[TD]6 - Clk EEDID[/TD]
[TD]4 - CLK EEDID[/TD]
[/TR]
[TR]
[TD]7 - DATA EDDID[/TD]
[TD]5 - DATA EEDID[/TD]
[/TR]
[TR]
[TD]8 - odd Rin0-[/TD]
[TD]7 - odd Rin0-[/TD]
[/TR]
[TR]
[TD]9 - odd Rin0+[/TD]
[TD]8 - odd Rin0+[/TD]
[/TR]
[TR]
[TD]11 - odd Rin1-[/TD]
[TD]10 - odd Rin1-[/TD]
[/TR]
[TR]
[TD]12 - odd Rin1+[/TD]
[TD]11 - odd Rin1+[/TD]
[/TR]
[TR]
[TD]14 - odd Rin2-[/TD]
[TD]13 - odd Rin2-[/TD]
[/TR]
[TR]
[TD]15 - odd Rin2+[/TD]
[TD]14 - odd Rin2+[/TD]
[/TR]
[TR]
[TD]17 - odd CLKIN-[/TD]
[TD]16 - odd ClkIN-[/TD]
[/TR]
[TR]
[TD]18 - odd CLKIN+[/TD]
[TD]17 - odd ClkIN+[/TD]
[/TR]
[TR]
[TD]20 - even Rin0-[/TD]
[TD]19 - even Rin0-[/TD]
[/TR]
[TR]
[TD]21 - even Rin0+[/TD]
[TD]20 - even Rin0+[/TD]
[/TR]
[TR]
[TD]23 - even Rin1-[/TD]
[TD]22 - even Rin1-[/TD]
[/TR]
[TR]
[TD]24 - even Rin1+[/TD]
[TD]23 - even Rin1+[/TD]
[/TR]
[TR]
[TD]26 - even Rin2-[/TD]
[TD]25 - even Rin2-[/TD]
[/TR]
[TR]
[TD]27 - even Rin2+[/TD]
[TD]26 - even Rin2+[/TD]
[/TR]
[TR]
[TD]29 - even CLKIN-[/TD]
[TD]28 - even ClkIN-[/TD]
[/TR]
[TR]
[TD]30 - even CLKIN+[/TD]
[TD]29 - even ClkIN+[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]GND on inverter PCB[/TD]
[TD]39, 40, 41, 42 VBL_ (LED power GND)[/TD]
[/TR]
[TR]
[TD]+20V on inverter PCB[/TD]
[TD]44, 45, 46, 47 VBL+ (LED power VCC)[/TD]
[/TR]
[TR]
[TD]Atmel ATtiny85 pin PB0[/TD]
[TD]48 SMB_DATA[/TD]
[/TR]
[TR]
[TD]Atmel ATtiny85 pin PB1[/TD]
[TD]49 SMB_CLK[/TD]
[/TR]
[/TABLE]
SDA from the display to MCU pin PB0 (see datasheet of ATtiny85)
SCL from the display to MCU pin PB1 (not PB2 even if it says SCL in the datasheet for this pin !)
BACKLIGHT_ON from the thinkpad to MCU pin PB3
PWM from the thinkpad to MCU pin PB2
GND to MCU pin 4
VCC3M from pin 11 of the inverter connector (see this image) to MCU pin 8
20V from pins 2, 4, 6 of the inverter connector to VBL+ on the display (pins 44, 45, 46, 47)
GND from pins 8, 10, 12 of the inverter connector to VBL- on the display (pins 39, 40, 41, 42)
The batteries used in the Dell Precision M4400 have 14.4V and the thinkpad batteries only have 10.8V which is not enough for the display. So if you want to use the thinkpad without AC adapter you will also need this voltage converter. At the motherboard display cable connector cut the trace that has the 20V for the display backlight (carries only 10.8V if no AC adapter is attached and the thinkpad runs on battery) and connect the output + of the module to the pins for 20V on the display cable connector and the input + of the module to the trace end. Connect input - and output - to GND on the motherboard. Set the module to 14.4V output voltage. This will ensure you have always 14.4V for the display RGB-LED backlight regardless of the voltage from AC adapter or the battery.
Das Hautpproblem bei dem Umbau ist die Tatsache, dass das RGB-Backlight des Displays im M4400 über einen I²C-Bus geregelt wird. In den Thinkpads wird das Backlight jedoch ausschließlich via Backlight_on-Signal und PWM-Signal kontrolliert. Daher war die erste Aufgabe, die I²C-Kommandos, die das M4400 zur Kontrolle des Displays sendet, möglichst vollständig auszulesen. Danach musste eine Firmware geschrieben werden, die die beiden Kontrollsignale vom Thinkpad ausliest und dazu entsprechende I²C-Kommandos an das Display (bzw. dessen RGB-Backlight-Controller) schickt.
Ich habe dafür einen Atmel ATtiny 13 genommen. Im Nachhinein betrachtet hätte ich einen etwas mächtigeren µC mit mehr Flash und I²C in Hardware nehmen sollen. So habe ich dann nämlich ziemlich lange rumprobieren müssen, um die Firmware klein genug zu bekommen, so dass sie noch in den Flash vom ATtiny 13 passte. Die Firmware benutzt die I²C-Library von hier. Die Fuses müssen auf 4,8 MHz eingestellt und die Delay-Funktion in i2cmaster.S entsprechend angepasst werden:
Code:
.func i2c_delay_T2 ; delay 10.0 us with 2.4 MHz clock (50 kHz target I2C frequency)
i2c_delay_T2: ; 3 cycles
rjmp 1f ; 2 "
1: rjmp 2f ; 2 "
2: rjmp 3f ; 2 "
3: rjmp 4f ; 2 "
4: rjmp 5f ; 2 "
5: rjmp 6f ; 2 "
6: rjmp 7f ; 2 "
7: rjmp 8f ; 2 "
8: nop ; 1 "
ret ; 4 " total 24 cyles = 10.0 us with 2.4 MHz clock
Das zweite Problem war, dass das Display einen speziellen Stecker mit spezieller Belegung hat. Eigentlich wäre es daher nötig gewesen, die Signale vom Displaystecker am Mainboard des DELL M4400, für den ich den Schaltplan und daher auch die Pinbelegung des Steckers für das Displaykabel habe bis zu ebendiesem Stecker zu verfolgen und so die Pinbelegung des Steckers am Display rauszufinden. Glücklicherweise fand sich aber das Datenblatt eines anderen Displays LP154WP2-TLC2 mit dem gleichen Stecker, welches ebenfalls von DELL in der Precision-M4400-Reihe verbaut war. Mit den Infos daraus konnte dann direkt ein Adapterkabel gelötet werden.
Für die LVDS-Signale und die Stromversorgung gibt es beim Displaystecker Testpunkte auf der Platine, an die sich die Kabel bequem anlöten lassen. Für die Stromversorgung der Hintergrundbeleuchtung und die beiden I²C-Signale findet man dagegen bessere Punkte zum Anlöten in der Gegend des RGB-Backlight-Controllers (Platinenaufdruck beachten). Dies ist ein Mikrocontroller STM32F101T6, der über I²C den angeschlossenen Farbsensor ausliest (auf dem ersten Bild links unten) und je nach Messwert die LED-Treiber für Rot, Grün und Blau entsprechend ansteuert, ebenfalls über I²C.
Interessanterweise ist auf dem Displaystecker auch ein Pin für PWM, allerdings habe ich nicht rausgefunden, wie sich das Backlight über diesen steuern ließe.
Hier die entsprechenden Bilder dazu (zeigen die gesamte Display-Platine):
Die umgebaute Inverterplatine mit dem Mikrocontroller:
Pinbelegung des Inverter-Steckers. Für den µC braucht man GND, VCC3M, BL_ON und BL_PWM. Die USB-Leitungen gibt es nicht bei allen Geräten. Wenn man dem Schaltplan vom T61 15,4" Wide Glauben schenke darf dann sollen die USB-Signale bei diesen Geräten am Inverter anliegen. Ich habe aber nicht ausprobiert, ob die wirklich gehen.
Das Display mit Displaykabel. Der Bereich für das Thinklight muss verlängert werden. Außerdem wurde der Webcam-Stecker entfernt und das Kabel wie benötigt geknickt.
So kann man das nun einbauen. Beim Einbau in ein T61 müsste rechts noch was vom Structure-Frame und dem Scharnier im Displaydeckel weggesägt werden, damit es reinpasst. Im T500 reicht der Platz auch so gerade noch.
Hier kann man erahnen, wie überzogen die Farben (besonders Rot) bei nicht farbkorrigierter Darstellung sind, besonders bei dem Hintergrundbild im sRGB-Farbraum. Im Gimp-Fenster wird das gleiche Bild mit aktivem Farbmanagement dargestellt (leider ist auch die Spiegelung einer Leuchtstoffröhre mit drauf).
Hier das Bild mit aktivem Farbmanagement in Gimp auf einem T61 mit LG WUXGA-Display und nachgerüstetem Dual-LED-Backlight (Post dazu) links sowie rechts daneben auf dem T500 mit dem Samsung WUXGA mit RGB-LED-Backlight. Die Unterschiede in der Darstellung kommen auch durch die unterschiedliche Farbtemperatur des Backlight und die unterschiedliche Helligkeit zustande.
Das gleiche Bild ohne Farbmanagement:
Gemessene Farbraumabdeckung (ICC-Profil):
Das, was bei Rot zu viel ist, fehlt bei Blau und Grün, um 100% AdobeRGB abzudecken. Trotzdem dürfte das neben dem Sharp WUXGA eines der besten verfügbaren Displays für diesen Formfaktor sein. Die beiden Hauptnachteile im Vergleich zum LG im T61, was ich vorher im T500 drin hatte, sind die deutlich höhere Minimalhelligkeit und die Glossy-Oberfläche.
EDIT August 2019:
Seit Erstellung des Posts habe ich mittlerweile noch drei weitere Displaydeckel mit dem Display ausgerüstet. Bei allen Displaydeckeln benutze ich mittlerweile den ATtiny85 und einen Step-Up/Step/Down-Converter, damit die Spannung für das RGB-Backlight auch im Akkubetrieb hoch genug ist. Im Folgenden Infos aus PMs von mir zu dem Thema an jemanden, der das nachbauen will:
Firmware für ATtiny85: Download
Pinbelegung:
[TABLE="class: grid, width: 500, align: center"]
[TR]
[TD]30 pin CCFL WUXGA[/TD]
[TD]50 pin RGB LED WUXGA[/TD]
[/TR]
[TR]
[TD]1, 10, 13, 16, 19, 22, 25, 28 - GND[/TD]
[TD]3, 6, 9, 12, 15, 18, 21, 24, 27 - VSS[/TD]
[/TR]
[TR]
[TD]2, 3 - VCC[/TD]
[TD]32, 33 - VDD[/TD]
[/TR]
[TR]
[TD]4 - V_EEDID[/TD]
[TD]2 - VEEDID[/TD]
[/TR]
[TR]
[TD]6 - Clk EEDID[/TD]
[TD]4 - CLK EEDID[/TD]
[/TR]
[TR]
[TD]7 - DATA EDDID[/TD]
[TD]5 - DATA EEDID[/TD]
[/TR]
[TR]
[TD]8 - odd Rin0-[/TD]
[TD]7 - odd Rin0-[/TD]
[/TR]
[TR]
[TD]9 - odd Rin0+[/TD]
[TD]8 - odd Rin0+[/TD]
[/TR]
[TR]
[TD]11 - odd Rin1-[/TD]
[TD]10 - odd Rin1-[/TD]
[/TR]
[TR]
[TD]12 - odd Rin1+[/TD]
[TD]11 - odd Rin1+[/TD]
[/TR]
[TR]
[TD]14 - odd Rin2-[/TD]
[TD]13 - odd Rin2-[/TD]
[/TR]
[TR]
[TD]15 - odd Rin2+[/TD]
[TD]14 - odd Rin2+[/TD]
[/TR]
[TR]
[TD]17 - odd CLKIN-[/TD]
[TD]16 - odd ClkIN-[/TD]
[/TR]
[TR]
[TD]18 - odd CLKIN+[/TD]
[TD]17 - odd ClkIN+[/TD]
[/TR]
[TR]
[TD]20 - even Rin0-[/TD]
[TD]19 - even Rin0-[/TD]
[/TR]
[TR]
[TD]21 - even Rin0+[/TD]
[TD]20 - even Rin0+[/TD]
[/TR]
[TR]
[TD]23 - even Rin1-[/TD]
[TD]22 - even Rin1-[/TD]
[/TR]
[TR]
[TD]24 - even Rin1+[/TD]
[TD]23 - even Rin1+[/TD]
[/TR]
[TR]
[TD]26 - even Rin2-[/TD]
[TD]25 - even Rin2-[/TD]
[/TR]
[TR]
[TD]27 - even Rin2+[/TD]
[TD]26 - even Rin2+[/TD]
[/TR]
[TR]
[TD]29 - even CLKIN-[/TD]
[TD]28 - even ClkIN-[/TD]
[/TR]
[TR]
[TD]30 - even CLKIN+[/TD]
[TD]29 - even ClkIN+[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]GND on inverter PCB[/TD]
[TD]39, 40, 41, 42 VBL_ (LED power GND)[/TD]
[/TR]
[TR]
[TD]+20V on inverter PCB[/TD]
[TD]44, 45, 46, 47 VBL+ (LED power VCC)[/TD]
[/TR]
[TR]
[TD]Atmel ATtiny85 pin PB0[/TD]
[TD]48 SMB_DATA[/TD]
[/TR]
[TR]
[TD]Atmel ATtiny85 pin PB1[/TD]
[TD]49 SMB_CLK[/TD]
[/TR]
[/TABLE]
SDA from the display to MCU pin PB0 (see datasheet of ATtiny85)
SCL from the display to MCU pin PB1 (not PB2 even if it says SCL in the datasheet for this pin !)
BACKLIGHT_ON from the thinkpad to MCU pin PB3
PWM from the thinkpad to MCU pin PB2
GND to MCU pin 4
VCC3M from pin 11 of the inverter connector (see this image) to MCU pin 8
20V from pins 2, 4, 6 of the inverter connector to VBL+ on the display (pins 44, 45, 46, 47)
GND from pins 8, 10, 12 of the inverter connector to VBL- on the display (pins 39, 40, 41, 42)
The batteries used in the Dell Precision M4400 have 14.4V and the thinkpad batteries only have 10.8V which is not enough for the display. So if you want to use the thinkpad without AC adapter you will also need this voltage converter. At the motherboard display cable connector cut the trace that has the 20V for the display backlight (carries only 10.8V if no AC adapter is attached and the thinkpad runs on battery) and connect the output + of the module to the pins for 20V on the display cable connector and the input + of the module to the trace end. Connect input - and output - to GND on the motherboard. Set the module to 14.4V output voltage. This will ensure you have always 14.4V for the display RGB-LED backlight regardless of the voltage from AC adapter or the battery.
Zuletzt bearbeitet: