Archiv der Kategorie: Hardware

Meine kleinen Basteleien

Arch Linux / Arduino: libtinfo.so.5 fehlt

Bei der Nutzung der Arduino-IDE kommt es zur Zeit unter Arch Linux zu Problemen in Zusammenhang mit AVR-Boards. Ursache ist, dass Arduino seit einigen Versionen nicht mehr die Tools des System nutzt, sondern auf vorkompilierte Binärdateien setzt. Diese Alles-dabei-Conteiner versprechen auf den ersten Blick eine Vereinfachung, fliegt aktuell leider etwas auseinander: Die beigelegten Programme sind an vielen Stellen gegen überholte Bibliotheken gebaut. Dies verschafft zwar Kompatibilität mit trägen Systemen wie z.B. Debian, macht eine Nutzung mit aktuellen Systemen umständlich.

Schaut man sich die Fehlermeldung genauer an findet man schnell heraus, dass der beigelegte avrdude die Probleme auslöst:

Libtinfo wurde zwischenzeitlich wohl in Ncurses übernommen, zudem benötigt Arduino/avrdude eine ältere, normalerweise nicht mehr installierte API der ncurses-Library.

Wer die Libraries passend haben möchte muss zuerst ncurses5-compat-libs installieren um die alten API-Versionen nachzurüsten, im Anschluss sorgt das Dummy-Paket libtinfo dafür die alten Dateinamen auf ncurses umzubiegen.

YubiKey: GPG-Kartenfehler / Sharing Violation unter Windows

Ugh – Windows und Sicherheitsfunktionen passt irgendwie immer noch nicht zusammen. Schon länger nutze ich einen YubiKey als GPG-Smartcard um E-Mails zu signieren und entschlüsseln. Das funktionierte mit GPG4Win und Thunderbird bisher auch recht brauchbar – also bis auf den Windows-GPG-Agent-Bug.

Wie gesagt: Bisher. Heute dann ein etwas seltsamer Bug:

Wat. Schnell nochmal den Daemon durchstarten: Nix. Im Log findet man folgende Info:

Wait. Sharing violation? Greift sonst noch wer zu? Jepp, natürlich tut das Jemand. Ich hatte zwischenzeitlich auf dem YubiKey für ein anderes System X.509-Zertifikate (aka PIV) eingerichtet. Diese kommen z.B. zur Authentifizierung zum Einsatz und können unter Windows auch z.B. für Remote-Logins und das entschlüsseln von Bitlocker-Festplatten verwendet werden. Entsprechend hat nun also auch Windows die PIV-Smartcard gefunden und belagert das Device dauerhaft – somit ist der Zugriff für gpg nicht mehr möglich. Abhilfe schafft hier den Dienst “CertPropSvc” (aka “Zertifikatverteilung”) zu beenden bzw. neuzustarten. In letzterem Fall bleibt das Gerät frei bis man die nächste Software mit PIV-Zugriff (z.B. Remotedesktop) startet.

Also als weiterer Punkt auf dem nicht enden wollenden Wunschzettel für einen würdigen Nachfolger für die leider sicherheitstechnisch bedenklich gewordenen YubiKeys: Parallelität der SC-Reader…

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:

 

HTTPS mit signierten Zertifikaten auf HP/HPE/Procurve/Aruba/Procurve-Switchen

HTTPS, vorzugsweise mit gültigen Zertifikaten, sollte heute eigentlich Standard sein – erst recht wenn man mehr oder weniger kritische Infrastrukturen darüber verwalten möchte. Auch wenn ich eher ein Verfechter von SSH bei der Konfiguration von Switchen bin, so wird doch oft auch ein Webinterface gefordert. Bei HP/HPE/Aruba/Procurve ist dies in der Standardkonfiguration unverschlüsselt per HTTP erreichbar. HTTPS lässt sich aktivieren, die Einrichtung von etwas anderem als self-signed ist jedoch leider nicht so intuitiv wie ich das gerne hätte. Also gehen wir die Schritte mal durch. Im CLI natürlich.

Erst muss ein “Trust Anchor” erstellt werden. Dies ist sozusagen die Zertifikatsdatenbank des Switches. Da mehrere vorhanden sein können wird er mit einem aussagekräftigem Namen (her “MEINNETZ“) versehen.

Anschließend wird das Zertifikat der Zertifizierungsstelle (CA) importiert. Leider ist dies bei vielen  Geräten nur per TFTP und nicht über USB-Stick, Terminal  o.Ä. möglich. Auch dieses bekommt zur besseren Auffindbarkeit einen Namen (hier “MYCA“). Die angegebene IP entspricht der des TFTP-Servers, unter Windows lässt sich hierzu z.B. TFTPD32 nutzen. Der Switch selbst muss hierfür natürlich bereits eine passende Netzwerkkonfiguration besitzen und den PC erreichen können, ohne passende Konfiguration sucht er sich eine Adresse per DHCP auf dem Standard-VLAN.

Im Anschluss kann die Zertifikatsunterschriftanfrage (CSR) generiert werden. Wichtig für ein gültiges Zertifikat ist hierbei im Feld “common-name” den späteren Hostname oder die IP-Adresse des Switches anzugeben, welche letztendlich für das Management verwendet werden soll..

Zu beachten ist, dass je nach Modellgeneration die Verfügbaren Cryptomethoden limitiert sein können. Das hier genutzte Modell unterstützt so leiglich RSA-Schlüssel mit bis zu 2048 Bit. Die verfügbaren Optionen lassen sich wie immer durch “?” abrufen. Das Erstellen kann je nach verbautem Managementprozessor einige Zeit in Anspruch nehmen, im Anschluss erscheint die Anfrage als Text.

Diese Anfrage kopiert man aus dem Terminal und reicht sie als .csr-Datei an die gewünschte Zertifizierungsstelle weiter bzw. signiert diesen selbst mit seiner lokalen CA. Als Ergebnis erhält man ein Zertifikat, üblicherweise im PEM-Format (meist .pem oder .crt), welches im Switch importiert werden muss. Erhält man stattdessen eine DER oder P7B-Datei kann diese an einem PC z.B. mit openssl konvertiert werden. Nach Eingabe des Importbefehls erwartet der Switch den Inhalt der PEM-Datei als Texteingabe. Unter Windows mit PuTTy kann mit einem Rechtsklick eingefügt werden.

Mit Erkennen der “END CERTIFICATE“-Zeile kehrt der Switch automatisch zur Konfigurationsoberfläche zurück.  Das Zertifikat sollte nun in der Liste der installierten Zertifikate zu sehen sein.

Zuletzt wird HTTPS ein- und HTTP ausgeschaltet. Das zuvor installierte und somit einzige Zertifikat sollte automatisch verwendet werden.

Somit ist der Switch nicht mehr unverschlüsselt verwaltbar und die zuständigen “Administratoren” teilen ihr Passwort nicht mehr zwangsläufig allen Lauschern im Netz servierfertig mit. Mit etwas Glück spart das Ganze am Ende mehr Arbeit als das turnusmäßige Auffrischen der Zertifikate verursacht. Wenn nicht schont der nicht mehr vorhandene HTTP-Login  immerhin meine Nerven.

BitBastelei #196 – YL LED Deckenpanel

Wieder mal Zeit für eine Erleuchtung: Für einen Raum war ich auf der Suche nach Deckenlampen in LED-Technik, welche sich auch mit 12V betreiben lassen. Fertige Systeme konnte ich nicht finden, der Händler YL LED Lighting Factory war jedoch in der Lage mir vor dem Kauf alle nötigen Daten für einen Umbau zu liefern. Das bestellte Modell ist mit 9W ausgezeichnet, gibt ein kaltweißes Licht (6000K) ab und soll einen hohen CRI besitzen – für ca. 7,50€ incl. passendem 230V-Treiber ist sie zudem vergleichsweise günstig.

LED Panel und Treiber

Ausflug Farbwiedergabeindex (CRI, Colour Rendering Index)

Licht ist nicht gleich Licht – viele Lichtquellen haben einen gewissen Farbstich, welcher die Farbwahrnehmung verändert, oder beleuchten Farben nicht gleichmäßig. Als Ideallicht wird meist die Sonne herangezogen. Glühlampen zeigen Farben eher rötlich, sind jedoch auch sehr gleichmäßig was die Beleuchtungsstärke angeht. Deutlich schlechteres Licht haben viele Energiesparlampen, deren Quecksilber sorgt nur in kleinen Farbstreifen für gute Beleuchtung – Farben, welche dazwischen liegen sind nur schwer zu erkennen.  Meist erscheint alles eher Grün-Blau und Farben sehen verwaschen aus. Weiße LEDs bestehen gängigerweise aus einer blauen Grundfarbe, welche durch eine Phosphorschicht auf den restlichen Bereich verteilt wird. Gerade bei günstigen Lampen ist jedoch der blaue Grundton noch gut erkennbar. Da Rot hier meist nur dürftig abgegeben wird erscheinen alle Farben eher bläulich. Der CRI gibt an wie gleichmäßig die Beleuchtung der einzelnen Farben im vergleich zum Sonnenlicht erfolgt.

cri

Ausflug Farbtemperaturen

Wie bereits bei CRI beschrieben haben einige Lichtquellen einen “Farbstich”, dieser wird mit der Farbtemperatur in Grad Kelvin angegeben. Für das Auge erscheinen höhere Farbtemperaturen heller, aber auch steril und wenig einladend. Geringere Werte erscheien bei gleicher Lichtleistung dunkler, wirken dafür gemütlich. Die Sonne liegt tagsüber bei etwa 5500K, Glühlampen und Warmweiße LEDs liegen bei eher roten 3000K. Kaltweiße LEDs driften mit 6500K eher ins Bläuliche ab.

Farbtemperaturen

Aufbau des Panels

UT8cu24Xt4aXXagOFbXN

Das LED-Panel ist als klassische “Side-Fire-LED” aufgebaut: An den Rändern befindet sich ein LED-Streifen mit handelsüblichen SMD-LEDs. In der Mitte sorgt ein spezielles Plastik dafür das Licht möglichst gleichmäßig in Richtung Vorderseite zu reflektieren. Eine Diffusionsschicht aus milchigem Acrylglas sorgt zuem dafür, dass auch eine Abstrahlung zu den Seiten erfolgt und die Lampe nicht wie ein Richtstrahler erscheint.

Side-Fire-LED

Zur Verbindung der Stromversorgung steht ein 5.5×2.1er Hohlstecker zur Verfügung, welcher durch einen Drehmechanismus vor versehentlichem Auseinanderziehen geschützt wird. Die Ansteuerung erfolgt mit 300mA, die Spannung pendelt sich im Betrieb bei etwa 28V ein. Nach einer Stunde Betrieb auf dem Schreibtisch lag die Temperatur stabil bei ca. 18°C über der Umgebungstemperatur.

Die Lichtausbeute erscheint mir optisch etwas über der einer 60W-Glühlampe zu liegen, die Farbwiedergabe erscheint, wie von  6000K zu erwarten, leicht bläulich, jedoch soweit akzeptabel.

Das nötige Loch zum Deckeneinbau ist mit 13.5×13.5cm vorzusehen, incl. Rahmen erreicht das Modul knapp unter 15x15cm und ist incl. Federn und Kabeldurchführungen ca. 2.5cm tief.

Aufbau des Treibers

Der beiliegende Treiber zur Verbindung des LED-Panels mit dem normalen Stromnetz stellt laut Angabe einen Konstantstromtreiber mit 300mA für 8-18W LEDs dar. Die weiterhin erwähnte Ausgangsspannung ist mit 60-90V angegeben, liegt bei diesem 9W-Modell jedoch bei etwa 30V. Wie stark sich diese Diskrepanz auf das Flachern am Wechselstromnetz auswirkt habe ich nicht getestet. Er ist vom Stromnetz nicht isoliert ausgeführt, hierdurch kann das Berühren der vermeintlich harmlosen Ausgangskabel ggf. schmerzhafte Folgen haben. Da die Ausgangsbuchsen mit einem breiten Plastikrand umgeben und normalerweise in der Decke angebracht sind, sollte dies im Normalbetrieb kein Problem darstellen – wer auf Nummer sicher gehen will sollte jedoch die Nutzung eines anderen Treibers in Erwägung ziehen.

LED Driver Circuit

Betrieb an 12V

Um das Panel an 12V zu betreiben sollte ein Schaltregler (Step-Up, Boost) mit Konstantstromfunktion zur Verfügung stehen. Leider sind diese Module nur schwer fertig zu finden, sodass man eine passende Schaltung vermutlich selbst bauen muss (Video folgt). Für Testzwecke kann auch ein eher verbreitetes Boost-Modul mit Konstantspannung verwendet werden, dies wird auf ca. 28V eingestellt. Die LED wird hierbei leicht unter der Maximalleistung betrieben, was optisch jedoch nur schwer zu unterscheiden ist. Da hierbei keine automatische Nachregelung erfolgt können Abweichungen durch Temperatur oder LED-Störungen das Panel ggf. zerstören, daher ist ein Konstantstromtreiber immer vorzuziehen.

Arduino: boolean vs. byte

Möchte man einen einfachen Status im an/aus-Format notieren ist üblicherweise ein Boolean der Dateityp der Wahl. Technisch gesehen unterstützt der bei Arduino verwendete ATMega jedoch immer nur 8-Bit-Register, sodass auch ein Boolean (1-Bit-Wert) intern meist als Byte (8-Bit-Wert) abgespeichert wird. Klingt nicht sehr effizient, aber kann man per Hand tatsächlich “besser” arbeiten?

Gehen wir von einem einfachen Beispiel aus: Wir möchten mehrere dieser Zustände speichern und auf deren Basis eine Entscheidung treffen. Für dieses Beispiel wird der Wert immer invertiert – in diesem Fall könnte man es auch kompakter Lösen, aber da es nur als Platzhalter für komplexeren Code gilt lasse ich das mal so stehen. Alle Beispiele sind Auszüge eines größeren Programms, die absoluten Größen also ohne weitere Aussagekraft.

Erster Versuch: Mit Boolean

Zum Vergleich mit einem einzigen “byte”-Wert, dessen einzelne Bits als Informationsspeicher verwendet werden sollen:

Schaut man auf das eigentliche Programm gewinnt die Variante mit Boolean – 6 Byte kleiner. Nicht wirklich verwunderlich – hat man ein ganzes Byte müsste sich direkt ein Sprung bei !=0 durchführen lassen. Mit Byte-Teilen ist ein Vergleich oder ein vorheriges UND nötig, welches zusätzliche Befehle und somit auch Speicher und CPU-Takte verschlingt. Schaut man jedoch auf den RAM dreht sich das Bild: Hier ist das einzelne Byte sparsamer. 2 Byte kommen mir jedoch etwas klein vor – ich fürchte hier hat der Compiler mit seinen Optimierungen einiges der boolean-Logik geschmissen, denn theoretisch sollte zur ersten Variante deutlich mehr Abstand sein.

Wie auch immer: Selbst ohne große Analyse zeigt sich, was ich schon erwartet hatte: Boolean spart Flash, Byte spart RAM. Welche Variante die sinnvollere ist hängt letztendlich vom jeweiligen Projekt ab. Da mir der RAM ausging war die Umstellung auf Byte eine gute Möglichkeit etwas zu sparen. Möglicherweise hätte es auch gereicht den Compiler nicht mit -Os anzuweisen, einen möglichst kleinen Code zu generieren.

Arduino® Pro Mini Pinout Cheat-Sheet

Ich arbeite auf Grund des geringen Preises häufig mit Arduino®-kompatiblen Boards der “Pro Mini”-Serie. Leider sind die Pins auf diesen Boards nicht nach der CPU sondern dem Standard der Arduino-IDE beschriftet. Bisher nutzte ich diverse Pinout Cheat-Sheets aus dem Netz, jedoch haben viele dieser Diagramme vertauschte Pins, welches bei mir in den letzten Wochen zu einigen fehlerhaften Aufbauten führten. Lange Rede kurzer Sinn: Ich werfe ein weiteres Cheat-Sheet in den Raum – hoffentlich mit weniger fehlerhaft beschrifteten Pins. Wenn doch etwas auffällt: Die Kommentare sind offen.

prominipinout-1.2
[DA]

Konstante kWh über die Solaranlage

Etwa 1.5-2kWh lassen sich pro Tag realistisch gesehen mit der momentanen Ausstattung meiner Solaranlage und wolkenlosem Himmel abdecken – wenn man sie denn konsequent auslastet. In den meisten Fällen ist dies nur am Wochenende der Fall, denn nur da bin ich tagsüber zu Hause und nutze energieintensive Geräte wie den Laptop oder stecke die Tiefkühltrue beaufsichtigt an den Inverter des Solarsystems um den Überschuss im Griff zu halten. In der Woche durch ist meist nach wenigen Stunden der Akku voll und die Solaranlage wird massiv gedrosselt. Immer wieder hatte ich seit letztem Sommer weitere Geräte auf meine 12V-Solaranlage umgestellt und auch mein Verhalten angepasst – mit Erfolg: In den letzten Tagen waren konstant mehr als 1kWh in den Statistiken zu sehen – trotz Wochentag. Wichtige Bausteine waren sicher die Umstellung weiterer Dauerläufer wie den Netzwerkverteilern sowie die Tatsache, dass ich nun abends den Laptop mit dem internen Akku betreibe und ihn morgens pünktlich zum Sonnenaufgang an das Ladegerät verfrachte.

Etwas Luft ist noch: Auch jetzt ist bei wolkenlosem Himmel noch Drosselung erkennbar, hier wird dann aber langsam etwas mehr Steuerung und aufwändigere Netzteile erforderlich. Genug Bastelspaß für die nächste Zeit. Erst mal wird jedoch das Verteilernetz erweitert werden müssen – die bisherigen Verteiler stoßen zu Spitzenzeiten langsam an ihre Grenzen, vor den nächsten Erweiterungen müssen hier also noch ein paar Gramm Kupfer nachgerüstet werden.

Intel Haswell-ULT Integrated Graphics: Performance vs. Battery unter Linux

Mal wieder geht es um die interne Grafik der Haswell-CPUs: Ich arbeite häufig am Laptop, dieser ist mit i5 und der der internen Grafik ausreichend schnell um auf dem Sofa etwas zu Arbeiten und nebenbei HD-Videos per HDMI auf dem TV darzustellen. Etwas verwundert war ich, als ich vor kurzem Unterwegs war. Ein kleiner Film zwischendurch sollte ja passen, aber selbst 720p-Material auf dem internen Montior war nicht ruckelfrei zu schaffen.

Das Problem scheinen die Stromsparfunktionen zu sein: Startet oder Resumed man das System im Akkubetrieb nimmt die Grafikleistung massiv ab. Auch ein späterer Wechsel auf Netzbetrieb bringt hier keine Änderung. Einzige  Lösung: System ausschalten oder in StBy versetzen, Netzkabel anschließen und starten, schon hat man wieder volle Performance – auch im Akkubetrieb. Sehr ärgerlich, vor allem da man hierzu  nahezu keine Dokumentation im Netz findet. Einige behaupten, es wäre eine Funktion des SpeedStep/EIST-Treibers, dieser wird jedoch eigentlich unterstützt, scheint aber keine Grafikfunktionen zu implementieren.

Da offenbar das Umschalten bisher (3.19.2) nicht sauber funktioniert würde ich  fast empfehlen die Stromsparfunktionen der Grafikkarte fürs erste im BIOS abzuschalten.