Reverse Engineering: Wie ich Linux auf dem Oszilloskop installierte
Die Open-Source-Community liebt es, Linux selbst auf vermeintlich geschlossenen Systemen zu installieren. Ich habe Linux auf einem Digital-Oszilloskop zum Laufen gebracht.
Ob Fernseher, Router oder Kinder-Handheld, die Liste der Geräte, auf denen Linux von Nutzern installiert wurde, ohne dass es der Hersteller vorgesehen hat, wird immer länger. Doch wieviel Aufwand steckt eigentlich dahinter? Welches Wissen ist notwendig, welche Software-Werkzeuge?
- Reverse Engineering: Wie ich Linux auf dem Oszilloskop installierte
- Auf der Suche nach neuen Kontakten
- OpenOCD zum Debuggen
- Flash-Speicher auslesen
- Register auslesen
- Trotzdem ist es nicht ganz einfach
- Wie es weitergeht
Christer Weinigel, freiberuflicher Ingenieur, hat in seinem Blog eine Artikelserie publiziert, in der er beschreibt, wie er ein Oszilloskop per Reverse Engineering analysiert hat und noch analysiert. Mit den dabei bereits erworbenen Kenntnissen über die Hardware und die Firmware gelang es ihm, eine lauffähige Linux-Installation aufzusetzen und auch die besonderen Fähigkeiten des Oszilloskops zur Signalanalyse unter Linux nutzbar zu machen.
Der Autor hat uns erlaubt, seine Artikel ins Deutsche zu übersetzen und dabei einige Kürzungen und Ergänzungen vorzunehmen, damit der Inhalt auch Einsteigern verständlich ist.
Ein Oszilloskop zum Hacken
Vor ein paar Jahren habe ich mir ein OWON-SDS7-102-Oszilloskop gekauft. Die Spezifikationen sahen gut aus: angemessene Bandbreite und Sampling-Raten, ein großes, helles Display, Akkubetrieb und Anschlüsse für USB und Ethernet. In der Praxis zeigten sich aber einige Macken, manches funktionierte nicht richtig.
Trotzdem war es mir als Zweitgerät nützlich. Zumeist musste ich die Übertragung einer I2C- oder SPI-Verbindung prüfen und dabei störten die Einschränkungen des Gerätes nicht. Sein großes Display und die intuitiv angeordneten Bedienungselemente machen es hier zu einem guten Werkzeug. Außerdem passt es in eine alte Laptoptasche, und weil es preiswert war, mache ich mir auch keine Gedanken, dass es beim Transport kaputtgehen könnte. Für unterwegs ist auch der Akkubetrieb von Vorteil.
Ich habe es aber auch noch aus einem anderen Grund gekauft. Andere Nutzer haben es bereits auseinandergenommen und deshalb wusste ich, dass darin ein System-on-a-Chip (SoC) von Samsung steckt sowie ein Spartan-6-FPGA. Mit beiden bin ich vertraut. Im Hinterkopf hatte ich die Idee, einmal ein wenig Reverse Engineering zu betreiben und damit Verschiedenes auszuprobieren. Zwei Jahre nach dem Kauf setzte ich die Idee in die Tat um.
Was ist Reverse Engineering?
Die Idee hinter Reverse Engineering ist es, ein fertiges System von jemandem anzuschauen und dessen Funktion und Entwicklung zu verstehen.
Es gibt bereits eine große Diskussion zum Oszilloskop im Forum des EEVBlogs und große Teile des Gerätes wurden bereits analysiert. Allerdings konzentrieren sie sich stark auf die analogen Parts, meine Neugier galt hingegen der digitalen Verarbeitung und der Firmware.
Das Oszilloskop wird zerlegt
Am Anfang wird das Gerät zerlegt, um herauszufinden, aus welchen größeren Bestandteilen es besteht. Ich öffnete das Oszilloskop und entfernte Bauteile, bis ich auf das Mainboard stieß, das die eigentliche Arbeit verrichtet.
Als Nächstes galt es, die wichtigsten Bauelemente auf dem Mainboard zu finden und eine Vorstellung davon zu entwickeln, wie sie zusammenarbeiten.
Die Bauteile auf der Frontseite
Hier ist die Seite der Mainboard-Platine zu sehen, die der Vorderseite des Oszilloskops zugewandt ist.
Der Anschluss zur LCD-Platine ist in der oberen linken Ecke, eine Steckverbindung zum Frontpanel des Oszilloskops mit all seinen Tastern und Knöpfen ist in der rechten oberen Ecke. Der quadratische Chip im oberen Teil ist mit "Chrontel 7026B-TF" beschriftet. Eine kurze Internetsuche bestätigt, dass es sich um einen 7026B TV/VGA Encoder der Firma Chrontel handelt. Ansonsten gibt es nicht hier nicht viel zu sehen. Die Schaltkreise, an die die Tastköpfe des Oszilloskops angesteckt werden (Analog-Frontend - AFE), sind durch eine Abschirmung verdeckt. Ich will die Abdeckung lieber nicht entfernen, wenn ich nicht muss. Jemand namens tinhead hat das im EEVblog bereits getan.
Die Bauteile auf der Rückseite
Für mich deutlich interessanter ist die Rückseite mit ihren elektronischen Chips. Das quadratische Bauteil im oberen Teil ist ein Samsung-S3C2416-SoC. Links von der CPU befindet sich ein Metallobjekt mit dem Aufdruck 12.0000M. Bei solchen Metallteilen handelt es sich immer um einen Quarz, hier um einen 12MHz-Quarz für den SoC. Auf dem Bauteil rechts vom SoC ist Samsung K9F1G08U0C aufgedruckt. Eine schnelle Suche sagt mir, dass es sich um einen 128M-x-8Bit-NAND-Flash-Speicher handelt. Den sichtbaren Leiterbahnen auf der Platine nach ist er mit dem SoC verbunden, darauf ist wahrscheinlich die Firmware gespeichert. Das Bauteil unter dem SoC ist ein Hynix H5PS5162GFR - entweder ein 32- oder 64-MByte-DDR2-Speicherbaustein. Dessen Leiterbahnen führen ebenfalls zum SoC.
Der Chip rechts unterhalb des SoC ist ein Xilinx-Spartan-6-XC6SLX9-FPGA. Darüber befindet sich ein weiterer Hynix-DDR2-RAM-Baustein, dessen Leiterbahnen zum FPGA führen. Der Speicher nimmt vermutlich die analogen Messdaten auf. Eine große Anzahl von Leiterbahnen führen zu einem großen Bauteil mit einem National-Semiconductor-Logo darauf und den Bezeichnungen VE206ABE2 und S7002952. Eine direkte Internetsuche zu diesen Bezeichnungen ergibt zuerst keine Ergebnisse, aber nach einer intensiveren Recherche scheint es ein ADC08D500 zu sein, ein 8-Bit-Analog/Digital-Konverter (ADC). Er kann zwei Kanäle mit je 500 Msamples pro Sekunde oder einen Kanal mit 1 Gsample pro Sekunde analysieren. Das entspricht den Spezifikationen des Oszilloskops. Zwei verschiedene Paare von Leiterbahnen verschwinden unter der Abdeckung und scheinen die ADC-Daten vom Analog-Frontend zu liefern.
Links vom ADC befindet sich ein Bauteil, das mit ADF und 4360-7 beschriftet ist, es ist ein "350 to 1800MHz Integrated synthesizer and VCO" von Analog Devices. Die Bauteile darüber und links davon sind mit "0.100000" und "DCP1311 1315" markiert. Darüber konnte ich keine Informationen finden, aber ich vermute, es handelt sich um Quarzoszillatoren, die als Referenzquellen für den ADF4350-Synthesizer dienen.
Nahe des Ethernet-Anschlusses befindet sich ein Micrel-KSZ8851-Single-Port-Ethernet-MAC/PHY. Daneben befindet sich wieder ein Metallobjekt mit der Aufschrift L25.000M, von dem zwei Leiterbahnen zu den Taktpins des KSZ8851 führen. 25 MHz ist eine typische Frequenz für Ethernet-Chips - und das ist offensichtlich der zugehörige Taktquarz.
Schließlich gibt es noch ein Bauteil mit der Aufschrift AT88SC 0401CA, für das ich kein direktes Datenblatt finden konnte. Wahrscheinlich ist es ein Krypto-Chip von Atmel, der die Seriennummer des Gerätes enthält und verifizieren kann.
Auf der Suche nach neuen Kontakten |
+1 Mehr davon und ich abonniere auch. Und wie laoladabamba sagt, die Weltraumartikel...
Aber ehrlich. Wenn's nur News über neue Grafikkarten gibt heulen die selben Leute über...
ich seh das ja auch immer mit einem zwinkernden Auge. Entwickler sollen entwickeln und...
Die Chancen dass es ein Linux ist sind relativ gross. Würde es mich interessieren hätte...