Ein Teilproblem aus Ein Loch ist im Eimer ist jetzt auch gelöst. Ich kann jetzt endlich ein neues BIOS mit flashrom flashen. Der gute Luc Verhaegen hat einen Patch erstellt durch den mein Mainboard jetzt unterstützt wird.
Ich liebe Open Source!
Ein Teilproblem aus Ein Loch ist im Eimer ist jetzt auch gelöst. Ich kann jetzt endlich ein neues BIOS mit flashrom flashen. Der gute Luc Verhaegen hat einen Patch erstellt durch den mein Mainboard jetzt unterstützt wird.
Ich liebe Open Source!
Ich konnte inzwischen mein Problem aus Ein Loch ist im Eimer lösen. Naja, zumindest das ursprüngliche Problem, dass ich alte Spiele zocken wollte. Es klappte nach dem Update nichts mehr wegen einem Bug in dem Intel Grafiktreiber. Nachdem ich den Kernel auf 4.6.7 gedowngraded hatte läuft Ubuntu 16.04 mehr oder weniger ohne Probleme und ich kann endlich mal wieder Super Mario World und Blackthorne im Wohnzimmer zocken.
Das hat mir so viel Spaß gemacht, dass ich das auch gerne unterwegs haben wollte. Aber auf dem Smartphone zockt es sich mit Touchscreen nicht so angenehm. Und eigentlich ist das auch einem Nerd nicht ganz würdig auf einem ordinären Telefon zu spielen. Ganz klar, da musste eine Raspberry Pi-Lösung her! Am besten so etwas ähnliches, wie ein Nintendo Switch oder das alte nVidia Shield.
Nur blöd, wenn das ganze Budget auf absehbare Zeit für andere Dinge verplant ist. Dabei will ich doch so gerne ein neues Spielzeug haben! Aber wenn ich nicht das Geld dafür habe, dann hat das vielleicht jemand anderes. Deshalb habe ich einfach angefangen so ein Gerät bei ebay zu verticken. Eine Win-Win Situation. Ich kann das Spielzeug basteln, ein anderer kann Spaß mit dem Spielzeug haben und mit der kleinen Marge habe ich irgendwann genug Geld zusammen, um selbst auch mit dem Spielzeug Spaß zu haben. Den ersten zufriedenen Kunden habe ich schon und ich bin mir sicher, dass es mehr werden.
Ich wollte die Tage gerne meine Wiimote an meinen Wohnzimmer-PC anschließen und dort ein paar Emulatoren für Retro-Gaming installieren. In meinen Tests am Laptop klappte das zumindest mit wminput schon ganz gut.
Also Bluetooth-Dongle an den Rechner gesteckt, wminput -d -c gamepad
gestartet, 1+2 auf der Wiimote gedrückt uuuuuuuuuund es passierte nichts. Ein wenig googeln erklärte mir, dass das Dongle in Ubuntu 14.04 nicht richtig funktionierte. Kein Problem, ein do-release-upgrade
und etwas Geduld später sitze ich auch 16.04. Und nichts funktioniert mehr. Aber so gar nicht. Alles kaputt, lässt sich nicht reparieren, Björn ist frustriert und hat schon viel zu viel Energie da rein gesteckt, nur um Super Mario Bros auf dem Fernseher zu zocken. Anscheinend ist auch von Ubuntu-Seite her beim Update von 14.04 auf 16.04 die Empfehlung neu zu installieren. Zumindest wenn man Kubuntu einsetzt, was ich auch tat, um in den Genuss von KDE Connect zu kommen.
Die Hau-Drauf-Methode musste also her. Am besten gleich Artful Aardvark, dann sollten die Emulatoren auch direkt in der neuesten Version daherkommen. Es war abgesehen von der Kodi-Konfiguration sowieso nichts auf dem Rechner, was gesichert werden müsste. Beim letzten Mal hatte ich Ubuntu einfach per DVD installiert. Das war diesmal nur nicht drin, denn mein DVD-Laufwerk ist kaputt.
Kein Problem, dachte ich, einfach das Image auf einen USB-Stick spielen. Damit geht die Installation in der Regel ohnehin schneller. Tja, Pustekuchen. Wenn der USB-Stick drin steckte kam der Computer nicht einmal mehr zum POST. Und auch wenn ich ihn reinsteckte, wenn ich im BIOS war, frierte der Rechner komplett ein. Am Stick selbst lag es nicht, denn der Fehler trat auch mit anderen Sticks auf.
Aber zum Glück besitzt der Rechner auch einen SD-Karten-Leser. Image auf eine SD-Karte geschrieben, Karte eingelegt, selbes Problem. Computer friert ein. Will nicht starten, wenn etwas bootbares über USB (denn daran hing das Lesegerät letztendlich) angeschlossen war.
Google, google, google… Ah, anscheinend gibt es ein BIOS Update für mein AOpen i965GMt-LA. Und darin ist genau dieser Fehler behoben. BIOS runtergeladen. „Bla, bla, bla, nicht über Windows flashen, lieber DOS nehmen…“ Ja, mir egal, hab‘ doch Linux mit flashrom. Backup vom alten BIOS gezogen, kein Problem. Aber, aber schreiben ging nicht.
$ sudo flashrom --programmer internal -c "W39V040FA" -w IGC1B.BIN
flashrom v0.9.9-rc1-r1942 on Linux 4.4.0-112-generic (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop... OK.
Found chipset "Intel ICH8M".
Enabling flash write... OK.
Found Winbond flash chip "W39V040FA" (512 kB, FWH) mapped at physical address 0x00000000fff80000.
Reading old flash chip contents... done.
Erasing and writing flash chip... FAILED at 0x00000000! Expected=0xff, Found=0x49, failed byte count from 0x00000000-0x00000fff: 0x463
ERASE FAILED!
Reading current flash chip contents... done. Looking for another erase function.
FAILED at 0x00000000! Expected=0xff, Found=0x49, failed byte count from 0x00000000-0x0000ffff: 0x463
ERASE FAILED!
Reading current flash chip contents... done. Looking for another erase function.
FAILED at 0x00000000! Expected=0xff, Found=0x49, failed byte count from 0x00000000-0x0007ffff: 0x60915
ERASE FAILED!
Looking for another erase function.
No usable erase functions left.
FAILED!
Uh oh. Erase/write failed. Checking if anything has changed.
Reading current flash chip contents... done.
Good, writing to the flash chip apparently didn't do anything.
This means we have to add special support for your board, programmer or flash
chip. Please report this on IRC at chat.freenode.net (channel #flashrom) or
mail flashrom@flashrom.org, thanks!
-------------------------------------------------------------------------------
You may now reboot or simply leave the machine running.
Tja, erst einmal einen Bugreport für die netten flashrom-Leute vorbereitet. Aber dann brauchte ich eine Alternative. Freedos dürfte sicher gehen. Aber wie auch immer ich es angestellt habe, ich bekam es nicht von Festplatte gestartet. USB-Stick ging aus bekannten Gründen nicht. Tja, und ich würde ja von CD booten, aber mein DVD-Laufwerk ist kaputt.
Heute Abend werde ich mir mal ein Laufwerk von einem anderen Rechner borgen und ins Wohnzimmer schleppen…
Du musst heute zur Arbeit fahren, aber ein Schneesturm erschwert dir den Weg. Dein Auto ist von einer dicken Schneeschicht bedeckt, unter der sich möglicherweise undurchdringliches Eis befindet. Im Keller steht noch dein alter Schlitten aus Kindheitstagen und du bist gut mit dem Husky-Mann (es ist ein Malamute, kein Husky) aus der Nachbarschaft befreundet. Das ließe sich kombinieren. Was machst du?
Schnee vom Auto fegen.
Du fegst den Schnee mit dem Besen aus dem Kofferraum vom Auto runter. Zum Glück ist kein Eis darunter und du könntest sofort losfahren. Im Hintergrund hörst du das stete *Kratz* *Kratz* deiner Nachbarn, die den Schnee vom Gehweg entfernen. Du hast auch ein beachtliches Stück Gehweg um dein Haus herum. Was machst du?
Schnee vom Gehweg schaufeln.
Du brauchst eine Schneeschaufel, um den Schnee zu schaufeln. Es befindet sich eine in der Garage. Du betätigst den Garagentoröffner, aber das Tor regt sich nicht. Eine dicke Schicht Schnee liegt vor dem Tor. Und möglicherweise ist es auch noch zugefrohren. Was machst du?
Schnee vom Tor entfernen.
Mit dem Schuh schiebst du den Schnee vom Tor weg. Du betätigst wieder den Garagentoröffner. Das Tor geht ein paar Zentimeter weiter auf, bevor es wieder stehenbleibt. Die Nachbarn werden sich schon nicht so sehr daran stören, dass der Weg unbegehbar ist. Auf der anderen Straßenseite ist ja noch einer. Was machst du?
Tor schließen und wieder öffnen.
Mit etwas mehr Schwung gelingt es dem Tor die verbleibenden Schneehaufen weg zu schieben. Aber es bleibt wieder stehen. Du schließt und öffnest es wieder und diesmal geht es komplett auf und gewährt dir Zugang zu der essentiellen Schneeschaufel. In einer dunklen Ecke liegt sie. Ihr früheren Glanz hat sie durch tiefe Furchen ersetzt. Die Kante gleicht mehr einer Säge, als einer Schaufel. Was machst du?
Schnee vom Gehweg schaufeln.
Enthusiastisch machst du dich an die Arbeit und schwingst die Schaufel hin und her. Deine verkümmerten Muskeln heulen unter der ungewohnten Arbeit auf. Aber du beißt die Zähne zusammen und ruhst nicht ehe auch die letzte Schneeflocke vom Weg entfernt worden ist. Zwei Nachbarn sehen dich und nicken dir anerkennend zu. Der Malamute-Mann nutzt den freigeschaufelten Weg, um seinem Hund den benötigten Auslauf zu geben. Beide grüßen dich freundlich und dir fällt wieder der Schlitten im Keller ein. Was machst du?
Mit dem Auto fahren.
Du steigst ins Auto, drehst den Schlüssel um und fährst vorsichtig los. Die ersten Schneeflocken fangen wieder an deinen frisch geschaufelten Weg zu blockieren. Unterwegs wirst du von einer alten Dame mit Gehhilfe überholt. In der Ferne beobachtest du einen einsamen Eisbären die karge Schneelandschaft auf der Suche nach Nahrung durchstreifen. Aber insgesamt kommst du gut vorran. Kurz bevor du die Arbeit erreichst siehst du vor dir sehr viele Autos noch langsamer als die alte Frau fahren. In der Ferne erkennst du Blaulicht und noch weiter weg erkennst du einen Lastkrafwagen quer über der ganzen Straße stehen. Hier kommst du nicht weiter. Du könntest das Auto stehen lassen und zu Fuß weiter vorran schreiten. Was machst du?
Umdrehen und einen anderen Weg suchen.
In einem komplizierten Manöver wendest du das Auto und fährst zurück. Am Straßenrand entdeckst du ein schwarzes Auto verzweifelt mit dem Warnblinker zu blinken. Du musst aber zur Arbeit, keine Zeit, um jemandem zu helfen, der nicht mit ein bisschen Schnee umgehen kann. Was machst du?
Hilfe anbieten.
Du hältst neben dem Auto an und lässt deine Scheibe herunter. Der andere Wagen tut das gleiche. Du bietest dem hoffnungsvollen Fahrer deine Hilfe an. Er erzählt dir, dass er den Weg zum Industriepark sucht. Das ist das selbe Ziel, wie du hast! Du weist ihn an dir zu folgen. Ein NPC hat sich dir angeschlossen! Ihr folgt gemeinsam dem verschlungenen Pfad, der sich nur Einheimischen und wagemutigen Entdeckern erschließt. Im Graben seht ihr ein Auto liegen. Die Warnblinkanlage ist offensichtlich noch funktionstüchtig. Was macht ihr?
Auto im Graben untersuchen.
Ihr haltet an und steigt aus. Langsam nähert ihr euch dem Wagen. Innerlich bereitet ihr euch auf das schreckliche Bild vor, das sich euch darbieten könnte. Aber ein Blick in das Gefährt verrät euch, dass der Inhaber es schon längst zurückgelassen hat, um vom Schnee eingeholt und ein Teil der Landschaft zu werden. Ihr steigt wieder in eure eigenen Autos und fahrt weiter. Ohne weitere Zwischenfälle erreicht ihr den Industriepark. Deine Mitarbeiter stehen schon erwartungsvoll am Fenster und beobachten deine ungelenken Versuche das Auto zu parken. Die meisten Parkplätze sind aber verlassen und verraten dir, dass nur wenige die gefährliche Strecke überlebt haben. Solltet ihr eingeschneit werden wird euch Kanibalismus nicht lange am Leben halten. Vielleicht hättest du Zuhause bleiben sollen.
Quest erledigt! +13000 XP
Gott, endlich habe ich eine komplette Open Source Alternative zu der Find My Phone Funktion in Android gefunden. Bzw. eine Alternative für den Android Device Manager. Nennt sich Open Device Manger und ist auf Github verfügbar. Einmal der Client und dann die Server-Komponente.
Bräuchte noch ein paar Tweaks (der erste PR is geschickt), aber so für den Anfang ist das echt super. Fehlt nur noch die Abhängigkeit zu Google Cloud Messaging. Aber die Daten werden zumindest verschlüsselt verschickt. Vielleicht finde ich auch mal die Zeit das dort heraus zu reißen.
Das ist eigentlich allgemein bekannt, aber ich muss nur mal kurz meinen PHP-Frust loswerden. Ich durfte heute zu meinem Leidwesen feststellen, dass var_dump(10 == "10,5")
als Ergebnis bool(true)
ausgibt.
Das liegt ganz einfach daran, dass PHP anscheinend, wenn es zwei Strings vergleicht, die wie Integers aussehen (oder einen Integer mit einem String), diese zuerst in Integers umwandelt. Das ist historisch darin begründet, dass früher PHP quasi nur mit Strings gearbeitet hat, weil Browser auch nur Strings herüberschicken. Dafür hat PHP dann später auch den genauen Vergleich mittels ===
eingeführt. Der prüft auch darauf, ob die beiden Werte vom gleichen Typ sind.
Aber noch fieser wird es, weil ich die Keys von einem Array mit Strings vergleichen wollte. Ich dachte mir, ich achte einfach darauf, dass die Keys als Strings aufgebaut werden und mache dann einen strengen Vergleich. Tja, das würde ja funktionieren, wenn PHP nicht auch automagisch alle Array-Keys, die wie eine Integer aussehen, in einen Integer umwandeln würde, was sich nur über fiese Verrenkungen verhindern lässt.
Es wird also aus
array( "1" => "eins" );
einfach so
array( 1 => "eins" );
gemacht.
Danke Obama PHP!
Heute Morgen war ich sehr sehr müde. Denn ich habe es gestern Abend endlich geschafft GemRB auf meinem Telefon zum Laufen zu bringen. Baldur’s Gate war mein erstes Ziel. Sooo gut finde ich es nicht. Das ist jetzt mein dritter oder vierter Anlauf, den ich eigentlich nur starte, damit ich Baldur’s Gate 2 spielen kann – laut einem Freund das beste Spiel aller Zeiten.
Naja, jedenfalls will ich vorher Teil 1 spielen und habe ja auch immer doch ein wenig Spaß an diesem doch gut gemachten Spiel. Um 21 Uhr war ich fertig mit der GemRB-Einrichtung. Um 0 Uhr bin ich dann schließlich ins Bett gegangen. Ich war endlich fertig mit der Charakter-Erstellung! 🙂
Oh, ich bin so stolz auf unsere Kunden. Aus Gründen die zu umfangreich sind, um sie aufzuzählen benutzen wir in unserem Webshop Sofortüberweisung.de. Für die Unwissenden; das ist ein Dienst, dem man seine Bankdaten, PIN und TAN gibt, damit der dann damit die Überweisung tätigt und den Erfolg sofort dem Webshop mitteilt.
Aus irgendeinem Grund erscheint das einigen Kunden recht suspekt. Keine Ahnung, wieso…
Ich bin mal ins kalte Wasser gesprungen und habe mir Let’s Encrypt Zertifikate im Mailserver installiert. Da mein Webserver von einer (noch) nicht unterstützten Verwaltungssoftware betreut wird läuft da noch mein altes StartSSL Zertifikat. Aber auch da sollte es nur noch eine Frage der Zeit sein, bis Let’s Encrypt unterstützt wird.
Nach der Installation des Clients musste ich die Pfade zu den Zertifikaten anpassen.
Für Postfix in /etc/postfix/main.cf:
smtpd_tls_key_file = /etc/letsencrypt/live/[DOMAIN]/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/[DOMAIN]/cert.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/[DOMAIN]/chain.pem
smtp_tls_CAfile = $smtpd_tls_CAfile
Und für Dovecot in /etc/dovecot/conf.d/10-ssl.conf:
ssl_cert = </etc/letsencrypt/live/[DOMAIN]/cert.pem
ssl_key = </etc/letsencrypt/live/[DOMAIN]/privkey.pem
ssl_ca = </etc/letsencrypt/live/[DOMAIN]/chain.pem
Dann lass ich schließlich einmal im Monat per Cron folgendes Script laufen:
#!/bin/bash
service apache2 stop
$HOME/.local/share/letsencrypt/bin/letsencrypt certonly -t --agree-tos -m [EMAIL] --renew-by-default --standalone -d [DOMAIN]
$HOME/.local/share/letsencrypt/bin/letsencrypt certonly -t --agree-tos -m [EMAIL] --renew-by-default --standalone -d [JABBERDOMAIN]
service apache2 start
service dovecot restart
service postfix restart
openssl pkcs12 -export -in /etc/letsencrypt/live/[JABBERDOMAIN]/fullchain.pem -inkey /etc/letsencrypt/live/[JABBERDOMAIN]/privkey.pem -out /etc/letsencrypt/live/[JABBERDOMAIN]/fullchain.pkcs12 -name [JABBERDOMAIN] -passout pass:changeit
keytool -delete -alias [JABBERDOMAIN] -storepass changeit -keystore /etc/openfire/security/keystore
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore /etc/openfire/security/keystore -srckeystore /etc/letsencrypt/live/[JABBERDOMAIN]/fullchain.pkcs12 -srcstoretype PKCS12 -srcstorepass changeit -alias [JABBERDOMAIN]
service openfire restart
Es ist ein gutes Gefühl zu wissen, dass ich mich da nie wieder mit Zertifikaten werde herumschlagen müssen.
Und ja, das Default-Passwort von Openfires keystore ist anscheinend wirklich „changeit“. :-/