zweisprachig English Translation Stichworte: USB, LPT, Parallel, Parallelport, Druckerport, Konverter, Adapter; Programmer, ATmega, ISP, FPGA, CPLD, JTAG; Portzugriff, IEEE 1284, IEEE1284

USB-Logo USB-zu-Parallel-Umsetzer „USB2LPT“ 25pol. SubD-Buchse

Eine Bauanleitung, Fertiggerät verfügbar

Im Gegensatz zu allen anderen USB→Parallel-Adaptern ermöglicht dieses hier den Anschluss beliebiger Hardware (nicht nur Drucker), ohne Software anzupassen! Ein Parallelport wird durch den zugehörigen Treiber virtualisiert. Die Schaltung passt in ein gewöhnliches Stecker-Gehäuse.

Ein umgekehrtes Gerät (LPTzUSB), welches den Anschluss eines USB-Druckers an ein Parallelport ermöglicht, ist funktionstüchtig und nachbaubar.

Dieses USB2LPT kann nicht (sinnvoll) dazu eingesetzt werden, parallele Druckdaten eines anderen Rechners aufzusammeln. Dazu gibt es LptCap, basierend auf FT245.

Für Anfragen nach Fertiggeräten bitte mailen.

Einsatzgebiete

Typische Geräte sind: Unzweckmäßig ist der Einsatz für: Bestimmte Gerätekategorien sind von der Emulation leider ausgeschlossen: Die Software muss selbstverständlich unter Windows lauffähig sein! Bei DOS-Programmen genügt Ausführbarkeit in einer DOS-Box. Auch 16-bit-Windows-Programme werden unterstützt. Als Prozessor wird ein Pentium oder höher vorausgesetzt. x64-Betriebssysteme sind vorläufig zu neu, ein geeigneter Treiber ist in Arbeit.

Einschränkungen, Performance

Das Abfangen der Portzugriffe erfolgt im Windows-Treiber im privilegierten Modus. Die dabei »verbrauchte« Zeit ist jedoch gering gegenüber der, dass bei jedem IN-Befehl (Port[]-Lesen, inportb()) ein USB-Rahmen von 125 µs Dauer (Low-Speed, Full-Speed: sogar 1 ms) abgewartet werden muss. Das kann im Extremfall zu 100facher Zeitdehnung(!) führen.
Bleibt zu hoffen, dass es bei Ihrer Software nicht so ist. Die Wartezeit kommt anderen Prozessen zu Gute. Einziger Ausweg ist die Änderung der Software (das sollte ja vermieden werden).
OUT-Befehle (Port[]-Schreiben, outportb()) führen zu keiner nennenswerten Verlangsamung.

Es ist nicht sinnvoll, diesen Umsetzer nur zur Ansteuerung eines Druckers zu verwenden, dafür sind die sonstigen USB-zu-Parallel-Konverter geeigneter, die es überall zu kaufen gibt (bspw. bei Einkauf Reichelt: AK USB 102 für 5,95 €) (Alle Preisangaben ohne Gewähr!). Eine Drucker-kompatible USB-Schnittstelle ist jedoch in der Firmware als »Beigabe« implementiert, siehe Multifunktionsgerät. So gibt es bei Verwendung mit Druckern keine Geschwindigkeits-Einbußen.

Programme, die ihrerseits Kernel-Treiber zum Zugriff aufs Parallelport mitbringen, bereiten in der Regel keine Probleme wegen der »Härte« eines Debugregister-Traps.

Es kann Interferenzen mit Debuggern geben. Für Programm-Entwicker ist dieser Umsetzer ohnehin uninteressant.

Hinweis: Genau betrachtet ist der Aufwand für diesen Konverter oftmals überflüssig, denn für PCs ohne Parallelport gibt es PCI-Karten (11 €) oder PCIexpress-Karten (20 €), und für Laptops ohne Parallelport gibt es PCMCIA-Karten dafür. Allerdings sind diese ungleich teurer und im Fall von PCI auch weniger gut handhabbar (PC muss ausgeschaltet und geöffnet werden).
Bei ExpressCard-Adaptern muss man aufpassen und solche kaufen, die intern per PCIexpress und nicht per USB funktionieren.

Funktioniert angeblich:

Funktioniert definitiv nicht: Somit braucht man USB2LPT eigentlich nur noch für Netbooks und Subnotebooks ohne ExpressCard-Anschluss.

Die Parallelport-Anschlussmöglichkeiten zusammengefasst:
Parallelport viaOriginal-Adresse?schnell?Max. Portssteckbar im Betrieb?Am PC?Am Notebook?Kosten ca. / €Bemerkung
Onboardjaja (1-5 µs)1-alte Boardsalte Geräte0Beste Lösung
ISA-Kartejaja (1-5 µs)3neinalte Boardsnein0 (Trödelmarkt) 
PCI-Kartenein (verschoben)ja (1-2 µs)≥ 3neinjanein11 
PCIexpress-Kartenein (verschoben)ja (1-2 µs)≥ 3neinjanein20 
PCMCIA-Kartejaja (1-10 µs)3jamit Adapteralte Geräte50+ (Trödelmarkt) 
ExpressCard via PCIenein (verschoben)ja (1-2 µs)≥ 3jamit Adapterja40 
h#s USB2LPTja (emuliert)nein (≥ 125 µs)255jajaja30open-source
ExpressCard via USBkeine AdresseOUT: ja (≤ 10 µs)
IN: nein (1000 µs)
typ. 2janeinja30Für Drucker
USB→Drucker-Konverterkeine Adresse≈ 100jajaja6
eSATA2LPTja (emuliert)ja (5 µs)typ. 2neinmit Adaptervia eSATA30in Entwicklung

Aktuelle Versionen

Es gibt auch ältere Ausgaben, die unter Umständen leichter nachbaubar sind, sowie ein Nachbauvorschlag mit Durchsteck-Bauteilen. Sie werden ebenfalls softwaretechnisch voll unterstützt.

Sechste Revision
Low-Speed
(Aufbau-Anleitung)
USB2LPT Ausgabe 1.6
  • 2008..2012, Stückzahl: 750
  • Nur vier SMD-Bauteile und vier Durchsteck-Bauteile
  • Mit Atmel ATmega8-16TQ. Basierend auf V-USB
  • Ohne Quarz – Quarz ist optional. Echtes 5-V-Design. 3,3-V-Betrieb ist möglich durch Änderung der Bestückung
  • Bootloader für Firmware-Update via USB, nicht via SPI (typischerweise am Parallelport)
  • Zwei USB-Interfaces (also ein Multifunktionsgerät) für Direktzugriff und treiberlosen USB-HID-Betrieb
  • Gut geeignet für Relaiskarten, Lampensteuerungen, Text-Displays, langsame Schrittmotoren (bis 100 Schritte/s), langsame Gerätesteuerungen wie SDR1000, I²C-Geräte, Brauereisteuerungen
  • Die Firmware zwischen Dezember 2010 und Februar 2012 läuft nicht unter Windows Vista und Windows 7 (32 und 64 bit), bitte updaten!
Siebente Revision
High-Speed
(Aufbau-Anleitung mit Video)
USB2LPT Ausgabe 1.7
  • 2008..2012, Stückzahl: 850
  • Mit Cypress' CY7C68013A-56LFXC und einer Reihe Fußvolk.
  • Low-Power-, Low-Drop-Spannungsregler zur Erfüllung der USB-Spezifikation zur Standby-Stromaufnahme (≤ 500 µA, wirklich wichtig nur für schlafende Laptops)
  • 3,3-V-Design mit (abschaltbaren) Pull-Up-Widerständen nach 5 V an jedem Anschluss
  • Bootloader für Firmware-Update via USB enthalten
  • Drei USB-Interfaces (also ein Multifunktionsgerät) für Direktzugriff, Drucker-Emulation und treiberlosen USB-HID-Betrieb
  • Drei zusätzlich herausgeführte Anschlüsse für die Nutzung von 20 statt 17 Ein/Ausgabeleitungen, Datenrichtung für jedes Portpin einzeln auswählbar
  • Firmware-Modifikationsmöglichkeit im RAM direkt aus Anwendersoftware zur Lösung problemspezifischer Aufgaben mit GPIF und echten 480 MBit/s
  • Platine als Multinutzen mit 1.6 mit offenen Nachbestelldaten
  • Geeignet für Programmiergeräte, FPGA-Bitstream-Download, grafische LC-Displays, mittelschnelle Schrittmotoren (bis 1000 Schritte/s)

Hinweis: Schüler/Studenten können das Gerät zum Materialpreis (Rev7: 20€, Leiterplatte Rev6: 1€) von mir anfordern. Bitte wenden Sie sich dazu an die unten stehende Email-Adresse.

Software

Verwendung

Schauen Sie unbedingt beim Geräte-Manager nach! Unter „Anschlüsse“ befindet sich das Gerät. Bei Auswahl des Eigenschafts-Dialogs gibt es zwei zusätzliche Reiter, Emulation und Statistik. Unter Emulation wird das zu emulierende Port ausgewählt sowie einige weitere Eigenschaften (volle kontextsensitive Hilfe vorhanden). Bei Statistik gibt es einige Zugriffszähler, die „arbeiten“ sollten, wenn Ihre Software aufs Druckerport zugreift.

Es gibt auch eine API für Programmierer, die sehr einfach gehalten ist. Öffnen Sie mit CreateFile das Gerät "\\.\LPT1" (oder "LPT2" wenn es das zweite Gerät ist usw.), und schicken/holen die zu transferierenden Bytes (siehe USB2LPT.A51, Marke "upv") über einen einzigen Aufruf von DeviceIoControl.

Über den IOCTL-Kode IOCTL_VLPT_AnchorDownload ist ein Umkonfigurieren des Controllers jederzeit möglich, um ihn an eine spezielle Aufgabe anzupassen. (Der vorhandene Quelltext USB2LPT.A51 sollte dazu verwendet werden.) Damit stellt das Gerät auch eine Art Hosentaschen-Entwicklungskit für EZUSB AN2131/CY7C68013 dar.

In nebenstehender Grafik können Sie die Tabs anklicken, um sich die angebotenen Eigenschaftsseiten ansehen zu können.


Häufig gestellte Fragen

Diese befinden sich auf einer gesonderten Seite

Liste der Nachbauten


Briefkasten Henrik HaftmannHTML-Mail, TOFU-Mail, oder Email mit mehr als 10 Zeilen Footer wird nicht akzeptiert!,
extern Chemnitz, den 2. April 2012