UART-Logging mit Linux

Eine einfache aber blöde Problematik: Plasterouter stürzen ab und man kann nicht schnell hingehen.

In unseren Flüchtlingsunterkünften stehen Accesspoints mit Freifunk-Firmware herum, genauer gesagt handelt es sich um Xiaomi Mi Router 4A Gigabit Edition.

Gute Preis/Leistung, für um die 25 Euro (zumindest im Frühsommer 2022) bekommt man bei ffmuc zumindest theoretisch um die 90 Mbit/s durch. (Theoretisch, weil ich den Messwert hier via WLAN nicht bestätigen konnte).

Abgesehen von der etwas umständlichen Installation von zuerst OpenWrt (und dem etwas umständlichen jailbreak via OpenWRTInvasion, dem durchklickern durch ein chinesisches WebUI im Router und der Gefahr, dass man eine Version mit inkompatiblem SPI-Flash erwischt oder einer zu neuen Firmware erwischt oder sich das Teil beim Downgrade erst einmal brickt) und dann der Freifunk-Firmware, bei der dann erst einmal kein WiFi funktionierte und man die experimental-Version des images verwenden muss (Vielen Dank für die schnelle und tolle Unterstützung an die ffmuc-Community!) funktioniert das Teil recht gut, bis auf…

…tja, bis auf der Tatsache, dass die Plastikboxen ab und zu abschmieren. Mit crontab lässt sich ein Autoreboot in der Nacht einrichten, in anderen Situationen konnte ich mich über die anderen Knoten zu den teilabgeschmierten durchhangeln und rebooten. Manchmal – und dann natürlich vermehrt an den Standorten an denen sie hinter verschlossenen Türen stehen – knallen die Dinger aber so weg, dass man hinfahren und den Stecker ziehen muss. Noch blöder, wenn es beide machen.

Was macht man in diesem Fall? Natürlich herausfinden warum. Problem: Man kommt über Netzwerk nicht an die Konsole, weil tot. Also muss was externes ran.

Auf das Gehäuse und UART suchen – den es natürlich gibt. 4 Pins, beschriftet, fein:

Die Wege fürs Logging sind vielfältig, der Einfachheit halber wollte ich schon einen OpenLog bestellen – da muss man aber auch wieder fahren um die Daten zu holen und wenn’s dumm läuft ist etwas schief gegangen.

Auf der anderen Seite liegen mehr als genügend Raspberry Pis herum, die den Job übernehmen können.

Schritt 1 für sinnvolles Logging: Heartbeats. Auf dem Knoten kommt eine zusätzliche Zeile in crontab, die jede Minute die aktuelle Systemzeit ausgibt:

* * * * * echo "::Systime:: $(date)" > /dev/kmsg

Auf der Raspi-Seite ist es schon ein bisschen schwieriger – denke ich zumindest. Das Problem sollte eigentlich vorhanden und gelöst sein. Unter Windows kann das Putty super easy, aber es soll Linux und ohne Klickibunti sein. Ein Python-Script dafür zu schreiben ist mir zu blöd. Miniterm? Hm, scheint es nicht zu können. Nach längerer Suche stolpere ich (wieder) über screen – dem Schweizer Taschenmesser, wenn man zu blöd für services ist.

Und es hat auch hier eine Lösung parat, die man sich zusammenbasteln kann. Interaktiv wächst ein Befehl, der erst einmal überhaupt nicht funktioniert, bis die Erkenntnis kommt, dass zuerst die Parameter zur Konfiguration der Session und dann der Pfad zum TTY erfolgen muss. Mit der Zeit und nach einigen Tabs im Browser später ist folgender Kommandozeilenbefehl entstanden:

screen -S mimon -L -Logfile /home/pi/mimon/mimon_%Y.%m.%d_%c.log /dev/ttyUSB0 115200

Dieser startet eine Session namens mimon, aktiviert das Logging in die Logfile nur echt im py home directory mit aktuellem Datum und Uhrzeit für ttyUSB0 mit 115200 Baud.

Flutscht. Nur soll für jeden Tag eine neue Log entstehen. Bei dem Test inkl. Uhrzeit funktioniert das natürlich nicht, weil der String nur beim Start geparst wird.

Ein wenig Superuser-Browsing später ist die Erkenntnis erlangt, dass man die Session-Parameter auch zur Laufzeit ändern kann.

screen -XS mimon logfile /home/pi/mimon/mimon_%Y.%m.%d_%c.log

funktioniert auf der Konsole, als cronjob aber nicht. Zumindest nicht ganz – Datum und Uhrzeit fehlen. Eine Escaping-Runde später funktioniert auch das. Jetzt muss nur noch screen beim Reboot starten. der Befehl von oben – natürlich ebenfalls mit Escaping geht nicht, was vermutlich damit zusammenhängt, dass die Session direkt aufgeht und interaktiv wird. Wieder mit der Hilfe von Stackoverflow (wie entwickelt man heute eigentlich noch offline und wie hat man das früher geschafft?) landet folgende Zeile in crontab:

@reboot screen -dmS mimon -L -Logfile /home/pi/mimon/mimon_\%Y.\%m.\%d_\%c.log /dev/ttyUSB0 115200

…die natürlich wieder nicht funktioniert. Keine Typos, ohne das Escaping funktioniert interaktiv alles. Die erste Idee: Zeit. Keine Ahnung, wann im Bootprozess @reboot loslegt und für die Anwendung auch weniger relevant. Die Lösung: 30 Sekunden warten – das gibt dem System auch Gelegenheit, den NTP zu fragen, welche Stunde geschlagen hat.

Bereit für die finalen Crontab-Zeilen? Let’s go:

@reboot sleep 30 && screen -dmS mimon -L -Logfile /home/pi/mimon/mimon_\%Y.\%m.\%d_\%c.log /dev/ttyUSB0 115200
0 * * * * screen -XS mimon logfile /home/pi/mimon/mimon_\%Y.\%m.\%d_\%c.log

So wird jede Stunde eine neue Logdatei angelegt, wodurch man – auch dank des Graphana-Dashboards – die Crashes recht schnell eingrenzen können sollte.

Mal sehen, wann es wieder soweit ist und was die Logs sagen.

Allerdings könnte es sich erübrigt haben – da vor ein paar Tagen eine neue Firmware ausgerollt wurde.

Kommt ein Oszilloskop von Saleae?

Wer mich kennt weiß, dass ich ein großer Fan von Saleae Logic Analyzern bin. Auch wenn in der Logic 2 Software IMHO noch einige wichtige Features, gerade hinsichtlich der Dokumentation, fehlen, wächst und gedeiht die Software ganz ordentlich.

Eher durch Zufall habe ich nun entdeckt, dass die neue Version endlich wieder Automatisierung unterstützt, lediglich beim Blick in die Dokumentation gab es ein kurzes Stutzen – bei einem Screenshot zu „Finding the Serial Number of a Device“ ist das Menü zur Auswahl der Demo-Geräte zu sehen, darunter ein Eintrag „[Demo] Mso“:

Auszug aus der offiziellen Automation Documentation, abgerufen am 29.07.2022

Huch? Jeder, der in Sachen Elektronik bzw. Messtechnik bewandert ist, kennt diese Abkürzung: Mixed Signal Oscilloscope.

Auch wenn die Logics (oder Pods, wie sie vom Hersteller genannt werden) Analog sampeln können, gibt/gab es bis dato keinen Scope-View. Zum einen Schade, zum anderen aber auch verständlich: mit der -3 dB-Bandbreite von lediglich 5 MHz kann man erstaunlich wenig reißen – besser als die meisten Hosentaschen-Oszis wäre es allgemein. Aber irgendwo kann ich den Ansatz auch entstehen: Es ist eher ein schneller Logger als ein langsames Oszi, zudem muss man beachten, wo die Software her kommt.

Nichts desto weniger wäre der Schritt in Richtung Oszilloskop gar nicht so abwegig, auf Seiten des digitalen Pfad ist Know-How vorhanden, in Sachen Software auch – durch die Analog-Funktionalität der aktuellen Generationen ist auf jeden Fall schon mal ein Schuh in der Tür.

Müsste ich einen Tipp abgeben, würde ich auf einen auf einen Angriff in Richtung 3000er-Serie von Pico Technology tippen, also 2-4 Kanäle, 100 MHz, 1 GS/s und um 10 bit tippen. Aber das ist natürlich reine Spekulation.

Mal schauen, ob und wenn ja was da kommt.

Nachschlag vom 30.08.2022:

Ein Vögelchen kam mit folgendem Bild aus den Anwendungsressourcen aus einer aktuellen Logic-Installation (2.3.58) zugeflogen:

Also schon einmal vier Kanäle und eine Farbgebung und -reihung der Kanäle, die mich an die der großen Hersteller erinnert.

Auch LCDs können einbrennen.

Nachdem in letzter Zeit einmal mehr das Thema hochgekommen ist, dass LCDs/TFTs nicht einbrennen können, habe ich mich nun doch genötigt gefühlt nach den uralten Fotos auf dem Rechner zu suchen. Zugegeben, es ist wirklich aus grauer Vorzeit und es hat sich einiges getan, aber hier der Beweis:

Das Panel war schon einige Monate (wenn nicht sogar Jahre) aus der Anwendung raus und hier an einen einfachen LCD-Treiber angeschlossen, der es zum Leben erweckte. Nahm man dem Controller den Strom weg, die Hintergrundbeleuchtung aber weiter an, entspannten sich die Flüssigkristalle und sie gingen in den bevorzugten Zustand, der dem lange Zeit angezeigten Inhalt entspricht. Links oben sieht man sehr deutlich „Controller Interface“, links oben kann man das Wort „Agit“ erkennen.

Aus einer Serienaufnahme habe ich nochmal einen kurzen Clip gebastelt – man achte darauf, wie rechts oben eine Buttonleiste erscheint – „Config“, „Cal“ (?), „Gauge“, „Trend“, „Case“, „Sterile“, „Alarms“:

Mit den Angaben schwanke ich irgendwo zwischen Industriesteuerung und Medizinequipment. Unter dem vollständigen Fenstertitel „NBS Local Controller Interface“ konnte ich online leider nichts finden.

HL-340 – man bekommt, was man bezahlt

Wie günstig oder vielmehr billig kann ein USB auf RS-232-Wandler sein?

Preislich lag das Teil bei 5,69 Euro mit Versand und einen Tag nach der Bestellung auf dem Tisch:

Da das Gehäuse halbtransparent ist, sieht man auch ein bisschen, was drin ist:

Nicht viel, um ehrlich zu sein. Auf dem Bild nicht ganz so gut zu erkennen: es ist wohl ein chip on board, zumindest sieht man einen schwarzen Blob. Nicht verwerflich, auch nicht unbedingt ein Merkmal von schlechter Qualität, sondern einfach ein Zeichen für Massenfertigung im Endstadium – und solange das Teil funktioniert habe ich nichts daran auszusetzen.

Am PC meldet sich das Teil als „USB-SERIAL CH340“ (VID: 1A86, PID: 7523), FTDI Chips zu faken lohnt sich offensichtlich nicht mehr, die CH340 sind mir bisher auch nicht als besonders unzuverlässig in Erscheinung getreten, soweit auch alles ok.

Allerdings habe ich immer noch meine Zweifel, ob das Teil hält, was es verspricht – ob da tatsächlich ein RS-232-kompatibles Signal rauskommt? Das Multimeter kurz an Pin 3 rangehalten: 0 V. Nope.

Das Oszi sagt ebenfalls nein:

Im Endeffekt ist es nur ein invertierter 5 V-TTL-UART in der Hoffnung dass das Gegenstück mit den Pegeln klarkommt. Auf der anderen Seite muss man hoffen, dass der kleine CH340 auch echte RS-232-Signale (also mit +12 V/-12 V) aushält.

Bisher habe ich noch nichts beobachtet, wobei der Fokus auch eher auf TX als RX stand. Mal schauen, wie das Langzeitverhalten ist (und der nächste Anschaffung wird wohl ein paar Euro mehr kosten).

Solaranlage und Heizung: sprecht miteinander!

Wie im Artikel Energieerfassung beschrieben, haben meine Eltern eine Wärmepumpe sowie eine Solarthermieanlage als Heizung. Beide für sich betrachtet funktionieren ganz ordentlich, im Zusammenspiel gibt es allerdings ein größeres Defizit, dazu mal ein Blick auf ein Diagramm für einen typischen Vormittag:

Gegen 9:05 ging die Kollektortemperatur (blau) über den Schwellenwert zum Beladen des Puffers und die Pumpen (für Kollektor und Wärmetauscher, hier nur der Wärmetauscher dargestellt) legen los.

Dabei ist die Leistung vom Dach natürlich noch nicht so groß, allerdings rührt die Pumpe im Puffer erst einmal um. Folglich fällt die Temperatur im Puffer oben (grün) und die unten im Puffer (orange) steigt leicht. das bringt gegen 9:45 die Wärmepumpe auf den Plan „Wasser kalt, muss heizen“ – zu sehen an der Differenz der Grundwassertemperatur (GW diff) am Ein- und Ausgang der Wärmepumpe. Ansich ist das Vorgehen korrekt, allerdings hätte die Solaranlage den Puffer in der nächsten Stunde genauso aufgeheizt – nur eben deutlich günstiger.

Rechnet man mit einem „Einsatz“ des Wärmeerzeugers von etwa 25 Minuten bei einer Leistungsaufnahme von knapp 5,7 kW macht das pro Sonnentag 2,375 kWh. Angenommen, das passiert jeden vierten Tag sind das pro Jahr etwa 91 Tage, also 216 kWh im Jahr. Bei eher optimistischen 25 ct/kWh ergibt das 54 Euro – pro Jahr. Sinnlos verheizt.

Man sollte die beiden Geräte einfach miteinander sprechen lassen: Wenn die Solaranlage aktiv ist, soll die Wärmepumpe ruhe geben. Das kann eigentlich nicht allzu schwierig sein – die Wärmepumpe hat zum Umschiffen von Lastspitzen einen Freigabekontakt fürs EVU sowie einen Schalter vorne am Gerät für eine manuelle Freigabe, was im Schaltplan in etwa wie folgt aussieht:

Auf der anderen Seite ist der Solarregler von Viessmann/Resol. Einfach ein Relais parallel zur Wärmetauscher-Pumpe anzuschließen geht leider nicht, da die Pumpe mit Pulspaketsteuerung betrieben wird. Solch ein Signal auf die Freigabesteuerung zu geben wäre zumindest „interessant“, aber nein. Natürlich könnte man mit einem abfallverzögerten Relais oder mit ein bisschen basteliger mit Netzteil und nachgeschalteter Glättung arbeiten, aber das muss nicht sein: Der Solarregler ist für solche Fälle vorbereitet und unterstützt eine Funktion namens Parallel-Relais. Dabei wird bei Pumpenaktivität ein weiteres (Um-)Relais aktiviert.

Prima, damit könnte man einfach den L1 vom Schaltplan oben ersetzen und alles ist hoppi-galoppi! Meines Erachtens nicht ganz. Ich möchte die Systeme sinnvoll „isoliert“ haben. Deswegen ist bei einer kleinen Shoppingtour ein Steuer-Relais im Warenkorb gelandet, das wie folgt in Reihe geschaltet wurde:

Der Kontakt des Relais ist als Öffner ausgeführt, damit das Relais nur bei aktiver Solaranlage bestromt werden muss. Zusätzlich ist ein Schalter zur Übersteuerung des Relais eingebaut, für den Fall, dass etwas unvorhergesehenes mit der Solaranlage ist und man der Wärmepumpe auf jeden Fall eine Freigabe erteilen kann.

Der Auf- bzw. Umbau sieht entsprechend unspektakulär aus – die zweite Baugruppe von links ist neu:

Das Einzige was vom Umbau zeugt ist der Schalter und die Beschriftung, die nicht ganz zum Rest passen:

Einen Tag nach dem Umbau zeigte sich beim Monitoring folgendes Bild:

„Wie Sie sehen, sehen Sie nichts“ – obwohl man behaupten könnte, dass die Puffertemperatur oben den Einschaltpunkt des WP-Reglers nicht getroffen hat: die Kontrolllampe am Hilfsrelais leuchtet, sobald die Solaranlage loslegt und die Wärmepumpe bleibt ruhig, wie an der bei 0 bleibenden Temperaturdifferenz zu sehen ist. Nicht nur an diesem Tag, sondern auch an den darauf folgenden.

Zugegeben: Technisch ist das weder kompliziert noch besonders intelligent, aber man muss es halt einfach erkennen und machen – „why fix it if it ain’t broken?“

AVR, ferngesteuert

Die AVRs der 0/1-Serie verwenden zum Programmieren und Debuggen UPDI, welches etwas vereinfacht gesprochen ein auf UART basierendes Protokoll ist.

Dementsprechend hat es nicht lange gedauert, bis es pyupdi entstanden ist. Mit diesem Tool bzw. Library reicht eine serielle Schnittstelle vom PC (mit TTL-Level) und ein Widerstand, um Programmcode auf den Mikrocontroller zu bekommen.

Neben den Programmierfunktionen bietet die Schnittstelle ebenfalls die Möglichkeit zu Debuggen. Zu dem Funktionsumfang gehört gleichermaßen das Auslesen und Schreiben von Registern. Warum das nicht einfach nutzen, um direkt über den PC die Ports und Peripherie-Module des Chips zu verwenden?

Das Schreiben und Lesen im Adressraum der CPU sind gut dokumentiert, der einzige Haken ist, dass eine etwaig geflashte Firmware weiterläuft und einem die Suppe versalzen kann (oder andersrum). Zum Debuggen gehört natürlich auch, die Ausführung der CPU anzuhalten, wozu ich allerdings keine Dokumentation bzw. Informationen finden konnte. Aber macht nichts, einiges vom Protokoll ist ja bekannt und ein bisschen Reverse Engineering bin ich ja nicht abgeneigt. Unterm Strich ist es anscheinend recht trivial: Es muss ein Key geschrieben werden und in ein „reserviertes“ Control-Register eine 1 zum Anhalten und eine 2 zum Ausführen schreiben.

Mehr Details und ein kurzes Demo-Video ist im updizombie-Repository zu finden.

Über Lang(weilig)e Artikel und Zeit.

Es ist ja schon fast obligatorisch, dass hier im Blog alle paar Jahre Warteschleifenmusik gespielt wird.

„Hinter den Kulissen geht einiges vor“ wäre momentan zumindest einer Nominierung für den lame excuse award würdig. Denn: so richtig viel passiert eigentlich nicht. Wir schreiben 2021, seit bald einem Jahr ist die Mehrheit bei mir in der Arbeit im HomeofficeMobile-Work-Modus – mit allen Vor- und Nachteilen: Das Pendeln fällt weg, man muss keine Hosen tragen und obwohl ich die Ruhe und obwohl ich es durchaus schätze, in Stille und deutlich konzentrierter (im starken Kontrast zum Großraumbüro) arbeiten zu können (bzw. zu dürfen, ein Privileg, das nicht alle haben), bin ich nach rund 8 Stunden gefühlt platter als sonst.

Ein Faktor ist sicher auch, dass man die meiste Zeit auf Glasscheiben starrt und sich nicht mehr erheben muss, um in Räumen über Dinge zu sprechen. Die einzig wahren Bildschirmpausen gibt es eigentlich nur, wenn man sich etwas zum Trinken holt oder dieses wieder wegbringen muss – selbst dabei die Wege kürzer als sonst und die Kaffeeecke als Hort der Sozialisierung fällt auch weg. Immerhin: Es gab den Vorschlag einer „virtual coffee corner“, oder dass man MS Teams auch mal in der Mittagspause zum „distant socializing“ verwenden kann. Leider (oder zum Glück) können Headset und Webcam reale Team- und Sozialkontakte nicht ersetzen.

Aber um das soll es nicht gehen. Gehen… Ja, ich habe gemerkt, dass ich mich tagsüber deutlich weniger bewege, deswegen wurde die Pendelzeit durch anderweitige Bewegung ersetzt: im Sommer auf zwei Rädern, jetzt im Winter (wenn auch nicht ganz so regelmäßig) auf zwei Beinen. Nicht nur für den Körper, sondern auch für den Geist. Ohne nochmals abschweifen zu wollen: Mein Bastelzimmer ist nun auch mein Mobiles-Arbeiten-Büro, das etwas grüner, ergonomischer und (noch) vollgestopfter mit Technik ist. Trotzdem hat es ein bisschen den „Abstreif- bzw. hier-mache-ich-was-ich-will-Effekt“ verloren. Zugegeben: Das ist Klagen auf dem verdammt hohen Niveau, aber diese 15 m² werden wohl nicht die gleichen wie vor 2020 sein.

Deshalb und weil meine aktuelle Tätigkeit in und für die Arbeit mitunter anstrengend ist, bleibt – neben den anderen Dingen des Lebens – oft nicht mehr viel Zeit und Lust für Hobbys übrig.

Aber nun endgültig zurück zum eigentlichen Thema: Hinter den Kulissen geht zumindest ein bisschen etwas vor sich. Irgendwo habe ich gelesen, dass man sich zur Bewältigung von Prokrastination mit zwei Projekten beschäftigen sollte: Wenn man eines vor sich her schiebt, kann man am anderen weiterarbeiten. Zwei? Naja, eher zwanzig. Das Problem ist: viele interessante Dinge, ab einem bestimmten Punkt kommt man nicht weiter: „der nächste bitte!“ und wieder ein Projekt das man „später“ weiter/fertig machen will.

In Hinblick auf die Veröffentlichung fände ich es sehr unbefriedigend, nur halbwegs in sich geschlossene Themen zu haben. Einfach nur Schaltplan und Layout rauszuhauen kann funktionieren, aber das ist nicht mein Anspruch. Mein Ziel ist es, die Entstehung mit Designentscheidungen zu erklären, ein bisschen auf die Funktionsweise einzugehen und – was ich u. a. im Studium wahnsinnig vermisst habe: (mögliche) Probleme/Fehler finden, verstehen, beseitigen und dann evtl. sogar einer nicht in der Sache bewanderten Person erklären zu können. Ich würde sogar wagen zu behaupten, dass das eine mitunter wichtige Kompetenz für einen Entwickler ist (auch weil man durchaus in die Situation kommt, Vorgesetzten oder Kunden überzeugen zu müssen, warum man etwas teurer als unbedingt nötig machen will, warum die Entwicklung länger dauert, obwohl es schon „funktioniert“, etc…).

8 Abschnitte und noch immer nicht am Ziel? Jetzt aber: Da ich momentan einmal mehr den Artikel für den VBus-Decoder überarbeite (Verbesserungsvorschläge eines Lesers, Fehler in der Schaltung), stellt sich mir die Frage: wie kann man einen Artikel „würdevoll“ historisch wachsen lassen und gleichzeitig nur korrekte Informationen präsentieren (Schaltpläne, Teilelisten, Oszillogramme), ohne die Erkenntnisse aus Unzulänglichkeiten und Fehlern zu verlieren? Zugleich sollte die Artikellänge aber nicht abschreckender als unbedingt nötig werden (12 A4-Seiten für den VBus-Decoder-Artikel sind ordentlich), aber unnötiges Geklicke in einer Artikelserie vermieden werden.

Etwas richtig cleveres ist mir noch nicht eingefallen. „Wasch mich, mach mich aber nicht nass“ passt hier wohl am besten.

Folgende Möglichkeiten sehe ich:

  1. Vollchronologischer Aufbau: oben alt, unten neu – viel zu lesen
  2. Pro Entwicklungsphase eine Seite, ähnlich wie ein Blog
  3. TL;DR-Prinzip: Aktuellste Informationen oben, alte Versionen/Schritte wie in einem Changelog unten
  4. Eine Basisseite, mehrere Artikel/Seiten für die Varianten (beim VBus z. B.: PC-Version, Nano, Pi) mit integrierter Historie
  5. Eine Basisseite aller Varianten, Historie auf Unterseite(n)
  6. Radikalkur: nur noch den aktuellsten Stand, keine Historie

Jede Option hat Vor- und Nachteile. Die „Geschichte“ der Entwicklung möchte ich aus oben genannten Gründen eigentlich nicht ganz weglassen, eine Radikalkur wird es deshalb mit großer Wahrscheinlichkeit nicht geben.

Auch wenn Kommentare hier leider sehr selten sind: Was meint ihr? Ihr seid die Zielgruppe, also wie hättet ihr es am gerne? Einfach in die Kommentare packen oder schreibt einfach eine Mail. Ich freue mich über jeden Vorschlag!

#Kundenbindung

Bei vielen Online-Bestellungen kann man zusätzlich noch eine Bemerkung angeben. Meistens bleibt es leer, weil es einfach nichts zu sagen gibt.

Manche Firmen ignorieren es auch einfach, wie ich aktuell bei einer Bestellung bei einem sehr großen Bauteile-Distri feststellen durfte. Aber es gibt auch welche, bei denen es gelesen und auch nicht ganz ernst gemeinte Hinweise umgesetzt werden – wie bei Welectron:

War zwar nur eine Kleinigkeit, aber ich hoffe es hat dort genauso eine kleine Freude bereitet wie mir 😉

Warum man Tek/Keithley seine komplette Adresse + Telefonnummer angeben muss, um ein Firmwareupdate zu bekommen, das älter als das Herstellungsdatum des Geräts selbst ist, muss man nicht ganz verstehen. Laut Website because USA (Exportbeschränkungen).

Zumindest gab es beim Update einen Tippfehler an der richtigen Stelle:

Domo Arigato, Mr. Rebootto.

Homeoffice oder: der dumme USB Sharing Switch

Seit Mitte März arbeite ich nun durchgehend zu Hause.

Damit es keine Doppelbelegung gibt und auch der Laborplatz verwendet werden kann, hängt das Arbeitsnotebook an meiner restlichen Peripherie. Die ersten Tage bin ich jeden Tag noch zweimal unter den Tisch, um die DisplayPort-Stecker von PC zu Notebook und wieder zurückzustecken. Recht schnell kam dabei der Gedanke: für wie viele Zyklen sind die Konnektoren überhaupt gemacht?

Leider hat das Dock vom Arbeitsgerät nur VGA (für 1440p eine Zumutung) und 2x DP. Aber: das Notebook selbst hat zumindest einen HDMI und meine Bildschirme jeweils auch. Mein uraltes Thinkpad hatte doch auch (nur) Displayport und alles, woran man es damals anschließen wollte, hatte wenn dann nur HDMI – also kam mal ein Adapter ins Haus.

Nun muss nur noch, Maus, Tastatur, Mikrofon und Kamera umgesteckt werden. Um nicht alles einzeln zu machen hängen alle Geräte an einem USB-Hub. Auch wenn es jetzt deutlich bequemer ist, unter den Tisch muss man trotzdem noch.

Aber auch das Problem lässt sich lösen. Für eine alte Bastelei hatte ich noch einen USB-Schalter – den auf Umschalter umzubauen, dazu noch mit vernünftigem Power select (keine Rückströme), dürfte ziemlich unangenehm sein. Glücklicherweise gibt es so etwas im Austausch kleine bunte Papierstreifen nach Hause geliefert:

USB-Umschalter „Auto Sharing Switch“

2 Buchsen für den PC, eine (verbogene) für ein Gerät, zwei Tasten. Einfach wie effektiv. Bei den Kosten und aus reiner Neugierde kann man schon einmal einen Blick ins Innere werfen. Zunächst die Unterseite:

Leiterkarte des USB-Umschalters von unten

Hmm, mit lecker Kruste sowie Hotfix (rechts oben) und ein bisschen Lötzinn an der USB-Buchse als Beilage. Das kann oben nur besser werden…

Oberseite des USB-Umschalters

Ok, das Teil heißt also FJ-U02S und stammt von www.fj-gear.com und sieht soweit gar nicht mal so gut aus – man beachte den Bereich rechts unten – da ist wohl mal der Schraubendreher (oder Hammer?) ausgerutscht…

Noch einmal ein bisschen näher:

Was um alles in der Welt haben die in der Fabrik mit dem Teil angestellt? Es fehlen Pads von 5 Bauteilen und der Hotfix macht es auch nicht besser… Die beiden Widerstände sind übrigens 1k. Der C war warscheinlich ein kläglicher Versuch, noch irgendwas am Ausgang zu filtern. Der kann von mir aus weg bleiben. Trotzdem habe ich es mir nicht nehmen lassen, die Leitungen noch ein bisschen zu verstärken.

Der Transistor schaltet übrigens die Versorgung des angeschlossenen Devices – auch dank der Dioden in Reihe mit VBUS von den Hosts ist es nicht ratsam, ein Gerät das sich über USB versorgt anzuschließen – zumindest ohne aktivem USB-Hub. Ohne Last habe ich am Ausgang knapp 4,3 V gemessen (obwohl es nach Marking Schottky-Dioden sein sollten).

Ansonsten finden sich folgende Hauptkomponenten auf dem Board:

  • WCH CH440G – Analog-Switch (PDF-Link nach China)
  • WCH CH9882 – Vermutlich ein Mikrocontroller mit USB
  • OnSemi NC7SZ32 – TinyLogic OR-Gate
  • NXP 74HC123D – Dual retriggerable monostable multivibrator with reset
  • ST LM358 – Operationsverstärker

Warum das Teil einen Mikrocontroller hat? Vermutlich aus dem gleichen Grund, warum eine CD beiliegt: Damit man vom (nicht verbundenen) PC aus den Host umschalten kann. Ich war so mutig/dumm und habe die Software installiert – allerdings tut sich soweit gar nichts.

Das Gerät meldet sich mit VID 0x1A86 und PID 0xE040 als HID an und hat sonst keinerlei Beschreibungen. Laut HID-Descriptor hat es eine Reportlänge (in und out) von 9 Byte (inkl. Report ID). Wer sich für mehr interessiert, hier mal der komplette Dump aus USB Device Tree Viewer

Leider ist das Teil nicht intelligent genug, auf den Host umzuschalten, der gerade aktiv ist (wenn der andere aus ist). Damit könnte das Teil einfach unsichtbar unterm Schreibtisch verschwinden.

Unterm Strich sieht mein Setup nun ungefähr wie folgt aus:

Einzig der (powered) USB-Hub muss manchmal aus- und wieder eingeschaltet werden, wenn die Einschaltreihenfolge der Stromversorgung und PC nicht passt. Aber vielleicht findet sich dafür auch eine sinnvolle Lösung 🙂

Beim Schreiben des Beitrags ist mir übrigens aufgefallen, dass Video auch gänzlich übers Dock funktionieren dürfte, da die Grafikkarte am PC auch einen HDMI hat. Also: 1x DP und 1x HDMI jeweils vom PC & Notebook. Solange ich aber nicht spontan zwischen Homeoffice und Arbeitsplatz wechsle bleibt es erst einmal so wie es ist.

A-GPS für die Canon SX280

Manchmal muss man alte Beiträge nochmal ausgraben.

Canon hat letztes Jahr angekündigt, ab 1. Januar 2020 keine A-GPS-Daten mehr für die SX280 anzubieten. Diese ermöglichten, einen Cold Start des GNSS-Empfängers auf wenige Sekunden zu verkürzen. Die Meldung ging an mir komplett vorbei, nicht aber Andreas, von dem der Hinweis kam.

Er konnte auch direkt bestätigen, dass auf den Servern von Canon die Datei zwar noch angeboten wir, der Inhalt aber einen Stand vom 05.01.2020 aufweist.

Um es kurz zu machen: Zum Stand meines alten Artikels hat der Download von http://epodownload.mediatek.com/EPO.DAT funktioniert und entsprach der Datei \DCIM\CANONMSC\GPS\CAGM01.EED auf der Speicherkarte der Kamera. Das ist auch heute noch so.

Keine Ahnung, was man mit dieser Information anfangen kann…

Zugegebenermaßen: die olle Knipse verwende ich nicht mehr wirklich, hat sich im Urlaub vor zwei Jahren aber noch ganz passabel als Notfallkamera und vor allem als GPS-Logger bewährt.

GPS-Logging habe ich bisher nicht mit dem Telefon gemacht, da es zumindest früher immer wahnsinnig Akku gesaugt hat – aber auch hier hat Andreas einen Tipp: https://gpslogger.app – ohne, dass ich es bis jetzt getestet habe.

Noch ein weiterer Hinweis von ihm:

[…] scheint täglich um 05:55

(tDiff +6h, dh kurz vor TW-Mitternacht!?) upgedatet zu werden.

Info zur Struktur der Datei gefunden:

https://github.com/mru00/crane_gps_watch/tree/master/snoops

[…]

Noch eine andere Anmerkung (meinerseits) zur Thematik: „It’s all fun and games, until they shut down the servers.“ – Bei enorm vielen neuen Geräten sind Dienste im Internet mehr oder weniger zwingend erforderlich oder ein Teil des Produkts – wie man schon ein paar Mal gesehen hat und in Zukunft noch viel öfter sehen wird: irgendwann ist das Zeug zu legacy oder schlicht und ergreifend die Firma hinter dem Produkt zu Pleite und die Investition ist verloren.

Daher ist meine Meinung: Wenn ein Produkt nicht mehr unterstützt oder gar begraben wird, sollte es oder deren Services an die Community übergegeben werden. Der IP (intellectual property) ist für den Hersteller eh nicht mehr interessant oder zumindest überholt und so kann Landfill und Sicherheitslücken vermieden und die die Kunden bei Laune gehalten werden. Natürlich entspricht das nicht dem Ziel gewinnorientierter Firmen, deswegen sollte hier auch etwas aus der Regierung kommen.