sebsus
New member
- Registriert
- 13 Mai 2024
- Beiträge
- 2
Hallo ThinkPad-Forum,
bestimmt lese ich jetzt schon 10 Jahre still mit und komme gleich mit einem größeren Projekt:
tl;dr
- SMBUS/I2C reverse engineering
- Akku Selbstbau
- ich brauche ein Ersatz-ThinkPad 240 von 1999/2000 oder Mainboard
- Kontakt/Anregungen erwünscht
Akkus für alte ThinkPads(90er/Anfang 2000er) sind schon seit Jahren sehr rar geworden. Als Hobby Projekt habe ich mir das Ziel gesetzt selbst für mein IBM Thinkpad 240 einen funktionierenden Akku zu bauen. Schließt man einfach ein Netzteil an den Akku-Stecker an, quittiert die Mainboard-Firmware die Fehlermeldung, dass es sich nur mit einem offiziellen Akku booten lassen möchte.
Das Battery Management System(BMS) des Laptop-Li-Ion-Akkus redet via SMBUS mit dem Computer Mainboard und tauscht Daten aus. Dabei werden Informationen, wie der Akkufüllstand, Temperatur, etc übertragen. Am wichtigsten ist jedoch die Übertragungssequenz, die den Akku gegenüber der Mainboard-Firmware autorisiert. Das heißt, man kann nicht eine beliebige Stromquelle anschließen, sondern muss vereinfacht gesagt noch ein richtiges "Schlüsselwort" nennen. Genau diese Übertragung möchte ich abhören und nachbauen, damit ein Selbstbau-Akku (mit BMS natürlich) adaptiert werden kann.
Das Akku-Protokoll nennt sich SMBUS und basiert auf I2C. SMBUS wird in der Regel in allen Laptops verwendet. I2C ist ein Standardprotokoll, mit dem jeder Arduino umgehen kann. Mein Kenntnisstand ist, dass zwischen Akku und Mainboard nichts übermäßig kompliziertes übertragen wird. Keine Crypto-Signatur-Spielereien, schließlich konnten auch andere Drittanbieter Nachbau-Akkus herstellen, als es für die alten Modelle noch einen Markt gab. Testweise konnte ich schon Übertragungen aufzeichen, unten ist ein Foto. Dazu habe ich einfach an die SMBUS/I2C-Pins des Akku Drähte gelötet und die Messproben von meinem Logic Analyzor/Speicher Oszilloskop angeschlossen.
Diesen Bärendienst an der Community betreibe ich rein hobbymäßig zum Spaß. Das Projekt möchte ich öffentlich zugänglich machen(z.B. im ThinkPad-Wiki, auf GitHub und meiner Webseite), damit noch Generationen an Nerds alte ThinkPads am Leben erhalten können. Ich selbst studiere und werde diesen Sommer meinen Master in Luft- und Raumfahrtinformtik fertig machen. Das heißt ich kenne mich ausreichend gut mit Embedded Sofware/Elektronik aus und bringe etwas Know-How mit. Einen cheapo USB-Logic Analyzer und ein besseres Siglent Speicheroszillskop habe ich, um die Übertragung zu dekodieren(sowie genug anderes Werkzeug, das man für so ein Projekt brauch). Mein unmittelbares Ziel ist es die wichtigen Bestandteile der Kommunikation auszumachen und mit einem Arduino auf dem Bus lesen und schreiben zu können. Daraus sollte sich schnell ein Batterie-Emulator bauen lassen, der der Computerfirmware vortäuscht mit einem Akku zu reden. Vielleicht kann ich das irgendwann als Arduino Projekt/Atmel/STM32/CV32v003 oder was auch immer bereitstellen. An die elektrische Komponente eines Akkus BMS möchte ich mich nicht ranwagen. Es geht nur um die Kommunikation, die ein generischen BMS so nicht bewerkstelligen kann.
Das ganze würde ich auch für meine recht verbreiteten ThinkPad 600/600E machen. In der Annahme, dass IBM große Teile der Entwicklungsarbeit nicht doppelt gemacht hat, und Protokolle/Komponenten weiterverwendet hat, ließen sich die Erkenntnisse auf eine Vielzahl andere ThinkPads/Laptops anwenden.
Leider ist mir beim Experimentieren mein ThinkPad 240 Mainboard kaputt gegangen. Wenn jemand im hier Forum ein altes IBM Thinkpad 240(x/z) fair abzugeben hätte, noch ein Mainboard hat oder sich traut mir eins länger auszuleihen, würde ich mich freuen an dem Projekt weiterarbeiten zu können. Ich selbst wohne im Raum um Karlsruhe in der Pfalz etwa, bewege mich aber auch häufiger nach Köln/Wiesbaden/Würzburg und würde mich über Kontakt freuen Bestimmt findet mich man auch auf der GPN Ende Mai
Über Hinweise, Akku/ThinkPad-Spenden ähnliche Projekte oder andere Fortschritte, auf die ich aufbauen könnte, würde ich mich sehr freuen
Schöne Grüße
sebsus
Sebastian Kind
Hier eine Aufgenommene Übertragung auf dem SMBUS/I2C-Bus zwischen Akku und ThinkPad 240 Mainboard. Oben sieht man die Bits, unten die Ausgabe des Protokoll Decoders:
Etwas unaufgeräumter Operationstisch, auf dem mit dem Oszi und dem einem Salea Logic Analyzer Klon gemessen wurde:
bestimmt lese ich jetzt schon 10 Jahre still mit und komme gleich mit einem größeren Projekt:
tl;dr
- SMBUS/I2C reverse engineering
- Akku Selbstbau
- ich brauche ein Ersatz-ThinkPad 240 von 1999/2000 oder Mainboard
- Kontakt/Anregungen erwünscht
Akkus für alte ThinkPads(90er/Anfang 2000er) sind schon seit Jahren sehr rar geworden. Als Hobby Projekt habe ich mir das Ziel gesetzt selbst für mein IBM Thinkpad 240 einen funktionierenden Akku zu bauen. Schließt man einfach ein Netzteil an den Akku-Stecker an, quittiert die Mainboard-Firmware die Fehlermeldung, dass es sich nur mit einem offiziellen Akku booten lassen möchte.
Das Battery Management System(BMS) des Laptop-Li-Ion-Akkus redet via SMBUS mit dem Computer Mainboard und tauscht Daten aus. Dabei werden Informationen, wie der Akkufüllstand, Temperatur, etc übertragen. Am wichtigsten ist jedoch die Übertragungssequenz, die den Akku gegenüber der Mainboard-Firmware autorisiert. Das heißt, man kann nicht eine beliebige Stromquelle anschließen, sondern muss vereinfacht gesagt noch ein richtiges "Schlüsselwort" nennen. Genau diese Übertragung möchte ich abhören und nachbauen, damit ein Selbstbau-Akku (mit BMS natürlich) adaptiert werden kann.
Das Akku-Protokoll nennt sich SMBUS und basiert auf I2C. SMBUS wird in der Regel in allen Laptops verwendet. I2C ist ein Standardprotokoll, mit dem jeder Arduino umgehen kann. Mein Kenntnisstand ist, dass zwischen Akku und Mainboard nichts übermäßig kompliziertes übertragen wird. Keine Crypto-Signatur-Spielereien, schließlich konnten auch andere Drittanbieter Nachbau-Akkus herstellen, als es für die alten Modelle noch einen Markt gab. Testweise konnte ich schon Übertragungen aufzeichen, unten ist ein Foto. Dazu habe ich einfach an die SMBUS/I2C-Pins des Akku Drähte gelötet und die Messproben von meinem Logic Analyzor/Speicher Oszilloskop angeschlossen.
Diesen Bärendienst an der Community betreibe ich rein hobbymäßig zum Spaß. Das Projekt möchte ich öffentlich zugänglich machen(z.B. im ThinkPad-Wiki, auf GitHub und meiner Webseite), damit noch Generationen an Nerds alte ThinkPads am Leben erhalten können. Ich selbst studiere und werde diesen Sommer meinen Master in Luft- und Raumfahrtinformtik fertig machen. Das heißt ich kenne mich ausreichend gut mit Embedded Sofware/Elektronik aus und bringe etwas Know-How mit. Einen cheapo USB-Logic Analyzer und ein besseres Siglent Speicheroszillskop habe ich, um die Übertragung zu dekodieren(sowie genug anderes Werkzeug, das man für so ein Projekt brauch). Mein unmittelbares Ziel ist es die wichtigen Bestandteile der Kommunikation auszumachen und mit einem Arduino auf dem Bus lesen und schreiben zu können. Daraus sollte sich schnell ein Batterie-Emulator bauen lassen, der der Computerfirmware vortäuscht mit einem Akku zu reden. Vielleicht kann ich das irgendwann als Arduino Projekt/Atmel/STM32/CV32v003 oder was auch immer bereitstellen. An die elektrische Komponente eines Akkus BMS möchte ich mich nicht ranwagen. Es geht nur um die Kommunikation, die ein generischen BMS so nicht bewerkstelligen kann.
Das ganze würde ich auch für meine recht verbreiteten ThinkPad 600/600E machen. In der Annahme, dass IBM große Teile der Entwicklungsarbeit nicht doppelt gemacht hat, und Protokolle/Komponenten weiterverwendet hat, ließen sich die Erkenntnisse auf eine Vielzahl andere ThinkPads/Laptops anwenden.
Leider ist mir beim Experimentieren mein ThinkPad 240 Mainboard kaputt gegangen. Wenn jemand im hier Forum ein altes IBM Thinkpad 240(x/z) fair abzugeben hätte, noch ein Mainboard hat oder sich traut mir eins länger auszuleihen, würde ich mich freuen an dem Projekt weiterarbeiten zu können. Ich selbst wohne im Raum um Karlsruhe in der Pfalz etwa, bewege mich aber auch häufiger nach Köln/Wiesbaden/Würzburg und würde mich über Kontakt freuen Bestimmt findet mich man auch auf der GPN Ende Mai
Über Hinweise, Akku/ThinkPad-Spenden ähnliche Projekte oder andere Fortschritte, auf die ich aufbauen könnte, würde ich mich sehr freuen
Schöne Grüße
sebsus
Sebastian Kind
Hier eine Aufgenommene Übertragung auf dem SMBUS/I2C-Bus zwischen Akku und ThinkPad 240 Mainboard. Oben sieht man die Bits, unten die Ausgabe des Protokoll Decoders:
Etwas unaufgeräumter Operationstisch, auf dem mit dem Oszi und dem einem Salea Logic Analyzer Klon gemessen wurde:
Zuletzt bearbeitet: