EC-Hacking: Ihr Laptop hat einen Mikrocontroller

By | June 7, 2022
Spread the love

Kürzlich bin ich über einen coolen Artikel von gestolpert [DHowett], über die Neuprogrammierung des Embedded Controller (EC) eines Framework-Laptops. Er zeigt uns, wie man die Caps-Lock-LED wiederverwenden kann, indem sie stattdessen den Status der F1-F12-Tastenebene anzeigt – auch bekannt als „Fn-Sperre“, AKA, „Funktioniert Ihre F1-Taste derzeit als F1 oder regelt sie die Lautstärke“. Er führt uns durch das Hinzufügen von benutzerdefiniertem Code zur EC-Firmware Ihres Laptops und integriert ihn ordnungsgemäß in die verschiedenen Routinen, die das EC ausführt.

Der EC, den das Framework verwendet, ist ein MEC1521-Chip von Microchip, und Anfang dieses Jahres haben sie die Firmware dafür als Open Source bereitgestellt. Jetzt gibt es ein Repository mit Mikrocontroller-Code, den Sie selbst kompilieren und mit dem Sie das Motherboard Ihres Framework-Laptops flashen können. In einem Kommentarbereich von HackerNews hat ein Framework-Vertreter spekuliert, dass man einem Framework-Motherboard durch EC-Firmware-Hacking GPIOs hinzufügen könnte.

Warte… Mikrocontroller-Code? GPIOs? Das bringt uns zu der Frage – was ist die EC wirklich? Zunächst einmal ist es nur ein Mikrocontroller. In jedem x86-Computer, einschließlich Laptops, finden Sie ein EC, das die untergeordneten Funktionen Ihres Computers wie Energieverwaltung, Tastatur, Touchpad, Akku und eine Reihe anderer Dinge verwaltet. Im Apple-Land kennen Sie sie vielleicht als SMC, aber ihre Funktion ist dieselbe.

Warum haben wir unsere ECs nicht die ganze Zeit neu programmiert? Das ist auch eine berechtigte Frage, und ich werde Ihnen alles darüber erzählen.

Was ist die Aufgabe der EC?

Das EC steuert eine ganze Reihe von Geräten in Ihrem Laptop. Keine Geräte, die an USB, LVDS/eDP oder PCIe angeschlossen sind, da diese in den Bereich des Chipsatzes fallen würden. Stattdessen sind dies Geräte wie Netzschalter, der Ladechip und verschiedene Stromwächter, da diese auch dann korrekt funktionieren müssen, wenn Chipsatz und CPU ausgeschaltet sind. Aber natürlich ist es nicht nur Energieverwaltung – es gibt eine ganze Menge Dinge in einem Laptop, für die man GPIOs braucht.

Abschnitt aus dem EEE PC 701-Schema, der die EC-Anschlüsse und sogar einige nicht verwendete Funktionen wie zusätzliche Tastenanschlüsse zeigt
Das EC eines EEE PC 701. Dieser hat sogar einige zusätzliche Signale für Medientasten, die in der Hardware weggelassen wurden!

Im Allgemeinen alles, was Sie mit a steuern würden digitalWrite oder überwachen Sie mit a digitalRead, über einen ADC messen oder mit I2C sprechen – das sind Dinge, die von der EC gehandhabt werden. So liest das EC den Batteriezustand und die Ladespannungen, treibt die Lüfter mit PWM an und nimmt Temperaturmessungen von verschiedenen Sensoren vor. Die Laptop-Tastatur ist eine Tastenmatrix, und das EC scannt diese Matrix und verarbeitet Tastendrücke und leitet die Tastenereignisse an den Chipsatz weiter, den Ihr Betriebssystem dann liest. Egal, ob Ihr Touchpad PS/2 oder I2C ist, das EC handhabt es und stellt es auch dem Betriebssystem zur Verfügung.

Der Netzschalter Ihres Laptops ist direkt mit dem EC verbunden. Infolgedessen wird Ihr EC als erstes eingeschaltet; und wenn ein defekter Laptop von Ihnen nicht auf den Netzschalter reagiert, bedeutet dies, dass das EC aus irgendeinem Grund seine Energieverwaltungsaufgabe nicht erfüllen kann. Wenn Sie sich die kürzlich veröffentlichten reduzierten Schaltpläne des Framework-Laptops ansehen, werden Sie feststellen, dass das EC über eine eigene separate Stromschiene verfügt, die direkt von der Batterie kommt.

Wie spricht es überhaupt mit dem Chipsatz? Seit etwa zwei Jahrzehnten verwenden ECs den LPC-Bus – einen vier Bit breiten Bus, der oberflächlich an qSPI erinnert. Abgesehen von ECs wird es in letzter Zeit nur von TPMs wirklich verwendet. LPC verwendet Frequenzen von 25 MHz bis 100 MHz. Wenn Sie also einen Logikanalysator für Ihre LPC-Signale einsetzen und einige Pakete erfassen möchten, reicht Ihr typisches billiges LA mit 25 Msps nicht aus, aber ein handelsübliches FPGA-Board oder ein viel schnelleres LA wird Wunder wirken, und es gibt einen Ziemlich cooles Papier, das LPC-Manipulation und ein FPGA verwendet, um Schlüssel aus TPMs zu extrahieren.

LPC ist etwa zwei Jahrzehnte alt und ein direkter Nachfolger des ISA-Busses – in einigen Laptop-Schaltplänen aus dem Jahr 2003 finden Sie stattdessen den EC über ISA verbunden, aber darüber hinaus ist alles LPC. Neuere ECs sprechen jedoch stattdessen von eSPI, einer qSPI-ähnlichen Schnittstelle, die LPC ersetzen soll, und das Framework EC spricht auch von eSPI.

Natürlich ist Firmware beteiligt

Jeder EC hat Firmware und jeder Laptop (und Desktop und Server!) hat einen EC. Die EC-Firmware ist fast immer Closed-Source. Daher ist die EC-Firmware einer der binären Blobs, die wir tendenziell übersehen, wenn wir über proprietäre Teile in unseren Computern sprechen. Oft ist die EC-Firmware auf demselben SPI-Flash-Chip wie das BIOS gespeichert – manchmal gibt es einen separaten externen oder On-Chip-Flash, in diesem Fall haben Sie normalerweise einen UART-Bootloader, über den Sie Ihr EC neu flashen können. All das hängt davon ab, welchen Hersteller und welches Modell des EC Sie haben.

Oft ist Ihr EC auf etwas wie ARM- oder 8051-Architektur aufgebaut, manchmal ist es etwas Undurchsichtigeres wie CompactRISC. Das Übliche ist, dass Sie höchstens einen binären Blob erhalten, wenn es um die Firmware Ihres EC geht. Irgendwann, als Google in das Laptop-Geschäft einstieg, sagte eine Gruppe ihrer Ingenieure vermutlich „genug“ und veröffentlichte ihren EC-Code – worauf Framework in Bezug auf ihre eigene EC-Firmware aufgebaut hat. Letztes Jahr hat System76 auch seinen EC-Code geöffnet. Leider bleibt die Situation für andere Laptop-Hersteller düster.

Könnte Ihr EC hintertürt werden? Unwahrscheinlich – es ist in der Regel schwieriger, die EC-Firmware zu ändern und zu aktualisieren, als dasselbe mit BIOS-Images zu tun. Nun, könnten Sie selbst das Verhalten Ihres EC ändern? Es ist zumindest technisch möglich, und ich würde argumentieren, dass Sie das immer hätten tun können sollen.

Also, was ist mit Hacken?

Natürlich finden Sie bei jedem Subsystem eines Laptops eine Untergruppe von Thinkpad-Enthusiasten, die bereits tief gegraben und damit einige lustige und nützliche Dinge herausgeholt haben. Die EC ist ein solcher Aspekt, und sie haben sicher etwas zu bieten – hauptsächlich das Umprogrammieren von Tastaturlayouts und das Entfernen von Batterieschlössern. Mit Tastaturlayouts haben sie es geschafft, ältere (und anscheinend bessere) Tastaturen mit neueren Laptops zum Laufen zu bringen, mit einem Tutorial, das darüber spricht, wie genau Sie bestimmte Pins isolieren müssen, und eine super bequeme Möglichkeit, die Änderungen zu flashen.

Der Akku-Teil ist jedoch wichtiger – Sie können oft mit einer unterdurchschnittlichen Tastatur leben, selbst auf vermeintlich ansonsten herausragenden ThinkPads. Das Problem ist die „echte“ Batterieprüfung im EC, die Sie die Batterie nicht laden (oder sogar betreiben) lässt, wenn sie nicht bestanden wird. Das schränkt nicht nur die Akkuoptionen von Drittanbietern ein, falls es sich so anhört – solche Prüfungen verbieten auch die Verwendung von Lenovo-Akkus, die nur für eine andere Art von Thinkpad gedacht waren, aber ansonsten mechanisch, elektrisch und elektronisch perfekt geeignet sind.

Es gibt ein Video darüber, wie sich das ThinkPad EC-Hacking entwickelt hat, und ich empfehle Ihnen, sich dieses anzusehen, um zu sehen, was los ist. Jetzt schien es Lenovo nicht zu gefallen, dass die Leute Tastaturen austauschten und die Verwendung von Batterien von Drittanbietern ermöglichten, für die Lenovo selbst keine „echten“ Gegenstücke mehr verkaufte. Also haben sie sich irgendwann entschieden, eine der bequemsten Möglichkeiten für die Aktualisierung der EC-Firmware zu schließen und ein BIOS-Update mit dem Hinweis auf „Sicherheitsverbesserungen“ zu veröffentlichen. Der entsprechende CVE sagt folgendes:

In verschiedenen BIOS-Versionen älterer ThinkPad-Systeme wurde eine Schwachstelle gemeldet, die es einem Benutzer mit Administratorrechten oder physischem Zugriff ermöglichen könnte, den Embedded Controller mit unsignierter Firmware zu aktualisieren.

Wenn Sie mich fragen, ist diese Beschreibung verrückt. Dieser Satz bedeutet im Wesentlichen „der Besitzer des Laptops kann EC-Firmware flashen, die nicht von Lenovo genehmigt wurde“. Ich frage mich, was dazu geführt hat und was die mögliche Rechtfertigung sein könnte, aber am Ende ist es, was auch immer der Grund sein mag, eine Ablenkung von dem, was ich glaube. Das heißt, ein Update der EC-Firmware auf dem eigenen Laptop sollte möglich sein, und Lenovo hat genau dafür eine benutzerfreundliche Möglichkeit geschlossen.

Außerdem respektieren nicht alle Hersteller Ihr Recht auf Reparatur, wenn es um ECs geht. Zum Beispiel liefert Dell seit fast einem Jahrzehnt seine Laptops mit ECs aus, die verschlüsselte Firmware haben, Schlüssel, die im EC verschmolzen sind. Dies war ein besonderes Problem für Dell-Laptop-Reparaturen, da EC hin und wieder abstürzt. Sie können zwar ein leeres EC kaufen und es anstelle des toten von Dell reflowen, aber es verfügt nicht über die Entschlüsselungsschlüssel, die Dell werkseitig in das EC flasht, und führt daher die verschlüsselte Firmware von Dell nicht aus. Modifikationen sind hier vom Tisch – nicht einmal ein passender EC-Ersatz ist bei einem Laptop-Defekt möglich, obwohl die Chips selbst reichlich vorhanden sind.

Was können Sie jetzt tun?

Jetzt gibt es drei Hersteller, die Open-Source-Firmware für ECs haben – Google, System76 und Framework. Was könnte man aber mit dieser Firmware machen? Wie bei jedem nicht ausgelasteten Bereich des Hackens wird es einige Zeit dauern, bis sein volles Potenzial ausgeschöpft ist. Das Neuzuordnen von Tasten ist nicht das Einzige – Sie könnten eine Batterieladegrenze von 80 % für die Lebensdauer der Zellen implementieren, wenn der Hersteller Ihres Laptops Ihnen keine solche zur Verfügung gestellt hat, Ihrer Laptop-Tastatur zusätzliche Schichten hinzufügen, ohne dass Betriebssystemunterstützung erforderlich ist, vielleicht Ihren Lüfter optimieren Kurven. Oder Sie könnten tatsächlich einige GPIOs in Ihrem Laptop hinzufügen, für alle Sensoren oder Tasten, die Ihr Herz begehrt.

Sie können auch Fehler beheben, die hin und wieder in ECs auftauchen und ziemlich lästig sein können – stellen Sie sich vor, Tastaturtasten bleiben hin und wieder scheinbar zufällig hängen, und genau das passiert, wenn Sie einen EC-Fehler haben. Fehlerbehebungen oder Verbesserungen, genau wie bei jeder Firmware, die uns derzeit verschlossen ist, werden wir ab morgen keine Menge cooler Hacks sehen, aber es gibt definitiv coole Dinge am Horizont, wenn es um EC-Hacking geht.

Leave a Reply

Your email address will not be published.