Der Etikettendrucker lügt über die DPI
Ein Open-Source-Web-Bluetooth-Treiber zeigt, dass der Niimbot N1 Etikettendrucker, der mit 300 dpi beworben wird, tatsächlich mit etwa 203 dpi druckt.
Der Entwickler hat den Treiber erstellt, um direkt von einer Webseite aus zu drucken, anstatt die mobile App von Niimbot zu nutzen. Er hat das proprietäre Protokoll per Reverse Engineering analysiert und es über die Web Bluetooth API für Browser zugänglich gemacht. Dabei entdeckte er nicht nur eine fehlende Funktion, sondern eine grundlegende Fehlspezifikation, die Kleinserien-Verpackungen, Inventaretiketten oder Hobbyprojekte, bei denen es auf Präzision ankommt, ruinieren kann.
Wie die Fehlspezifikation ans Licht kam
Niimbot vermarktet den N1 als 300-dpi-Drucker, was 300 Punkte pro Zoll impliziert. Der Entwickler druckte ein Bild mit einer Linealskala und ein nummeriertes Testmuster und maß die Markierungen anschließend mit einem physischen Lineal. Die Berechnungen ergaben konsistent etwa 203 dpi statt der angegebenen 300.
Vier hart erarbeitete Lektionen aus der Entwicklung eines Hardware-Treibers
Ein „erfolgreicher“ Auftrag kann gar nichts produzieren. Der Drucker überträgt Daten in Schüben. Auf einigen Plattformen verwirft der Bluetooth-Stack einen Schreibvorgang, ohne einen Fehler zu melden. Der Treiber geht davon aus, dass der Auftrag abgeschlossen ist, doch das Etikett kommt leer oder abgeschnitten heraus. Der Autor liest nun nach jedem Auftrag den physischen Seitenzähler des Druckers aus, um sicherzustellen, dass tatsächlich ein Blatt eingezogen wurde.
Dokumentation ist nicht die Realität. Die Angabe von 300 dpi ist ein klares Beispiel dafür. Spezifikationen können optimistisch, veraltet oder schlichtweg falsch sein. Entwickler müssen kritische Parameter selbst messen, wenn es auf die visuelle Genauigkeit ankommt.
Physische Markierungen schlagen „Passform“-Tests. Das Drucken eines Bildes, um zu sehen, ob es auf den Etikettenbereich passt, kaschiert Fehler bei der Auflösung, der Druckkopfbreite oder dem Versatz. Das Drucken einer bekannten geometrischen Markierung und das Messen ihrer exakten Position offenbart das wahre Verhalten des Geräts.
Ein Protokoll beschreibt die Grammatik, nicht das Temperament der Hardware. Zwei Drucker können denselben Befehlssatz verwenden und sich dennoch unterschiedlich verhalten – der eine verarbeitet schnelle Seitenwiederholungen, der andere stockt. Der Treiber kann basierend auf den Protokolldokumentationen nicht von einer identischen Leistung ausgehen; jedes Modell benötigt Tests unter realen Bedingungen.
Warum der Treiber wichtig ist
Der Treiber tut nie so, als wüsste er alles. Wann immer er einen Wert ableitet, anstatt ihn vom Drucker auszulesen, kennzeichnet er das Feld als Schätzung. Diese Transparenz verhindert stille Fehler, die ansonsten Stunden an Debugging verschlingen würden.
So erhalten Sie den Treiber
Der Treiber läuft in Chrome oder Edge und benötigt lediglich ein Bluetooth-fähiges Gerät und einen unterstützten Niimbot-Drucker. Probieren Sie die Live-Demo aus unter:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
Der Quellcode befindet sich auf GitHub, wo die Community Modelldaten beisteuern, Fehler beheben oder den Treiber für andere Browser anpassen kann:
https://github.com/iscarelli/niimbot-web-bluetooth
Niimbot-Besitzer können helfen, die Modelldatenbank zu füllen; der Vorgang dauert etwa zehn Minuten und benötigt zwei Etiketten.
Gegenargument
Bis das Unternehmen die Unstimmigkeit klärt, müssen Entwickler mit dem gemessenen Wert arbeiten.
Das Fazit ist einfach: Hardware, die Sie von einer Webseite aus aufrufen, tut möglicherweise nicht das, was ihr Datenblatt verspricht. Überprüfen Sie kritische Parameter, rechnen Sie mit stillen Fehlern und wählen Sie Treiber, die Unsicherheiten offenlegen, anstatt sie zu verbergen.
