skweez.net

Alles skweez?

Alles zu “flash”

07.07.2011

BIOS wiederherstellen mit Arduino

von mks.

Vor einiger Zeit habe ich mein nur wenige Monate altes Mainboard gebrickt, indem ich versehentlich eine falsche BIOS-Version eingespielt habe. Leider kam die Erleuchtung zu spät: Never change a running system! Gut, dass ich noch ein Notebook habe und dass ich eh schon immer mal etwas mit einem Arduino machen wollte. Jetzt schien mir die richtige Gelegenheit dafür.

Warnung: Der Artikel ist etwas lang. Für Individuen der Twitter-Generation mit einer auf 140 Zeichen verkürzten Aufmerksamkeitsspanne hier die Kurzform:

Hab es geschafft: #bios #flashen mit #Arduino https://github.com/michaelkanis/arduino_bios_flash

Vorbereitung

Zunächst war ich mal erleichtert, als ich gesehen habe, dass der Chip gesockelt und nicht gelötet ist. Das machte das Vorhaben um einiges einfacher. Den Aufkleber des Mainboard-Herstellers vom Chip entfernt, gibt dieser seine Typenbezeichnung preis. Wenn man ein bisschen nach den vielen Nummern googlet, findet man schnell raus, um welchen Chip es sich handelt. Meiner ist ein Macronix MX25L8006E. Eine Makroaufnahme mit einer einfachen Digicam hilft, die winzige Schrift lesbar zu machen.

Das Datenblatt des Herstellers erwies sich als sehr hilfreich. Erste Erkenntnis: der Chip wird per Serial Peripheral Interface (SPI) angesprochen. Der Arduino unterstützt dieses Protokoll ebenfalls von Haus aus. Würde er das nicht, könnte man es per Bit-Banging implementieren.

Mein größtes Problem war nun, dass der Arduino mit 5V-Pegeln arbeitet, der Macronix-Chip aber nur 3,3V-Pegel unterstützt. Das Risiko, den Chip durch eine zu hohe Spannung zu zerstören, wollte ich angesichts der schweren Beschaffbarkeit in Deutschland nicht eingehen. Allerdings bin ich Software-Entwickler und kenne mich im Prinzip überhaupt nicht mit Elektronik aus. Das nur als Anmerkung, falls jemand meine Lösungsversuche saudämlich findet. :-)

Meine grundlegende Vorgehensweise sollte so aussehen: Schaltung aufbauen. Software schreiben in drei Schritten: Chip auslesen, löschen, neu beschreiben. (EEPROM-Chips werden in zwei Schritten zunächst gelöscht und können dann erst neu beschrieben werden)

Erster Versuch: Spannungsteiler

Eine einfache Möglichkeit, aus einer höheren Spannung eine Niedrigere zu machen, ist ein Spannungsteiler. Weil ich mehrere Leitungen absenken musste, entschied ich mich, stattdessen den Ground-Level zu erhöhen. Da der erhöhte Ground-Level nun die LOW-Spannung auf ca. -1,7V abgesenkt hat, habe ich Dioden eingebaut, die daraus wieder 0V machen sollten. Nach einigem Basteln hatte ich nun eine scheinbar funktionstüchtige Schaltung. Natürlich habe ich den Chip erst eingesteckt, nachdem ich mit dem Multimeter sämtliche Spannungen an allen Pins (mehrmals) überprüft hatte.

Das Schreiben der Software zum Auslesen des Chips ging relativ flott, hier war ich wieder in “meinem Element”. Zunächst sah es auch so aus, als wäre ich am Ziel. Das Auslesen klappte. Meistens. Manchmal. Irgendwie nicht zuverlässig. Bits gingen verloren. Mist.

Die Lösung: Zufall

Durch Zufall fand ich heraus, dass mein Arduino auf den 5V-Leitungen nur 3,3V ausgibt, wenn man ihn mit einem Netzteil statt über USB mit Strom versorgt, obwohl das Netzteil auch 5V hat. Ob das ein Bug oder ein Feature ist, weiß ich nicht, für mich ist es ein Feature. Da ich die USB-Verbindung trotzdem brauchte, um die BIOS-Datei zum Arduino zu übertragen, kappte ich in einem USB-Kabel die 5V-Leitung. Dann entfernte ich den Spannungsteiler und schloss den Chip direkt an den Arduino an. Jetzt klappte das Auslesen reproduzierbar perfekt. Was ich jetzt noch brauchte, war ein Stück Software auf Laptop-Seite, dass dem Arduino das BIOS in kleinen Happen schickt und wartet, da der BIOS-Chip zum flashen eine gewisse Zeit braucht. Nach ca. 10 Minuten war der Chip neu geflasht und mein Rechner startete wieder. Die Performance wäre vielleicht noch ausbaufähig, aber ich war ja am Ziel. Deswegen ist die Software auch nicht sonderlich schön. Insbesondere fehlt jede Fehlerbehandlung. Ich stelle sie trotzdem auf Github, vielleicht kann sie ja mal noch jemand gebrauchen. Lizenz: Beerware. Tut damit, was Ihr wollt und flattrt mir ein Bier, wenn Ihr mögt. Oder auch nicht. Gewähr gibt es natürlich keine, wenn ihr damit mehr kaputt macht, seid ihr selbst Schuld. :-)

Falls jemand mit Ahnung von Elektronik das hier liest: Warum klappt es mit dem Spannungsteiler nicht? Ist da ein Bauteil zu langsam? Ich habe auch gelesen, dass man aus so einer Schaltung nicht viel Strom ziehen darf. Könnte es daran liegen?

Könnte man stattdessen in jeder Leitung drei Silizium-Dioden in Reihe vorschalten, um die Spannung um (3 * 0,6V) = 1,8V auf 3,2V zu verringern?

12.02.2010

Sie benötigen Flash

von mks.

Seitdem ich Flash von meinem Rechner verbannt habe, lese ich immer mal wieder Sätze wie diesen:

Ihre Flash Version ist überholt. Um diese Seite zu benutzen, brauchen Sie Flash Version 10.

Dazu kann ich nur sagen, falsch!

Ihre Web-Designer sind überholt. Um diese Seite zu benutzen, installiere ich mir auf keinen Fall wieder Flash in irgendeiner Version. Setzen Sie auf offene Standards, bis dahin gehe ich einfach zur Konkurrenz.

05.01.2010

Warum Flash aus Benutzersicht schlecht ist

von mks.

Ich werde oft wegen meiner offen ablehnenden Haltung gegenüber Flash gefragt, was ich denn konkret so schlecht daran finde. Oft weiß ich dann nicht recht zu antworten, nicht etwa weil ich es nicht wüsste, sondern einfach weil ich mir noch nie Gedanken gemacht habe, wie ich das Anderen erklären könnte. Darum möchte ich es hier mal niederschreiben, auch wenn es im Web wahrscheinlich schon sehr viele solcher Argumentationen gibt.

Meine Argumente lassen sich grob in drei Bereiche einteilen, Usability, Accessibility und Sicherheit, von denen die Usability (Benutzerfreundlichkeit, Ergonomie) wohl den Größten darstellt.

Usability

Es gibt Menschen, die den Rechner zeitweise lieber mit der Tastatur als mit der Maus bedienen. Flash “schluckt” aber sämtliche Tastendrücke. Eine Tastaturbedienung des Browsers wird dann unmöglich.

Links in Flash-Inhalten lassen sich nicht in neuen Fenstern oder Tabs öffnen. (z.B. Klick mit mittlerer Maustaste)

Das Verweisen auf Inhalte in Flash-Webseiten ist oft unmöglich. Verweise sind aber eine der grundlegenden Ideen hinter dem Web.

Flash-Seiten hebeln meist auch die vor- und zurück-Funktion (sowie aktualisieren und evtl. andere) des Browsers aus oder machen diese zumindest unbrauchbar.

Das Kopieren von Text, Links und Bildern aus Flash-Inhalten ist meist nicht möglich. Manchmal ist das ausdrücklich nicht erwünscht, aber wer nicht will dass auf seine Inhalte nicht verwiesen werden kann, sollte sie lieber nicht ins Web stellen.

Ist Flash nicht vorhanden, wird der komplette Inhalt nicht angezeigt. Web-Designer rechnen mit Verfügbarkeitsraten und in der tat ist Flash heutzutage vermutlich auf der Mehrzahl der Rechner vorhanden. Doch beißt sich diese Katze in den Schwanz, denn Microsoft Windows z.B. kommt normalerweise nicht mit vorinstalliertem Flash daher. Das bedeutet das Flash deswegen vorhanden ist, weil es der Benutzer schon für irgendeine Website installiert hat.

Dazu kommt, dass Flash nur auf einer eingeschränkten Zahl Plattformen verfügbar ist. Probleme machen exotische Betriebssysteme aber auch im Jahr 2010 hat Adobe 64-Bit-Systeme noch nicht im Griff. Seit der Version 10 unterstützt Flash endlich auch 64-Bit-Systeme.

Accessibility

Der zweite Block ist die sog. Accessibility. Diese betrifft im Verhältnis zwar nur einen kleinen Teil der Surfer, doch ist er sehr wichtig, da die folgenden Punkte besonders diskriminierend wirken. Denn Accessibility bedeutet Barrierefreiheit bei der Benutzung für Menschen unabhängig Ihrer körperlichen und technischen Möglichkeiten, also das Zugänglichmachen von Inhalten auch für Behinderte.

Blinde Menschen sind bei der Arbeit am Rechner bspw. auf Braille-Geräte und Bildschirmleser angewiesen. Doch diese funktionieren i.A. nur mit Textinhalten. Das W3C hat sich hierzu Gedanken gemacht, sodass es zum Beispiel möglich ist, Bildern im Web eine textuelle Beschreibung zu geben, die ein Braille-Gerät anzeigen oder eine entsprechende Software vorlesen kann. Braille und Bildschirmleser funktionieren meines Wissens nicht mit Flash.

Des weiteren gibt es Menschen die nicht ohne Probleme mit der Maus umgehen können und auf die Bedienung des Rechners mit der Tastatur angewiesen sind. Wie ich aber weiter oben schon festgestellt habe, machen Flash-Inhalte die Tastaturbedienung unnötig schwer.

Ein zu diesem Thema interessanter Wikipedia-Artikel ist “Barrierefreies Internet“.

Sicherheit

Flash ist eine proprietäre Software, deren Quellcode nicht vom Benutzer eingesehen und zwecks Sicherheitslücken überprüft werden kann. Man muss bedenken, dass Software niemals vollkommen fehlerfrei ist. Somit bringt jede zusätzliche Software im Browser auch extra potentielle Sicherheitslücken (zusätzlich zu denen des Browsers).

Dass Flash ein “Resourcenschwein” ist, auf älteren und leistungsschwächeren Rechnern das Erforschen des WWW unerträglich macht und auch auf modernen Rechnern unverhältnismäßig viel Speicher und Rechenzeit braucht, sei hier nur am Rande erwähnt.

Negativbeispiele

Viele große Unternehmen setzen auf Flash bei der Gestaltung Ihrer Web-Auftritte. Bis vor einigen Jahren konnte man nahezu keine Site der großen deutschen Autohersteller ohne Flash-Plugin nutzen. Heute bleibt immerhin nur noch VW, die keine standardkonforme Alternative anbieten.

Youtube und alle anderen mir bekannten Videoportale nutzen Flash für das Einbetten der Videos.

Die öffentlich-rechtlichen Medienanstalten setzen extensiv auf Flash. Arte +7 und die ZDF Mediathek sind hier nur zwei Beispiele. Dies ist umso bedenklicher, als dass sie von allen deutschen Haushalten mit Internetzugang eine Gebühr für Ihre Inhalte eintreiben, unabhängig davon, ob man diese nutzen kann oder nicht.

Alternativen

So, genug genörgelt. Jetzt stellt sich doch die Frage, welche Alternativen es gibt. Generell kann ich sagen, dass mir noch kein Auftritt mit dynamischen Inhalten untergekommen ist, den man nicht auch mit Javascript hätte umsetzen können, welches heute in jedem Browser standardmäßig enthalten und ein offener Standard ist.

Für Videoportale gab es bisher noch keine zufriedenstellende Lösung. Doch mit dem Aufkommen von HTML5-kompatiblen Browsern ist auch hier für Abhilfe gesorgt. Mir persönlich wäre auch ein einfacher Link auf die entsprechende Videodatei noch lieber.

Fazit

Mit einem Web ohne Flash wäre die Welt wohl etwas besser dran. Es mag stimmen, dass es die Arbeit von Web-Designern vereinfacht, aber dafür lastet es dem Benutzer unangenehm hohe Hürden auf.

Ich kann nur alle Web-Designer dazu aufrufen, Flash und ähnliche Technologien nicht zu verwenden. Denn die o.g. Argumente gelten i.d.R. natürlich nicht nur für Flash, sondern auch für dessen Konkurrenzprodukte. Dazu zählen etwa Java-Applets und Microsofts Silverlight.