(27.6 MB) 00:03:42
2016-01-17 12:00 🛈Auch beim Rad1o gilt: Aktuelle Firmware kann Fehler beseitigen und Funktionen nachrüsten. Dank des Mass Storage Controller (MSC)-Modus ist das Update schnell erledigt.
(27.6 MB) 00:03:42
2016-01-17 12:00 🛈Auch beim Rad1o gilt: Aktuelle Firmware kann Fehler beseitigen und Funktionen nachrüsten. Dank des Mass Storage Controller (MSC)-Modus ist das Update schnell erledigt.
(83.2 MB) 00:07:36
2016-01-17 11:00 🛈Das „Rad1o“ stammt aus dem Umfeld des Chaos Computer Clubs und wurde bei dem letzten Chaos Communication Camp als „digitales Namensschild“ an die Teilnehmer ausgegeben. Wie unschwer zu vermuten kann es mehr als nur Namen anzeigen: Es handelt sich um ein vollwertiges Software Defined Radio (SDR), welche wir hier bereits in Form des rtl_sdr hatten. Dieses SDR spielt jedoch in einer deutlich höheren Leistungsklasse: Basierend auf dem Design des HackRF kann es zwischen ~50MHz und 4GHz nicht nur empfangen sondern auch senden. Theoretisch. Leider hat mein Board das Camp nicht komplett überlebt – dank neuen Infos geht es auf Fehlersuche.
(26.9 MB) 00:16:42
2016-01-10 11:01 🛈Virtualisierung ist praktisch – Hardware sparen, Dinge testen, Zuverlässigkeit erhöhen. Programme dazu gibt es auch einige, doch die Meisten verlangen für den vollen Funktionsumfang einen nicht gerade kleinen Geldbetrag. Unter Linux ist die die Kombination QEMU/KVM schon seit langem eine schnelle und einfache Methode virtuelle Systeme zu betreiben. Mit LibVirt und dem Virt-Manager lässt sich dieses Konstrukt dann selbst in großen Installationen übersichtlich verwalten.
Uhm crap. The last system update just pulled a new beta version of NVIDIAs binary driver. Usually not that much of a deal, I went for testing due to a bug in their stable driver some years ago and never ran into a problem. Well, at least until now. This time the testing-curse found its way into my system and I found myself no longer able to start my video editor kdenlive. Segmentation Fault. I suspected my setup first since I am running a rather unusual multihead configuration but could also with just one monitor I ran into the same problem. Well, looks like I have to dig deeper. Some gdb later at least a clue:
Program received signal SIGSEGV, Segmentation fault. 0x00007ffff0b640c5 in XScreenCount (dpy=0x0) at Macros.c:109 109 int XScreenCount(Display *dpy) { return (ScreenCount(dpy)); } (gdb) bt #0 0x00007ffff0b640c5 in XScreenCount (dpy=0x0) at Macros.c:109 #1 0x00007fffea7f50da in glXGetClientString () from /usr/lib/libGLX.so.0 #2 0x00007ffff7fed3b3 in ?? () from /usr/lib/qt/plugins/xcbglintegrations/libqxcb-glx-integration.so #3 0x00007ffff7fed5b1 in ?? () from /usr/lib/qt/plugins/xcbglintegrations/libqxcb-glx-integration.so #4 0x00007ffff686fc7b in QSGRenderLoop::instance() () from /usr/lib/libQt5Quick.so.5 #5 0x00007ffff68a19e5 in QQuickWindowPrivate::init(QQuickWindow*, QQuickRenderControl*) () from /usr/lib/libQt5Quick.so.5 #6 0x00007ffff694b68d in QQuickView::QQuickView(QWindow*) () from /usr/lib/libQt5Quick.so.5 #7 0x00000000006bd190 in ?? () #8 0x00000000006c3d7b in ?? () #9 0x00000000007af3cc in ?? () #10 0x000000000046346b in ?? () #11 0x00007ffff188e610 in __libc_start_main () from /usr/lib/libc.so.6 #12 0x0000000000463949 in _start ()
So XScreenCount or libGLX is the suspect. In my case GLX is provided by NVIDIAs binary driver (nouveau had limited multihead support last time I checked). Also some QT5-stuff is mentioned in the backtrace.
A bit of search engine voodoo later it turns out NVIDIA already acknowledged the problem. Aaron Plattner writes:
I reproduced the problem and tracked it down to this buggy code in Qt5’s qxcbglxintegration.cpp:
static bool vendorChecked = false; static bool glxPbufferUsable = true; if (!vendorChecked) { vendorChecked = true; const char *glxvendor = glXGetClientString(glXGetCurrentDisplay(), GLX_VENDOR); if (glxvendor && !strcmp(glxvendor, "ATI")) glxPbufferUsable = false; }When this code is called during sddm-greeter startup, there’s no current GLX context, so this gets called with a NULL argument.
While here SDDM is not the problem I think kdenlive, which uses similar libraries, runs into the same problem. He also pushed a corresponding patch to NVIDIAs GIT-repository. Sadly the current HEAD is not 100% ABI compatible with the official driver release. Also I really didn’t want to get into my distributions xorg-packaging-foo. Ultimately I reverted to the current NVIDIA stable version 358.16 to get back into business. So – lesson confirmed: Beta releases can fix problems or cause problems. But who doesn’t like a bit of stability-gambling, right?
(32.5 MB) 00:15:45
2016-01-03 11:00 🛈Über den Dienst „Let’s Encrypt“ lassen sich seit einigen Wochen von allen Interessierten kostenlose X.509-Zertifikate anfordern. Diese können z.B. zum Betrieb von HTTPS-Webseiten genutzt werden. So lässt sich z.B. die heimische Owncloud-Installation schnell und einfach absichern.
(177.4 MB) 00:23:05
2015-12-20 11:00 🛈Was macht man, wenn man ein paar 7-Segment-Anzeigen mit 7cm Höhe bekommt? Basteln natürlich!
Part 1:
– 7-Segment-Anzeigen: Typen, Aufbau, …
– Ansteuerung per Matrix
Ähnliche Projekte:
GreatScottLabs: https://www.youtube.com/watch?v=xpdpDo-gR3Q
SDGEE: https://www.youtube.com/watch?v=Ov27rac0tP0
(183.6 MB) 00:12:23
2015-12-13 11:00 🛈Mit den Fingern kann man bis 10 Zählen – mit einem MOS4017 ebenfalls. Dieser kleine Helfer kann 10 Ausgänge sequenziell einschalten, so lässt sich z.B. mit wenig Aufwand ein Lauflicht realisieren.
Je nach Konfiguration können MySQL-Server bei vielen Anfragen die Festplatte mit Binärdateien des Namens mysqld-bin.(zahl) füllen. Hintergrund: In diesen Dateien zeichnet der Server alle Anfragen auf, welche den Datenbestand verändern (also INSERT, UPDATE, etc). Das kann z.B. zur Datenrettung bei Abstürzen oder zur Replikation bei der Verwendung mehrerer Server hilfreich sein. Hat man jedoch nur beschränkt Speicherplatz zur Verfügung können diese Dateien zum Problem werden.
Benötigt man nur einmalig den Speicherplatz kann man sich mit einem passenden MySQL-Befehl behelfen. Hierzu schaut man sich die durchnummerierten Log-Dateien an und überlegt sich einen Zeitpunkt, der als neuen Startpunkt dienen soll. Transaktionen vor diesem Zeitpunkt können bei Ausfällen ggf. Beschädigt werden, daher empfielt es sich einen Zeitpunkt zu wählen, der kurz vor dem letzten Backup liegt. Der Befehl lautet dann z.B.:
PURGE BINARY LOGS BEFORE '2015-12-08 12:34:56';
Duch Abschaltung der Log-Funktion ist das Problem schnell und dauerhaft behoben, allerdings verliert man die Möglichkeit mehrere Server zu verwenden und kann unter Umständen bei Ausfällen (Absturz, Stromausfall, etc) Daten verlieren. Zum Abschalten öffnet man die Konfigurationsdatei im Editor seiner Wahl – diese findet sich üblicherweise unter /etc/mysql/my.cnf oder /etc/my.cnf. Im Abschnitt [mysqld] sollte ein Eintrag „log-bin“ zu finden sein, eventuell noch mit einer Zahl oder einem Dateinamen dahinter. Diesen inaktiviert man durch Vorstellen eines Raute-Zeichens:
[mysqld] ... #log-bin
Nachdem der MySQL-Server neu gestartet wurde legt er keine weiteren Dateien an. Alte Einträge müssen ggf. wie weiter oben beschrieben entfernt werden.
Ein guter Mittelweg ist es meist Logs anzulegen, um alle damit verbundenen Optionen nutzen zu können, das Alter jedoch zu beschränken. Ich mache täglich eine Sicherung, damit ist sichergestellt, dass ich Daten mit >24h nicht aus dem Log widerherstellen muss. Um bei Störungen des Backup jedoch etwas Puffer zu erhalten lasse ich Logs 3 Tage stehen. Hierzu nutzt man die oben beschriebene Konfigurationsdatei und sucht im Abschnitt [mysqld] nach dem Eintrag „expire_logs_days“. Ist er vorhanden kann er passend modifiziert werden, andernfalls fügt man die Zeile in der Nähe von log-bin ein. Um Logs nach 3 Tagen zu löschen lautet die Konfiguration:
[mysqld] ... log-bin expire_logs_days = 3
Nach einem Neustart des MySQL-Servers werden ältere Logs automatisch gelöscht, zukünftig werden sie nur noch 3 Tage aufbewahrt.
Durch die Änderung konnte ich „mal schnell“ mehr als 10GB an alten Logs vom betroffenen Server kratzen – bei einem embedded-System mit 16GB Speicher nicht grade unerheblich.
(174.6 MB) 00:23:03
2015-12-06 11:00 🛈Bereits in der Vergangenheit hatten wir mal den ESP8266: Ein kleiner, günstiger Mikrocontroller, welcher durch hohe Leistung und integriertes WLAN besticht. Inzwischen lässt dieser sich auch über die Arduino-Oberfläche programmieren. Am Beispiel eines ESP-201-Moduls schauen wir uns die Verkabelung, Bootmodi und Programmierung an.
ESP-01: Versionen beachten!
Die ersten ESP-01 hatten nur die Pins VCC, GND, RxD und TxD verbunden, alle anderen Pins waren nicht angeschlossen. Diese Version kann ohne Umbau nicht neu Programmiert werden. Die Aktuell verkaufte Version 2 ist wie angegeben verbunden.
Standardmäßig wird der ESP-201 in einer Form ausgeliefert, welche zwingend eine externe Antenne am U.FL-Anschluss erfordert. Um die interne Antenne zu nutzen muss der 0?-Widerstand neben dem Antennenverbinder um 90° gedreht werden.
Bild: https://www.adlerweb.info/blog/wp-content/uploads/2015/12/antenna-300×162.png
Standardmäßig greift das Modul auf den Flash-Chip mit der Firmware im Quad-IO (QIO) – also mit 4 Datenleitungen – zu. Kann man in seiner Anwendung auch eine langsamere Flash-Geschwindigkeit tolerieren lässt sich die Verbindung auf 2 Leitungen (Dual-IO, DIO) reduzieren und so GPIO gewinnen. Hierzu muss der Flash-Chip entlötet, dann die Pads der Pins 3 und 7 entfernt oder aufgetrennt werden. Zuletzt wird der IC wieder montiert, hierbei werden die nun freien Pins 3 und 7 mit Vcc verbunden. Nun kann man IO9 (D2) und IO10 (D3) nutzen.
Eine bebilderte Anleitung auf Englisch findet sich bei smarpl.com.
(siehe auch: Deviantart)
– Arduino IDE
– ESP8266 Arduino Core
– Infos bei smarpl.com (EN)
– ESP8266 NodeMCU/LUA
– Bildressourcen @ openclipart