T4xx (T400-450 ohne "T440s/T450s") T450: Display-EDID korrekt überschreiben

grix

New member
Themenstarter
Registriert
9 Aug. 2010
Beiträge
38
Hallo, liebes Thinkpad-Forum

Ich habe hier gerade ein "neues" gebrauchtes T450 von einem bekannten Händler erworben.
Dieses hat ein recht schickes, neues 1920er Panel drin.
Leider war mir bei der Bestellung das Problem mit der unpassenden EDID-Kennung des Panels nicht bekannt. Der Verkäufer weist in seiner Produktbeschreibung darauf hin, dass keine Helligkeitsregelung mit den entsprechenden Tasten möglich ist.

Es gibt einiges an Infos im Netz, wie man die EDID eines Panels entsprechend anpassen kann.

Da ich aber kein T450 mit dem originalen Panel auslesen kann, hier meine Frage:

Das neue Panel meldet sich als
N140HCA-EAB
Manufacturer: CMN Model 14c9 Serial Number 0
Made week 8 of 2016
EDID version: 1.4

Kann ich irgendwie herausfinden oder kann mir jemand verraten, mit welchen Werten ich das gemäß
https://thinkwiki.de/Display-EDID_verändern
bearbeiten müsste, um ein "originales Panel zu erhalten"?


Vielen vielen Dank schon einmal

grix
 
Da du ja nur die Herteller- und Produkt-ID eines Originaldisplays brauchst, kann dir im Prinzip jeder helfen der Zugriff auf ein T450 hat.
Ich habe leider Keines, daher kann ich dir nicht direkt helfen, aber die EDID (und damit die Hersteller- und Produkt-ID) des Displays lässt sich sehr viel einfacher auslesen als im Wiki beschrieben.
Das geht von jedem Linux/BSD/Whatever mit X-Server (also auch einem Live-System) aus mit diesem Einzeiler im Terminal:
Code:
xrandr --verbose | grep -A 1 EDID | egrep -o '00ffffffffffff00.+$' | cut -c 17-24
 
Da du ja nur die Herteller- und Produkt-ID eines Originaldisplays brauchst, kann dir im Prinzip jeder helfen der Zugriff auf ein T450 hat.

Das ist natürlich richtig, sofern die Displays von den Eigenschaften her identisch sind.

Das müsste dann ja so ziemlich für alle T450 mit 1920x1080 IPS gelten.

Also wenn jemand so ein T450 hat und mit dem Einzeiler oben helfen kann/mag, dann wäre das sehr willkommen.

Eigentlich wären das doch coole zusätzliche Daten fürs thinkwiki.de, die man für jedes Modell hinterlegen und abrufbar halten könnte. Gerade bei den Thinkpads machen doch relativ viele Besitzer von älteren Geräten HW-Upgrades oder -Austausch mit Nichtoriginalteilen in Eigenregie.

Frage mich allerdings auch, warum besagter Händler für überholte Thinkpads, der dieses Geschäft im großen Stil betreibt, die EDID nicht gleich selbst korrekt überschreibt.
Warum überhaupt das OS bzw. der Grafiktreiber sich daran aufhängt und nicht einfach ein Config-Häkchen für "ich weiß, was ich tue, ignoriere mal die BIOS-Liste" hat, das ist natürlich eine ganz andere Frage. Da muss ja Intel und/oder MS einen Deal mit dem HW-Hersteller haben und deren Interesse, Nichtoriginalteile möglichst zu diskriminieren, aktiv untertützen.
 
Das Display war wohl ein ---> "LP140ED1-TPD1"---> DATASHEET ---> Download PDF ---> EDID S.28-30

Entscheidend dürfte aber die LENxxxxx-Bezeichnung sein, mit der das Originaldisplay versehen war.
 
Zuletzt bearbeitet:
Das Display war wohl ein ---> "LP140ED1-TPD1"---> DATASHEET ---> Download PDF ---> EDID S.28-30
Entscheidend dürfte aber die LENxxxxx-Bezeichnung sein, mit der das Originaldisplay versehen war.

Welches Display "war" deiner Meinung nach ein LP140ED1-TPD1, das Originale?
Ich glaube, ich habe diesen EDID-Kram noch nicht richtig gerafft. So weit ich das bisher gelesen habe, soll im BIOS eine Liste "erlaubter" IDs für das Panel hinterlegt sein.
Jetzt würde ich annehmen, dass ich es "nur" schaffen muss, dass das Panel sich nicht N140HCA-EAB nennt, sondern eine der im BIOS hinterlegten Kennungen liefert.

Wenn das Originaldisplay nun die ID LP140ED1-TPD1 trug, woher bekomme ich dann die Bytes, die ich als Hersteller- und Produkt-ID in das Panel schreiben muss?

Sieht doch schwieriger aus das Ganze als ich zunächst dachte....
 
Bei PCI(e)- und USB-Geräten hat jeder Hersteller eine eigene Hersteller-ID und jedes seiner Geräte eine eigene Geräte-ID. Das ist die ID, die dir unter Linux z.B. lsusb anzeigt (Format: Hersteller-ID:Geräte-ID):
Code:
$ lsusb
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 046d:c00b Logitech, Inc. MouseMan Wheel
Bus 001 Device 003: ID 046a:0001 Cherry GmbH Keyboard
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Ich vermute, bei den Panels ist das genauso. Diese IDs haben nichts mit den menschenlesbaren Namen zu tun und eine Liste dieser IDs ist im BIOS als Whitelist hinterlegt.
Das hat keinen sinnvollen Grund, sondern dient nur der Schikane um zu verhindern, dass da jemand beliebig Teile ersetzt. Du sollst ja teueren Lenovo-Support bezahlen und nach dessen Ablauf ein neues Gerät kaufen.
Um an die ID eines "Originadisplays" zu kommen muss sie jemand aus einem solchen Display auslesen. Ob das Lenovo-BIOS "schlau" genug ist, die IDs nach Displayauflösung zu trennen und zu streiken, wenn sich da ein FHD-Panel als HD ausgibt weiß ich nicht. Machbar wäre es, aber es wäre mehr Arbeit bei der Implementierung. Daher könnte es sein oder auch nicht sein, das du tatsächlich die ID eines FHD-Panels brauchst.
 
Das Display war wohl ein ---> "LP140ED1-TPD1"---> DATASHEET ---> Download PDF ---> EDID S.28-30

Ha, in diesem PDF stehen ja auch die entsprechenden Vendor- und Model-Bytewerte. ABER dieses genannte Panel ist ja ein 1600er, kein 1920er.
Da hätte ich ja doch ein bisschen Schiss, dem System jetzt diese Werte unterzuschieben.

Es bleibt also meine Bitte/Frage nach den entsprechenden EDID-Werten eines "echten" 1920er-Panels aus einem T450.

Oder es gibt doch irgendwo eine Liste der möglichen Werte. Man findet verschiedene EDID-Strings im Netz, die wohl im T450-BIOS drin sein sollen, jedoch nicht die entsprechenden Bytewerte dazu.
 
Ich sage das mit aller Vorsicht, weil ich es wirklich nicht weiß, aber meinem Verständnis nach ist das Schlimmste was du mit dem erfolgreichen Flashen einer unpassenden ID machen kannst, dass das Display im T450 gar nicht mehr an geht. Es dürfte dabei aber kein dauerhafter Schaden entstehen.
Soll heißen: Ich vermute, du kannst die ID aus dem PDF flashen und dann schaust du, ob es besser oder schlechter funktioniert. Wird es schlechter, dann flashst du die zuvor gesicherte alte ID wieder zurück, hast den Status Quo zurück und wartest bis sich jemand erbarmt, eine passende ID zu posten.

Edit:
Das gleiche FHD-Panel wurde doch sicher in verschiedenen Thinkpads verbaut (T440 aufwärts, mit und ohne "s"?). Da könnten doch sicher auch andere T4xx(s)-User aushelfen. StarManni verscherbelt z.B gerade ein T450s mit FHD. Der kann doch sicher mal ein Live-Linux booten, wenn man nett fragt.

[1] https://thinkpad-forum.de/threads/227038-Ultrabook-Lenovo-T450s-i5-5300U-8-180GB-FHD-IPS-BL-Tasta
 
Zuletzt bearbeitet:
Es bleibt also meine Bitte/Frage nach den entsprechenden EDID-Werten eines "echten" 1920er-Panels aus einem T450.


Also ... "wir alten Hacker" (Räusper!) ... haben früher folgendes gemacht: In meinem W520 z.B. werkelt laut MonInfo ein "B156HW01 V4"-Display mit 1920x1080 Pixeln.

Klickt man auf "View" und "Registry", stellt man fest, dass das WINDOWS gar nicht interessiert, sondern dort steht ein "MONITOR/LEN40B2" in der Liste, und diese Bezeichnung sorgt dafür, dass WINDOWS das Display als rechtmäßig anerkennt und die Helligkeitssteuerung und alles andere aktiviert. Also nix EDID, sondern WINDOWS-Registry überschreibt diesen nach dem Start.

Der Trick bestünde also nun darin, einen Monitor mit der richtigen Auflösung und einer LENxxxx-Bezeichnung aus der Whitelist zu platzieren...
Dazu ist...

  1. die Registry von allen fremden Monitoren zu putzen, in dem man ihre Einträge löscht
  2. neu starten, man hat jetzt ein PnP-Display im Gerätemanager
  3. über Treiber aktualisieren das "PnP-Display" eine Standard-Konfiguration mit der richtigen Auflösung des neuen Displays (---> auf meinem Computer nach Treibern suchen ---> aus einer Liste verfügbarer Treiber auf dem Computer suchen ---> LCD-Display mit der richtigen Auflösung) installieren
  4. die Hardware-ID in der Registry durch die richtige LENxxxx-Bezeichnung ersetzen
  5. neu booten

Nun hat hat man ein ThinkPad, dass zwar im BIOS die Helligkeitssteuerung ignoriert, aber WINDOWS überschreibt dafür nun mit der richtigen LENxxxx-Bezeichnung die Whitelist, und man kann unter WINDOWS den Monitor so nutzen, wie man es möchte. Das gilt auch für die Farbprofile.

---
01 Display in der MonInfo.PNG...02 Display in der Registry mit Hardware-ID.PNG
---​

Als erstes bräuchtest Du also eine LENxxxxx-Bezeichnung aus einem T450, welche dort verwendet wird. Da ich selbst keines habe, müsste ein anderer T450-Besitzer diese Daten hier posten.

Ich weiß aber nicht, ob das eine Nummer zu groß für ich ist... ;)
 
Zuletzt bearbeitet:
„Bestünde ...“

Hast Du das schon mal gemacht? Oder ist das rein spekulativ?
 
Hast Du das schon mal gemacht? Oder ist das rein spekulativ?

Das wurde schon sehr häufig gemacht, auch schon unter WINDOWS XP, aber von WINDOWS-Version zu WINDOWS-Version und Servicepack zu Servicepack ändert sich das Procedere manchmal.

Letztlich liegt der Trick mit der Whitelist ja darin, dass die richtige LEN-Bezeichnung nicht an WINDOWS übergeben wird. Die LEN-Bezeichnung wird einfach nicht übergeben, weil das "neue" Display keine solche Bezeichnung hat. Solange das nicht geschieht, hält WINDOWS das Display für ein externes PnP-Display, und schaltet die interne Helligkeitssteuerung ab, weil externe Displays eine eigene, hardwarebasierte Helligkeitssteuerung haben.

Die optimale Ausgangslage ist ein clean installiertes WINDOWS mit nur dem einen erkannten PnP-Display, denn das ergibt die wenigsten Registry-Einträge. Wenn dort ein LCD-Display mit der richtigen Auflösung über WINDOWS installiert wird, und dann nachträglich die richtige LEN-Bezeichnung (mit Navigationshilfe von MonInfo) in die Registry eingeben wird, klappt es fast immer.

Aber eine Garantie gibt es natürlich nicht... ;)
 
Zuletzt bearbeitet:
Das war nicht meine Frage.
Hast DU das schon mal gemacht? Oder warst wenigstens dabei?
Oder weißt wenigstens und hast eine Quelle, WER das sehr häufig gemacht hat?
Denn ohne eine solche Stützung verdienen Deine Lösungsansätze hier ja bedauerlich oft einen Warnhinweis.
 
Also ... "wir alten Hacker" (Räusper!) ... haben früher folgendes gemacht:
[...]
  1. die Hardware-ID in der Registry durch die richtige LENxxxx-Bezeichnung ersetzen
  2. neu booten
[...] Ich weiß aber nicht, ob das eine Nummer zu groß für ich ist... ;)

Also ich bin zwar echt kein Windows-User und -Kenner (richte die Kiste für einen lieben Verwandten ein), aber das klingt nicht nach "Nummer zu groß". In der Tat wäre das ein super einfacher Weg und naheliegend noch dazu.:-D

In einem anderen Forum habe ich ein paar offenbar zulässige LEN....-Codes gefunden und direkt mal in den entsprechenden Registry key entsprechend geändert.
Leider ist es nicht ganz so einfach erledigt, da nach Reboot die ID einfach wieder auf den ursprünglichen Wert gesetzt wird. Wenn diese dabei aus dem Gerät geholt wird, dann wäre der korrekte Ansatz doch wieder, die ID im Gerät zu ändern.
Wie gesagt, ich bin kein großer Windows-Kenner, doch das müsste sich doch mit einer entsprechend "getunten" inf-Datei erledigen lassen, die man dann als Treiber auswählt und die dann die HardwareID fest einstellt, oder?
 
Leider ist es nicht ganz so einfach erledigt, da nach Reboot die ID einfach wieder auf den ursprünglichen Wert gesetzt wird. Wenn diese dabei aus dem Gerät geholt wird, dann wäre der korrekte Ansatz doch wieder, die ID im Gerät zu ändern.

So haben wir es früher gemacht, doch dann fing WINDOWS an, (wie beschrieben) die ID jedesmal auszulesen, und wir haben uns damit beholfen, den Registry-Eintrag zu exportieren und dann mit der "richtigen" LEN beim Start von WINDOWS in die Registry einzuklinken. Das ging eine Weile gut, und dann ging auch das nicht mehr...

Eine weitere Möglichkeit bestand darin, die LEN zu ignorieren: Der Hersteller eines Displays (LG, Samsung, BOE Hydis etc.) stellt die Displays ja nicht nur für Lenovo her, welches dann per EDID-Flash die richtige LEN-Nummer in das EDID flasht, sondern hat unabhängig davon einen PnP-ID, z.B. "MONITOR/SAM345", die in Rechnern verwendet wird, die keine Lenovo-Whitelist und damit keine LEN-Nummer haben. Man kann ThinkPad-Displays nämlich auch in Rechnern verwenden, die keine Whitelist haben, und dafür ist dann statt der LEN die PnP-ID zuständig. Findet man also die PnP-ID heraus, die das Display völlig unabhängig von den LEN-IDs hat, kann man auch diese in die Registry eintragen.

Schließlich gibt es noch das Extended Display Identification Data (EDID) Tool, welches 2012 für ThinkCentre entwickelt wurde, deren Displays sich während des Produktionsprozesses geändert hatten. Dort drin befindet sich nicht nur ein ordnungsgemäßer EDID-Flasher für DP- und HDMI-Bereiche, sondern jeweils auch zwei kleine BIN-Dateien. Öffnet man die BIN-Dateien mit einem HEX-Editor, findet man LEN-Daten.

---
EDID-BIN.PNG
---​

Wenn mich nicht alles täuscht, steht da eingefasst durch zwei Punkte die LEN-Bezeichnung .LEN-M92z-B. für die Whitelist des ThinkCentre. (Zwei Leerstellen gibt es noch gratis dazu, falls der neue LEN-Name länger ist, das Namensende wird mit 0A gezeichnet, das gesamte Zeichenfeld wird durch fixe 00 eingefasst.) Da man BIN-Dateien byteweise direkt editieren kann, darf da also auch eine andere LEN-Bezeichnung stehen, die dann in den EDID geflasht wird und und vom BIOS ausgelesen wird.

Das hat zwar bisher noch keiner wirklich ausprobiert, aber machbar wäre es... ;)
 
Zuletzt bearbeitet:
Also ich gebe das Thema dann wohl mal auf.... ;-)
Der Abend war jetzt schon spannend und ich dachte echt, ich bekomme es hin.

Mit dem Thinkwiki
https://thinkwiki.de/Display-EDID_verändern
und dem coolen Tool edid-rw
https://github.com/bulletmark/edid-rw
und den "erlaubten" EDID-Infos aus T450 FW 1.09
https://mega.nz/#!b8F3jbrC!tDJaLAN-6GjSzCl2jPsJHoYlNckkbh9Y0yMP2EXVGT0

kommt man schon wirklich ziemlich weit. Ich hatte mir am Ende eine feine edid.bin gebastelt, die die technischen Daten des eingebauten Panels unverändert behielt, den String für die Modellbezeichnung und auch die entsprechenden Bytes für Vendor- und Model-ID aber gemäß einem passenden 1920er Panel angepasst hatte.
edid-decode ist so nett und berechnet einem auch die richtige Checksumme in den letzten 2Bytes. edid-rw ist seinerseits nett und passt auf, dass man keine ungültige EDID-Info flasht.

Tja, was soll ich sagen? Ich wähnte mich auf der Siegesstraße, konnte meine neue EDID-Info angeblich problemlos flashen. Beim sofortigen Verifizieren sah es auch alles perfekt geflasht aus, die dann ausgelesenen Werte waren die Neuen. Also ab damit, Reboot, Spannung...... - Zonk :confused:

Nach dem Reboot ist der EDID-Speicher einfach wieder ganz der Alte. Es sieht aus, als wäre der Eeprom irgendwie schreibgeschützt. :facepalm:
Das Linux bekommt aber vermutlich eine Spiegelung davon eingeblendet, die es aus seiner Sicht problemlos beschreiben kann.

Also wenn jetzt nicht noch jemand eine geniale Idee hat, dann übergebe ich das Notebook so wie es ist an seinen wartenden Besitzer.

Da die Helligkeitsregelung unter Windows ausschließlich direkt im Intel-HD-Treiber im Unterpunkt "Farbregelung" mit einem Schieberegler einstellbar ist, habe ich im Intel-Treiber drei Profile "hell", "mittel" und "dunkel" erstellt, an die man sich jetzt über das Intel-Traysymbol hinhangeln kann, ohne die Treibersteuerung öffnen zu müssen. Wenn man diesen Profilen nun noch Tastenkürzel zuordnen könnte, dann wäre die fehlende Helligkeitsregelung absolut verschmerzbar, finde ich. Dafür habe ich aber keine Lösung gefunden.

Wenn noch einer einen rettenden Beitrag hat, gerne her damit.

Danke auf jeden Fall schon einmal für alle hier geäußerten Ideen, Hilfestellungen und interessanten Anregungen.
 
Nach dem Reboot ist der EDID-Speicher einfach wieder ganz der Alte. Es sieht aus, als wäre der Eeprom irgendwie schreibgeschützt.

Die Chips selbst, die mit EDID-Informationen beschrieben werden, besitzen einen Schreibschutz-PIN, erinnere ich mich dunkel. An diesem PIN müssen 3,3V oder 5V anliegen, während der Schreibvorgang abläuft. Die Flash-Programme wissen das natürlich auch und liefern auch die Signalspannung für das Beschreiben des Chips. Aber wenn der böse Display-Hersteller diesen PIN einfach nicht anlötetet, damit seine Display-EDIDs für immer geschützt bleiben, können die Schreibprogramme gar nichts tun. Deswegen haben wir die die EDIDs extern beschrieben und dann einfach aufgelötet. Aber das ist nun wirklich sehr viel Aufwand und lohnt sich nur, wenn jemand dafür etwas sehr viel Geld ausgeben möchte... ;)
 
Zuletzt bearbeitet:
Warum willst Du die Edid-Kennung verändern und nicht die Whitelist im Bios entfernen? Habe ich das überlesen?
 
Warum willst Du die Edid-Kennung verändern und nicht die Whitelist im Bios entfernen? Habe ich das überlesen?
Hurra, ein neuer Ansatz. ;-) Davon habe ich in dieser Odyssee nur am Rande gelesen, da kam es mir nicht so trivial vor. Zumindest hatte ich keine eindeutige Doku dazu gefunden, bei der es mir in den Fingern gejuckt hat.
Das müsste ja dann auf jeden Fall nach einem BIOS-Update wiederholt werden, oder? Allerdings wird das T450 vermutlich nicht mehr soooo viele Firmware-Updates bekommen, die man zwingend einspielen müsste.
 
Zuletzt bearbeitet:
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben