BitBastelei #228 – TFT: Von CCFL auf LED umbauen

Vor einiger Zeit hatte ich einen TFT für Betrieb an 12V umgerüstet. In den Kommentaren wies Iraklis darauf hin, dass man die CCFL-Röhren auch durch wesentlich sparsamere LEDs umbauen könnte. Challenge Accepted.

Die LEDs lassen sich mit den Suchworten „120LED/m“ oder „5m 600 LED“ finden.

Update: Bei der LED-Strommessung war der Inverter noch angeklemmt und verfälschte das Ergebnis – ohne sank der Strom um weitere 100mA, die Ersparnis ist somit bei etwa 38%.

BitBastelei #227 – ICStation.com Bausatz: Welcome Machine

Es ist kalt und nass, entsprechend sieht meine Motivation aus. Zur Aufheiterung soll ein Bausatz herhalten: Die „Welcome Machine“ von ICStation.com soll Besucher mit einem kurzen Satz begrüßen. Schauen wir mal, was an Technik drin steckt, wie die Schaltung funktioniert und natürlich wie wir sie zusammen bauen können.

Ihr findet den Bausatz unter
http://www.icstation.com/-p-9655.html

Mit dem Rabattcode: bitics gibt es 15% Rabatt (Stand Januar 2017)

Der Bausatz wurde mir für dieses Video von ICStation.com kostenfrei zur Verfügung gestellt.

Laut Packungsaufdruck ist die Sprachausgabe auch in Englisch und Arabisch möglich – leider konnte ich bisher keine Umschaltfunktion entdecken. Sobald ich eine Antwort habe gibt es ein kurzes Update.

—snip—
Text der Anleitung:

WK-56-18 Lichtsensorschalter Kit Anleitung

Das Prinzip des Kits ist ein lichtempfindlicher Widerstand, welcher auf Änderungen der Umgebungslichtintensität reagiert.
Er wird in einem schwarzen Röhrchen angebracht und erkennt, wenn ein Körper das einfallende Licht abschattet.
Helligkeitsänderungen verursachen zusammen mit R3 eine geringfügige Spannungsänderung an C3. Diese Änderung wird durch Q2 und Q3 verstärkt um den Sprach-Chip auslösen zu können, welcher wiederum den Lautsprecher

STDOUT verdoppeln mit ftee

Mal wieder eine etwas andere Anforderung: Für eine automatische Verarbeitung soll eine Audioquelle durch eine Software auf der Konsole ausgewertet werden. Die Software ist hierbei für die Analyse von Dateien ausgelegt, kann allerdings auch von STDIN lesen. So weit kein Problem – arecord kümmert sich um die Aufnahme und per STDOUT/Pipe geht es in die Analysesoftware. Leider gibt es hier einen Haken: Es funktioniert nicht zuverlässig. Um zu prüfen ob die Audioquelle oder die Analyse das Problem verursacht müsste ich die eingehenden Audiodateien abhören. Am PC ginge das mit Pulseaudio recht einfach, am Server möchte ich auf dieses Ressourcen- und Dependency-Monster jedoch vorzugsweise verzichten.

Dann halt per File

Meine erste Idee: tee. Mit diesem Befehl kann man die Dateien einer Pipe in eine zusätzliche Datei „abzwacken“:

Was prinzipiell funktioniert hat jedoch einen entscheidenden Nachteil: Es landet alles in der Datei. Dauerhaft. Möchte man nicht, dass die Festplatte voll läuft, muss man nach dem reinhören das Konstrukt abbrechen und ohne tee-Befehl neu starten. Eher unschön, denn das heißt auch Deattime, also eine kurze Zeitspanne in der ich möglicherweise Ereignisse verpasse.

Und was ist mit FIFO?

Als Alternative eignet sich ein FIFO, auch als named Pipe bezeichnet. Diese lassen sich mit mkfifo anlegen und stellen sozusagen einen „Puffer“ zur Verfügung, über den sich Prozesse verbinden lassen. Hier können wir im ersten Terminal z.B. wie folgt starten:

und im Zweiten den Stream abgreifen

Dummerweise gibt es auch hier Probleme: Es blockiert. Der Analyzer im ersten Terminal wird erst gestartet, wenn wir im Zweiten beginnen den Puffer zu lesen. Schlimmer noch: Brechen wir im zweiten Terminal das Mitlesen ab wird auch der Analyzer beendet. Nicht wirklich was ich suche.

Dauer-Interimslösung

Nunja, da mir die Ideen ausgingen und das Internet auf den ersten Blick nichts passendes lieferte blieb es erst mal bei der dauerhaften Dateiaufzeichnung auf einen speziell limitierten Ordner. Lief alle paar Wochen die zugehörige Partition voll brach die Software ab und ich startete per Hand neu. Auf der Todo-Liste stand etwas von automatischen Neustarts oder einem Gebastel um nur bei Bedarf die Ausgabe zur named Pipe zu starten. Dieser Zustand hielt nun für etwa 2 Jahre.

Rettung bei Stackoverflow

Heute ging es dann um die Behebung. Ich hatte grade ein Rendering gestartet und entsprechend etwas Leerlauf als die altbekannte Mail kam: Partition voll, die Erkennung steht. Jetzt reicht es. Also schnell auf Google und etwas in die Verwendung von Named Pipes einlesen.

Moment.

Nach kurzer Recherche landete ich bei Stackoverflow (wo auch sonst). Nach „Linux non-blocking fifo“ erkundigt sich der Autor „Dronus“ und beschreibt ein Szenario, welches recht Nah an meine Andorderungen heran kam. Und Beantworter „racic“ lieferte auf ganzer Linie: „ftee“ nennt sich sein überschaubarer C-Code, welcher das verhalten von tee nachmacht, jedoch für den FIFO nicht blockiert. Auch wird SIGPIPE, welches beim Abbrechen des Lesevorgangs der Pipe ausgelöst wird, nicht beachtet, der Analyzer läuft also fleißig weiter. Greift man später erneut auf die Pipe zu erhält man wieder die aktuellen Daten.

Wer „wichtige“ Daten nutzt kann alternativ auf das ebenfalls dort zu findende bftee von Fabraxias zurückgreifen, welches bei einem Abbruch der Verbindung alle eingehenden Daten zwischenspeichert und bei der nächsten Verbindung erst einmal nachliefert.

Für mich ist die nicht gepufferte Variante ideal – alte Audiodaten sind für mich nicht relevant. Das Kompilieren ist mit aktuellem GCC schnell erledigt und allein das ersetzen von tee gegen ftee im vorherigen Beispiel löst alle Probleme. Der Analyzer läuft und ich kann bei Bedarf in den Audiostream reinhören ohne eine Unterbrechung der Auswertung zu bekommen. Fein.

BitBastelei #226 – Was steckt in alter Telefonhardware

In Zeiten von All-IP sind sie fast verschwunden: Die früher üblichen Netzabschlüsse wie BBAE („DSL-Splitter“) und NTBA (ISDN-Abschluss). Zwar waren diese eher im Privatbereich zu finden, trotzdem umgab sie immer eine Aura von „hochprofessionelle Hardware“. Nachdem diese Geräte nun kistenweise verstauben wage ich mal einen Blick hinein.

FRITZ!Box per Konsole auslesen (PHP/TR64)

Statistiken sind toll. Wäre fein, wenn man auch der FRITZ!Box einiges entlocken könnte. Das Zauberwort lautet TR64 und ist über HTTP/SOAP im LAN erreichbar. Hierzu müssen in den Netzwerkeinstellungen die Anwendungszugriffe und Statusinformationen aktiv sein.

Allgemeine Infos wie die aktuell verwendete Bandbreite lassen sich von jedem Abrufen, andere Bereiche konnte ich bisher nur über /control abrufen – hier werden die Zugangsdaten eines FB-Nutzers benötigt.

Über das Protokoll lassen sich neben IP, Verbindungsstatus und Bandbreiten auch erweiterte Infos wie Dämpfungen & Co aufzeichnen. Technisch kann man sogar Aktionen wie einen Reconnect oder komplette Konfigurationsänderungen durchführen, das würde hier jedoch den Rahmen sprengen. Einige Infos gibt es in der Wiki von WeHaveMoreFun oder das ausgiebigere Perl-Modul von FHem.

Hier mal mein Notizzettel, welcher eine Abfrage per PHP erlaubt:

 

BitBastelei #225 – Gigaset (DECT) auf LiPo umbauen

Es ist wieder Congresszeit (33C3), das heißt ich krame meine DECT-Telefone wieder aus. Im letzten Video zu diesen Teilen saß ich im Zelt auf dem Chaos Communication Camp und ärgerte mich über eine nicht funktionierende Akkuladung. Schluss damit: Nun soll ein Li-Ion-Zelle die alten Ni-MH-Akkus ersetzen und, wenn wir schon dabei sind, ein Mikro-USB-Anschluss zum Laden nachgerüstet werden.

 

BitBastelei #224 – USB Power Monitor – Software

In Folge #222 hatten wir einen USB Power-Monitor gebaut, welcher Spannung und Strom misst und somit auch mAh und mWh berechnen können soll. Diesmal geht es um die Softwareseite – alles kein Hexenwerk (und vermutlich mit unzähligen Bugs), aber ein gutes Beispiel wie man verschiedene, einfache Codefragmente zu einer nützlichen Software kombinieren kann.

(Der Quellcode-Download folgt später – Congress und so)

BitBastelei #223 – 10€ IP-Kamera – viel Kommunikation für wenig Geld (Hi3516C)

Bei einigen Preisen kommt – trotz Bullshitverdacht – doch die Neugier in mir hoch, so auch als eine IP-Kamera für gerade mal 10€ durchtickerte. Jene Geräte waren zuletzt durch ihre massenhafte Übernahme durch das „Mirai“-Botnet auffällig geworden. 720p, vernunftige Framerate, Nachtsicht und mit Outdoor-Bildern in der Beschreibung – für den Preis ein üppiges Versprechen. Auf den ersten Blick sieht Sie sogar recht gut verarbeitet aus – schaut man jedoch darauf wie und wohin die Kamera kommuniziert wird schnell klar, dass sie besser nicht ungeschützt ins Netz sollte.

Amdroid/CM: Eingehende SMS werden nicht angezeigt

Die Älteren unter euch können sich eventuell erinnern: SMS. Ein System um Textnachrichten an Mobiltelefone zu senden. Begrenzte Textlänge, hohe Gebühren und nicht verschlüsselt. Eigentlich heute Obsolet, aber einige Anbieter denken immer noch, dass dieses Verfahren modern sei – auch wenn es seit fast 7 Jahren als unsicher eingestuft wird. Hallo Banken. Es kam wie es kommen musste: Ich sah mich genötigt ein Produkt über eine dieser Gesellschaften zu bezahlen und – nichts. Während die Webseite freudig vermeldete, dass ich eine passende TAN erhalten hätte machte mein Handy keinen Mucks. Toll, ich hab ein Zahlungsziel. Aber auch nichts ungewöhnliches – im Telefonica-Netz kommt es ja nicht unbedingt selten zu Störungen, also warten wir halt.

Einige Stunden später noch immer nichts, also müssen wir wohl selbst Hand anlegen. Erste Anlaufstelle: Test-SMS senden. Gar nicht so einfach, denn SMS-Funktion hab ich eigentlich auf keinem anderen Gerät mehr installiert. Glücklicherweise habe ich noch einen „echten“ Telefonanschluss ohne VoIP und konnte daher per Modem ein SMS-Gateway erreichen. Allerdings ohne Erfolg. Also machen wir mal ein altes Handy fit und versuchen es da – woho, SMS. Es muss also an meinem Endgerät liegen.

Per ADB zeigt sich nach einigem (teuren) Geteste folgender Fehler:

Das kommt mir doch irgendwie bekannt vor… Schade, dass der Fehler nicht in der GUI erscheint und man so vermutet, dass alles ohne Störung funktionieren würde. Also löschen wir auch hier die kaputte Datenbank. Leider nicht ganz so einfach, denn zu dieser Meldung schweigen sich die Suchmaschinen aus und auch im Log wird der Dateiname der betroffenen Datenbank leider nicht erwähnt. Abhilfe schafft „Self Rubber Ducking“ , welcher augenscheinlich sehr von Migrationscode angetan ist. Fündig wurde ich dann im Ordner, welcher sich auch schon bei der Telefonie als Verursacher zeigte – hätte man drauf kommen können. Meh.

Also – leicht angepasst:

Nach einem Reboot kann dann auch der Fintechler wieder mit mir kommunizieren. Ich wäre ja dafür langsam mal offene Standards für sowas zu schaffen – sowas wie U2F mit angezeigten Transaktionsdaten…

Amdroid/CM: com.android.phone force-close nach Update

Ja, schmutzig ist praktisch – zumindest wenn es um Updates geht. Obwohl die meisten Entwickler empfehlen möglichst bei jedem Update mit einem frischen System zu beginnen versuche ich meine Daten so lange wie möglich mitzuschleifen („Dirty Flash“) – leider gibt es noch immer unzählige Apps, welche keine brauchbare Backup-Funktion bieten und auch systembasierte Lösungen wie Titanium Backup sind leider nicht unfehlbar.

Zuletzt war ich etwas nachlässig – mein Handy war noch auf Version 2, aktuell Version 9 meiner aktuellen ROM. Zeit zum Aktalisieren, vor allem da Dirty Cow gerade bekannt wurde.

Also, Sideload drüber und – narf. „Telefon reagiert nicht mehr“. Gemeint ist hierbei die Telefon-App, also jene, welche Sprachtelefonie ermöglicht. Brauch ich zwar normal nicht, aber die Popups nerven doch etwas.

Über ADB ließ sich folgendes im Log erspähen:

Dankenswerterweise gibt es einen passenden Post von Daan, welcher die Ursache genau beschreibt und einen passenden Befehl zum zurücksetzen der defekten Datenbank anbietet. Hierbei gehen ggf. Einstellungen verloren, diese muss man ggf. später von seiner Datensicherung wieder einspielen.

Nach dem Befehl war dann Ruhe und sogar das telefonieren funktioniert wieder. Fein.

Warning: Nerd inside