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

Capture traffic on parallel printer port to USB

Size
45.1 × 53.6 mm
Copper layers
2
Thickness
0.3 mm
Parts
44
Nets
71
Pads
263
Tracks, vias
502, 22
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 2-layer board of 45.1 × 53.6 mm with 44 parts on 71 nets, routed with 502 tracks and 22 vias.

Its parts include 20 capacitors, 19 resistors, 2 ICs and 2 connectors. 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

44
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
2100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC18, C20
24K7Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR18, R19
122uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC19
174LVC161284DLPackage_SO:SSOP-48_7.5x15.9mm_P0.635mmU1
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 43 most common of 44 parts.

Questions

How big is the Parallel2usb PCB?

It measures 45.1 × 53.6 mm and has 2 copper layers, 0.3 mm thick.

What parts does the Parallel2usb use?

44 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_v2/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
  • 4 layers91.1 × 53.6 mmParallel2usb, the printed circuit board in 3D

    Parallel2usb

    tomverbeure/fake_parallel_printer

    Capture traffic on parallel printer port to USB

    46 parts95BSD-2-Clause

Similar boards

  • 2 layers78 × 60 mmIce viz, the printed circuit board in 3D

    Ice viz

    muni-works/vcad

    BRep CAD kernel in Rust/WASM

    44 parts442Apache-2.0
  • 2 layers115 × 14.5 mmUFC Function Select, the printed circuit board in 3D

    UFC Function Select

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    44 parts431
  • 2 layers37.7 × 20 mmCandleLight, the printed circuit board in 3D

    CandleLight

    HubertD/candleLight

    stm32f0 usb can adapter (KiCAD)

    44 parts400
  • 2 layers88.9 × 88.4 mmTeensypi v91, the printed circuit board in 3D

    Teensypi v91

    simondlevy/Hackflight

    Minimalist flight-control toolkit for makers

    44 parts334GPL-3.0
  • 2 layers125 × 98 mm3-in-1, the printed circuit board in 3D

    3-in-1

    mudmin/AnotherMaker

    This is where I will store code snippets for AnotherMaker Videos

    44 parts258
  • 2 layers65 × 56.5 mmRPiG3iMac, the printed circuit board in 3D

    RPiG3iMac

    qbancoffee/imac_g3_ivad_board_init

    iMac G3 IVAD board initialization with an arduino

    44 parts240LGPL-3.0
  • 2 layers54.4 × 49.3 mmFx3 tn20k adapter, the printed circuit board in 3D

    Fx3 tn20k adapter

    Stefan-Olt/MISRC

    MISRC Is a multi channel RF capture device for FM RF, S-Video, CVBS RAW capture and anything else, but intended and supported for the decode family of projects vhs-decode, ld-decode, hifi-decode.

    44 parts236CC-BY-4.0
  • 2 layers250 × 32 mmPsu, the printed circuit board in 3D

    Psu

    shmoergh/moduleur

    Fully analog DIY-friendly modular synth

    44 parts222