Keywords: USB, LPT, parallel, parallel port, printer port, converter, adaptor; programmer, ATmega, ISP, FPGA, CPLD, JTAG, direct port access emulation, IEEE 1284, IEEE1284Contrary 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 bevirtualizedby the accompanying driver.The entire circuitry fits into a usual D-Sub shell housing.
OS: macOS 10.15.x-10.5.x: CPU: Mac computer and a USB port with a Power Mac G4 or higher, or using Intel Processor: Memory: 512MB or more: HDD: 2 MB or more. Ugreen USB to Parallel Printer Adapter Cable is ideal for connecting USB-equipped desktop or notebook computers to a parallel printer, inkjet, laser, and scanner etc, or for adding a DB25 female port. It is compatible with USB 1.1 and 2.0, plug & play, no driver installation is required. Start - Settings - Devices - Printer and Scanners - then on Right click your printer - the click Manage - you should be able to change the port. If the Printer has a USB cable connector then it should offer the Port such as USB001 as a virtual port. If not check with the printer maker's Support, online docs, and forums.
A reverse device called LPTzUSB for connecting a USB printerto 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.
- Read this when you plan to purchase: Not recommended for new designs
- To driver software
- USB2LPT is a multifunction device but not complete, missing JTAG due to documentation
- The Application Programmer Interface (API) for direct access to USB2LPT without INPOUT32.DLL or similar
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
- 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. - Again, for the blind and deaf: It doesn't work for stepper motors, so not for CNC machines.
A typical boring e-mail conversation … please do not ask the same again and again:
- > I have to control an old CCD camera with LTP [sic] bidirectional [sic, surely not] protocol. My application needs to communicate with the CCD console to start the image integration (pulsing and clearing the ccd array), stop the acquisition (saving the data in a HW buffer) and download them on PC.
- Expect image download times in hours, even with high-speed USB2LPT. If it would ever work. Possibly your hardware requires 5 V signaling. Then USB2LPT Low-Speed would help, then expect image download time in days.
- > All functions arequickly performed with old PC (with win 98 or XP) having a LPT port, buttoday we would like to use the new laptops or desktop computers to do this(but without the parallel port).
- Don't use cripplebooks. Only laptops having an ExpressCard slot are extensible enough.
- Avoid using closed-source hardware-accessing software, insist upon getting source.
Otherwise you are bound to old hardware and operating systems for the entire lifetime of your equipment. The same applies to Dongles. - Check whether your software relies to InpOut32.dll. If so, you can skip 4. and 5. and you are quite lucky.
- Check whether your software can handle non-standard port addresses.
- Check whether your software, especially its hardware access, runs under 64bit Windows (for the future).
- Buy any PCI or PCIexpress parallel port card.
- Things with »intentionally« hard-coded (non-hookable) drivers, such as Dongles (= software protection plugs)
For most software there is a USB dongle available too. - Again, for the blind and deaf: It doesn't work for software protection devices (dongles).
Restrictions, Performance
Interception of port access instructions take place in the driver in privileged ring0 modeusing hand-optimized assembly code, so this is as fast as possible.But the time for the I/O interception is small compared to the time neededfor each IN instruction — a USB frame must be awaited, at least 125 µs.This may lead to 100x lengthening of time! (High-Speed USB2LPT)
I will hope that your software is not so muchinput-intensive. While processing time is lengthened, the processor yieldsto other running processes, so the processing load is kept low.
There are two known options to shorten awaiting of IN instructions:
- Modifying the software and optimizing its data flow enables concatenating multiple IN instructions into one USB packet.But that's exactly what should be avoided.
- A replacement host controller driverwhich can insert outstanding BULK transfers into the current (not the next) USB microframe.This is very hard to program, if even possible in a non-realtime OS, I cannot afford this solution.However, at least one company told me that they wrote such a driver but for DOS. But didn't gave me source code:-(
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 better options to get a parallel port if you need one. Read this list of available adapters and their advantages / disadvantages:- PCMCIA:
- + True parallel port with ECP/EPP and expected speed
- + Base address same as built-in (378h, 278h) due to ISA roots
- + No driver necessary
- – Only available on very old or specialized laptops and notebooks
- ExpressCard (PCIe based):
- + True parallel port with ECP/EPP and expected speed
- – Base address offset to >1000h (your software must cope with this, or you need a patch or an address-shift driver)
But there are exceptions! - ± Driver sometimes necessary, depends on operating system version and model
- + Available on current laptops, notebooks
- – Not available on subnotebooks and netbooks
- – Expensive
- – Cumbersome due to the thick cable on the litte notebook
- – Likelihood of confusion with USB based ExpressCards, see below
- ExpressCard (USB based):
- → Electrically same as USB→ParallelPrinter adapter! See below
- USB→ParallelPrinter adapter:
- + Driverless PnP support for parallel printers, emulates a USB printer
- + USB available everywhere
- – Not a true parallel port, doesn't work with almost all programs, including scanners, relay cards, data acquisition etc., except my programs especially prepared for such adapters, e.g. DiscoLitez WinAmp plugin, AD9834 DDS generator interface
- – Even when resellers claim uniqueness, these are always the same (they lying)
- PCI or PCIe cards (for desktop computers):
- + True parallel port with ECP/EPP and expected speed
- – Base address offset to >1000h (your software must cope with this, or you need a patch or an address-shift driver)
- ± Driver sometimes necessary, depends on operating system version and model
- + Cheap and easy to handle
- This USB2LPT:
- +Emulated (virtualized) true parallel port with ECP/EPP
- – Reduced speed due to emulation and (mainly) USB bus transfer cycles (expect 10..100 times slower)
- + Base address same as built-in (378h, 278h)
- – Doesn't work with programs that expect a true PnP driver stack (scanners, ZIP drives) and software that disables port access redirection (dongles)
- + USB available everywhere
- – Driver necessary
- – Driver unstable, tricky, currently no driver for Linux
- + Smart and handy cabling with thin USB wire
- + open-source, multi-language, extensible, life-time support
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.Low-Speed (cloning instructions) | USB2LPT Release 1.6
|
High-Speed (cloning instructions with video) | USB2LPT Release 1.7
|
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/8/10(, )
Note: For Low-Speed USB2LPT (1.5 and 1.6) with Vista/7/8/10 the chipuses INTERRUPT instead of BULK pipes.As a real bad consequence, emulation speed drops by factor 8.You can only circumvent this problem when using 2K/XP and switch to BULK, see Device Manager — Properties for USB2LPT.Better you choose High-Speed.
These drivers are not so much plug'n'play.Up to three LPT port address rages are automatically captured.Up to 9 devices may be connected due to naming scheme.The driver and software is available in 14 languages.
Do not try this driver with any other hardware, this will simply not work and may confuse your operating system later!
The installer creates four extra pages for “Properties” in Device Manager.
Moreover, this .zip archive contains all source files for the driver, the property sheet pages (14 languages), the help file (3 languages), the microcontroller firmware for all USB2LPT revisions, and the utilities for handling the firmware, all in its latest version.
The driver is certified.
If you don't got an installation manual:- a Pamphlet.doc as WinWord2000 file .As all images are linked (not embedded), you must unzip the entire archive and then open the .DOC file.
- For the very rare case of needing port access redirection in Win64 kernel mode you have to disable PatchGuard. Otherwise, you will get a Blue Screen of Death (BSoD) 0x109 after some seconds or minutes.
That download you may need when you make your own USB2LPT: - This package contains english-message utilities (source files and executables) for USB2LPT production.
To be integrated in two-language utilities, because I don't want to maintain doubled source code …
Usage
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:- 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
- Monitor: Here you can inspect and modify port pin values
- Title unknown: Here you can see the real LPT number assignment
'.LPT1'
(or LPT2 if you already have one), and transfer IN/OUT data with(see USB2LPT.A51, label 'upv') via a single call ofDeviceIoControl.Here is the full API documentation.Lpt Port To Usb Adapter
Via IOCTL code IOCTL_VLPT_AnchorDownload, you can injectadditional firmware to speed-up your applications.Therefore, USB2LPT is aPocket Development Kit for EZUSB AN2131/CY7C68013 too.
These Property Pages are also available in the languagesGerman, 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.
Clones
HTML mail,Full-quoted mail,or mail with more than 10 lines of footer will be rejected!When you encounter problems using the device or driver, please include following information:
- Your operating system and bitness (32 or 64 bit) — processor type, service packs, virus scanner, video resolution are out of interest
- Your software, ideally providing a download link, so I can reproduce behaviour
- A description what you do to finally get the error message
- A description what you seen on statistics property sheet page before
- The exact wording of error message, for blue screens the (five) hexadecimal numbers
Keywords: USB, LPT, parallel, parallel port, printer port, converter, adaptor; programmer, ATmega, ISP, FPGA, CPLD, JTAG, direct port access emulation, IEEE 1284, IEEE1284Contrary 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 bevirtualizedby the accompanying driver.The entire circuitry fits into a usual D-Sub shell housing.
A reverse device called LPTzUSB for connecting a USB printerto 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.
- Read this when you plan to purchase: Not recommended for new designs
- To driver software
- USB2LPT is a multifunction device but not complete, missing JTAG due to documentation
- The Application Programmer Interface (API) for direct access to USB2LPT without INPOUT32.DLL or similar
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
- 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. - Again, for the blind and deaf: It doesn't work for stepper motors, so not for CNC machines.
A typical boring e-mail conversation … please do not ask the same again and again:
- > I have to control an old CCD camera with LTP [sic] bidirectional [sic, surely not] protocol. My application needs to communicate with the CCD console to start the image integration (pulsing and clearing the ccd array), stop the acquisition (saving the data in a HW buffer) and download them on PC.
- Expect image download times in hours, even with high-speed USB2LPT. If it would ever work. Possibly your hardware requires 5 V signaling. Then USB2LPT Low-Speed would help, then expect image download time in days.
- > All functions arequickly performed with old PC (with win 98 or XP) having a LPT port, buttoday we would like to use the new laptops or desktop computers to do this(but without the parallel port).
- Don't use cripplebooks. Only laptops having an ExpressCard slot are extensible enough.
- Avoid using closed-source hardware-accessing software, insist upon getting source.
Otherwise you are bound to old hardware and operating systems for the entire lifetime of your equipment. The same applies to Dongles. - Check whether your software relies to InpOut32.dll. If so, you can skip 4. and 5. and you are quite lucky.
- Check whether your software can handle non-standard port addresses.
- Check whether your software, especially its hardware access, runs under 64bit Windows (for the future).
- Buy any PCI or PCIexpress parallel port card.
- Things with »intentionally« hard-coded (non-hookable) drivers, such as Dongles (= software protection plugs)
For most software there is a USB dongle available too. - Again, for the blind and deaf: It doesn't work for software protection devices (dongles).
Restrictions, Performance
Interception of port access instructions take place in the driver in privileged ring0 modeusing hand-optimized assembly code, so this is as fast as possible.But the time for the I/O interception is small compared to the time neededfor each IN instruction — a USB frame must be awaited, at least 125 µs.This may lead to 100x lengthening of time! (High-Speed USB2LPT)
I will hope that your software is not so muchinput-intensive. While processing time is lengthened, the processor yieldsto other running processes, so the processing load is kept low.
There are two known options to shorten awaiting of IN instructions:
- Modifying the software and optimizing its data flow enables concatenating multiple IN instructions into one USB packet.But that's exactly what should be avoided.
- A replacement host controller driverwhich can insert outstanding BULK transfers into the current (not the next) USB microframe.This is very hard to program, if even possible in a non-realtime OS, I cannot afford this solution.However, at least one company told me that they wrote such a driver but for DOS. But didn't gave me source code:-(
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 better options to get a parallel port if you need one. Read this list of available adapters and their advantages / disadvantages:- PCMCIA:
- + True parallel port with ECP/EPP and expected speed
- + Base address same as built-in (378h, 278h) due to ISA roots
- + No driver necessary
- – Only available on very old or specialized laptops and notebooks
- ExpressCard (PCIe based):
- + True parallel port with ECP/EPP and expected speed
- – Base address offset to >1000h (your software must cope with this, or you need a patch or an address-shift driver)
But there are exceptions! - ± Driver sometimes necessary, depends on operating system version and model
- + Available on current laptops, notebooks
- – Not available on subnotebooks and netbooks
- – Expensive
- – Cumbersome due to the thick cable on the litte notebook
- – Likelihood of confusion with USB based ExpressCards, see below
- ExpressCard (USB based):
- → Electrically same as USB→ParallelPrinter adapter! See below
- USB→ParallelPrinter adapter:
- + Driverless PnP support for parallel printers, emulates a USB printer
- + USB available everywhere
- – Not a true parallel port, doesn't work with almost all programs, including scanners, relay cards, data acquisition etc., except my programs especially prepared for such adapters, e.g. DiscoLitez WinAmp plugin, AD9834 DDS generator interface
- – Even when resellers claim uniqueness, these are always the same (they lying)
- PCI or PCIe cards (for desktop computers):
- + True parallel port with ECP/EPP and expected speed
- – Base address offset to >1000h (your software must cope with this, or you need a patch or an address-shift driver)
- ± Driver sometimes necessary, depends on operating system version and model
- + Cheap and easy to handle
- This USB2LPT:
- +Emulated (virtualized) true parallel port with ECP/EPP
- – Reduced speed due to emulation and (mainly) USB bus transfer cycles (expect 10..100 times slower)
- + Base address same as built-in (378h, 278h)
- – Doesn't work with programs that expect a true PnP driver stack (scanners, ZIP drives) and software that disables port access redirection (dongles)
- + USB available everywhere
- – Driver necessary
- – Driver unstable, tricky, currently no driver for Linux
- + Smart and handy cabling with thin USB wire
- + open-source, multi-language, extensible, life-time support
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.Low-Speed (cloning instructions) | USB2LPT Release 1.6
|
High-Speed (cloning instructions with video) | USB2LPT Release 1.7
|
Usb Parallel Port Driver
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/8/10(, )
Note: For Low-Speed USB2LPT (1.5 and 1.6) with Vista/7/8/10 the chipuses INTERRUPT instead of BULK pipes.As a real bad consequence, emulation speed drops by factor 8.You can only circumvent this problem when using 2K/XP and switch to BULK, see Device Manager — Properties for USB2LPT.Better you choose High-Speed.
These drivers are not so much plug'n'play.Up to three LPT port address rages are automatically captured.Up to 9 devices may be connected due to naming scheme.The driver and software is available in 14 languages.
Do not try this driver with any other hardware, this will simply not work and may confuse your operating system later!
The installer creates four extra pages for “Properties” in Device Manager.
Moreover, this .zip archive contains all source files for the driver, the property sheet pages (14 languages), the help file (3 languages), the microcontroller firmware for all USB2LPT revisions, and the utilities for handling the firmware, all in its latest version.
The driver is certified.
If you don't got an installation manual:- a Pamphlet.doc as WinWord2000 file .As all images are linked (not embedded), you must unzip the entire archive and then open the .DOC file.
- For the very rare case of needing port access redirection in Win64 kernel mode you have to disable PatchGuard. Otherwise, you will get a Blue Screen of Death (BSoD) 0x109 after some seconds or minutes.
That download you may need when you make your own USB2LPT: - This package contains english-message utilities (source files and executables) for USB2LPT production.
To be integrated in two-language utilities, because I don't want to maintain doubled source code …
Usage
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:- 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
- Monitor: Here you can inspect and modify port pin values
- Title unknown: Here you can see the real LPT number assignment
Usb To Lpt Port Adapter
'.LPT1'
(or LPT2 if you already have one), and transfer IN/OUT data with(see USB2LPT.A51, label 'upv') via a single call ofDeviceIoControl.Here is the full API documentation.Via IOCTL code IOCTL_VLPT_AnchorDownload, you can injectadditional firmware to speed-up your applications.Therefore, USB2LPT is aPocket Development Kit for EZUSB AN2131/CY7C68013 too.
These Property Pages are also available in the languagesGerman, French, Italian, Spanish, Simplified Chinese,Japanese, Czech, Polish, Turkish, Russian, Hungarian, and Bazilian Portuguese.
Frequently Asked Questions (FAQ)
Usb Lpt Converter
You can read the FAQ by following this link.
Clones
HTML mail,Full-quoted mail,or mail with more than 10 lines of footer will be rejected!When you encounter problems using the device or driver, please include following information:
- Your operating system and bitness (32 or 64 bit) — processor type, service packs, virus scanner, video resolution are out of interest
- Your software, ideally providing a download link, so I can reproduce behaviour
- A description what you do to finally get the error message
- A description what you seen on statistics property sheet page before
- The exact wording of error message, for blue screens the (five) hexadecimal numbers