Was der MCP2221 sonst noch kann

Es gibt Dinge, die Zeit verschwenden, nicht richtig funktionieren und schlussendlich nicht einmal einen Sinn ergeben. Manche nennen das sogar Hobby.

Nachdem mir im Zuge der MCP-USB-Bridges keine Python-Implementierung so richtig gefallen habe, bin ich gerade dabei, selbst eine zu schreiben und mehr oder weniger ausgiebig zu testen.

GPIOs, ADC funktionieren so wie es aussieht genz gut, heute war der DAC dran.
So richtig toll ist er nicht, aber besser als nichts. Um Seine Leidensfähigkeit zu zeigen, musste ein kleines Beispiel her.

Warum nicht einfach so etwas ähnliches wie einen Hellschreiber implementieren? Nur halt extrem ranzig.

In Python geht das ordentlich schnell und einfach:

txt = "Hallo Welt!"

vals = [22,20,18,16,14,12,10,8]

meh = []
for c in txt:
    meh.extend(font[ord(c)-32])
    meh += [0]

for col in meh:
    for reps in range(4):
        curcol = col
        for y in range(8):
            if curcol & 1 == 1:
                dev.dac_setvalue(vals[y])
            else:
                dev.dac_setvalue(0)
            curcol >>= 1
            time.sleep(0.003)

Die Font liegt in als Liste vor, die alle wichtigen Zeichen ab dem Leerzeichen enthält. Vals beinhaltet die Analogwerte der jeweiligen Bits der Zeichen (in der Höhe). Der Text wird sprichwörtlich in eine Bitmap umgewandelt und einfach über den DAC rausgejagt. Damit die Zeichen etwas besser lesbar sind, werden sie 4 mal wiederholt. Die kurze Pause ist nötig, weil sich sonst der MCP verhaspelt.


Ist das nun Kunst oder kann das weg? 😉

Trusted Recursive Resolver

Aus der Kategorie: wir ersetzen etwas kaputtes durch etwas noch viel kaputteres:

DNS soll gegen DNS over HTTPS (kurz DoH, oder eher d’oh) ersetzt werden, so zumindest der Plan von Mozilla. Einmal Fefe, einmal Heise.

Symbolbild:

Ich hab übrigens seit mehreren Monaten einen Blogpost „on hold“, bei dem ich etwas Angst habe ihn zu veröffentlichen, da ich sonst als paranoid dastehen könnte. Titel: „Ein paar unangenehme Prognosen“. Eine davon war (leider zu dem Zeitpunkt nicht aufgeschrieben): „DNS-Anbieter loggen und verwerten Anfragen, verkaufen sie u.a. an die Werbebranche“.

Ein anderer Punkt: „Es kommt das Zeitalter der Tivial-Bugs –
Die root-Lücken in macOS letztes Jahr werden ein Witz dagegen sein. Kategorie: Encryption von Drahtlosnetzen (WiFi/5G/…) und Protokollen wird durch Bug mit dem Niveau eines Bitflips weitestgehend ausgehebelt.“

Ach, übrigens: WPA2 ist so gut wie tot. (ok, war kein Bitflip)

Lehrgeld anderer Art

„Lehrgeld bezahlen“ ist üblicherweise eine Redensart, dass man eine schmerzhafte (und in aller Regel teure) Erfahrung macht. Nicht selten, indem man etwas kaputt macht.

Ich habe nun zweimal (zum Glück nicht allzu teuer) bezahlen „dürfen“ und dabei gelernt. Der Unterschied: wäre ich jeweils nicht so voreilig gewesen, hätte ich Geld gespart (und nicht unnötig etwas herumliegen).

Akt 1: die Handytasche. Da das Handy so gut wie immer in der gleichen Hosentasche wie das Schlüsselbund ist (und um Staub in Buchsen und anderen Öffnungen zu vermeiden, habe ich eine passende Lederhülle. Vorübergehend „hatte“, denn nach dem letzten Wohnungsputz war sie plötzlich wie vom Erdboden verschluckt. Ich hab die ganze Bude mehrfach abgesucht, ohne Erfolg. Nach einer Woche und der vorübergehenden Benutzung einer (frischen!) Socke habe ich zähneknirschend eine neue bestellt.

Sonntag ist bei mir meistens mit einer Runde in der Hängematte verbunden, die die restliche Zeit um einen Balken gebunden ist. Als ich sie wieder aufhing, hatte ich mir am lie Stein in den Hintern gebissen. Keine zwei Stunden nachdem die Bestellung rausging, lag das blöde Ding vor mir. Am so ziemlich einzigen Ort, den ich nicht gecheckt hab. Hmpf.

Akt 2: seit einiger Zeit habe ich CC1101-Module herumliegen, die ich, nachdem sich die nRF-Module als dafür ungeeignet erwiesen haben, für die Wetterstation verwenden möchte. Dank RTL-SDR konnte ich zumindest sehen, dass etwas gesendet wird. Beim Empfänger kam – wenn überhaupt – immer nur Mist an. Das Evaluation Kit für die Module wäre zwar sicher ideal um das Zeug zum Laufen zu bekommen, ist aber für Bastler unverhältnismäßig teuer. Auf der Suche nach einem zum rfsmart Studio kompatiblen Adapter bin ich auf ein Modul von „Novate“ gestoßen. Nachdem nun wirklich viele Versuche erfolglos waren, habe ich bei dem Händler aus Hongkong doch auf „Buy“ geklickt.

Na ratet mal. Keine zwei Stunden später hats mir die FIFO vom Empfänger gefüllt. Verdammte Axt.

Immerhin muss ich jetzt nicht die üblichen 7 bis 20 Tage (oder eher mehr) warten und habe dann etwas, das ich auch mal mit den offiziellen Tools ausprobieren kann. (Update: war nicht mehr lieferbar, somit hat es der Händler storniert – auch ok)

Das waren jetzt nur zwei Beispiele aus einer Woche – kennt ihr dieses Phänomen auch?

Teardown von Trådfri

Nachtrag 18.03.2019: Dieser Blogeintrag wurde mit mehr Details ins Wiki übernommen.

Eigentlich habe ich mich nur in der Ausfahrt vertan – was bin ich nur für ein Dussel. Weil ich aber schon dort war, habe ich mir etwas mitgenommen: Die billigste verfügbare Lampe mit Funkanbindung (GU10 mit 400 lm, 803.652.70) und einen drahtlosen Dimmer (003.478.31), der eine relativ interessante Funktionsweise hat: Man kann ihn in quasi beliebiger Raumlage drehen (liegend oder an der Wand klebend) – die Halterung braucht man dafür nicht. Daher meine Vermutung: Da muss ein mindestens ein Drehratensensor (Gyroskop) oder gar ein Kompass drin sein.

Der Hauptgrund des Einkaufes war – zumal es in meiner Wohnung keine Leuchten mit GU10-Lampen – eher ein Teardown, da ich online bis jetzt noch nichts finden konnte.

Nimmt man das „User-servicable“ Gehäuse vom Dimmer ab, bekommt man folgendes zu Gesicht (klick macht wie immer groß):

Die Typenbezeichnung ist also neben der Ikea-Nummer ICTC-G-1. Obwohl das Gehäuse den Anschein macht, als wäre es Ultraschall-verschweißt, ist es nur geklipst. „Built to a price“, das Schweißen wäre ein zusätzlicher Produktionsschritt und die Spritzguss muss sowieso ran. Mit einem Schraubendreher lassen sich die Gehäuseteile vorsichtig trennen.

Das Rückteil ist weniger spektakulär – ein Magnet und eine Kontaktfeder für die Batterie. In der anderen Hälfte steckt die „Magie“:

Der Codename für das Leiterkärtchen ist allen Anschein nach „Nebula_1F“. Ich bin kein Trekkie, aber ist das eine Anspielung auf eine Schiffsklasse? Halbwegs futuristisch ist die Bedienung immerhin…

Hirn und Herz ist ein Silabs EFR32 MG1P132GI. Für ein Datenblatt sollte man den Suchbegriff auf „EFR32MG1“ einschränken: „Mighty Gecko Mesh Networking Wireless SoCs for Zigbee and Thread“-Produkt-Familie beim Hersteller.

Leider hört es da auch schon fast auf. der IC rechts unten (mit der Aufschrift „I4BEB2 P10343“) dürfte ein EEProm sein (nachdem der Gecko wohl keinen internen hat), bei den oberen beiden (Aufdruck „S2 636“ und „628“) dürfte es sich vermutlich um Magnetometer und Gyro handeln. Letzteres vermutlich eher links oben, da diese Komponenten meines Wissens etwas höhere Pulsstromaufnahmen (schließlich muss die Mikromechanik angeschubst werden) haben.

Schön an den Geckos ist, dass man die Pins ziemlich komfortabel auf die gewünschten Funktionen routen kann, für’s Reverse Engineering ist das allerdings nicht so ganz schön.

Wenn man die Leiterbahnen etwas verfolgt erkennt man, dass es die Leiterkarte mehr als 2 Lagen hat, halbwegs erstaunlich, bei der vergleichsweise geringen Komplexität. Bei der Leiterkartenproduktion wurde das aber wieder reingeholt: Die Leiterkarte ist gestanzt statt gefräst und das Material sieht eher billig als günstig aus. Immerhin sind die Kontakte vergoldet und es wurden einige Testpunkte spendiert – da wird sicher ein I²C dabei sein.

Objekt 2 ist, wie oben geschrieben, eine GU10-Lampe:

Der Deckel bzw. die Optik geht erstaunlich leicht runter, Innen sieht es erstaunlich unspektakulär aus:

Ein herumflatterndes Kupferfähnchen? Sieht nach einem late fix zum Bestehen der EMV-Prüfungen aus. Das LED-Modul hat keine Wärmeleitpaste im Rücken und die leicht verklebte Metallplatte lässt sich mit sanfter Gewalt (mit dem Schraubendreher am Schraubloch hebeln) herausnehmen. Dahinter begrüßt einen die Elektronik – oder zumindest das Funkmodul.

Es sieht besser aus als es ist. Ich bin mir nicht sicher, ob das Shielding seinen Namen verdient hat, es wackelt wie ein Kuhschwanz. Eine saubere elektromechanische Verbindung sieht auf jeden Fall anders aus. Ein bisschen mehr hebeln und das Innere erblickt das Tageslicht:

Das Silabs-Logo lässt sich erahnen, links unten sitzt auch ein „alter Bekannter“. Bin mir ziemlich sicher, dass es sich hier um einen EEProm handelt. Im Bild sieht man auch, dass das Modul by design eher bescheiden eingelötet ist: unter der linken Kante sitzt ein SMD-Widerstand, unter der rechten nicht. Da man sowas maschinell nicht vernünftig gelötet bekommt: Messer rein, Gedärme raus. Natürlich: Modul rein, Lötzinn-Raupe drüber.

Mit ein bisschen Zug kommt auch das Netzteil + Controller raus. Es ist hinten nicht verlötet und sieht von oben zwar sehr eng gepackt aber dennoch halbwegs ok-ish aus:

Von unten sollte man es – zumindest wenn man Elektroniker ist und einen schwachen Magen hat – besser nicht ansehen. Verdammt viele Handlötungen, mehr Lötzinn als mir lieb ist und noch mehr ekelhafte Flussmittelrückstände:

Der 5-Beiner oben ist mit ZR7IB beschriftet (kein Datenblatt auffindbar). Das Beuteil im SO-8-Gehäuse heißt BEH7JB (auch nix zu finden). Die Qualität dieser Leiterkarte ist leider nicht wirklich rühmlich.

Einen High-Pot-Test würde ich angesichts solcher Lötstellen nicht unbedingt machen:

Chirp mag keine Staunässe

Eine längere Zeit überwachten Chirp zwei meiner Topfpflanzen.

Nachdem Topf 2 deutlich größer (und vor allem tiefer) ist, zirpte der Sensor sehr früh, weshalb ich nach dem Prinzip „aus zwei mach eins“ die Sensorfläche deutlich vergrößerte.

Funktionierte etwas besser aber nicht ganz so gut wie erhofft. Dazu kommt, dass die Pflanze an einem eher schattigen Plätzchen steht, wodurch eher geblinkt als gezirpt wurde.

Irgendwann war ich dann mal im Urlaub und Mutti hat das Gießen übernommen und anscheinend (vielleicht war’s auch ich) die Elektronik mitgewässert.

Also: gar kein Zirpen/Blinken mehr, also wieder nach Gefühl (viel zu viel) gegossen aber den Sensor in der Erde gelassen. Irgendwann hab ich ihn dann doch herausgezogen und dann war auch klar, warum das Teil nicht mehr funktioniert:

Der Grund für die zwei Flachbandkabel: das eine – klar – das Programmierinterface (das hier auch für die Stromversorgung mit zwei AA-Zellen verwendet wurde), das andere zu einem NR24L01+-Modul. Ja, die Chirps haben funken gelernt, sind aber noch nicht in einem Zustand, in dem ich es veröffentlichen möchte.

Am Batterieclip lag die ganze Zeit Spannung an und dementsprechend ist das Teil sprichwörtlich abgefault:

Auch auf der anderen Seite haben sich an der Stromversorgung Kristalle gebildet:

Leider war ich in Chemie nie ’ne Leuchte, könnte also nicht sagen was zu was reagiert hat.

Erstaunlicherweise hat sich der Lötstopplack so ziemlich nur auf dem Kupfer gelöst:

Das Kupfer darunter war noch erstaunlich blank:

Trotzdem, da muss ich mir überlegen, wie das Teil besser vor dem Milieu im Blumentopf geschützt werden kann.

Deckel über die Elektronik geht nicht, wegen der LED a. k. a. Lichtsensor, Coating geht auch nicht, weil sonst die Batterie nicht mehr getauscht werden kann.

Für die Sensorfläche wäre die Frage: Welcher Lack ist naturverträglich und hat möglichst wenig Einfluss auf die kapazitive Messung? Hmm.

Warum man den Bose Flugzeugadapter verwenden sollte…

…auch wenn im Flugzeug eine Stereo-Klinke vorhanden ist.

Gemeint ist dieses Kerlchen hier:

Neben dem mechanischen Umsetzung beinhaltet der Adapter Spannungsteiler, die eine Dämpfung einfügen. Dadurch werden bei PAs (Durchsagen), deren Lautstärke man in aller Regel nicht unter einen bestimmten Wert einstellen kann, hoffentlich nicht mehr die Trommelfelle rausgeblasen.

Beim QC35 ist der Adapter noch dabei, warum Bose ihn beim Nachfolger QC35 II zu einem höheren Preis (der Google Assist-Taster rechtfertigt diesen IMHO nicht) weggelassen hat, erschließt sich mir nicht.

Seid vorsichtig!

Es ist verdammt kalt draußen. Am 27.02.2018 um 20:40 Uhr zeigt das Thermometer -13 °C. Es ist verdammt trockene Kälte. Die Heizungen und Klimaanlagen leisten zusätzlich noch ihren Beitrag. In meinem „Empire of dirt“/“Nerdcave“ herrschen 19 % relative Luftfeuchte, so man dem Hygrometer überhaupt noch trauen kann. In der Arbeit waren es heute morgen (gleicher Sensor und Disclaimer) 17 % rH. Dank ESD-Schlappen und leicht ableitenden Böden hat es dort nie gebritzelt. Es wäre mitunter teuer wenn doch. Nur die Schleimhäute und Hände leiden massiv unter der extrem trockenen Luft.

Daheim habe ich aufgehört, die Entladungen zu zählen. Auch wenn momentan leider keine Zeit zum Basteln bleibt (zum Glück habe ich im vorletzten Beitrag kein Datum versprochen), musste ich nackte Elektronik anfassen und habe mich dementsprechend oft und gezielt entladen. Obwohl mein Kleiderschrank nur sehr wenige Kleidungsstücke mit Neigung zur Ladungstrennung beinhaltet, hat es bei fast jeder Berührung geknackt.

Daher kann ich nur raten: Seid aktuell vorsichtig beim Basteln! Macht nichts kaputt und ärgert euch so richtig, wenn es doch passiert. Ich hab euch gewarnt 🙂

Die Anschaffung einer ESD-Matte kann kann günstiger sein, als das was man im Zweifel kaputt macht und schont gleichzeitig den Tisch.

Was mir an Trådfri gefällt (und was nicht)

Seit einiger Zeit hängen in meiner Wohnung Lampen von Ikea. Zunächst nur das E27 Starterset mit einstellbarer Farbtemperatur.

Ort der Anwendung: Büro. Dort brauche ich gleichzeitig helles Arbeitslicht, möchte an Programmierabenden aber dimmen können und wärmeres Licht haben. Das von vorne wird schon durch f.lux seiner Blauanteile entledigt.

Die Lampe ist mit 980 Lumen an Wintertagen angenehm hell, der CRI von 80 ist zwar nicht das Beste aber auch nicht das Schlechteste was ich gesehen habe. Für meine Anwendung ist es gut genug.

Die Einrichtung und Bedienung mit der E1524 (die mit den 5 Tasten) ist ganz gut, ein Drücken der Tasten verändert die Farbtemperatur und Helligkeit in Stufen, wenn man länger drückt wird langsam auf- bzw. abgedimmt. Das Verändern der Farbtemperatur mit longpress mag mir nicht so gelingen, bin mir aber auch nicht sicher, ob das wirklich funktioniert.

Wenn man die Lampe über die Fernbedienung ausschaltet und den Raum verlässt ist man nicht ganz verloren: Schaltet man den klassischen Lichtschalter aus und wieder an, kommt die Lampe mit der letzten An-Einstellung zurück.

Allerdings fehlt mir eine Option: dimmt man die Lampe komplett herunter, bekommt man sie nur über den Dimmer wieder hell. Schön wäre es, über die Sequenz (Aus) – An – Aus – An in eine vordefinierte Einstellung zu kommen.

Ich war so zufrieden, dass ich mehr wollte. Leider war das Gateway bis Ende Januar nicht lieferbar. Aber dann kam doch die Mail – praktisch, dass mein Arbeitsweg direkt am nächsten Schweden-Möbelhaus vorbeiführt.

Meine Bedenken gegenüber Datenschutz und Calling home haben sich bis jetzt nicht bestätigt. Das Teil nimmt nur aus zwei Gründen Kontakt zum „Mutterschiff“ auf: Firmware-updates und die aktuelle Zeit.

Letztere wird für die Lichtwecker-Funktion verwendet, wo ich auch schon bei der ersten richtigen Kritik bin: Die App zeigt sich bei der Konfiguration derselben etwas zickig. Möchte ich für die Wochentage einen anderen Zeitpunkt als für das Wochenende festlegen (also zwei Wecker parallel laufen lassen), wird gemeckert. Auch lässt sich die Dauer für den Anstieg der Helligkeit sowie Start- und End-Helligkeit und Farbtemperatur nicht einstellen. Es wird einfach auf die letzte An-Helligkeit gedimmt. Wenn man nach dem Aufstehen die Lampe aus- und wieder später wieder einschaltet springt sie auf eine Helligkeit von etwa 30 %. Da muss Ikea nochmal feilen.

Genauso reicht der sonst eigentlich ganz gute Dynamikumfang für den Lichtwecker nicht. Oft wache ich schon vom Einschalten der Lampe (bei geringster Helligkeit) vergleichsweise unsanft aus.

Eine weitere Funktion, die ich nicht verstehe: Zeitgesteuertes ein- und ausschalten. Man kann das Ein- bzw. Ausschalten nur als Zeitraum festlegen, nicht als Zeitpunkt. Das macht es unübersichtlich und verwirrend.

Leider ist selbst die Kernkompetenz der App nicht zu Ende gedacht. Während man die Helligkeit von 0 bis 100 % einstellen kann, gelingt das bei der Farbtemperatur nur in 3 Stufen. Die Lampen können über andere Apps mehr, warum wird das nicht genutzt? Die einfachste und intuitivste Bedienung wäre doch wie folgt:

Zwei Schieberegler und ein Fadenkreuz um beide Parameter gleichzeitig zu ändern. Wo Ikea doch sonst so für Pragmatismus und intuitive Konzepte bekannt ist…

Gleichwohl verstehe ich nicht, warum das Gateway zwar auf Port 80 lauscht aber nicht einfach eine Seite ausliefert, über die man die Lampen steuern kann. Das wäre wirklich plattformunabhängig. Für Windows gibt es z. B. keine Anwendung und wenn ein Bookmark auf dem Handy funktioniert mindestens genauso gut wie eine App, die zusätzlichen Aufwand bedeutet.

Bei der App stört ebenfalls die nicht vernünftige Nutzung des Platzes. Man muss sich durch die Menüs hangeln. Auf dem Handy blöd und auf dem Tablet richtig mistig. Ein einziger Helligkeits-Slider auf einen 10 Zoll Bildschirm aufgeblasen ist zumindest nicht wirklich optimal.

Was seit dem Gateway oder dem durch dessen Verwendung auf den Lampen installierten Update auffällt: die Dinger flackern hin und wieder. Hat zumindest die im Büro vorher nicht gemacht und ist auf der nervig-Skala eine glatte 4 (von 10). Der Mehrwert der Lampe ist größer als der Bug in ihrer Kernkompetenz. Trotzdem unschön. Ikea, fix it.

Heute schon 3244527696 angesurft?

Vermutlich ein alter Hut, aber heute entdeckt – In „Internet für Dummies“ steht wahrscheinlich, dass IP-Adressen die  Telefonnummern des Internets sind.

Als ich beim Eingeben einer lokalen IP in Firefox einen Punkt nicht erwischt habe sah ich, dass Firefox automatisch von Dezimal auf in die IP-üblichen Byteblöcke umrechnet. Also schnell einen lookup gemacht und http:3244527696 eingegeben:

Auch Chrome (naja, nicht ganz – der erwartet  noch // hinter dem Doppelpunkt) und sogar der sonst eher zurückgebliebene Internet Explorer können das.

Vielleicht eine ganz gute Gelegenheit, das Zahlengedächtnis etwas zu trainieren. Leider gibt es nicht mehr allzu viele Server, die keinen Hostname zum Ausliefern brauchen…

Das „Custom Programming Tool“ in Atmel Studio

Schon länger gibt es in Atmel Studio die Möglichkeit, ein eigenes Programming tool zu verwenden:

Hat mich bis jetzt nie wirklich interessiert, da ich entweder über einen in-circuit-Programmer (der direkt unterstützt wird) flashe oder FastBoot manuell startete.

Zu viele Klicks bzw. Tastaturakrobatik. Also doch mal mit dem bereits Vorhandenem spielen.

echo „foo“ macht was es soll:

Prima, also kann ich einfach die burn.bat im Projektverzeichnis einfügen und los geht’s!

Nope. Da passt wohl das Arbeitsverzeichnis nicht. Aber wie kommt man ins aktuelle Projektverzeichnis? Zunächst versuchte ich mich an den Platzhalter der „External Tools“. Allerdings wurde „$(ProjectDir)“ zu leer ersetzt.

Hmpf. Für die Buildautomatisierung gibt es noch die Build Events – klickt man dort auf „Edit #-build …“ und dann auf Show Macros, bekommt man eine längere Liste an Platzhaltern:

echo „$(MSBuildProjectDirectory)“ zeigt das aktuelle Projektverzeichnis 🙂

also schnell „$(MSBuildProjectDirectory)\burn.bat“ eingegeben und ab dafür!

Jaa-eein. Die Batch-Datei wird zwar ausgeführt, aber im falschen Arbeitsverzeichnis. Mist.

Eine kurze Suche bei Stack Overflow lässt in das richtige Verzeichnis wechseln:

cmd /k pushd $(MSBuildProjectDirectory) & burn.bat

It verks!!1!

Jetzt steht in der dämlichen Batchdatei halt noch der feste Pfad zum Binary und es wird immer die Debug-Config über den UART geschoben. Ein bisschen mehr Makro-Magic und ein %1 an der richtigen Stelle (die zu flashende Datei) mit folgendem Command erledigt den Job:

cmd /k pushd $(MSBuildProjectDirectory) & burn.bat „$(Configuration)\$(OutputFileName).hex“

Da in der burn.bat in meinem Fall eh nicht mehr als ein Aufruf von fboot.exe ist, kann die Batch-Datei auch komplett weggelassen werden:

cmd /k pushd $(MSBuildProjectDirectory) & fboot /B57600 /C1 /P“$(Configuration)\$(OutputFileName).hex“

Jetzt müsste man nur noch die Ausgabe des Build und des Custom programming tool gleichzeitig anzeigen können, dann wäre ich richtig happy 😉

PS: Bitte beim Copy & Paste der Befehle die Anführungszeichen manuell ersetzen, WordPress macht sie typografisch korrekt aber funktional kaputt.