Chapeau, Canon! Der MG6150 bleibt stark.

Man kennt die Geräte, die man immer wieder kaufen würde, egal wie überholt sie mittlerweile sind. Meine aktuelle Knipse ist da so ein Kandidat (die ich selbst dem Nachfolger bevorzugen würde). Bei Laserdruckern wäre das ganz klar mein Brother, den ich mir zum Studium zulegte und noch nie aus eigenem Antrieb mucken machte (der Papierstau mit dem Briefumschlägen sei ihm verziehen). Allerdings hatte der in den knapp 10 Jahren auch nur einen Toner und somit unter 10000 Seiten durch.

Bei Tintenstrahldruckern und Scannern sind meine Favoriten – vermutlich auch ein wenig der Nostalgie geschuldet – der Agfa SnapScan 600 und der Canon BJC-7000. Vermutlich auch, weil es die ersten Geräte waren, auf die ich Zugriff hatte. Gefühlt ist der Scanner noch immer der schnellste – auch bei hohen Auflösungen – den ich je erlebt habe. Eine Krankheit bei dem Teil war das Nachlassen der Helligkeit der verbauten Leuchtstofflampe (vor allem, wenn man vergessen hat das Scanprogramm zu beenden). Mit LED-Beleuchtung heute kein wirkliches Problem mehr, aber Agfa zählte die glücklicherweise wohl zu den user-servicable parts: Mit einem Kugelschreiber konnte man die Glasplatte herunternehmen (und sie bei der Gelegenheit auch innen putzen), lediglich eine kleine Plastikblende verdeckte die T5-Leuchtstoffröhre, die es in jedem Elektromarkt für 8 Mark (oder Euro, Umrechnung vermutlich 1:1) gab. Weißabgleich laufen lassen und das Teil werkelte wieder für ein paar Jahre.

Der BJC-7000 hatte zwei geniale Eigenschaften: riesige Tintenpatronen und eine Fixiereinheit.

Mein Vater druckte damit Klassensätze und brauchte vielleicht vielleicht 3 oder 4 Patronen im Jahr, dank Fixiereinheit hätte man die Dokumentenauflage durch ein Wasserbecken ersetzen können. Das Papier wäre dann zwar wellig, aber der Druck blieb dank Lackschicht sauber. Die Druckqualität war für damalige Verhältnisse erstklassig – nicht nur, weil es optional auch eine 6-farbige Patrone für Halbtondruck von CMY gab.

Danach kam länger nichts und dann der Canon iP3000, mit relativ vielen Features (IIRC Duplexdruck, CD-Druck) und sehr günstig im Verhalten.

Heute habe ich allerdings einen neuen Meister gefunden – und das, obwohl ich kein Freund von Multifunktionsgeräten bin. Der Canon MG6150. Allerdings begrüßte er mich erst einmal mit einem Fehler: 5B00, Tintenrestbehälter voll. Schon länger hat er davor gewarnt, jetzt ging er final in den Streik.

Nach einem längeren Kampf, das Teil in den Servicemode zu versetzen – die Anleitung auf easyfixs.blogspot.com ist leider etwas irreführend: Man darf nicht die Powertaste beim Einstecken des Stromes halten und dann x-mal auf Stopp drücken (und danach die Powertaste loslassen), sondern muss wie folgt vorgehen (Gedächtnisprotokoll, habe das Gerät nicht hier):

  1. Unbeleuchtete Stop-Taste suchen, drücken und halten
  2. Powertaste drücken und halten
  3. Stop-Taste (noch immer unbeleuchtet) loslassen
  4. Stop-Taste n-mal (IIRC 5 oder 6x) drücken (Modellabhängig, je nachdem ob das Modell der MG6000er-Serie einen Scanner hat oder nicht), die Power- und Status-LED schalten mit jedem Druck um
  5. Power-Taste loslassen

Danach taucht der Drucker als USB-Device auf und das Service-Tool lässt sich bedienen.

EEPROM-Druck und erwartungsgemäß ist der Resttintentank bei 100,2 %, bei der nächsten Zahl muss ich stocken und frage „Vielleicht ist es ein Fehler oder ich lese es falsch, aber hat der Drucker wirklich über 27000 Seiten durch?“ – „Ja kann sein, den haben wir ja auch schon gut 10 Jahre und drucken auch regelmäßig“.

Also sollte da tatsächlich kein Bit in der Zahl gekippt sein: Respekt. Der kann was.

Meine ehrliche Empfehlung war, eine passende Wanne oder zur Not ein Backblech unter den Drucker zu legen (damit es keinen „happy little accident“ auf dem Schreibtisch gibt) und ihn so lange weiter nutzen, bis er wirklich tot ist.

Ob der stete Einsatz von Originaltinte einen Unterschied gemacht hat, kann ich nicht bewerten. Bei Tinten von Drittherstellern habe ich habe ich Erfahrungen, wobei hier natürlich auch die Frage gestellt werden muss: was ist billig und was ist günstig?

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).

Universalsteckerleiste

An solche Situationen erinnert man sich Anno 2021 schon fast nicht mehr: Fremdes Land und zu viele Geräte, die Energiebedarf haben. Im Hotelzimmer: nur eine halbwegs erreichbare Steckdose. Da muss man sich schon fast den Wecker stellen, um alle Akkus über Nacht geladen zu bekommen.

Sollte man zwar eine hinreichend viele Steckdosen haben, scheitert es im nächsten Schritt: Anderes Steckersystem und nur ein Universaladapter. Man könnte Nagelknipser oder Büroklammern in Form bringen – aber ehrlich gesagt, dann kann man auch gleich einen Vilkus nehmen.

Vor meiner letzten – leider vorerst letzten – Langstrecken-Reise (bei der wir vermutlich in Haaresbreite daran vorbei geschrammt sind, eine böse Überraschung mit nach Hause zu bringen) wusste ich, dass es einiges geben wird, was gleichzeitig an die Steckdose will.

Die Überlegung war einfach wie fatal: was ist der kleinste gemeinsame Nenner? Kaltgerätestecker! Also einfach eine schwedische Dosenleiste mit einem Kaltgerätestecker (C14) verheiratet und eine passende Zuleitung mit B-Stecker für die USA besorgt.

Insgesamt wurden es dann 3 Varianten: einfache Schuko-Kupplung, 3-fach- und 6-fach-Steckerleiste:

Auch wenn man nicht genügend (oder keine) Zuleitungen mit örtlichem Stecker hat sind die Adapter nützlich: entweder man holt sich beim lokalen Elektronikmarkt was oder man bedient sich der Stromversorgung von sowieso nicht genutzten Geräten, wie dem Fernseher im Hotelzimmer.

Ob solch ein Aufbau auch nur annäherungsweise VDE-zulassungsfähig ist, konnte (und habe) ich noch nicht ergründet – ist aber auch egal, wird ja nicht hierzulande verwendet ;). Abgesehen davon: wer schon so manche E-Installation in Urlaubsländern gesehen hat: das hier dürfte vermutlich das geringste Problem darstellen.

Unter den Kollegen sorgte die Anordnung übrigens erst für irritierte Verwunderung und dann für Begeisterung – zumindest so viel, wie man einer Steckdosenleiste zusprechen kann.

Ü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!

15 Jahre

Wenn die Chronik nicht lügt, gibt es hobbyelektronik.org nun seit 15 Jahren. Wie doch die Zeit vergeht.

Zum Geburtstag gibt es deshalb auch eine kleine Neuerung: Das Wiki ist jetzt wieder auf einer aktuelleren Version und hat auch einen neuen Anstrich bekommen. Auf großen Bildschirmen nimmt es nun zwar nicht mehr die gesamte Breite ein, dafür passt es nun auf kleinen Bildschirmen besser. Insgesamt sollte die Lesbarkeit nun verbessert sein.

Ein netter Nebeneffekt ist, dass die Seite (gefühlt) etwas schneller reagiert.

Fehlt etwas oder ist was kaputt? Gefällt es euch nicht? Bitte gebt mir einfach Bescheid 🙂

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.

Lageerkennung als MEMS noch teuer war

Durch Zufall ist mir vor kurzem eine ältere kaputte Canon-Kompaktkamera in die Hände gefallen. Eigentlich war ich nur an der Optik interessiert, das Mainboard wanderte aber nicht direkt in die Tonne.

Als ich es heute dann doch mal in die Recycling-Box packen wollte, fiel mir ein Bauteil auf:

Neben Controller, Speicher, Oszillator und weiteren befindet sich ein eher auffälliges Bauteil auf der Leiterkarte

Hoch und Keramikdeckel. So ähnlich sahen auch schon die früheren Beschleunigungssensoren aus Thinkpads aus. Unter dem Aufdruck „1453K“ bzw. „35184“ ließ sich nichts im Netz finden. Da der Deckel etwas übersteht, warum nicht mal daran knibbeln?

Das war etwas unerwartet. Der kleine Metallpuck lässt sich frei bewegen und obwohl er sehr nach Neodym-Magnet aussieht, ist er nicht einmal ferromagnetisch. Die Scheibe oben ist von innen mit Gold beschichtet, der Grundkörper hat 3 Löcher. Bei genauerem Blick entpuppen sich diese als…

…etwas optisches!

Durch etwas mehr Knibbeln lässt sich der Körper entfernen:

Klick macht wie immer groß

Meine beste Vermutung ist: oben eine (IR-)LED, links und rechts Fotodioden. Der Deckel dürfte ein ziemlich guter Reflektor sein. Je nachdem, wo die Metallscheibe liegt, lassen sich alle für die Fotografie grundlegend wichtigen Lagen für Portrait und Landscape erkennen, das sogar binär. Rechts im Bild ist Kamera oben, nennen wir den rechten Sensor (oben) mal 1 und den linken (unten) 2, so erhalten wir folgende Zustände:

Sensor 2Sensor 1Lage ScheibeOrientierung
dunkeldunkellinksPortrait (90° )
dunkelhelluntenLandscape (0°)
helldunkelobenLandscape kopfüber (180°)
hellhellrechtsPortrait (270°)

Genial einfach und „damals“ einfach genial. Leider habe ich die Innereien einer alten Canon DSLR schon weggeworfen, dort befanden sich zwei gedeckelte Optokoppler, im 90° Winkel angeordnet, mit zunächst unbekannter Funktion. Beim Schütteln haben sie geklappert, beim Öffnen kam jeweils eine kleine Plastikkugel entgegen. Die Mechanik ist vermutlich auch der Grund, warum sich meine olle PowerShot eine Zeit lang entschied, alle Bilder im Portrait darzustellen – vermutlich ist Feuchtigkeit in den Sensor gekommen und hat die Kugel/Scheibe „verklebt“.

In meine aktuelle Kamera (von 2016, wie die meisten anderen) hat mittlerweile einen Beschleunigungssensor und schreibt die Informationen sogar in die Bilder:

Accelerometer Z                 : 132
Accelerometer X                 : -8
Accelerometer Y                 : 213
Camera Orientation              : Tilt Downwards
Roll Angle                      : -3.2
Pitch Angle                     : -58.1

Good boy. Leider fehlen bei der Lumix so Informationen wie Temperatur und intrinsische GPS-Koordinaten (GPS-Tagging per Handy ist Mist).

Wer den Lagesensor noch einmal genauer (allerdings nicht ganz so guter Abbildungsleistung) sehen will, here you go:

Die perfekte USB-I2C-Bridge

TL;DR: Ich habe sie noch nicht gefunden und mich beschleicht das Gefühl, dass ich selbst eine (weitere, nicht perfekte) bauen muss.

Aber erst einmal auf Anfange: Mangels halbwegs flotter Alternative habe ich Libs in Python und C# (ein paar fixes stehen noch aus) um mit dem MCP2221 von Microchip zu sprechen.

Der Chip ist einfach und macht auch ungefähr, was er soll. Nur leider ist er – nicht nur aufgrund der natürlichen Beschränkung von USB HID – verdammt langsam. Speziell wenn es um Standardaufgaben wie Register lesen geht. Das ist ein richtig großer Zeit- und Performancefresser, denn: man muss es „kleinteilig“ durchführen: Register an den Controller schicken ist ein Befehl, auf den geantwortet wird, dann muss man den Lesebefehl senden (auf den auch wieder geantwortet wird) und anschließend muss man für jeden 60-Byte-Chunk der gelesenen Daten auch wieder lesen und auf die Antwort warten. Ich bin mir nicht ganz sicher, ob die Antwort im gleichen oder nächsten USB-Interrupt-Zeitschlitz kommt, aber im dümmsten Fall würde das bei einer ein Chunk großen Leseanforderung 2+2+2 ms bedeuten. Bei 20 Registern (manche Chips lassen das Lesen im Block nicht zu, durchaus aus guten Gründen) wären das 120 ms. Dann war’s das mit 10 Refreshes pro Sekunde – zugleich stottert das UI, wenn man die Kommunikation nicht in einen anderen Thread auslagert. Alles großer Mist. Im Datenblatt sind zudem Fehler u. a. in der Protokollbeschreibung und der einzige Kontakt bei Microchip (immerhin, sie haben geantwortet, was ich nicht erwartet hätte) hat sich hinter seiner NDA versteckt – obwohl die erfragten Infos teilweise schon im (von Microchip geschriebenen) Treiber für Linux stecken.

In der Hoffnung, dass es andere Hersteller besser machen, habe ich mir einen CP2112 von Silicon Labs geholt. Silabs hat einige Dinge deutlich besser gemacht – neben den deutlich höheren Bustakten (> 1 MHz) es gibt einen Befehl (und Konfiguration), der Leseanfragen deutlich verkürzt. Mit aktiviertem „Automatically send read response“ lässt sich ein Register mit n byte Länge am Chip mit Adresse a wählen und die Antwort der Länge l wird ohne weitere WriteReports an den Controller zurückgesendet. Im Schlimmsten Fall dauert der Lesen eines Chunks 2 ms. Beide Baumen Hoch!

Tja, wenn sie nicht in anderen Situationen ziemlich verkackt hätten. Hat man den auto read response an und möchte mit einer I2C-Adresse sprechen, die es auf dem Bus nicht gibt, läuft man ohne Threading in einen Deadlock, da es einfach keine Antwort vom Controller gibt und die ReadReport-Methode blocking ist (auch das Setzen des read timeout und retry count bringt nichts). Gerade beim I2C-Detect ist das ziemlich bescheiden. Richtig bescheiden ist an dieser Stelle auch, dass man keinen „Klingelstreich“ (Start, Adresse auswählen, Stop und einfach nur Auswerten, ob ein oder kein ACK kam) machen kann. Man muss immer mindestens ein Byte lesen. Das kann bei manchen Devices für Ärger sorgen. Gleichzeitig habe ich es nicht geschafft, bei Adresse 0 zu „klingeln“. Obwohl diese, gerade wenn man einen SMBus auf dem Tisch hat, wichtig ist.

Ja, das kann man alles umschiffen, aber wiederum zulasten der Performance. Dabei wäre alles super einfach in der Firmware zu implementieren. Anderes Manko des Chips: Man kann höchstens 512 Byte am Stück lesen und nur 61 (?) Byte am Stück schreiben. Warum nur?

FTDI FT232H (und andere). Kein HID, also muss man sich entweder mit einer DLL von FTDI herumschlagen oder mit LibUSB/WinUSB herumbasteln (Tolle Projekte aber da man Zadig verwenden muss, ist es kein wirkliches Plug & Play mehr. Was mir an der Sache überhaupt nicht gefällt: Obwohl man für das beste Benutzererlebnis die DLL von FTDI benutzten muss, ist es nötig, die MPSSE-Pakete selbst zusammenbasteln. Gleichzeitig gibt es beim Initialisieren anscheinend Glitches auf den Busleitungen und zwischen Start condition, Adressierung und Stop condition habe ich bei ersten Tests wahnsinnig große Zeitlücken gesehen. Ich habe mich nicht wirklich intensiv damit auseinandergesetzt, aber bis jetzt hat mich das elendige Treibergeschwurbel aktiv davon abgehalten, Code dafür zu schreiben.

WCH CH341A: Ein Kit liegt hier und ich habe aus Anwendersicht erste Tests (mit einem EEProm) durchgeführt. Sieht nicht ganz schlecht aus. Wie der FT232H ist es kein USB-HID und man darf wieder mit der bereitgestellten DLL oder anderen Libs basteln. Ein Bastelkollege hat sich der Sache schon angenommen. Großes Problem: Alles aus erster Hand ist nur auf chinesisch. Da ich auf der Website nix lesen kann, ist sie auch nicht verlinkt. Englische Dokus kommen m. W. nur aus der Community. Muss nicht schlecht sein, aber es riecht halt alles ein bisschen arg bastelig.

Von Cypress habe ich mal ein PSoc4-Devkit (so ein Stick) mit Kitprog USB bekommen, der auch sehr schnell I2C sprechen kann. Das Teil hat sich aber durch mehrere Dinge sehr schnell disqualifiziert: Den Treiber gab’s nicht einzeln, eine Doku zum Protokoll glaube ich auch nicht und das Teil hat sich extrem schnell so stark verschluckt, dass man die Hardware neu starten musste.
Es gibt noch z. B. den CY7C65211, allerdings ist mir in freier Wildbahn noch kein Devkit über den Weg gelaufen und ich hatte mit einem anderen USB-Chipsatz schon ein bisschen Probleme, was Treiberstabilität (irgendein USB-UART-Wandler, man konnte den Port öffnen, aber es gingen keine Daten durch). Ein paar haben sich auch ziemlich empfindlich gegenüber Störungen von außen gezeigt. Ob es der Chip oder die externe Beschaltung war, ließ sich nicht mehr richtig rekonstruieren, aber da haben doch ein paar Bauteile dicke Backen gemacht.

Alternativen? Da gäbe es noch den Buspirate von Dangerous Prototypes. Für den Entwickler-Tisch ok, aber für den ganzen Rest einfach zu groß. Zudem bis jetzt keine Single-Chip-Lösung eher ein USB <> UART <> irgendwas-Wandler

Ok, wenn wir schon beim Entwicklertisch sind – Aardvark von TotalPhase. Macht man da einmal den Deckel auf (zumindest den, den ich mal auf dem Tisch hatte), sieht man nix anderes als einen USB <> UART + AVR. Zugleich konnte man ihn nicht standalone verwenden, sondern braucht(e) eigentlich immer den ziemlich klobigen Levelshifter. Die Software ist fummelig und instabil, wobei ich nicht herausgefunden hab, ob es nicht vielleicht auch die Hardware war. Hab das Teil auf jeden Fall sehr schnell wieder zur Seite gelegt. Für meine Begriffe ist das Teil nicht seinen Kosten gerecht.

Was wäre da sonst noch? TI? Die hatten IIRC mal etwas im Programm aber das war entweder ziemlich lausig oder zumindest für Normalsterbliche faktisch nicht verfügbar.

Sonst fällt mir nicht mehr viel ein. Außer, dass ich schon vor längerer Zeit die Idee hatte, selbst einen USB<>irgendwas-Wandler zu bauen. Leider ist es bis jetzt in der Planungs-Featuritis hängen geblieben. Mal grob, was ich mir vorgestellt habe, was es können muss^Wsoll:

  • GPIOs + IRQs, PWM, …
  • ADCs
  • SPI
  • I2C
  • OneWire
  • SMI/MDIO (clause 22/45)
  • UART + RS485

Nachtrag vom 16.12.2019:
Christoph hat mich auf I2C-MP-USB von Thomas Fischl aufmerksam gemacht – vielen Dank für den Hinweis – das Teil landet auf der Bastelliste und wird sobald wie möglich getestet.

Multiscreen unter Windows 10

Mit dem gestern erwähnten Wechsel des ausgedienten alten Bildschirms stehen nun zwei gleich große (hinsichtlich Auflösung und Panelgröße) Pixelschleudern auf dem Schreibtisch.

Was ich am alten Setup und mochte: der kleinere Bildschirm (2) vertikal mittig zum größeren (1) angeordnet. Mit dem Effekt, dass die Cursor in den Ecken des größeren gefangen (primären Bildschirm) wurden, bildlich gesprochen in etwa so:

Das Setup habe ich unter Windows 10 behalten, weil man sehr schnell per Doppelklick in der linken oben Ecke das aktuell maximierte Fenster schließen konnte und links unten war man direkt im Startmenü. Zudem kann man auf die Weise sehr einfach den Cursor „wiederfinden“ wenn er im Wimmelbild untergeht – Cursor erst nach unten, dann nach links – und man muss nur in zwei Ecken suchen (ok, die anderen Ecken gehen natürlich auch)

Mit zwei Bildschirmen mit gleicher Auflösung rutschte man unter Windows 7 beim Verschieben des Cursors auf einem Bildschirm direkt auf den anderen, was dann in etwa so aussieht:

Unter Windows 10 gibt es, neben der sich wiederholenden Taskleiste, einige kleine aber sehr schöne Funktionen für mehrere und vor allem größere Bildschirme:

Der Cursor wird in jedem Fall gefangen, wenn man ihn in die „gemeinsame Ecke“ zweier Bildschirme schiebt. Der Fangradius beträgt gefühlt nur 5 Pixel, aber die machen schon einen angenehmen Unterschied. In etwa so:

Dann wären da noch, dass die Bildschirmflächen beim „Anschnappen“ von Anwendungen als solche berücksichtigt werden. Der Cursor ist hier auf angenehme Weise am Bildschirmrand magnetisch. Bei Windows 7 muss(te) man den Workaround Win+Cursor gehen, um ein Fenster an die linke Seite des rechten Bildschirms zu kleben. Zudem können Fenster nun in den 4 Quadranten eines jeden Bildschirm packen, vielleicht ist bald (auf Umwegen auch jetzt schon mit den Powertoys) auch ein mehrspaltiges Layout möglich.

Ja, es sind kleine Dinge, aber obwohl ich Win10 sehr lange eher kritisch gegenüberstand muss ich sagen, dass viele (auch kleine) Funktionen mittlerweile sehr durchdacht sind. Vor dem nächsten Feature Upgrade werde ich aber trotzdem ein vollständiges Backup machen.