Deutscher Originaltext
| Keywords:
USB, LPT, parallel, parallel port, printer port, converter, adaptor;
programmer, ATmega, ISP, FPGA, CPLD, JTAG, direct port access emulation, IEEE 1284, IEEE1284
|
Converter From USB To Parallel 
Contrary to all other USB parallel ports which can connect to printers only,
this makes connection to most hardware - without adapting the software!
The entire circuitry fits into a usual dongle housing.
A reverse device called LPTzUSB for connecting a USB printer
to a legacy parallel port is available since 2006.
For ordering devices, please email me.
Operational areas
Typical devices are:
- Programming devices (AVR, JTAG…)
- Data logger, data acquisition
- slow controls, like for garden, model railway…
- Synchronous bus connections, like I˛C, SPI…
- Laboratory automation, simple robots
Certain equipment categories are excluded from correct emulation:
- Time critical equipment,
like direct stepper motor controls (above 100 Hz or so)
Due to free programmability of the microcontroller used
you may run dedicated stepper motor control software on its 8051 core
and so greatly reduce the impact to the overall PC performance.
Access to source code of the stepper motor control software is required.
- Things with »intentionally« hard-coded (non-hookable)
drivers, such as Dongles (= software protection plugs)
For most software there is a USB dongle available too.
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 takes place in a driver in privileged mode.
But wasted time for the interception itself is small in opposite to
that with each IN instruction a USB frame must be waited for, 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.
Solely modifying the software can reduce execution time of IN instructions,
but that's exactly what should be avoided.
In contrast to “competitors” I don't want to make false hope!
OUT instructions do not lead to considerable lengthening.
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.
Hint: If you are looking for a working parallel port for laptops
carefully, you will find out that there are PCMCIA cards.
And if you have a PC, you can buy an appropriate PCI card.
Such solutions will work much more reliable as there is no trap
of port accesses by a piece of driver software.
Unluckily, such cards are more expensive and not very convenient.
History of USB2LPT
I had built this device in several versions, or revisions.
Here are self-make instructions too.
 Evaluation system
| USB2LPT – Evaluation system
- September 2004, Quantity: 1
- AN2131SC - Full Speed
- Handmade PCB (included in Diploma work of Eik Arnold)
- 99% compatible to “Original Version” and “Revision 1”,
only pull-up resistors are missing
- A handy utility for troubleshooting is the
LPT checker
- Do not clone! Errors on PCB!
|
 The “Original”
| USB2LPT Release 1.0
- February 2005, Quantity: 10
- AN2131SC - Full Speed
- Handmade PCB (two-sided), manual via, hand-soldering
- Dongle housing, USB-B receptacle, 25 pin SubD receptacle
- Wire for extra 5V supply included
- Recommended to clone
(small changes necessary)
Attention: AN2131SC is about to be discontinued.
|
 First Revision
| USB2LPT Release 1.1
- April 2005, Quantity: 18
- AN2131SC - Full Speed
- 100% compatible to “Original Version”
- Industrial PCB (two-sided, 350 µm), hand-soldering
- Plug housing, USB-MiniB receptacle, 25 pin SubD receptacle
- Do not clone! Cumbersome! Errors on PCB!
|
 Second Revision
| USB2LPT Release 1.2 — called USB2LPT2 too
- August 2005, Quantity: 33
- CY7C68013A-56PVXC (FX2LP) - High Speed
(not firmware-compatible to predecessor, other chip)
- Industrial PCB (two-sided, 250 µm), hand-soldering
- Plug housing, blue High-Speed LED, USB-MiniB receptacle,
25 pin SubD receptacle
- Cloning OK,
but maybe you will await next revision
|
 Third Revision
| USB2LPT Release 1.3
- June 2006, Quantity: 132
- CY7C68013A-56LFXC (FX2LP) - High Speed
(firmware-compatible to predecessor with new firmware, other wiring)
- Industrial PCB (two-sided, 150 µm),
reflow soldering
- Plug housing, blue High-Speed LED, USB-MiniB receptacle,
25 pin SubD receptacle
- Professional clones recommended
|
 Fourth Revision
| USB2LPT Release 1.4
- April 2007, Quantity: 101
- Very similar to revision 1.3 above
- Three extra lines for using as 20-pin I/O device
- Professional clones recommended
|
 Low-Speed Revision
| USB2LPT Release 1.5
- 2007, Quantity: 11
- ATmega8 or ATmega48: ultra cheap. Idea from IgorUsbPlug. Fast as Full-Speed.
- Firmware implementation using USBDRV by
Objective Development
- Same Windows driver, slightly modified .INF file (already done and available)
- PCB only, very easy to populate
- Cloning recommended – useful where low-speed is sufficient
e.g. relay cards, LC displays, slow-moving stepper motors
|
 Another Low-Speed Revision
| USB2LPT Release 1.6
- 2008, Quantity: 250
- Crystal removed! Thanks to continued work of
Objective Development
- Integrated bootloader for firmware update via USB
- Same as Release 1.5 but 2 diodes instead of voltage regulator
when 3.3V operation of ATmega controller is needed for some application
- PCB, very easy to populate, and devices
- Cloning recommended – useful where low-speed is sufficient
|
 High-Speed again
| USB2LPT Release 1.7
- 2008, Quantity: 250
- Functionally equal to Release 1.4
- Changed voltage regulator to conform the USB idle-mode power consumption
- Professional clones recommended
|
 Centronics adaptor
| Centronics adaptor
- 2007, Quantity: 0
- For all USB2LPT revisions, to connect to a 36-pin Centronics receptacle
- Source (Eagle PCB)
|
You may order devices by mailing to the address below.
Software
That download you need for running the device
on your host PC:
Driver for Windows 98/Me/2k/XP/Vista/7
(1.5M, Monday, 24-May-2010 01:40:32 MEST)
These drivers are not so much plug'n'play.
Up to three LPT port address rages are automatically captured.
Up to 10 devices may be connected due to naming scheme.
The driver and software appears english on non-German Windows.
All other languages may be added by modifying the resources
and the .INF file. Windows does the automatic selection.
Note: For Low-Speed USB2LPT 1.5 und 1.6 with Vista/7 the driver
uses the second “Alternate Setting” of the
USB2LPT 1.5 and 1.6 firmware that uses INTERRUPT instead of BULK pipes.
As a real bad consequence, emulation speed drops by factor 8.
New: There are two new pages for “Properties” in Device Manager.
All 4 pages are available in 11 languages.
That download you only need to upgrade the firmware:
- Firmware for serial EEPROM (AN2131)
- Firmware for serial EEPROM (FX2LP)
It simply puts USB OUT transfers to the OUT port,
and answers to IN transfers. ECP are EPP are simulated too.
If you don't got an installation manual:
- a Pamphlet.doc as WinWord2000 file
Usage
Have a look to Device Manager!
In the “Connections (COM & LPT)” tree,
you will find a new parallel port.
Its property dialog has two extra sheets:
- Emulation: Here you can set up properties like the
port address emulated, the usage of debug registers, etc.
- Statistics: Here you can inspect how USB2LPT is working,
and maybe shooting some trouble
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. This part of API is not subject to change
in the future. (The IOCTL code is $222010.)
Of course, a helpful documentation must follow.
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, Turkish, and Russian.
See BETA directory for details.
Frequently Asked Questions (FAQ)
You can read the FAQ by following this link.
List of clones
- lzwest (China)
(they removed their clone shortly)
Henrik Haftmann,
– HTML mail,
Full-quoted mail,
or mail with more than 10 lines of footer will be rejected!
Chemnitz, December 18, 2008