Die Entstehung des ruKernelTools




Da ich in letzter Zeit sehr oft gefragt wurde, wie es zu der Entstehung des ruKernelTools kam, was mich bewegt hat, so ein Tool zu entwickeln und
wie der Teddybär heißt, will ich hier die Fragen beantworten.

Im Juli 2008 habe ich nach einer langen Odyssee endlich VDSL von der T-Com geschaltet bekommen. Nach langem hin und her erhielt ich als Hard-
ware einen Speedport W920V. Als langjähriger Fritzbox-Benutzer war ich aber von der Oberfläche und den Features des Speedports enttäuscht.
Daher begann ich mich in das Thema Speedport2Fritz einzulesen. Ich habe über Wochen das Thema in diversen Foren mitgelesen und im Januar 2009
dann Linux auf meinem Notebook installiert, viele Webseiten über Rettungsmöglichkeiten, für den Fall der Fälle, lokal gespeichert und dann meine erste
Firmware mit dem s2f-Script erzeugt. Bis zu diesem Zeitpunkt hatte ich schon sehr viele verschiedene Devices geflasht, vom Handy bis zu Komponenten
in großen HighEnd-Servern, so dass das Thema Flashen für mich nichts Neues war. Das erste Mal an einem neuen Device ist aber trotzdem immer
wieder etwas aufregendes.

Als ein Freund von mir, der in Linux noch wesentlich fitter ist als ich, zu Besuch kam, versuchten wir zu Zweit, eine Firmware zu erzeugen und diese via
s2f-Script auch gleich auf den Speedport zu flashen. Und was soll ich sagen? Es ging in die Hose. Die Erzeugung der Firmware hat funktioniert, nicht
aber die Übertragung via Script. Wir haben diverse Tipps und Tricks probiert, aber es wollte vom Script aus nicht direkt funktionieren. Per Hand, via
FTP, ging es dann aber doch irgendwie und ich erfreute mich an einem fritzifizierten Speedport.

Mehrmals im Monat gab es in der folgenden Zeit neue Labor-Firmwaren und auch das s2f-Script wurde verbessert. Daher stand ich laufend wieder vor
dem Problem, die Firmware zu erzeugen und auf den Speedport zu bringen. Unter Linux hatte ich es dann irgendwann mal geschafft, aber die "Treffer-
quote" war nicht wirklich hoch. Dann kamen die ersten Freunde auch auf mich zu, die mich fragten, ob ich ihnen nicht den Speedport fritzifizieren könnte.
Leider hatte keiner Linux zuhause, alle "nur" Windows. Darum fing ich an, nach Flashanleitungen für Windows zu suchen und da gab es eigentlich nur 2
Methoden: Den Total Commander und das NcFTP. Da ich kein Fan vom Total Commander bin, habe ich mich mit dem NcFTP beschäftigt und fand
auch eine kleine Batch von JPascher, die einem das Flashen erleichtern könnte.

Per Hand, mit dem NcFTP, flashen gelang mir immer zu 100%, nur mit der Batch klappte es nicht zuverlässig. Mein erster Ansatz war, diese Batch
umzuschreiben. Das habe ich allerdings sehr schnell wieder verworfen und von Grund auf ganz neu angefangen. Ende Februar, Anfang März 2009 lief
es dann schon problemlos und ich war in der Lage, meine vorher in Linux erzeugten Firmwaren, bei mir und auch bei meinen Freunden zu flashen. Parallel
dazu war ich im Forum aktiver und habe dem ein oder anderen meinen ruSpeedPortUploader per Email angeboten. Die ersten Nutzer haben mich dann
gebeten, das Tool doch offiziell auch anderen zur Verfügung zu stellen, denn ein Flashen unter Windows ist vielen doch vertrauter, als in Linux. Darum
habe ich im April 2009 die erste Version des ruSpeedPortUploaders zum Download auf meiner Homepage angeboten.

Die vielen Anfragen haben mich total überrascht! Es waren anfangs ca. 30 Downloads täglich und ich bekam durch die Bank positives Feedback. Bis
Ende des Monats hatte ich dann noch ein paar Dinge eingebaut und das ist eigentlich der aktuelle Stand des ruSpeedPortUploaders. Lediglich die
Dokumentation habe ich erweitert.

Hauptfehlerquelle war und ist, dass das kernel.image nicht aus der Firmware entpackt wird bzw. die falsche Adam2-IP-Adresse eingestellt wird. Aus
diesem Grund wollte ich eine benutzerfreundliche Oberfläche für den ruSpeedPortUploader bauen. Für die Scriptsprache AutoIt habe ich mich entschlos-
sen, weil ich diese schon für die Programmierung von Installationsscripten gut kannte. Doch während der Programmierung habe ich zunehmend die Funk-
tionen aus der Batch in die neue Oberfläche übernommen. Letztendlich blieb nichts mehr in der Batch übrig und die kompletten Funktionen wurden von
der Oberfläche gestartet, bzw. als Unterfunktionen in AutoIt implementiert. Das war die Geburtsstunde vom ruKernelUploader, den ich bei Bedarf ab
Mitte/Ende Mai 2009 weitergegeben habe.

Parallel dazu gab es dann die ersten Firmwaren der Fritzbox 7570, die man direkt flashen konnte. Man brauchte kein Linux mehr! Meine eigene Samm-
lung an erzeugten Firmwaren für die diversen Speedport-Router wuchs an, so dass ich nicht immer alle aktuellen Firmwaren rumschleppen, aber vom
ruKernelUploader Zugriff auf diese Sammlung haben wollte. Das war der Grund für die Funktion zum Firmware-Downloaden von meinem FTP-Server.
Auch fielen mir jeden Tag neue Funktionen ein, die das Flashen oder das Handling von Routern und deren Firmware leichter machen. Dann kam ich
auf die Idee, nicht nur die Firmware auf den Router zu flashen, sondern auch die Firmware vom Router auszulesen, runterzuladen, also zu dumpen.

Nun passte die Funktionalität nicht mehr zum Tool-Namen ruKernelUploader und ich habe das Tool in ruKernelTool umbenannt. Das war Ende Juni
2009. Getrieben von den vielen Nachfragen, den durchwegs positiven Feedbacks, den ein oder anderen Feature-Requests und meinen täglich neuen
Ideen, habe ich, immer wenn meine Gesundheit, meine Lust, Laune und Zeit es zuließ, das ruKernelTool weiter entwickelt.

Täglich kamen im Forum neue User hinzu, die ihren W920V oder einen anderen Speedport umflashen wollten und parallel zum Speedport2Fritz-Script
eine Notlösung in der Hinterhand haben wollten, falls was schief geht oder, so wie ich, die Firmware unter Windows flashen wollten. Daher wollte ich
ursprünglich das Tool schon viel früher für alle zugänglich machen. Es gab dann aber unschöne Dinge, die mich dazu veranlassten, das Tool nur noch auf
Anfrage zur Verfügung zu stellen. Auch war die Dokumentation noch nicht soweit und ich wollte auch direkt Feedback zum Handhabung bekommen.

Es gab bzw. gibt leider immer noch Probleme bei machen Netzwerkkarten bzw. deren Treibern. Einige lassen sich nicht problemlos auf statische IP-
Adressen umstellen, was ich aber, um zuverlässige zu Flashen, für wichtig halte. Es kommt zwar nicht oft vor, aber das Problem wollte ich lösen. Daher
habe ich viel Zeit in die Entwicklung von Workarounds gesteckt, letztendlich aber keine wirklich funktionierende Lösung gefunden, so dass ich den An-
spruch auf ein 100% funktionierendes Flashtool aufgeben musste. Etwas gefrustet habe ich dann angefangen, die Dokumentation zu erweitern und auch
damit begonnen, die immer wiederkehrenden Fragen zusammen zu schreiben.

Von Anfang an habe ich großen Wert darauf gelegt, dass das Tool auch von Leuten benutzt werden kann, die sich noch nicht so tief in das Thema einge-
arbeitet haben, wie ich mittlerweile. Die Bedienung sollte einfach sein, man sollte möglichst wenig Fehler machen können und an den kritischen Stellen
sollen die wichtigen Hinweise ausgeben werden.

Auch las ich immer wieder von Problemen bei der Annex und Branding-Umstellung, so dass der Funktionsumfang des ruKernelTools wuchs und wuchs
und damit auch die Download-Link-Liste der aktuellen Firmwaren. Mittlerweile wird mein Tool nicht nur für das Umflashen von Speedports benutzt,
sondern auch in vielen Ländern eingesetzt, um damit Fritzboxen auf Annex A-fähige Firmwaren umzuflashen oder auf Annex A umzustellen.

Stand heute, also 8.4.2010, ist das Tool in meinen Augen zu 90% fertig. Die Dokumentation ist ausreichend, aber bei weitem nicht so, dass sie meinen
eigenen Vorstellungen entspricht. Einhergehend damit wollte ich die Dokumentation gleich in Drupal auf einer neuen Homepage machen. Da aber zum
Teil leider nicht einmal die vorhandene Dokumentation, FAQ und MouseOver-Texte gelesen werden, habe ich seit 1 1/2 Wochen das ruKernelTool
zum Beta-Download zur Verfügung gestellt, mit der Bitte um Feedback über das Tool an sich und die Dokumentation. Ich möchte damit ein Gefühl
dafür entwickeln, was für eine erneute Release Candidate noch notwendig, was also Pflicht, und was noch Kür ist.

Ideen hätte ich noch ein paar, aber jetzt warte ich erstmal das Feedback ab und entscheide dann, wie viel Energie ich noch in das ruKernelTool stecke.
Und um die letzte Frage von ganz oben auch noch zu beantworten: Der Teddybär heißt Bommel und sitzt hier neben meinem PC. Er war ursprünglich
als Übergangslösung gedacht, aber da mir einige Tool-Benutzer schrieben, dass sie Bommel sehr beruhigend finden, habe ich beschlossen, dass er
im ruKernelTool mit 2 Routern im Arm als Logo bleibt.

Update 21.04.2011:
Ich habe nun doch eine neue Möglichkeit gefunden, auch die Netzwerkkarten mit problembehafteten Treibern einwandfrei auszulesen, auf statische
IP-Adressen und nach dem Flashen wieder auf DHCP umzustellen. Ab der V0.5.x.x komme ich meinem Ziel jetzt doch näher :-)

Update 28.06.2011:
Mit der Version V.0.5.0.3 sollten jetzt auch Netzwerkkarten mit problembehafteten Treibern einwandfrei erkannt und umgestellt werden können.

Update 02.02.2016:

Das ruKernelTool wurde in den letzten Monaten und Jahren funktionell nicht mehr großartig weiterentwickelt, weil dazu keine Notwendigkeit bestand.
Es kam die ein oder andere kleine Funktion dazu und die diversen Listen, allen voran die Firmware-Link-Listen wurden fleißig eingepflegt. Laut Down-
load- und Updatedownloadzahlen wird das ruKernelTool im In- und Ausland fleißig genutzt.

Doch mittlerweile hat AVM neue Fritzbox-Modelle mit moderneren Flashes (NAND statt NOR) auf den Markt gebracht, was wiederum einen anderen
(vom bisherigen abweichenden) Flash-Vorgang erfordert. Zu den ersten Modellen dieser neuen Fritzboxen gehört die 7490, 3370 und die 6840 LTE.
Das direkte Flashen dieser neuen Fritzbox-Modelle wird derzeit noch nicht vom ruKernelTool V0.6.x.x unterstützt.

Obendrein wurden 2013 große Sicherheitslücken im Betriebssystem Fritz!OS entdeckt und von AVM im Frühjahr 2014 mit einer außergewöhnlichen
Flut an überarbeiteten Firmwaren darauf reagiert. Seither arbeitet auch AVM daran, immer mehr eventuell für Angriffe ausnutzbare "Lücken" zu
schließen. Angefangen hat es damit, dass der telnet-Daemon aus der Firmware verbannt wurde, bis hin, dass ab der xx.06.51 keine unsignierten Firm-
waren mehr geflasht werden können.

Einfache Dinge wie z.B. das Branding umstellen funktioniert jetzt nicht mehr so einfach, da der telnet dafür vorausgesetzt wird. Bleibt langfristig für
manche Einstellungsänderungen (z.B. besagtes Branding ändern) dennoch der Weg über den Bootloader (Adam2-Modus). Momentan mit Handarbeiten
über "In Adam2 halten". Doch mein bzw. unser Anspruch ist es aber, auch weiterhin für die Benutzer des ruKernelTools dies in Funktionen und Buttons
wieder zur Verfügung zu stellen.

Parallel dazu haben wir zur Jahreswende 2015/2016 unter dem Projektnamen ruKernelToolX (mit "X" am Ende) angefangen, die momentan aus
ruKernelTool-Sicht nicht direkt flashbaren Router wieder flashbar zu machen. Dazu haben wir im Dezember 2015 nach der V0.6.4.12 einen neuen
Entwicklungszweig (Branch) aufgemacht und entwickeln seither parallel im Hintergrund weiter.

Hierfür mussten wir uns erst einmal einen Schwung neue Fritzboxen zulegen, fleißig recherchieren und testen. Nach harter Arbeit waren wir wieder in der
Lage, als erstes die 7490 zu flashen. Deutsche auf international und umgedreht. Auch der Vor- oder Rückwärtssprung in der Firmwareversion geht wieder.

Jetzt müssen noch weitere Tests folgen und das ganze noch schöner gestaltet werden. Auch folgen gerade Anpassungen an weitere Fritzboxen, wie die
3370, 7362SL, 7412 und 7430. Bisher sehen erste Tests sehr positiv aus. Da es aber ein Freizeitprojekt ist, können wir heute noch keine Angaben dazu
machen, wann wir damit fertig sind, ob und wann es ggf. wieder ins normale ruKernelTool einfließt oder ob eventuell ein neues Tool entsteht.

Vorabversionen geben wir noch nicht raus. Für uns ist es wichtig, dass auch weiterhin die einfache und sichere Handhabung gewährleistet ist.



02.02.2016, V1.05, Copyright © 2009-2017 by Rainer Ullrich - Alle Rechte vorbehalten! Anregungen und Fehler bitte an Rainer