X2xx/s (X200/s-260) X220 FHD Mod von Nicrocaster Umbauhilfe

aridon

New member
Registriert
6 Aug. 2014
Beiträge
9
Hallo Alle zusammen,
vor kurzem habe ich von nitrocaster die Leiteplatte erhalten (Link). Momentan warte ich auf mein
Display (LG LP125WF2-SPB3). Ich habe schon mehrer Sachen geloetet, aber bei dieser Anglegentheit
wuerde ich das lieber machen lassen. Daher wollte ich fragen, ob es jemanden gibt der den Einbau des
FHD boards von nitrocaster durchfuerht. Ich wuerde dies gern im Raum Berlin
erledigen lassen wenn
moeglich. I
ch benutze arch als OS und habe den Tipp von pyen schon gesehen. Aber wuerde mich
auch ueber algemeine tipps freuen.

Ich koenen die Details auch ueber PM geregelt werden, moeglicherweise waere die Anlaufstelle auch
hilfreich fuer andere.


Viele Gruesse,

Harry






 
Hi Harry,

ich habe die Mod vor kurzem bei meinem X220 durchgeführt, das ging leichter als erwartet.
Allerdings kann ich den Einbau nicht für Dich machen, ich bin zu weit weg und mir wäre auch das Risiko zu hoch dabei was zu kaputt zu machen - bei meinem eigenem Laptop war das was anderes.

Ein paar Tipps hätte ich allerdings.
Werkzeuge: Hobby-Lötstation, Lupenlampe, dünnes Lötzinn, Flussmittel, Kaptontape, Seitenschneider, Dremel, Schraubendreher, Nagelschere,

Da ich noch nie SMD-Komponenten gelötet hatte, habe ich vorher an einer kaputten SSD geübt und ein paar Sachen ausprobiert, dann war ich mir relativ sicher das meine Fähigkeiten die Mod reichen sollten.

Wichig ist noch, dass das Aux-Power-Kabel ab Rev. 4 an einer anderen Stelle auf das Zusatzboard kommt als in der Anleitung angegeben (siehe den ersten Post von Nitrocaster). Das Sense-Kabel ist beschichet, die Beschichtung sollte an den Stellen die gelötet werden mit dem Lötkolben vorher abgekratzt werden.

Am LCD-Bezel (beide Teile) mußte ich etwas mehr Material wegnehmen als angegeben, das kann man aber ganz gut abschätzen wenn man das neue Display einfach mal einlegt.

Bzgl. Betriebsystem, ich habe Fedora laufen und wollte eigentlich ohne den modifizierten Kernel auskommen, aber dann funktionierte der Standby beim Zuklappen nicht richtig. Mit gepatchen Kernel läuft alles wieder wie vorher.
Der von Nitrocaster bereitgestellte Patch passt aber nicht mehr zu aktuellen Kernelversionen. Hier der Patch für Kernel 4.15.x:
Code:
From 1bad0acb9f85e58edd162504cf49ee1a5aa872be Mon Sep 17 00:00:00 2001
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
Date: Sun, 4 Mar 2018 10:39:07 +0100
Subject: [PATCH] X220 FHD patch

---
 drivers/gpu/drm/i915/intel_dp.c   |   4 +-
 drivers/gpu/drm/i915/intel_lvds.c | 197 +-------------------------------------
 2 files changed, 5 insertions(+), 196 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index add4b24..9286531 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -114,7 +114,7 @@ bool intel_dp_is_edp(struct intel_dp *intel_dp)
 {
     struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
 
-    return intel_dig_port->base.type == INTEL_OUTPUT_EDP;
+    return intel_dig_port->base.type == INTEL_OUTPUT_EDP || strncmp(intel_dp->attached_connector->base.name, "DP-3", 4) == 0;
 }
 
 static struct drm_device *intel_dp_to_dev(struct intel_dp *intel_dp)
@@ -5149,7 +5149,7 @@ bool intel_dp_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
     if (INTEL_GEN(dev_priv) < 5)
         return false;
 
-    if (INTEL_GEN(dev_priv) < 9 && port == PORT_A)
+    if (INTEL_GEN(dev_priv) < 9 && port == PORT_D)
         return true;
 
     return intel_bios_is_port_edp(dev_priv, port);
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 38572d6..b00911a 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -620,201 +620,10 @@ static int intel_no_lvds_dmi_callback(const struct dmi_system_id *id)
 static const struct dmi_system_id intel_no_lvds[] = {
     {
         .callback = intel_no_lvds_dmi_callback,
-        .ident = "Apple Mac Mini (Core series)",
+        .ident = "modded Thinkpad X220",
         .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "Apple"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Apple Mac Mini (Core 2 series)",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "Apple"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "Macmini2,1"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "MSI IM-945GSE-A",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "MSI"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "A9830IMS"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Dell Studio Hybrid",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-            DMI_MATCH(DMI_PRODUCT_NAME, "Studio Hybrid 140g"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Dell OptiPlex FX170",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-            DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex FX170"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "AOpen Mini PC",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "AOpen"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "i965GMx-IF"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "AOpen Mini PC MP915",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"),
-            DMI_MATCH(DMI_BOARD_NAME, "i915GMx-F"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "AOpen i915GMm-HFS",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"),
-            DMI_MATCH(DMI_BOARD_NAME, "i915GMm-HFS"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-                .ident = "AOpen i45GMx-I",
-                .matches = {
-                        DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"),
-                        DMI_MATCH(DMI_BOARD_NAME, "i45GMx-I"),
-                },
-        },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Aopen i945GTt-VFA",
-        .matches = {
-            DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Clientron U800",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "Clientron"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "U800"),
-        },
-    },
-    {
-                .callback = intel_no_lvds_dmi_callback,
-                .ident = "Clientron E830",
-                .matches = {
-                        DMI_MATCH(DMI_SYS_VENDOR, "Clientron"),
-                        DMI_MATCH(DMI_PRODUCT_NAME, "E830"),
-                },
-        },
-        {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Asus EeeBox PC EB1007",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."),
-            DMI_MATCH(DMI_PRODUCT_NAME, "EB1007"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Asus AT5NM10T-I",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
-            DMI_MATCH(DMI_BOARD_NAME, "AT5NM10T-I"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Hewlett-Packard HP t5740",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
-            DMI_MATCH(DMI_PRODUCT_NAME, " t5740"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Hewlett-Packard t5745",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "hp t5745"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Hewlett-Packard st5747",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "hp st5747"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "MSI Wind Box DC500",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
-            DMI_MATCH(DMI_BOARD_NAME, "MS-7469"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Gigabyte GA-D525TUD",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."),
-            DMI_MATCH(DMI_BOARD_NAME, "D525TUD"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Supermicro X7SPA-H",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "X7SPA-H"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Fujitsu Esprimo Q900",
-        .matches = {
-            DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
-            DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Q900"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Intel D410PT",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "Intel"),
-            DMI_MATCH(DMI_BOARD_NAME, "D410PT"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Intel D425KT",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "Intel"),
-            DMI_EXACT_MATCH(DMI_BOARD_NAME, "D425KT"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Intel D510MO",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "Intel"),
-            DMI_EXACT_MATCH(DMI_BOARD_NAME, "D510MO"),
-        },
-    },
-    {
-        .callback = intel_no_lvds_dmi_callback,
-        .ident = "Intel D525MW",
-        .matches = {
-            DMI_MATCH(DMI_BOARD_VENDOR, "Intel"),
-            DMI_EXACT_MATCH(DMI_BOARD_NAME, "D525MW"),
+            DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+            DMI_MATCH(DMI_PRODUCT_NAME, "4291QT1"),
         },
     },
 
-- 
2.14.3

Nachtrag:
Der Patch muss für jeden Rechner noch individuell angepasst werden


Am Ende in Zeile 237 und 238
Code:
[COLOR=#000000]+                       DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "[/COLOR][COLOR=#ff0000]4291QT1[/COLOR][COLOR=#000000]"),[/COLOR]
muss statt 4291QT1 die Modell-Nummer des Thinkpads stehen für das der Kernel kompiliert wird.
Die steht auf der Unterseite des Thinkpads ;)
oder kann mit z.B. [FONT=courier\ new]dmesg | grep "DMI: LENOVO"[/FONT] ausgegeben werden.


Die Mod hat sich auf jeden Fall richtig gelohnt, TN Panel -> IPS-FullHD ist ein riesen Unterschied. :)

Grüße
Mopsi
 
Zuletzt bearbeitet:
Ich schließe mich mal an. Wohne im Raum Bremen und erwarte demnächst auch das nitrocaster board. Suche auch jemanden, der mir den Umbau macht (und bei der Gelegenheit vielleicht auch das X220-Lautsprecher-Upgrade)? Da ich immer wieder in Berlin bin, gerne auch da.
 
Das Display ist da. Nun fehlt noch das loeten.
@Mopsi
erst mal danke fuer deine Tipps. Ich werde ggf es doch selber machen muessen. Vielleicht sollte ich auch nochmal etwas ueben und schaff den Mod auch wie Du. Und danke wegen des Kernel pathes. ich bin etwas neu mit kernel patches . Verstehe ich das richtig das ich eine git patch datei runterlade und im Verzeichnis

Code:
/usr/lib/modules/4.15.11-1-ARCH/kernel/drivers/gpu/drm/i915/


und dort den patch ausfuehre?

jedoch finde ich keine der Dateien aus dem patch
Code:
[COLOR=#111111]intel_dp.c [/COLOR]
und
Code:
[COLOR=#111111]intel_lvds.c[/COLOR]
im patch.



Code:
/usr/lib/modules/4.15.11-1-ARCH/kernel/drivers/gpu/drm/i915/
├── gvt
│   └── kvmgt.ko.xz
└── i915.ko.xz



 
Das Display ist nun angekommen.

danke fuer die Tipps. ich denke wohl ich muss den Mod doch selbst machen. Ich werde mal ueben und das mal probieren.

Wegen des kernel patches habe ich noch einfrage: wie wird dieser eigentlich konkret angewendet. Ich sehe das es ein git patch ist, jedoch konnte ich die Datein nicht in meinem Arch system finden.

wuerde mich freuen wenn Du nochmal erklaeren kannst wie der Kernal gepatched werden muss.
 
Hallo Aridon,

jedoch finde ich keine der Dateien aus dem patch
Code:
/usr/lib/modules/4.15.11-1-ARCH/kernel/drivers/gpu/drm/i915/
├── gvt
│   └── kvmgt.ko.xz
└── i915.ko.xz


Du schaust an der falschen Stelle. Unter /usr/lib/modules liegen die Module des installierten Kernels, Du braucht aber den Kernel-Quellencode. Auf den wendest Du den Patch an und kompilerst dann neu.
Ich weiß allerdings ncht wie man das bei Arch am besten macht, ein Einstieg wäre hier https://wiki.archlinux.org/index.php/Kernels/Traditional_compilation oder hier https://wiki.archlinux.org/index.php/Kernels/Arch_Build_System

Unter Fedora geht es im Groben so: Man kopiert die Patch-Datei in ein bestimmtes Verzeichnis (~/rpmbuild/SOURCES), trägt einen Verweis zum Patch in der Datei ~/rpmbuild/SPECS/kernel.spec ein, dann kommt ein Befehl um den Kernel vorzubereiten, der auch den Patch anwendet, schließlich noch kompilieren und die erzeugten rpms installieren.
Falls jemand Interesse hat kann ich das gerne noch genauer beschreiben.

Ich habe beim Patch noch was vergessen, man muss dort die Model-Nummer seines Laptops eintragen. Ist in Post #3 nachgetragen.

Grüße
Mopsi
 
Zuletzt bearbeitet:
Hallo Mopsi,

danke nochmal fuer die Tipps. In naechsterzeit werde ich mal die Software Teil des Mods vorbereiten. das Bios aendern und einen gepatchen kernel installieren.

Wegen der Hardware Seite schaue ich noch gerade, ob ich jemanden aus meinem Umfeld kenne der mir Helfen kann. Ich hatte einen Laden gefunden, welcher dies erledigt, jedoch war der Service eher mittelmaessig. Ferner hatten dieser Laden den Anschein den Umbau zu verrichten, aber keine funktionalitaet zu garantieren.

Ich werde euch auf dem laufenden halten.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben