At my university we have to do some project using parallel port (I know ridiculously old port). We bought a USB to Parallel Printer cable used to connect old parallel printers and the device is an IEEE-1284 Parallel Printer this means I can't see any LPT1, LPT2, LPT* in hardware devices.

Following this guide and using this program to send data we tried to send data to parallel port connecting:

  • BUSY (pin 11) to any Ground (pins 19-29)
  • SELECT (pin 13) to +5V
  • STROBE (pin 1) to ACK (pin 10)

We added a Generic printer as the webpage says:

I then installed a printer by clicking Add A Local Printer from Control Panel → Printers Then select the Port to be USB001 (Virtual Printer Port for USB).

Select from the list of printer Generic / Text Only This loads the proper driver. Then from the Printer Properties Advanced settings I turned off Spooling the Spool Print Documents selection and selected Print Directly To The Printer.

This works perfect I see my printer in Ready state when plugin in the cable so the port is the correct one. When I try to send data using the Microsoft program no matters what I send .txt files, raw file containing 0xFF or 0x00 to toggle the entire data port nothing happens on the Data Port. Some status pins go to high or low state permanently no matter what I send so at least I know something is reaching to the port.

What else can we try? Is there any way to get it working? We already spent the money on this cables so we want to try to get them working.

Thank you very much for your help!

  • 1
    \$\begingroup\$ My advice is to simply give up and get a PCI or PCI-E port. It's going to be extremely difficult and you should have done your research in advance. Most USB to IEEE-1284 converters are very difficult to work with unless you need to drive a real printer. \$\endgroup\$
    – AndrejaKo
    Aug 26 '13 at 21:04
  • \$\begingroup\$ Is the interface waiting for an ACKnowledge signal? Check this image there are couple inputs (ACK, BUSY, PE, ERROR, ...) that must meet the right condition before the PC will output data to the port. Not all signals are necessarily implemented though, but I can't recall which ones exactly. ACK and BUSY are essential. \$\endgroup\$
    – jippie
    Aug 26 '13 at 21:15
  • \$\begingroup\$ I am connecting Busy and ACK lines as indicated so I should receive at least a byte on the data lines. \$\endgroup\$
    – Andres
    Aug 26 '13 at 23:33
  • \$\begingroup\$ This Link is another method to do it superuser.com/questions/182655/… \$\endgroup\$
    – user29083
    Sep 15 '13 at 18:46

The basic "Centronics" printer port protocol uses a simple 2-wire handshake in which the PC asserts a strobe signal until the printer asserts an acknowledge signal. This repeats for each byte transferred.

If you want to "bit-bang" individual pins on the parallel port, you can't use the Windows printer drivers; you need to access the hardware at a lower level. If you're using a USB-to-parallel converter, you'll have to read its documentation.

  • \$\begingroup\$ As far as I have found, most off the shelf USB-to-parallel converters are set up to only be able to interface with a printer. That is unless you tear apart and rewrite the driver. \$\endgroup\$ Aug 26 '13 at 21:23
  • 2
    \$\begingroup\$ Apparently most don't support anything other than printer style transactions even with a custom driver. It is rumored that there are obscure ones which do, but a smarter move than trying to identify them would be to pick a known quantity such as an FT245 or some USB-enabled microcontroller. \$\endgroup\$ Aug 26 '13 at 21:35
  • \$\begingroup\$ Yes that's why I am connecting the Strobe with the ACK line. I don't want to toggle individual bits but I know I can transfer raw bytes. \$\endgroup\$
    – Andres
    Aug 26 '13 at 23:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.