Projekt:Labeldrucker: Unterschied zwischen den Versionen

Aus Schaffenburg
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
(Fix Infobox)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
|image          = labelprinter_image.jpg
|image          = labelprinter_image.jpg
|version        = 1.0
|version        = 1.0
}}


Vorgeschichte:
=== Vorgeschichte: ===
 
Die heilige elektronische Bucht, ein Ort der Wunder und Geheimnisse.
Die heilige elektronische Bucht, ein Ort der Wunder und Geheimnisse.
An einem einsamen Tag verfiel unser byte erneut in ihrem Bann.
An einem einsamen Tag verfiel unser byte erneut in ihrem Bann.
Zeile 24: Zeile 24:
Ihn fuer schlechte Witze und auch die Musik missbraucht haben und wie auch du das alles machen kannst.
Ihn fuer schlechte Witze und auch die Musik missbraucht haben und wie auch du das alles machen kannst.


==== Das einfache drucken: ====
=== Das einfache drucken: ===
Der Drucker spricht unter anderem, wie auch andere aus der Honeywell Intermec Reihe, die [https://www.barcodedeus.de/artikeldownload/pdf_en/Inter-C4_Guide.pdf Intermec Fingerprint], diese ist aehnlich der Basic Programmiersprache strukturiert.
Diese kann fuer sehr vieles auch komplexes genutzt werden, es gibt Funktionen um eingaben von dem in den Drucker eingebauten Touchscreen zu lesen, mit Floats und Zeit zu rechnen.
 
Doch das alles haben wir (noch) nicht angeruehrt, zuerst wollten wir Bilder drucken, denn sobald das geht, so dachten wir, kann man die eingebauten Textlayout, die 1- und 2-d-Datacodegeneration einfach ignorieren und alles in familliaereren Umgebungen auf unseren Laptops erstellen, ganz ohne eine properitaere Dokumentenbeschreibungssprache zu lernen.
 
Das Protokoll unterstuetzt das hochladen von Bildern mithilfe des `IMAGE LOAD` Befehls den ich zuerst versucht habe zu implementieren, im nachhinein hat das hochladen wohl funktioniert nur die Befehle `IMAGES` und `IMAGE` haben diese nicht als solche erkannt, war mir aber dann auch zu bloed.


Der Drucker spricht unteranderem, wie auch andere aus der Honeywell Intermec Reihe, die [https://www.barcodedeus.de/artikeldownload/pdf_en/Inter-C4_Guide.pdf Intermec Fingerprint], diese ist aehnlich der Basic Programmiersprache strukturiert.
Also habe ich mich dem `PRBUF` Befehl und dem gleichnamigen [https://sps-support.honeywell.com/s/article/How-can-the-Fingerprint-PRBUF-command-used-to-print-an-image Encoding] gewidmet, dieses habe ich in einigen Stunden [https://pkg.go.dev/github.com/rileys-trash-can/libfp/prbuf implementieren] koennen nur um danach zu realisieren, dass unser Drucker (laut doku unterscheidet sich der support bei manchen Modellen) durch den selben Befehl auch (unter anderem) PNG und GIF (ohne animation :/ ) Datein haette lesen koennen. Darum ist der Encoder auch noch etwas verbuggt.
Diese kann fuer sehr vieles auch komplexes genutzt werden, es gibt funktionen um eingaben von dem in den drucker eingebauten Touchscreen zu lesen, mit Floats und Zeit zu rechnen.


Doch das alles haben wir (noch) nicht angeruehr, zuerst wollten wir Bilder drucken, denn sobal das geht kann man die eingebauten Textlayouting, 1- und 2-d-Codegeneration einfach ignorieren und alles in familliaereren umgebungen auf unseren Laptops erstellen, ganz ohne eine properitaere Dokumentenbeschreibungssprache zu lernen.
Waehrendessen habe ich einen weitere vielversprechenden Befehl entdeckt, die `BEEP` und `SOUND` Befehle, der letztere es ermoeglicht eine Frequenz fuer eine bestimmte Zeit abzuspielen.
Das Protokoll unterstuetzt das hochladen von Bildern mithilfe des `IMAGE LOAD` Befehls den ich zuerst versucht habe zu implementieren, im nachhinein hat es funktioniert nur die Befehle `IMAGES` und `IMAGE` haben diese nicht als solche erkannt.
Danach habe ich mich dem `PRBUF` Befehl und dem zugehoerigen [https://sps-support.honeywell.com/s/article/How-can-the-Fingerprint-PRBUF-command-used-to-print-an-image Encoding] gewittmet, dieses habe ich in einigen Stunden [https://pkg.go.dev/github.com/rileys-trash-can/libfp/prbuf implementieren] koennen nur um danach zu realisieren, dass unser Drucker durch den selben Befehl auch (unteranderem) PNG und GIF dateil haette lesen koennen.


Waehrendessen habe ich einen sehr vielversprechenden Befehl entdeckt, die `BEEP` und `SOUND` Befehle, der letztere es ermoeglicht eine Frequenz fuer eine bestimmte Zeit abzuspielen.
Es folgt: Musik (part 1): um diesen auszunutzen habe ich ein script geschrieben dass midi Dateien abspielen kann.
Musik (part 1): um diesen auszunutzen habe ich ein script geschrieben dass midi Datein abspielen kann.


Danach habe ich beim Durchscrollen [https://www.barcodedeus.de/artikeldownload/pdf_en/Inter-C4_Guide.pdf einem der Dokumente] eine sehr komische zeile gelesen und damit einen noch lustigeren Befehl entdeckt:
Danach habe ich beim Durch scrollen [https://www.barcodedeus.de/artikeldownload/pdf_en/Inter-C4_Guide.pdf einem der Dokumente] eine sehr komische zeile gelesen und damit einen noch lustigeren Befehl entdeckt:<syntaxhighlight>
`RUN "insmod <device><file>" (insert module)`
RUN "insmod <device><file>" (insert module)
insmod, ist das einfach ne shell? - Ja!
</syntaxhighlight>insmod, ist das nicht Linux kernel bzw. einfach shell command? - Ja!<syntaxhighlight>
`RUN "ash"` liefert eine shell - leider nur als normalsterblich und nicht root aber immerhin
RUN "ash"
</syntaxhighlight>liefert eine shell - leider nur als normal-sterblich und nicht root aber immerhin! (insmod als user, richtig gehoert)


Was macht man nun, wenn man auf einem Geraet mit Numpad und LCD auf den eine shell gefunden wird? - Doom? eigendlich ja, aber crosscompilen fuer ein Linux 2.6 ist nicht so einfach wie wir gehofft haben. Naja, ist altes Linux, hmmm, hab grade was ueber das Linux Soundsubsystem geschaut. also....
Was macht man nun, wenn man auf einem Geraet mit Numpad und LCD auf den eine shell gefunden wird? - Doom?
 
Eigentlich ja, aber das cross-compilen fuer ein altes ARMv6 Linux ist leider nicht so einfach wie wir gehofft haben :(.
 
Next up, ist altes Linux, hmm... , Ich hatte grade etwas ueber das Linux Sound-subsystem recherchiert. also....


* gibt es `/dev/dsp` - ja.
* gibt es `/dev/dsp` - ja.
* `cat rickroll.wav > /dev/dsp` - ja, aber zu langsam
* `cat rickroll.wav > /dev/dsp` - ja, aber zu langsam
* reencoding mit verschiedenen samplerates? (`ffmpeg -ac 1 -ar 32000`)
* re-encoding mit verschiedenen samplerates? (`ffmpeg -ac 1 -ar 32000`)
* tut
* tut


der Drucker kann jetzt echtes Audio! Und der eingebaute Lautsprecher (ein kleines 2W Model) ist gar nicht so schlecht, ABER wir haben ja ne Schublade voll welcher aus Laptops... - TLDR: der Drucker hat jetzt zwei ziemlich grosse Laptop Lautsprecher
der Drucker kann jetzt echtes Audio! Und der eingebaute Lautsprecher (ein kleines 2W Model) ist gar nicht so schlecht, ABER wir haben ja ne Schublade voll welcher aus Laptops... - TLDR: der Drucker hat jetzt zwei ziemlich grosse Laptop Lautsprecher


Resultate: <nowiki>https://social.schaffenburg.org/@schaffenburg/111691754197457737</nowiki>
Resultate: [https://social.schaffenburg.org/@schaffenburg/111691754197457737 social.schaffenburg.org/@schaffenburg/111691754197457737]
 
Musik: [https://soundcloud.com/meltedmoon/pripyat Pripyat] von [https://soundcloud.com/meltedmoon Melted Moon]
 
Links zu Zeugs:


> Musik: [https://soundcloud.com/meltedmoon/pripyat Pripyat] von [https://soundcloud.com/meltedmoon Melted Moon]
* resultierendes [https://github.com/rileys-trash-can/libfp GitHub repo]
* [https://www.barcodedeus.de/artikeldownload/pdf_en/Inter-C4_Guide.pdf Intermec Fingerprint® v8.10]
* [https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/ppr/ja/public/products/printers/industrial/px4i/documents/sps-ppr-intermec-direct-protocol-860-programmers-reference-manual-60.pdf Intermec Direct Protocol v8.60]

Aktuelle Version vom 2. Februar 2024, 18:38 Uhr

Crystal Clear action run.png
Labeldrucker

Status: unbekannt

Datei:Labelprinter image.jpg
Beschreibung Software fuer unseren Labeldrucker (ein Honeywell Intermec PM43)
Ansprechpartner Riley
Version 1.0


Vorgeschichte:

Die heilige elektronische Bucht, ein Ort der Wunder und Geheimnisse. An einem einsamen Tag verfiel unser byte erneut in ihrem Bann. Als er eines Abends durch ihre digitalen Hallen wanderte, stiess er auf ein Angebot, das unser Schicksal als kleinen lokalen Hackspaces fuer immer veraendern sollte: Ein Honeywell PM43 zu einem Preis, der beinahe zu schoen schien, um wahr zu sein. Mit zittrigen Haenden wagte er den Kauf, und als das Paket endlich ankam, oeffneten wir es in gemeinsamer Runde, es ergab sich eine Welt voller Moeglichkeiten, die wir in diesem schicksahlstragenden Moment noch nicht realisierten. Was als einfache Transaktion begann, entfaltete sich zu einem Abenteuer, das uns alle tief in die Wirren des Thermotransferdrucks und - ueberraschenderweise - auch die der Musik fuehrte.

Dies ist die Geschichte wie wir unseren Labeldrucker bis zum aeustersten brachten. Ihn fuer schlechte Witze und auch die Musik missbraucht haben und wie auch du das alles machen kannst.

Das einfache drucken:

Der Drucker spricht unter anderem, wie auch andere aus der Honeywell Intermec Reihe, die Intermec Fingerprint, diese ist aehnlich der Basic Programmiersprache strukturiert. Diese kann fuer sehr vieles auch komplexes genutzt werden, es gibt Funktionen um eingaben von dem in den Drucker eingebauten Touchscreen zu lesen, mit Floats und Zeit zu rechnen.

Doch das alles haben wir (noch) nicht angeruehrt, zuerst wollten wir Bilder drucken, denn sobald das geht, so dachten wir, kann man die eingebauten Textlayout, die 1- und 2-d-Datacodegeneration einfach ignorieren und alles in familliaereren Umgebungen auf unseren Laptops erstellen, ganz ohne eine properitaere Dokumentenbeschreibungssprache zu lernen.

Das Protokoll unterstuetzt das hochladen von Bildern mithilfe des `IMAGE LOAD` Befehls den ich zuerst versucht habe zu implementieren, im nachhinein hat das hochladen wohl funktioniert nur die Befehle `IMAGES` und `IMAGE` haben diese nicht als solche erkannt, war mir aber dann auch zu bloed.

Also habe ich mich dem `PRBUF` Befehl und dem gleichnamigen Encoding gewidmet, dieses habe ich in einigen Stunden implementieren koennen nur um danach zu realisieren, dass unser Drucker (laut doku unterscheidet sich der support bei manchen Modellen) durch den selben Befehl auch (unter anderem) PNG und GIF (ohne animation :/ ) Datein haette lesen koennen. Darum ist der Encoder auch noch etwas verbuggt.

Waehrendessen habe ich einen weitere vielversprechenden Befehl entdeckt, die `BEEP` und `SOUND` Befehle, der letztere es ermoeglicht eine Frequenz fuer eine bestimmte Zeit abzuspielen.

Es folgt: Musik (part 1): um diesen auszunutzen habe ich ein script geschrieben dass midi Dateien abspielen kann.

Danach habe ich beim Durch scrollen einem der Dokumente eine sehr komische zeile gelesen und damit einen noch lustigeren Befehl entdeckt:

RUN "insmod <device><file>" (insert module)

insmod, ist das nicht Linux kernel bzw. einfach shell command? - Ja!

RUN "ash"

liefert eine shell - leider nur als normal-sterblich und nicht root aber immerhin! (insmod als user, richtig gehoert)

Was macht man nun, wenn man auf einem Geraet mit Numpad und LCD auf den eine shell gefunden wird? - Doom?

Eigentlich ja, aber das cross-compilen fuer ein altes ARMv6 Linux ist leider nicht so einfach wie wir gehofft haben :(.

Next up, ist altes Linux, hmm... , Ich hatte grade etwas ueber das Linux Sound-subsystem recherchiert. also....

  • gibt es `/dev/dsp` - ja.
  • `cat rickroll.wav > /dev/dsp` - ja, aber zu langsam
  • re-encoding mit verschiedenen samplerates? (`ffmpeg -ac 1 -ar 32000`)
  • tut

der Drucker kann jetzt echtes Audio! Und der eingebaute Lautsprecher (ein kleines 2W Model) ist gar nicht so schlecht, ABER wir haben ja ne Schublade voll welcher aus Laptops... - TLDR: der Drucker hat jetzt zwei ziemlich grosse Laptop Lautsprecher

Resultate: social.schaffenburg.org/@schaffenburg/111691754197457737

Musik: Pripyat von Melted Moon

Links zu Zeugs: