Impression thermique ESC/POS · Toshiba TEC TRST
ESC/POS thermal printing · Toshiba TEC TRST
ESC/POS-Thermodruck · Toshiba TEC TRST
OpenThermaCore
Une imprimante de tickets que Windows refusait de faire vivre. Ce programme la sauve.
A receipt printer today's Windows refused to keep alive. This program saves it.
Ein Bondrucker, den das heutige Windows nicht mehr am Leben lassen wollte. Dieses Programm rettet ihn.
Le pilote d'origine est ancien et non signé numériquement. OpenThermaCore s'en passe : il parle ESC/POS, le standard ouvert que la machine comprend nativement, et envoie des données brutes à travers Windows. Le pilote utilisé n'a alors plus aucune importance.
The original driver is old and not digitally signed. OpenThermaCore does without it: it speaks ESC/POS, the open standard the machine understands natively, and sends raw data through Windows. The driver in use then stops mattering.
Der Originaltreiber ist alt und nicht digital signiert. OpenThermaCore kommt ohne ihn aus: Es spricht ESC/POS, den offenen Standard, den das Gerät von Haus aus versteht, und schickt Rohdaten durch Windows. Welcher Treiber benutzt wird, spielt dann keine Rolle mehr.
Hébergé sur GitLab, en accès libre et sans compte. Domaine public sous CC0 1.0 : rien à accepter, rien à devoir.
Hosted on GitLab, freely accessible, no account needed. Public domain under CC0 1.0: nothing to accept, nothing owed.
Auf GitLab gehostet, frei zugänglich, ohne Konto. Gemeinfrei unter CC0 1.0: nichts zuzustimmen, nichts geschuldet.
Ce qu'il fait
What it does
Was es kann
Sept choses, et aucune n'entre dans la machine
Seven things, and none of them enters the machine
Sieben Dinge, und keines davon greift in das Gerät ein
-
Tickets de texteText receiptsTextbonsLargeur 58 ou 80 mm, gras, centrage, taille double, sept modes de fin, et plusieurs tickets d'un coup séparés par une ligne de tirets.58 or 80 mm width, bold, centring, double size, seven ending modes, and several receipts at once separated by a line of dashes.Breite 58 oder 80 mm, fett, zentriert, doppelte Größe, sieben Abschlussarten, und mehrere Bons auf einmal, getrennt durch eine Strichlinie.
-
Impression d'imagesImage printingBilddruckBMP et PNG lus par le programme lui-même, JPEG et GIF avec Pillow. Diffusion d'erreur pour les photos, seuil net pour les logos.BMP and PNG read by the program itself, JPEG and GIF with Pillow. Error diffusion for photographs, hard threshold for logos.BMP und PNG liest das Programm selbst, JPEG und GIF mit Pillow. Fehlerdiffusion für Fotos, harte Schwelle für Logos.
-
Logo de sessionSession logoSitzungslogoUne image convertie une fois et imprimée en tête de chaque ticket — gardée dans la mémoire du programme, jamais dans celle de l'imprimante.An image converted once and printed at the top of every receipt — held in the program's memory, never in the printer's.Ein Bild, einmal umgewandelt und über jedem Bon gedruckt — im Speicher des Programms gehalten, nie in dem des Druckers.
-
Pages de diagnosticDiagnostic pagesDiagnoseseitenMire de caractères, balayage des tables de codes, test thermique de la tête.Character chart, code page scan, thermal head test.Zeichentafel, Durchlauf der Codetabellen, Thermotest des Druckkopfs.
-
Scripts ESC/POSESC/POS scriptsESC/POS-SkripteOctets bruts écrits à la main, envoyés exactement tels quels. 0x1B 0x40, et rien de plus.Raw bytes written by hand, sent exactly as typed. 0x1B 0x40, and nothing more.Von Hand geschriebene Rohbytes, genau so gesendet, wie sie dastehen. 0x1B 0x40, und nichts weiter.
-
Création d'imprimantePrinter creationDrucker anlegenL'imprimante Windows créée en un clic, en appelant directement l'API du système — ni PowerShell, ni programme externe.The Windows printer created in one click, calling the system API directly — no PowerShell, no external program.Der Windows-Drucker mit einem Klick angelegt, durch direkten Aufruf der System-Schnittstelle — kein PowerShell, kein fremdes Programm.
-
13 langues13 languages13 SprachenFrançais, anglais, allemand, polonais, hongrois, tchèque, slovaque, slovène, italien, arabe, occitan, japonais — et une treizième pour le plaisir.French, English, German, Polish, Hungarian, Czech, Slovak, Slovenian, Italian, Arabic, Occitan, Japanese — and a thirteenth one for fun.Französisch, Englisch, Deutsch, Polnisch, Ungarisch, Tschechisch, Slowakisch, Slowenisch, Italienisch, Arabisch, Okzitanisch, Japanisch — und eine dreizehnte zum Vergnügen.
Le test thermique
The thermal test
Der Thermotest
Cinq densités sur une page
Five densities on one page
Fünf Dichten auf einer Seite
L'outil de maintenance du constructeur imprime une densité à la fois. Les avoir côte à côte rend un défaut bien plus lisible : une raie claire qui traverse les cinq bandes désigne un élément de tête mort, sans ambiguïté possible.
The manufacturer's maintenance tool prints one density at a time. Having them side by side makes a defect far more legible: a pale streak crossing all five bands points to a dead head element, with no ambiguity left.
Das Wartungswerkzeug des Herstellers druckt eine Dichte nach der anderen. Nebeneinander wird ein Fehler weit besser lesbar: ein heller Streifen, der alle fünf Bänder durchzieht, zeigt ein totes Heizelement an, ohne jede Mehrdeutigkeit.
Aucune commande propriétaire n'a été devinée pour cela : un motif de densité est une image, et le motif est fabriqué par le programme. Les taux sont donc exacts par construction. À gauche, le motif tel que le programme le calcule, dessiné ici par la même règle.
No proprietary command was guessed for this: a density pattern is an image, and the pattern is built by the program. The ratios are therefore exact by construction. On the left, the pattern as the program computes it, drawn here by the same rule.
Dafür wurde kein herstellereigener Befehl erraten: Ein Dichtemuster ist ein Bild, und das Muster baut das Programm selbst. Die Anteile stimmen also schon von der Konstruktion her. Links das Muster, wie das Programm es berechnet, hier nach derselben Regel gezeichnet.
À droite, la même page sortie de la machine et passée au scanner. Les cinq bandes montent régulièrement et aucune raie claire ne les traverse : cette tête thermique n'a pas d'élément mort. Les marques pâles en filigrane sont les mentions imprimées au dos du rouleau, qui transparaissent — le papier, pas l'imprimante.
On the right, the same page as it came out of the machine, then scanned. The five bands climb evenly and no pale streak crosses them: this thermal head has no dead element. The faint marks showing through are the notices printed on the back of the roll — the paper, not the printer.
Rechts dieselbe Seite, wie sie aus dem Gerät kam, danach eingescannt. Die fünf Bänder steigen gleichmäßig an, und kein heller Streifen durchzieht sie: dieser Thermokopf hat kein totes Element. Die blassen Zeichen im Hintergrund sind die Aufdrucke auf der Rückseite der Rolle, die durchscheinen — das Papier, nicht der Drucker.
Deux défauts trouvés sur le papier
Two defects found on paper
Zwei Fehler, auf Papier gefunden
Ce qu'aucune relecture de code n'aurait révélé
What no amount of code review would have revealed
Was keine noch so gründliche Code-Durchsicht gezeigt hätte
L'euro sortait en « Ç »
The euro printed as "Ç"
Das Euro-Zeichen kam als „Ç“ heraus
La numérotation des tables de codes n'est pas la même chez tous les constructeurs. Chez Epson, la table occidentale porte le numéro 16, et c'est ce que le programme envoyait. La réponse était dans le pilote officiel de Toshiba : sur ce modèle, c'est le numéro 9.
Code page numbering is not the same across manufacturers. At Epson the Western table is number 16, and that is what the program was sending. The answer was in Toshiba's official driver: on this model, it is number 9.
Die Nummerierung der Codetabellen ist nicht bei allen Herstellern dieselbe. Bei Epson trägt die westliche Tabelle die Nummer 16, und genau die schickte das Programm. Die Antwort stand in Toshibas eigenem Treiber: bei diesem Modell ist es die Nummer 9.
1B 74 10 → 1B 74 09
La coupe emportait la dernière ligne
The cut carried off the last line
Der Schnitt nahm die letzte Zeile mit
La lame se trouve 140 points après la tête, et une ligne fait 27 points. Une avance de quatre lignes n'en fait que 108 : la dernière ligne imprimée n'avait pas atteint la lame et repartait avec le ticket suivant.
The blade sits 140 dots past the head, and a line is 27 dots. A four-line feed is only 108: the last printed line had not reached the blade and left with the next receipt.
Die Klinge sitzt 140 Punkte hinter dem Druckkopf, und eine Zeile misst 27 Punkte. Ein Vorschub von vier Zeilen ergibt nur 108: Die zuletzt gedruckte Zeile hatte die Klinge nicht erreicht und ging mit dem nächsten Bon weg.
L'avance est désormais complétée en points.
The feed is now topped up in dots.
Der Vorschub wird jetzt in Punkten aufgefüllt.
La garantie
The guarantee
Die Zusicherung
Il n'écrit jamais dans l'imprimante
It never writes into the printer
Es schreibt nie in den Drucker
Une imprimante de tickets garde ses réglages, et peut garder des logos, en mémoire non volatile. Les commandes qui y écrivent existent — mais leur correspondance exacte n'est pas publiée pour ce modèle, et une erreur dans cette zone est définitive. Aucune de celles-ci n'est envoyée, nulle part :
A receipt printer keeps its settings, and can keep logos, in non-volatile memory. The commands that write there exist — but their exact mapping is not published for this model, and a mistake in that area is permanent. None of these is sent, anywhere:
Ein Bondrucker hält seine Einstellungen — und kann Logos halten — in nichtflüchtigem Speicher. Die Befehle, die dorthin schreiben, gibt es; ihre genaue Zuordnung ist für dieses Modell aber nicht veröffentlicht, und ein Fehler in diesem Bereich ist endgültig. Keiner von ihnen wird gesendet, nirgends:
| Commande | Ce qu'elle ferait | Command | Befehl | What it would do | Was er täte |
|---|---|---|---|---|---|
| 1F 36 | Modifier un réglage en mémoire non volatile | Change a setting in non-volatile memory | Eine Einstellung im nichtflüchtigen Speicher ändern | ||
| 1F 35 31 | Effacer un secteur de mémoire flash | Erase a flash memory sector | Einen Sektor des Flash-Speichers löschen | ||
| 1F 34 05 00 | Réallouer la mémoire flash | Reallocate flash memory | Den Flash-Speicher neu aufteilen | ||
| 1F 30 | Définir un logo en mémoire | Define a logo in memory | Ein Logo im Speicher festlegen | ||
| 1F 28 4C | Télécharger en mémoire non volatile | Download into non-volatile memory | In den nichtflüchtigen Speicher laden | ||
| 1C 71 | Définir un logo non volatile | Define a non-volatile logo | Ein nichtflüchtiges Logo festlegen | ||
| 1D 28 4C | Enregistrer un graphique en mémoire | Store a graphic in memory | Eine Grafik im Speicher ablegen |
Ce n'est pas une intention affichée. 326 contrôles automatiques relisent les octets réellement produits par chaque fonction — tickets, pages de test, images, logo — et échouent si un seul de ces motifs y apparaît. C'est aussi pourquoi le logo vit dans la mémoire du programme : il repart à la fermeture, mais rien ne peut être abîmé.
This is not a stated intention. 326 automated checks re-read the bytes each function actually produces — receipts, test pages, images, logo — and fail if a single one of those patterns appears. It is also why the logo lives in the program's memory: it is gone when the program closes, but nothing can be bricked.
Das ist keine bloße Absichtserklärung. 326 automatische Prüfungen lesen die Bytes zurück, die jede Funktion tatsächlich erzeugt — Bons, Testseiten, Bilder, Logo — und schlagen fehl, sobald auch nur eines dieser Muster darin auftaucht. Auch deshalb lebt das Logo im Speicher des Programms: Es ist beim Schließen weg, aber nichts kann unbrauchbar werden.
Le programme
The program
Das Programm
Quatre portes d'entrée, au choix
Four ways in, take your pick
Vier Türen zur Auswahl
Tout est sur GitLab, librement accessible et sans compte. Les deux exécutables sont exactement ceux dont les empreintes sont publiées plus bas sur cette page. Le code, lui, se lit avant de s'exécuter.
Everything is on GitLab, freely accessible, no account needed. The two executables are exactly the ones whose fingerprints are published further down this page. The source can be read before it is run.
Alles liegt auf GitLab, frei zugänglich und ohne Konto. Die beiden ausführbaren Dateien sind genau die, deren Prüfsummen weiter unten auf dieser Seite stehen. Den Quelltext kann man lesen, bevor man ihn ausführt.
L'installateur propose d'installer pour tous les utilisateurs ou pour vous seul : prenez seulement pour vous. Le programme n'a aucun besoin des droits administrateur, et le dit lui-même à cette étape.
The installer offers to install for all users or for you alone: choose for yourself only. The program has no use for administrator rights, and says so itself at that step.
Das Installationsprogramm bietet an, für alle Benutzer oder nur für Sie zu installieren: wählen Sie nur für sich. Das Programm braucht keine Administratorrechte und sagt das an dieser Stelle selbst.
Conservé par Software Heritage
Preserved by Software Heritage
Von Software Heritage bewahrt
Le dépôt est archivé par Software Heritage, l'archive universelle du logiciel portée par l'Inria avec l'UNESCO. Chaque fichier y reçoit un identifiant calculé à partir de son contenu : il ne désigne pas un serveur mais ces octets-là, et il reste valable même si GitLab venait à disparaître.
The repository is archived by Software Heritage, the universal software archive run by Inria with UNESCO. Every file there gets an identifier computed from its content: it designates not a server but those bytes, and it stays valid even if GitLab were to disappear.
Das Repository ist bei Software Heritage archiviert, dem universellen Software-Archiv von Inria mit der UNESCO. Jede Datei erhält dort eine Kennung, die aus ihrem Inhalt berechnet wird: Sie bezeichnet keinen Server, sondern genau diese Bytes, und bleibt gültig, selbst wenn GitLab verschwände.
Ces trois identifiants ont été recalculés sur les fichiers publiés : ils correspondent. C'est une seconde vérification, indépendante des empreintes SHA-256 données plus bas.
These three identifiers were recomputed on the published files: they match. It is a second check, independent of the SHA-256 fingerprints given further down.
Diese drei Kennungen wurden an den veröffentlichten Dateien nachgerechnet: Sie stimmen. Das ist eine zweite Prüfung, unabhängig von den weiter unten genannten SHA-256-Prüfsummen.
Si votre antivirus s'inquiète
If your antivirus objects
Wenn Ihr Virenscanner Einspruch erhebt
Une fausse alerte est possible, et voici pourquoi
A false alarm is possible, and here is why
Ein Fehlalarm ist möglich, und hier ist der Grund
Windows peut afficher « Windows a protégé votre ordinateur », ou un antivirus mettre le fichier en quarantaine sous un nom générique du genre Trojan:Win32/Wacatac. Cela n'a rien d'étonnant, et cela ne dit rien du contenu du programme. Trois raisons, toutes vérifiables.
Windows may show "Windows protected your PC", or an antivirus may quarantine the file under a generic name like Trojan:Win32/Wacatac. None of this is surprising, and none of it says anything about what the program contains. Three reasons, all of them checkable.
Windows zeigt vielleicht „Der Computer wurde durch Windows geschützt“, oder ein Virenscanner schiebt die Datei unter einem allgemeinen Namen wie Trojan:Win32/Wacatac in Quarantäne. Nichts davon ist überraschend, und nichts davon sagt etwas über den Inhalt des Programms. Drei Gründe, alle nachprüfbar.
Le fichier n'est pas signé
The file is not signed
Die Datei ist nicht signiert
Une signature de code s'achète auprès d'une autorité de certification, plusieurs centaines d'euros par an. Un programme donné au domaine public par une personne seule n'en a pas. Windows affiche donc « Éditeur inconnu », ce qui veut dire « je ne sais pas qui a fait ça », et non « ceci est dangereux ».
A code signature is bought from a certification authority for several hundred euros a year. A program given to the public domain by one person does not have one. Windows therefore says "Unknown publisher", which means "I don't know who made this", not "this is dangerous".
Eine Codesignatur kauft man bei einer Zertifizierungsstelle, für mehrere hundert Euro im Jahr. Ein Programm, das eine einzelne Person gemeinfrei macht, hat keine. Windows meldet daher „Unbekannter Herausgeber“, was heißt „ich weiß nicht, wer das gemacht hat“, und nicht „das ist gefährlich“.
Il n'a aucune réputation
It has no reputation
Es hat keinerlei Ruf
SmartScreen et la plupart des antivirus jugent aussi sur la réputation : un fichier vu par peu de monde, mis en ligne récemment, est suspect par construction. Tout programme neuf commence à zéro. C'est la raison d'être des dates ci-dessous.
SmartScreen and most antivirus engines also judge on reputation: a file seen by few people, published recently, is suspect by construction. Every new program starts at zero. That is what the dates below are for.
SmartScreen und die meisten Virenscanner urteilen auch nach dem Ruf: Eine Datei, die wenige Leute gesehen haben und die erst seit Kurzem online ist, ist schon von der Anlage her verdächtig. Jedes neue Programm fängt bei null an. Dafür stehen die Zeitpunkte weiter unten.
L'empaquetage ressemble à celui des logiciels malveillants
The packaging looks like malware's
Die Verpackung sieht aus wie die von Schadsoftware
Un programme Python transformé en fichier unique par PyInstaller se décompresse dans le dossier temporaire puis s'exécute depuis là. C'est exactement le comportement que surveillent les détections heuristiques. La version portable est donc compilée avec Nuitka, en vrai code machine, ce qui supprime cette signature — mais ne rend pas le fichier signé pour autant.
A Python program turned into a single file by PyInstaller unpacks into the temporary folder and runs from there. That is precisely the behaviour heuristic detection watches for. The portable version is therefore compiled with Nuitka, into real machine code, which removes that signature — but does not make the file signed.
Ein Python-Programm, das PyInstaller zu einer einzigen Datei macht, entpackt sich in den temporären Ordner und läuft von dort. Genau dieses Verhalten beobachten heuristische Erkennungen. Die portable Fassung wird deshalb mit Nuitka in echten Maschinencode übersetzt, was diese Signatur beseitigt — die Datei aber nicht signiert macht.
Mise en ligne
Published
Veröffentlichung
Les heures sont données pour que chacun puisse situer ce qu'il a téléchargé. Un fichier qui se présente comme OpenThermaCore et qui serait apparu ailleurs avant ces dates ne vient pas d'ici.
The times are given so that anyone can place what they downloaded. A file presenting itself as OpenThermaCore that appeared elsewhere before these dates did not come from here.
Die Uhrzeiten stehen hier, damit jeder einordnen kann, was er heruntergeladen hat. Eine Datei, die sich als OpenThermaCore ausgibt und vor diesen Zeitpunkten anderswo aufgetaucht ist, stammt nicht von hier.
| Ce qui a été publié | Quand | What was published | Was veröffentlicht wurde | When | Wann |
|---|---|---|---|---|---|
| Code source Python | Python source code | Python-Quelltext | vendredi 18 septembre 2026, 12 h 00 | Friday 18 September 2026, 12:00 | Freitag, 18. September 2026, 12:00 Uhr |
| Portable .exe et installateur | Portable .exe and installer | Portable .exe und Installationsprogramm | vendredi 18 septembre 2026, 16 h 30 | Friday 18 September 2026, 16:30 | Freitag, 18. September 2026, 16:30 Uhr |
Les exécutables sont sortis quatre heures et demie après le code, et c'est l'ordre normal : ils sont ce code, empaqueté. Le programme lui-même n'a pas changé entre les deux.
The executables came out four and a half hours after the source, and that is the normal order: they are that source, packaged. The program itself did not change in between.
Die ausführbaren Dateien kamen viereinhalb Stunden nach dem Quelltext heraus, und das ist die normale Reihenfolge: Sie sind dieser Quelltext, verpackt. Das Programm selbst hat sich dazwischen nicht geändert.
Ce qui se vérifie vraiment
What can actually be checked
Was sich wirklich prüfen lässt
-
Le code, en entierThe source, all of itDer Quelltext, vollständigRien n'est compilé à l'avance ni caché : le programme est livré en Python, lisible, et c'est la seule chose qu'il faille croire. L'exécutable n'en est qu'un emballage.Nothing is precompiled or hidden: the program ships as readable Python, and that is the only thing anyone has to take on trust. The executable is merely a wrapper around it.Nichts ist vorkompiliert oder versteckt: Das Programm kommt als lesbares Python, und das ist das Einzige, was man glauben muss. Die ausführbare Datei ist nur eine Verpackung darum.
-
Fabriquez-le vous-mêmeBuild it yourselfBauen Sie es selbstLe fichier
creer_exe.batfourni reconstruit l'exécutable sur votre machine, à partir du code que vous venez de lire. Vous n'avez alors plus à faire confiance à un fichier téléchargé.The suppliedcreer_exe.batrebuilds the executable on your own machine, from the source you have just read. You then have no downloaded file to trust at all.Die mitgelieferte Dateicreer_exe.batbaut die ausführbare Datei auf Ihrem eigenen Rechner, aus dem Quelltext, den Sie gerade gelesen haben. Dann gibt es keine heruntergeladene Datei mehr, der Sie trauen müssten. -
Sans exécutable du toutNo executable at allGanz ohne ausführbare Datei
pip install pywin32puispython openthermacore.py. Le programme fonctionne à l'identique, et la question de l'antivirus ne se pose plus.pip install pywin32thenpython openthermacore.py. The program behaves identically, and the antivirus question disappears.pip install pywin32, dannpython openthermacore.py. Das Programm verhält sich genauso, und die Frage nach dem Virenscanner stellt sich nicht mehr. -
Les empreintes des fichiersThe file fingerprintsDie Prüfsummen der DateienUne empreinte est un nombre de 64 caractères calculé à partir du fichier entier : qu'un seul octet change, et elle change entièrement. Celles de la version 1.0 sont publiées ici même, sur cette page, et pas seulement chez l'hébergeur.A fingerprint is a 64-character number computed from the whole file: change a single byte and it changes completely. The ones for version 1.0 are published here, on this page, and not only at the host.Eine Prüfsumme ist eine 64-stellige Zahl, die aus der ganzen Datei berechnet wird: Ändert sich ein einziges Byte, ändert sie sich vollständig. Die der Version 1.0 stehen hier auf dieser Seite — nicht nur beim Anbieter.
Les empreintes, en clair
The fingerprints, in plain sight
Die Prüfsummen, offen genannt
Voici celles des trois fichiers publiés. Sous Windows, ouvrez une invite de commandes dans le dossier du fichier téléchargé et tapez certutil -hashfile OpenThermaCore-portable.exe SHA256 : si les 64 caractères ne correspondent pas, le fichier n'est pas celui publié ici.
Here are the three published files. On Windows, open a command prompt in the folder holding the downloaded file and type certutil -hashfile OpenThermaCore-portable.exe SHA256: if the 64 characters do not match, the file is not the one published here.
Hier die drei veröffentlichten Dateien. Unter Windows öffnen Sie eine Eingabeaufforderung im Ordner der heruntergeladenen Datei und geben certutil -hashfile OpenThermaCore-portable.exe SHA256 ein: Stimmen die 64 Zeichen nicht überein, ist es nicht die hier veröffentlichte Datei.
ff96a473a30f7d4236d575beb03043addfa1d3b343e688ed974a1bf195706911 OpenThermaCore-portable.exe 59236bbb0e5b9f8e5dcea487e93c1dbf718a6c54d19194f94c4bc49c5e79423e OpenThermaCore_Setup.exe c46fdf8d56ccda5fec98c71decfb635bf64f63b5bdb1f55be32785e323a25ed4 OpenThermaCore_1.0_complet.zip
Si le fichier a été mis en quarantaine, vous pouvez le restaurer et ajouter une exception pour son dossier — mais seulement après avoir vérifié qu'il vient bien d'ici. Sinon, lancez le programme directement avec Python : c'est la voie qui ne demande de confiance à personne.
If the file has been quarantined, you can restore it and add an exclusion for its folder — but only once you have confirmed it came from here. Otherwise run the program directly with Python: that is the route that asks nobody to be trusted.
Wurde die Datei in Quarantäne verschoben, können Sie sie wiederherstellen und eine Ausnahme für ihren Ordner eintragen — aber erst, wenn Sie geprüft haben, dass sie von hier stammt. Sonst starten Sie das Programm direkt mit Python: Das ist der Weg, der von niemandem Vertrauen verlangt.
Il faut le dire clairement : rien de tout cela ne supprime les fausses alertes. Seule une signature de code y parvient vraiment, et elle coûte chaque année plus cher que l'imprimante d'occasion qui a motivé ce programme. Le choix a été fait de publier quand même, en expliquant.
It should be said plainly: none of this removes false alarms. Only a code signature really does, and it costs more every year than the second-hand printer that prompted this program. The choice was to publish anyway, and explain.
Es sei klar gesagt: Nichts davon beseitigt Fehlalarme. Nur eine Codesignatur tut das wirklich, und sie kostet jedes Jahr mehr als der gebrauchte Drucker, der zu diesem Programm geführt hat. Die Entscheidung war, trotzdem zu veröffentlichen — und es zu erklären.
L'interface
The interface
Die Oberfläche
Quatre onglets, rien de caché
Four tabs, nothing hidden
Vier Registerkarten, nichts versteckt
Sur le papier
On paper
Auf dem Papier
Ce que la machine a vraiment sorti
What the machine actually produced
Was das Gerät wirklich ausgegeben hat
Rien de ce qui suit n'est une simulation : ce sont des tickets sortis d'une TRST-A10, posés sur un scanner tels quels. Les marques pâles en filigrane sont les mentions imprimées au dos du rouleau, qui transparaissent — le papier, pas l'imprimante.
None of what follows is a simulation: these are receipts that came out of a TRST-A10 and went straight onto a scanner. The faint marks showing through are the notices printed on the back of the roll — the paper, not the printer.
Nichts davon ist eine Simulation: Das sind Bons, die aus einem TRST-A10 kamen und unverändert auf den Scanner gelegt wurden. Die blassen Zeichen im Hintergrund sind die Aufdrucke auf der Rückseite der Rolle, die durchscheinen — das Papier, nicht der Drucker.
Une photographie, point par point
A photograph, dot by dot
Eine Fotografie, Punkt für Punkt
Une tête thermique ne connaît que le noir et le blanc : pas de gris, pas de demi-teinte. Le programme répartit donc l'erreur de chaque point sur ses voisins, et c'est la densité des points qui simule les nuances. À trente centimètres, l'œil recompose l'image.
A thermal head knows only black and white: no grey, no half-tone. So the program spreads each dot's error over its neighbours, and it is the density of dots that stands in for shading. At thirty centimetres, the eye puts the picture back together.
Ein Thermokopf kennt nur Schwarz und Weiß: kein Grau, keine Halbtöne. Das Programm verteilt daher den Fehler jedes Punktes auf seine Nachbarn, und die Dichte der Punkte vertritt die Abstufungen. Auf dreißig Zentimeter setzt das Auge das Bild wieder zusammen.
Les aplats, au seuil net
Flat areas, hard threshold
Flächen, harte Schwelle
Pour un logo, la trame est l'ennemi : un aplat doit rester un aplat. Le programme bascule alors en seuil net — chaque point de l'image devient noir ou blanc selon sa clarté, sans aucune diffusion. Les contours restent francs, et le noir est plein.
For a logo, dithering is the enemy: a flat area must stay flat. The program then switches to a hard threshold — every dot of the image becomes black or white according to its lightness, with no diffusion at all. Edges stay crisp and the black stays solid.
Bei einem Logo ist das Raster der Feind: Eine Fläche muss Fläche bleiben. Das Programm schaltet dann auf harte Schwelle um — jeder Punkt des Bildes wird je nach Helligkeit schwarz oder weiß, ganz ohne Diffusion. Die Kanten bleiben sauber, das Schwarz bleibt voll.
La documentation
The documentation
Die Dokumentation
Un manuel de 25 pages, en trois langues
A 25-page manual, in three languages
Ein Handbuch von 25 Seiten, in drei Sprachen
Installation, chaque onglet en détail, les réglages internes de l'imprimante et comment les lire, un tableau de dépannage symptôme par symptôme, et une annexe technique avec les commandes employées.
Installation, every tab in detail, the printer's internal settings and how to read them, a symptom-by-symptom troubleshooting table, and a technical appendix listing the commands used.
Installation, jede Registerkarte im Einzelnen, die internen Einstellungen des Druckers und wie man sie liest, eine Fehlertabelle Symptom für Symptom, und ein technischer Anhang mit den verwendeten Befehlen.
Pourquoi ce nom
Why this name
Warum dieser Name
OpenThermaCore, en trois morceaux
OpenThermaCore, in three pieces
OpenThermaCore, in drei Teilen
Le cœur ouvert de l'impression thermique. Le nom dit ce que fait le programme, et rien de plus — ni promesse, ni marque, ni jeu de mots.
The open core of thermal printing. The name says what the program does, and nothing more — no promise, no brand, no pun.
Der offene Kern des Thermodrucks. Der Name sagt, was das Programm tut, und nichts weiter — kein Versprechen, keine Marke, kein Wortspiel.
Open
Le code se lit, se copie, se modifie. Domaine public sous CC0 1.0 : aucun droit revendiqué, aucune permission à demander, aucune contrepartie attendue.
The source can be read, copied, modified. Public domain under CC0 1.0: no rights reserved, no permission to ask for, nothing expected in return.
Der Quelltext lässt sich lesen, kopieren, ändern. Gemeinfrei unter CC0 1.0: keine Rechte beansprucht, keine Erlaubnis einzuholen, keine Gegenleistung erwartet.
Therma
Ni encre ni cartouche : une tête qui chauffe, un papier qui noircit. C'est la machine dont il est question — une Toshiba TEC TRST, et toute imprimante qui parle le même langage.
No ink, no cartridge: a head that heats, a paper that blackens. That is the machine in question — a Toshiba TEC TRST, and any printer that speaks the same language.
Keine Tinte, keine Patrone: ein Kopf, der erhitzt, ein Papier, das schwarz wird. Das ist das Gerät, um das es geht — ein Toshiba TEC TRST, und jeder Drucker, der dieselbe Sprache spricht.
Core
Plutôt que de refaire toute la pile logicielle du constructeur, le programme va à l'essentiel : envoyer les données ESC/POS. Il ne touche ni aux réglages internes ni à la mémoire non volatile — le cerveau de la machine reste exactement tel qu'il est.
Rather than rebuilding the manufacturer's whole software stack, the program goes straight to the essential act: sending the ESC/POS data. It touches neither the internal settings nor the non-volatile memory — the machine's brain is left exactly as it is.
Statt den ganzen Software-Unterbau des Herstellers nachzubauen, geht das Programm direkt zum Wesentlichen: die ESC/POS-Daten senden. Es rührt weder die internen Einstellungen noch den nichtflüchtigen Speicher an — das Gehirn des Geräts bleibt genau so, wie es ist.
Open + Therma + Core : aller droit à l'essentiel, et ne toucher à rien d'autre.
Open + Therma + Core: go straight to what matters, and touch nothing else.
Open + Therma + Core: geradewegs zum Wesentlichen — und sonst nichts anrühren.
Qui l'a écrit
Who wrote it
Wer es geschrieben hat
Une IA et quelqu'un qui avait du papier
An AI, and someone who had paper
Eine KI und jemand, der Papier hatte
L'intégralité du code a été écrite par l'IA Claude, d'Anthropic.
The entire source code was written by the AI Claude, from Anthropic.
Der gesamte Quelltext wurde von der KI Claude von Anthropic geschrieben.
Co-créateur : Evolidemment. C'est lui qui a trouvé la machine — une Toshiba TEC TRST d'occasion — et l'a mise entre les mains d'une IA. Il a fourni les documents : tickets de diagnostic, manuels du constructeur, pilotes et outils d'origine. Il a donné les directives, essayé chaque version sur du vrai papier, et rapporté ce qui n'allait pas.
Co-creator: Evolidemment. He found the machine — a second-hand Toshiba TEC TRST — and put it in the hands of an AI. He supplied the documents: diagnostic tickets, manufacturer manuals, original drivers and tools. He gave the directions, tried every version on real paper, and reported what went wrong.
Mitschöpfer: Evolidemment. Er hat das Gerät gefunden — einen gebrauchten Toshiba TEC TRST — und es einer KI in die Hand gegeben. Er lieferte die Unterlagen: Diagnosebons, Handbücher des Herstellers, Originaltreiber und -werkzeuge. Er gab die Anweisungen, probierte jede Fassung auf echtem Papier aus und meldete, was nicht stimmte.
L'euro en « Ç », la coupe qui emportait une ligne, la fenêtre qui se figeait sur un périphérique occupé : les trois se sont vus sur le papier.
The euro as "Ç", the cut that carried off a line, the window freezing on a busy device: all three showed themselves on paper.
Das Euro-Zeichen als „Ç“, der Schnitt, der eine Zeile mitnahm, das Fenster, das an einem belegten Gerät einfror: Alle drei zeigten sich auf dem Papier.
Une imprimante ne se sauve pas depuis un écran.
A printer cannot be rescued from behind a screen.
Einen Drucker rettet man nicht vom Bildschirm aus.