Keywords: USB, LPT, parallel, parallel port, printer port, converter, adaptor; programmer, ATmega, ISP, FPGA, CPLD, JTAG, direct port access emulation, IEEE 1284, IEEE1284

USB-Logo Converter From USB To Parallel 25pol. SubD-Buchse

Contrary to all other USB→Parallel adapters which can connect to printers only, this makes connection to most hardware - without adapting the software! A parallel port will be virtualized by the accompanying driver. The entire circuitry fits into a usual D-Sub shell housing.

A reverse device called LPTzUSB for connecting a USB printer to a legacy parallel port is available since 2006.

This USB2LPT is not suitable for capturing parallel printer data. For this purpose, LptCap exists.

For ordering devices, please email me.

Operational areas

Typical devices are: Certain equipment categories are excluded from correct emulation: The software accessing the parallel hardware must be run under Windows! A DOS program may run in a DOS box, window or full-screen. 16-bit Windows programs are supported too. A Pentium class processor is required. 486 is too old.

Restrictions, Performance

Interception of port accesses instructions take place in the driver in privileged ring0 mode using hand-optimized assembly code, so this is as fast as possible. But wasted time for the I/O instruction interception itself is small in opposite to that — with each IN instruction — a USB frame must be awaited, at least 125 µs. This may lead to 100x lengthening of time!
I will hope that your software is not so much input-intensive. While processing time is lengthened, the processor yields to other running processes, so the processing load is kept low.

There are two known options to shorten awaiting of IN instructions:

In contrast to “competitors” I don't want to make false hope!

OUT instructions do not lead to considerable lengthening of time due to auto-concatenating write-back feature of driver software.

It is stupid to use this converter only for a printer! All other converters do this job correct! They are inexpensive too.
However, this converter contains a printer-compatible USB interface, therefore, printing is possible without loss of performance, see USB2LPT as multifunction device.

Programs that come with her own kernel driver will work too. This ist due to the “brute force” of a debug register trap.

Interferences with debuggers may occur. For program developers, this converter is relatively uninteresting.

Should I use this?

There are some options to get a parallel port if you need one. Read this list of available adapters and their advantages / disadvantages:

Current versions

There are older revisions, maybe easier to understand or to clone. Moreover a cloning suggestion with 100 % through-hole components. All these revisions are supported with current firmware and driver software.

Sixth Revision
(cloning instructions)
USB2LPT Release 1.6
  • 2008—2012, Quantity: 750 PCBs
  • Microcontroller: Atmel ATmega8-16TQ — AVR core at 12.5 MHz — USB Low Speed — True 5 V design
  • No Crystal required. Thanks to continued work of extern Objective Development Crystal is optional, typical 12 MHz, but also 15 or 16 MHz.
  • Integrated bootloader for firmware update via USB (squeezed into 2 KByte of Flash ROM)
  • Two USB interfaces (i.e. multifunction device) for raw access and driverless USB HID operation
  • Plug housing, yellow activity LED, USB-MiniB receptacle, 25 pin SubD receptacle
  • PCB population alternative available for 3.3 V operation of ATmega controller using a dual diode
  • Industrial PCB (two-sided, 150 µm), very easy to populate, eight components at all (4x through-hole, 4x SMD)
  • Hardware and firmware design conforms to USB idle-mode power consumption limit (≤ 500 µA)
  • Cloning recommended – useful where low-speed is sufficient
  • Useful for relay cards, light or LED control, LC displays, slow-moving stepper motors, amateur radio control like for SDR-1000, I²C bus control, garden / brewery control and supervising
  • The firmware from december 2010 to february 2012 is not compatible to Windows Vista and Windows 7 (32 and 64 bit) – please update!
Seventh Revision
(cloning instructions with video)
USB2LPT Release 1.7
  • 2008—2012, Quantity: 850 PCBs
  • Microcontroller: Cypress CY7C68013A-56LFXC (FX2LP) — 8051 core at 24 MHz — USB High Speed
  • Integrated bootloader code for firmware update via USB, compatible to the vend_ax code by Cypress
  • Three USB interfaces (i.e. multifunction device) for raw access, USB printer emulation, and driverless USB HID operation
  • Industrial PCB (two-sided, 150 µm), reflow soldering
  • Plug housing, blue High-Speed LED, USB-MiniB receptacle, 25 pin SubD receptacle
  • 3.3 V design with disable-able pull-up to 5 V on every port pin
  • Three extra lines for using as 20-way I/O device (good for simple parallel high-voltage AVR programmers)
  • Possibility for downloading volatile firmware extension code to RAM for problem-specific tasks using GPIF and true 480 MBit/s
  • New very-low-power low-voltage-drop regulator conforms to USB idle-mode power consumption limit (≤ 500 µA)
  • Professional clones recommended
  • Useful for programming devices, FPGA bitstream download, graphical LCD, medium-moving stepper motors (maybe 1000 steps per second)
Number 8 In development: USB2LPT Release 1.8 — Eagle source
  • USB Full Speed (12 Mbit/s) using Atmel AT90USB168
  • True 5 V input/output levels, changeable to 3.3 V by a solder jumper
  • 20 input/output lines, each direction selectable (perfect for simple parallel high-voltage AVR programmers)
  • Easy to clone: less, cheap, widely available components, true USB design
  • Easy to program with your tailored firmware using free C / C++ compiler
    Planned: MACH3 stepper motor adapter, parallel port adapter for Velleman PCS500 oscilloscope
  • Preprogramed USB bootloader by Atmel (no programming equipment required)

You may order devices by mailing to the address below.



Have a look to Device Manager! In the “Connections (COM & LPT)” tree, you will find a new parallel port. Its property dialog has four extra sheets: There is an API for programmers too. It is simply DeviceIoControl based. Open the device with CreateFile and file name "\\.\LPT1" (or LPT2 if you already have one), and transfer IN/OUT data with (see USB2LPT.A51, label "upv") via a single call of DeviceIoControl. Here is the full API documentation.

Via IOCTL code IOCTL_VLPT_AnchorDownload, you can inject additional firmware to speed-up your applications. Therefore, USB2LPT is a Pocket Development Kit for EZUSB AN2131/CY7C68013 too.

These Property Pages are also available in the languages German, French, Italian, Spanish, Simplified Chinese, Japanese, Czech, Polish, Turkish, Russian, Hungarian, and Bazilian Portuguese.

Frequently Asked Questions (FAQ)

You can read the FAQ by following this link.

List of clones

HTML mail, Full-quoted mail, or mail with more than 10 lines of footer will be rejected!