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:
- Programmiergeräte (AVR, JTAG …)
- Datenlogger, Datenerfassung
- „Langsame“ Steuerungen, wie Garten, Modelleisenbahn, Kassen-Öffner, Teleskop-Rotor …
- Synchrone Bus-Anschlüsse, wie I²C, SPI …
- Labor-Automatisierung, einfache Roboter, Antennenrotor
Unzweckmäßig ist der Einsatz für:
- Drucker, dafür gibt es billigere Lösungen
- Drucker in der DOS-Box oder bei widerspenstigen
Windows-Programmen (die LPTx verlangen, bspw. Aposoft):
USB-Drucker gibt man als Netzlaufwerk(!) frei
und mountet sie mittels „net use LPT1: Freigabename“.
Diese Einstellung ist persistent (übersteht Reboots).
Probleme gibt es nur bei x64-Windows-Versionen.
Oder aber man benutzt andere, bessere DOS-Emulatoren, bspw.
DOSbox-MB5.
- Etikettendrucker werden oft von widerspenstigen Programmen
angesteuert, mehr oder weniger direkt.
Direkt eincompilierte Ein-/Ausgabebefehle in
lassen sich mit einem spezialisierten Programm aufschnappen,
welches die Daten dann an einen Windows-Drucker weiterreicht.
Hier hilft eher meine InpOut32.dll.
- Oszilloskope, Kameras sowie sonstige Geräte mit massivem Daten-Input:
Die erreichbare Übertragungsgeschwindigkeit reicht mit simplem Trapping
der Ein-/Ausgabebefehle nicht vorn und hinten, und der Geschwindigkeitsverlust
(bspw. Faktor 100) macht das Gerät schlicht unbenutzbar.
Derartige Geräte benötigen:
- Einen speziellen USB-Adapter — USB2LPT geht hierfür auch, dediziert wird's billiger. Häufig genügt USB Full-Speed.
- Spezielle Firmware. Diese macht die gesamte Kommunikation. Stets erforderlich!
- Spezielle Software-Anpassung an den USB-Adapter. Nur in bestimmten Fällen kann das entfallen:
- Es gibt eine dokumentierte USB-Schnittstelle für die Software.
- Es kann auf eine Standard-USB-Geräteklasse zurückgegriffen werden.
Standard-Software kann benutzt werden.
Die alte Software wird obsolet.
Beispiel: Teleskop-Kamera kann sich als USB-Webcam ausgeben.
Oszilloskop kann sich (in Grenzen) als Mikrofon ausgeben.
- Parallelport-Geräte mit hochpräziser Zeitsteuerung, etwa Schrittmotoren einer CNC-Maschine:
Hierfür gibt es spezielle Lösungen, die (nicht umsonst) teuer sind.
Besser, man benutzt hierfür einen Desktop-PC, kein Notebook. Er darf auch alt sein.
Was auch geht: Siehe vorher gehender Punkt, Oszilloskope und Kameras.
Bestimmte Gerätekategorien sind von der Emulation leider ausgeschlossen:
- Scanner und solche in Multifunktionsgeräten (Treiber ist nicht genügend Windows-konform)
- ZIP-Laufwerke (Treiber ist nicht genügend Windows-konform)
- »Absichtlich« am Debugregister-Trap
vorbeiprogrammiertes,
wie moderne Dongles (= Software-Schutzstecker, etwa ab 1995)
Für diese gibt es für jede gängige Software USB-Varianten und
-Updates. Alte Dongles (Software vor 1995) sollten funktionieren.
-
-
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. Ports | steckbar im Betrieb? | Am PC? | Am Notebook? | Kosten ca. / € | Bemerkung |
Onboard | ja | ja (1-5 µs) | 1 | - | alte Boards | alte Geräte | 0 | Beste Lösung
|
---|
ISA-Karte | ja | 3 | nein | nein | 0 (Trödelmarkt)Nur für sehr alte Desktops
| PCI-Karte | nein (verschoben) | ja (1-2 µs) | ≥ 3 | ja | nein | 11 | Gut und preiswert
|
---|
PCI-Karte mit Adress-Remap Originalquelle? | ja! | 56 | Bestens für Desktops
|
---|
PCIexpress-Karte | nein (verschoben) | 20 | Gut und preiswert
|
---|
PCMCIA-Karte | ja | ja (1-10 µs) | 3 | ja | mit Adapter | alte Geräte | 50+ (Trödelmarkt)Nur für sehr alte Laptops
| ExpressCard via PCIe | nein (verschoben) | ja (1-2 µs) | ≥ 3 | ja | 40 | Lästig dickes Kabel
|
---|
h#s USB2LPT | ja (emuliert) | nein (≥ 125 µs) | 255 | ja | 30 | open-source
|
---|
ExpressCard via USB | ja (emuliert) (nur via InpOut32.dll und Zusatzschaltung) | OUT: ja (≤ 10 µs) IN: nein (1000 µs) | typ. 2 | ja | nein | ja | 30 | - Für Drucker
- Für 8 Ausgabepins und 3 Eingabepins
|
---|
USB→Drucker-Konverter | ≈ 99 | ja | 6
|
---|
eSATA2LPT | ja (emuliert) | ja (5 µs) | typ. 2 | nein | mit Adapter | via eSATA | 30 | denkbar; 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.
 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!
|
 High-Speed (Aufbau-Anleitung mit Video)
| USB2LPT 7
- 2008..2012, Stückzahl: 850
- Mit Cypress' CY7C68013A-56LFXC (mittlerweile von Infineon) 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
- Dieser Download wird für den Betrieb des Fertiggerätes benötigt:
Treiber für Windows 98/Me/2k/XP/Vista/7/8/10/11
Dieser WDM-Treiber hat nur wenig mit Plug'n'Play am Hut.
Es werden einfach die LPT-Portadressen per Debugregister-Trap
oder (alles wahlweise) durch Anzapfung der Kernel-Funktionen
READ_PORT_UCHAR und WRITE_PORT_UCHAR abgehört und
Zugriffe auf USB umgelenkt. Da ein PC nie mehr als 3 LPTs haben konnte,
können auch nur 3 standardmäßige LPTs emuliert werden.
Bei freier LPT-Auswahl ist die Anzahl zurzeit auf 9 „beschränkt“.
So viele konnte man noch nie zusammen im Rechner haben!
Niemals diesen Treiber mit etwas anderem als diesem USB2LPT benutzen!
Es funktioniert nicht — und kann Ihr Betriebssystem durcheinanderbringen.
Achtung: Für die Low-Speed-USB2LPT 1.5 und 1.6 unter Vista/7/8
ist die Portzugriffsemulation noch einmal um den Faktor 8 (!) langsamer.
Für Relais und Lampen ist das dennoch ausreichend.
Neu: Es installieren sich auch funktionelle Treiber
für 64-Bit-Editionen von Windows, das heißt, die API funktioniert,
seit 2015 auch die Portzugriffsumlenkung.
Es gibt drei neue Seiten (Tabs) bei „Eigenschaften“ im Geräte-Manager.
Alle Seiten sind in zurzeit 14 Sprachen verfügbar.
Der Tab „Anschlusseinstellungen“ kommt von Windows.
Der Treiber ist zertifiziert. Das Zertifikat ist auf unbestimmte Zeit gültig, Microsoft hat bis dato kein Ablaufdatum angegeben.
Für den äußerst seltenen Fall, dass Sie Win64-Portzugriffe im Kernel Mode
abfangen müssen, müssen Sie außerdem den
PatchGuard deaktivieren.
Sonst brauchen Sie sich über den nach einigen Sekunden oder Minuten
erscheinenden Bluescreen 0x109 nicht zu wundern.
Dafür gibt es beim Treiber-Setup ein entsprechendes Ankreuzfeld.
- Dieser Download wird benötigt, um für die Distribution
einen erwartungsgemäßes Begleitschreiben auszudrucken:
Beipackheft zum Audrucken
Als Winword, nicht als PDF! Denn PDF ist kein Quelltext.
- Die folgenden Downloads benötigen Sie allenfalls
zum Firmware-Update, sind jedoch im o.a. Treiber-Archiv schon enthalten:
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.
- 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.
- Mit Monitor schließlich können Sie mit der Schnittstelle
ein bisschen herumspielen sowie Pegel beobachten.
Die ausgefeilte Sprechblasen-Hilfe informiert über alle Bits und Pins.
- Der Tab Anschlusseinstellungen kommt von Windows (NT).
Hier kann man (seit Mai 2013) den Namen der Schnittstelle ändern.
Alles andere ist wirkungslos.
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:
- Geschwindigkeit bleibt ungenügend, Alternative Desktop-PC mit PCI- oder PCIexpress-Karte haushoch überlegen,
auch deshalb.
Low- und Full-Speed-Alternativen werden besser eingestampft, auch deswegen.
- Zuverlässigkeit der Treibersoftware mangelhaft, versagt mit VMWare, gelegentliche Bluescreens.
Keine echte LPT-Kompatibilität via Gerätemanager, das Problem konnte ich nie lösen.
- Preiswertere Alternative: CY7C68013A-Entwicklungsboard.
Keine Ahnung wie die Chinesen das Board unter dem Einkaufspreis des Mikrocontrollers anbieten können!
- Keine brauchbare Lösung, die 5-V-I/O mit USB-High-Speed kombiniert.
Das führt manchmal aber häufig genug zu Problemen.
Müsste man mit zwei Mikrocontrollern
lösen erschlagen.
- Bezugsquelle für CY7C68013A, Leiterplatten (inzwischen mit JLCPCB kein Problem mehr)
- Zeit + Augenlicht (fürs SMD-Löten, früher kein Problem, jetzt mit Brille und Sehhilfen unverschämt umständlich)
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:
- Ihr Betriebssystem und Bitbreite (32 oder 64 Bit) sowie (falls vorhanden) Virtualisierungssoftware — Prozessortyp, ServicePacks, Virenscanner usw. interessieren nicht
- Ihre Software, idealerweise mit einem Download-Link, damit ich's nachvollziehen kann
- Eine Beschreibung, wie Sie zum Fehlerbild kommen
- Angaben zur Statistik-Seite während des Fehlerhergangs
- Den genauen Wortlaut der Fehlermeldung,
beim Bluescreen die (fünf) Hexadezimalzahlen