LPT printer emulator

ESP32 virtual parallel port printer

ESP32 devboard, connected with wires to a LPT breakout ESP32 devboard, wires to a LPT breakout, different angle

What is it?

Old computers, machines and test equipment often expect printers to be directly connected via a parallel port / LPT / IEEE 1284. In the modern day, this is impractical. Having a single printer for each device is expensive, takes up a lot of space and they need to be in physical proximity.
It might also be preferrable to get a virtual printout as a .pdf file instead of a physical piece of paper.

With this firmware, a regular ESP32 devboard can be connected directly to a parallel port and will act like / emulate a physical printer. The resulting print jobs/data are then sent over WiFi to any TCP/IP socket.

This socket is directly compatible with the LPR interface on many network printers, so many of these ESP32 emulators can be configured to work with a single real network printer. Alternatively, CUPS can be configured to receive data from such a socket and generate PDF files (or forward the job to a different, local printer).

This project has been used to print from an IBM ThinkPad T41, an Abit Socket 7 mainboard and an airplane wheel vibration calibrator.

In operation

This video shows a ThinkPad T41 in the BIOS setup menu. Pressing the “Print Screen” key in text-mode actually does what the name implies and will print the current screen contents over the LPT1 interface.
CUPS then receives the printed data and converts it into a PDF file in real time.