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.

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 100-facher 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 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 USB-zu-Parallel-Konverter oftmals überflüssig, denn: Somit braucht man USB2LPT nur für Netbooks und Subnotebooks ohne ExpressCard-Schacht.

Die Parallelport-Anschlussmöglichkeiten zusammengefasst:

Eigenschaft
Parallelport via
Original-Adresse?schnell?Max. Portssteckbar im Betrieb?Am PC?Am Notebook?Kosten ca. / €Bemerkung
Onboardjaja (1-5 µs)1-alte
Boards
alte Geräte0Beste Lösung
ISA-Karteja3neinnein0 (Trödelmarkt)Nur für sehr alte Desktops
PCI-Kartenein (verschoben)ja (1-2 µs)≥ 3janein11Gut und preiswert
PCI-Karte mit Adress-Remap
Originalquelle?
ja!56Bestens für Desktops
PCIexpress-Kartenein (verschoben)20Gut und preiswert
PCMCIA-Kartejaja (1-10 µs)3jamit
Adapter
alte Geräte50+ (Trödelmarkt)Nur für sehr alte Laptops
ExpressCard via PCIenein (verschoben)ja (1-2 µs)≥ 3ja40Lästig dickes Kabel
h#s USB2LPTja (emuliert)nein (≥ 125 µs)255ja30open-source
ExpressCard via USBja (emuliert)
(nur via InpOut32.dll
und Zusatzschaltung)
OUT: ja (≤ 10 µs)
IN: nein (1000 µs)
typ. 2janeinja30
  • Für Drucker
  • Für 8 Ausgabepins und 3 Eingabepins
USB→Drucker-Konverter≈ 99ja6
eSATA2LPTja (emuliert)ja (5 µs)typ. 2neinmit
Adapter
via eSATA30denkbar; Stromversorgung erforderlich

Neuere BitBang-Software von mir ist grundsätzlich so gestaltet, dass sie – ggf. mit verminderter Performance – auch mit einfachen USB-Paralleldrucker-Konvertern (um 5 €) funktioniert. Beispielsweise

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 6
  • 2008..2012, Stückzahl: 350
  • 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.
  • 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 April 2013 läuft nicht unter Windows Vista und Windows 7 / 8 (32 und 64 bit), bitte updaten!
Siebente Revision
High-Speed
(Aufbau-Anleitung mit Video)
USB2LPT 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 (genügt für parallele AVR-Programmierung ohne umständliche Schieberegister)
  • 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)
Billigere Alternative: Entwicklungsboard von eBay. Inbetriebnahmeanleitung (d.h. Konvertierung zu einem USB2LPT 1.7) hier.

Software

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

Verwendung

Schauen Sie unbedingt beim Geräte-Manager nach! Unter „Anschlüsse“ befindet sich das Gerät. Bei Auswahl des Eigenschafts-Dialogs gibt es drei zusätzliche Tabs, Emulation, Statistik und Monitor. 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.

Häufig gestellte Fragen

Diese befinden sich auf einer gesonderten Seite

Kein Weiterso

Das USB2LPT-Projekt ist 2012 stecken geblieben:

Nachbauten

Feedback

HTML-Mail, TOFU-Mail, oder E-Mail mit mehr als 10 Zeilen Footer wird nicht akzeptiert!

Bei Problemen mit dem Gerät oder Treiber geben Sie bitte an: