Skip to the content
PCBKitNew board
4 layers91.1 × 53.6 mmParallel2usb, the printed circuit board in 3D

Capture traffic on parallel printer port to USB

Size
91.1 × 53.6 mm
Copper layers
4
Thickness
1.61 mm
Parts
46
Nets
71
Pads
266
Tracks, vias
443, 37
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
31 Dec 2022
Updated
5 Apr 2024

Overview

Parallel2usb is an open-source printed circuit board by tomverbeure, from the tomverbeure/fake_parallel_printer repository on GitHub, published under the BSD-2-Clause licence. It is a 4-layer board of 91.1 × 53.6 mm with 46 parts on 71 nets, routed with 443 tracks and 37 vias.

Its parts include 19 capacitors, 19 resistors, 3 connectors and 2 ICs. It belongs with the RP2040 boards of this library.

README

README.md

Fake Parallel Printer

This repo contains the design files for the Fake Printer tool: a hardware dongle with a DB-25 connector that plugs into the parallel printer port that was available on nearly all computers and equipment in the eighties and nineties.

Check out this blog post for a detailed description of the design, and build and usage instructions:

There are 2 versions of the PCB. Revision 2 only uses 2 layers and doesn't stick out as much out of the device in which is plugged in. It's probably the best one to build. The firmware is designed to work for both PCB versions.

PCB v1

3D render of PCB v1

PCB v2

WARNING: v2 hasn't been tested!!!

3D render of PCB v2

A Digikey cart with all the components to populate version 2 of the PCB can be found here. Not all resistors and capacitor must be populated though. Check out the blog post for details.

Firmware

parallel2usb_hd_on.uf2 contains the compiled firmware for the Raspberry Pico.

To make changes and recompile yourself:

  • set the PICO_SDK environment variable to the path of your locally installed Raspberry Pico SDK.

  • Build the code:

    text
    mkdir -p ./c/build
    cd ./c/build
    cmake ..
    make
  • If all goes well, a new parallel2usb.uf2 will be waiting in ./c/build/parallel2usb.

Capturing Parallel Port Data

  • Plug in the board into the host with the parallel port.
  • Connect your PC to the board with a USB cable.
  • Run python3 ./fake_printer.py -p <USB serial device> (Use -h for more options.)
  • Issue a print operation on the host.
  • A new file will be generated for each print operation

Converting a Parallel Port Captured File

  • PCL: use Ghostscript

    ~/tools/ghostpcl-10.0.0-linux-x86_64/gpcl6-1000-linux-x86_64 -dNOPAUSE -sOutputFile=output.png -sDEVICE=png256 -g8000x8000 -r600x600 print_cap.pcl

  • Epson ESC/P: use PrinterToPDF

    /opt/printerToPDF/bin/printerToPDF -o output -f /opt/printerToPDF/lib/PrinterToPDF/font2/Epson-Standard.C16 print_cap.esc_p

  • Encapsulated Postscript: use Ghostscript and ImageMagick to add a background if necessary. Note that some scopes (TDS 684B) may emit a few chunks of comments that fake_printer.py will get with multiple-second delays, and they need to be concatenated together to form a valid eps file.

    gs -dSAFER -dBATCH -dNOPAUSE -dEPSCrop -sDEVICE=pngalpha -r300 -sOutputFile=ph1-zoomout.png ph1-zoomout.eps; convert -background black -alpha remove -alpha off ph1-zoomout.png ph1-zoomout.png

Conversions

  • HP Infinium
text
./fake_printer.py --port=/dev/ttyACM0 -t 2 -v --prefix=hp_osc_ -s eps
inkscape -f ./hp_osc_0.eps -w 1580 -y=255 -e hp_osc_0.png
convert hp_osc_0.png -crop 1294x971+142+80 hp_osc_0_cropped.png
  • Advantest R3273

    • Config printer: Config -> Copy Config -> Printer:

      Advantest R3273 printer config screen

    • To print: Copy

    • To convert:

text
./fake_printer.py --port=/dev/ttyACM0 -t 2 -v --prefix=r3273_ -s pcl
~/tools/ghostpcl-10.0.0-linux-x86_64/gpcl6-1000-linux-x86_64 -dNOPAUSE -sOutputFile=test.png -sDEVICE=png256 -g8000x8000 -r600x600 r3273_0.pcl
convert test.png -filter point -resize 2000  test2.png
convert test2.png -crop 640x480+315+94 test3.png

Parts

46
QtyValueFootprintReferences
17100pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C2, C3, C4, C5, C6, C7, C8, C10, C11, C12, C13, C14, C15, C16, C17 +1
1722Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R3, R4, R5, R6, R7, R8, R10, R11, R12, R13, R14, R15, R16, R17 +1
24K7Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR18, R19
2MountingHoleMountingHole:MountingHole_2.7mm_M2.5H1, H2
1100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC18
122uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC19
174LVC161284DLPackage_SO:SSOP-48_7.5x15.9mm_P0.635mmU1
1Conn_01x03_MaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1Conn_01x20Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ2
1DB25_Male_MountingHolesConnector_Dsub:DSUB-25_Male_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmJ1
1PicoRPi_Pico:RPi_Pico_SMD_THU2

The 45 most common of 46 parts.

Questions

How big is the Parallel2usb PCB?

It measures 91.1 × 53.6 mm and has 4 copper layers, 1.61 mm thick.

What parts does the Parallel2usb use?

46 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Parallel2usb KiCad files?

From the tomverbeure/fake_parallel_printer repository on GitHub, at the commit this page was made from: the board is parallel2usb_v1/parallel2usb.kicad_pcb and its schematic parallel2usb_v1/KiCad-RP-Pico/Test/Test.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Parallel2usb design in my own project?

Its repository publishes it under the BSD-2-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from tomverbeure/fake_parallel_printer

1
  • 2 layers45.1 × 53.6 mmParallel2usb, the printed circuit board in 3D

    Parallel2usb

    tomverbeure/fake_parallel_printer

    Capture traffic on parallel printer port to USB

    44 parts95BSD-2-Clause

Similar boards

  • 4 layers48 × 80 mmBoard latest, the printed circuit board in 3D

    Board latest

    dennisss/dacha

    Monorepo for awesome tools/projects/libraries

    46 parts397Apache-2.0
  • 4 layers50 × 42 mmBeam Offset Switch, the printed circuit board in 3D

    Beam Offset Switch

    nanographs/Open-Beam-Interface

    Just what you need to control the beam and get an image.

    46 parts371
  • 4 layers53.3 × 34.5 mmRaspberryPiSBC, the printed circuit board in 3D

    RaspberryPiSBC

    Architeuthis-Flux/JumperlessV5

    The next generation jumperless breadboard

    46 parts332
  • 4 layers105 × 47 mmPdu, the printed circuit board in 3D

    Pdu

    azonenberg/latentred

    Open hardware 48x 1000baseT + 2x 25G SFP28 Ethernet switch

    46 parts36BSD-3-Clause
  • 4 layers44.5 × 22.5 mmIkea fyrtur, the printed circuit board in 3D

    Ikea fyrtur

    mjuhanne/ikea-fyrtur

    ESP8266 WiFi module PCB for Ikea Fyrtur blinds

    46 parts23MIT
  • 4 layers41.8 × 14.8 mmNrf52811 usb, the printed circuit board in 3D

    Nrf52811 usb

    alvarop/chaac

    This is a work in progress for a wireless weather station project.

    46 parts21MIT
  • 4 layers50.8 × 114.3 mmRelais rs485, the printed circuit board in 3D

    Relais rs485

    gkiefer/home2l

    The Home2Ls - Smart Tools for a Private Home

    46 parts21
  • 4 layers58.8 × 29 mmSparkAltBatteryBoardV1, the printed circuit board in 3D

    SparkAltBatteryBoardV1

    fahreddinaykut/SparkAltBatteryBoard

    A custom research-oriented battery interface and telemetry board for the DJI Spark platform, built around a standard 3S LiPo battery pack instead of the discontinued, hard-to-find OEM Smart Battery.

    46 parts20