Keywords: USB, LPT, parallel, parallel port, printer port, converter, adaptor
USB2LPT — Overview
USB2LPT, List of successfully tested programs
This list should grow with appropriate user feedback…
Attention: Using USB2LPT with programming devices may lead
to wrong or bad programmed chips!
The reason is lengthening of the programming pulse due to
longer parallel port access emulation time. The result depends on|
If the length of programming pulse is important (e.g. for correct
programming in mass production), USB2LPT should not be used.
Furthermore, programming software should not be installed onto
too fast computers. Even when a true parallel port is available.
Depending on software quality,
this may lead to too short (and therefore unsafe) programming pulses.
- whether the PC software or the programming device
creates the programming pulse
- whether the chip requires timely exact pulses or not.
In general, ISP chips (newer micro controllers, or JTAG interfaces),
serial EEPROMs, and flash memories are excluded.
Attention 2: Although using USB2LPT with programming devices
is obvious, it is generally not recommended.
Programing times are much too long to get ready.
At the top I measured that the GALEP software needs some minutes(!)
for programming the smallest PIC (12F508).|
PCMCIA and CardBus parallel adapters do not have this disadvantage.
For ExpressCard, you must have the right type:
PCIe based, not USB based.
- Chip programmers (High-speed USB2LPT is highly recommended)
- AVRDUDE (Command-line driven programmer for Atmel AVR, ATmega)
In most cases you should use
-P lpt1 for specifying port address,
even when Windows XP' device manager lies and says „LPT3“.
AVRDUDE uses only 3 fixed port addresses for the names:
Speed: about 5 % (ATmega16), 16 IN operations per bit
lpt1 = 0x378
lpt2 = 0x278
lpt3 = 0x3BC
(Freeware programmer esp. for PIC, ATmega, serial EEPROMs)
- The INI file must be modified to get PonyProg to work: change „AutoDetectPorts=NO“!
- Xilinx iMPACT (JTAG programmer esp. for Xilinx CPLD and FPGA)
- Built-in automatic port detection fails, therefore iMPACT needs the following environment variables:
Where can I set environment variables under 2k/XP?
set XIL_IMPACT_ENV_LPT_BASE_ADDRESS=378 (according to setting of USB2LPT in Device Manager)
set XIL_IMPACT_ENV_LPT_ECP_ADDRESS=778 (always LPT_BASE + 400h)
Start→Settings→Control Panel→System→Enhanced(?)→Environment variables
- ispVM System (use new driver), for ispLSI1016E (CPLD)
same performance as for true parallel port
- ispLEVER (ispVM system, from
Lattice), good performance!
- Willem Eprom 0.97ja
Report by Paul Baumann (translated):
In Device Manager, properties for USB2LPT, tab “Emulation”,
groupbox “Redirection”, all three checkmarks must be set.
And LPT enhancement set to EPP 1.9
I think, the checkmark at “Debug Register” is sufficient,
and presumably SPP, if ECR is set to „unidirectional“.
(ECR default setting when shipped is „bidirectional“ = PS/2 Mode.)
- SP12 (Programmer for Atmel AVR,
- PIC programmer software from www.sprut.de
- MSP430 programming via msp430-jtag
- GALEP-4 (GALEP-3 not tested),
but only with this patch, but not recommended because ultra-slow.
However, a 64-bit capable driver exists,
enabling running GALEP32.exe on Win64 machines.
- DataIO 2700 with acceptable 8× more time.
Follow link to see what to do more.
- Xeltek SuperPro Z, it is not very fast, reading a 2732 takes about 20 seconds, while reading a 27C020 takes a few minutes…
Reported environment: Windows 2000 under VM-Ware's Fusion running on MacBook Pro dual processor, allocated 500 MB RAM for W2k.
- Debug Register Trap ON (without this you get a 'Communications Error')
- Read_Port_Uchar… doesn't matter
- Use write-back for Out… doesn't matter
- Amateur radio (Low-Speed USB2LPT is often sufficient)
- PowerSDR and SDR-1000 for radio amateurs
Low-Speed is fully sufficient for this application!
One amateur has posted
problems with crystal-less version 1.6
and populated the 12000 kHz crystal with 2x 22 pF 0603 capacitors,
flashed the 1.5 firmware and was happy.
New (for Win64): A replacement PortTalk.dll
is available that redirects I/O to USB2LPT while that's still not working
on driver (i.e. universal Ring0) level.
This very simple DLL can be seen as a reference implementation for the
USB2LPT DeviceIoControl API.
- Antenna analyzer by(?) Gerd Koetter (see
- Linrad release 3.15,
for radio amateurs, see here
- Other hardware + software (High-Speed USB2LPT is recommended for data-intensive applications)
- All of (my)
h#s programs (of course!)
- Analog Devices: AD9834.exe: Their original software won't run,
so I wrote a (much more improved)
that supports PCI and PCIexpress cards too.
digitalio('parallel','lpt1'); should run now
- Discolitez Deluxe32 – Note also:
- There is a plugin
available for normal USB→printer adapters that works for 8 outputs.
- For 32 outputs, there is a much-easier-to-use DeluxeUSB solution.
- Synfox frequency synthesizer via I²C
Environment:Win XP in Parallels Desktop 3.0 Virtual Machine on Mac OSX 10.5.7 on MacBook Pro
- Melexis TH7122 and MLX71122 (software settings: LPT2, 0x278,
reported by Jon GrosJean <jgrosjean_at_ieee.org>)
- RoboScope: Telescope positioner and earth rotation compensation.
The link points to my try to replace the original
by a C++ source having a true Win32 program,
but that attempt has ended due to missing testing facility.
- Wild GIF12 (Leica card reader for survey equipment)