Purpose & Scope

Here we share our experience and document our research about parallel port.

Motivation

Parallel ports have all but disappeared from main stream computing hardware so why bother?

As it turns out I have a rather obsessional interest for VFD modules and their retro electronics looks.
I notably did quite a bit of work to make good use of various such modules from Futaba, see CIC on MediaPortal for instance.
However the frame rate of the larger Futaba VFD modules is rather abysmal even though we used a USB interface.
The perfectionist in me was left frustrated with Futaba hardware. Asking Futaba about it, to see if they could somehow improve their firmware, yield no result since they obviously had no interest in helping out a technology enthusiast, even though it would have been mutually beneficial. Moreover the USB interface their display implement tends not to work on modern motherboards unless they have a BIOS option to disable xHCI.

Looking around on the market for VFD hardware I found out that Noritake did offer modules with similar mechanical specifications and a DMA mode that should enable high frame rates when connected over a parallel port interface. Thus I set out to understand and use parallel ports on Windows.

PC Hardware

PCI Express extension cards

The following PCIe hardware did not work with my Noritake VFD as the voltage on the Strobe channel only goes up to 1.8v:
This low voltage Strobe issue is also mentioned on the Wikipedia page.
Exsys also makes such a PCIe card, I have yet to check if it has that low voltage issue.

Motherboard connector

Some motherboards have an internal parallel port connector with a smaller pitch than the standard 2.54mm.
Ribbon cable for those can be hard to find. I found information about them on this page in German.
I ended up ordering some of those cables there.

Various standards

Over the years there has been various standards for parallel ports from Standard Parallel Port (SPP) to Extended Capabilities Port (ECP). That later allowing for compatibility modes through its Extended Capabilities Register.

Programming

Windows

To get pin level control on Windows you need to use a specific driver inpout32 being the most popular apparently.
If you are connected to a device that's doing Standard Parallel Port handshake, also called Centronics, then you should be able to use the built-in Windows drivers.

In theory you should be able use your parallel port using CreateFile but that won't give you pin level control.

Tools

Doug developed that Parallel Port Tester for Windows. He even published the code he used to work out ports addresses on your Windows system.

Pinout

parallel-port-pinout.jpg

The pinout of the male connector is obviously reversed as it needs to mate with the female.


|*DB25 PIN*|*IDC PIN*|*Signal*|
|1|1|Strobe|
|2|3|Data0|
|3|5|Data1|
|4|7|Data2|
|5|9|Data3|
|6|11|Data4|
|7|13|Data5|
|8|15|Data6|
|9|17|Data7|
|10|19|Ack|
|11|21|Busy|
|12|23|Paper-Out|
|13|25|Select|
|14|2|Linefeed|
|15|4|Error|
|16|6|Reset|
|17|8|Select-Printer|
|18|10|Ground|
|19|12|Ground|
|20|14|Ground|
|21|16|Ground|
|22|18|Ground|
|23|20|Ground|
|24|22|Ground|
|25|24|Ground|

Tester circuit

Here is a tester circuit we used to validate our controller implementation:
parallel-port-tester.jpg
This circuit was based on the following design from xlentelectronics.
lpttest-schematic.jpg

Conclusions

Parallel ports are a dying breed and I now understand why:
  • Printers, scanners and other peripherals have long moved on to USB or RJ45 connections.
  • It also does not support GPIO use case reliably due to poor hardware and electrical standards, lack of low level APIs and archaic protocols.
For my GPIO use case I'll be looking at a solution based on a USB micro-controller such as Arduino micro hoping it can provide descent performance.

References

 
Last edited:
Back
Top