[Tom Verbeure] recently found himself lamenting the need to take screen grabs from an Advantest R3273 spectrum analyzer with a phone camera, as the older gear requires you to either grab tables of data over an expensive GPIB interface card, or print them to paper. Then he realized, why not make a simple printer port add-on that looks like a printer, but sends the data over USB as a serial stream?
On the hardware side, the custom PCB (KiCAD project) is based on the Raspberry Pi Pico. Obvious form factor issues aside ([Tom] did revise the PCB to make it smaller) this is a shrewd move, as this is not a critical-path gadget so using the Pico as a USB-to-thing solution is a cost-effective way to get something working with minimal risk. One interesting design point was the use of the 74LVC161284 special function bus interface that handles the 5 V tolerance that the RP2040 lacks, whilst making the project compliant with IEEE-1284 — useful for the fussier instruments.
Using the service manual of the Sharp AP-PK11 copier/printer as a reference, [Tom] again, shows how to correctly use the chip, minimizing the design effort and scope for error. The complete project, with preliminary firmware and everything needed to build this thing, can be found on the project GitHub page. [Tom] does add a warning however that this project is still being worked on so adopters might wish to bear that in mind.
If you don’t own such fancy bench instrumentation, but grabbing screenshots from devices that don’t normally support it, is more your thing, then how about a tool to grab Game Boy screenshots?
35 thoughts on “Building A Fake Printer To Grab Screenshots Off The Parallel Port”
A great idea.
As it is a USB device, does it write to a USB drive?
It doesn’t write to a USB drive but uses a USB serial port to send the data to the PC for post-processing. The Pico only has 2MB of flash storage and some storage formats (e.g. color PCL) require 1.4MB of storage for just 1 screenshot.
The Pico declares itself as a USB serial device. It’s much easier that way: all backend processing is done by the PC.
The Pico only has 2MB of flash and a signle color PCL screenshot requires 1.4MB already, so it wouldn’t be very practical.
It doesn’t, but it could be that way if someone wrote the code and added the right glue to the board.
There’s projects out there that use the RP2040’s PIO modes add another USB interface for (eg) using thumb drives with a Pico.
You don’t even need PIO for that. The standard USB port a Pico can be made to look like a USB mass storage device instead of the default USB serial device.
But I didn’t do it this way for other reasons. (see above.)
why bother with schmancy hardware at all? just print to file, then use a spreadsheet to convert the GPL (graphics printer language) to bitmap. GPL is quite easy to interpret
If you want to print to a file, you need a storage medium to print to?
Or… “print to file”…
I’m sure if you could describe how to do that on the Advantest R3273 spectrum analyzer, Tom would be thrilled to hear about it!
Screenshot to floppy drive is supported by the Advantest and the Tek scope. But the floppy drive turned out to be broken for both (as I found after spending ~$40 on a USB floppy drive and disks.)
I sure would like to know how to screenshot to flippy on my Tek 2212, which has no floppy drive.
That Tek 2212 has a DB-25 printer port and has drivers for a bunch of different formats: HPGL, Epson FX, Deskjet/Thinkjet/Laserjet which are all PCL compatible printers.
The fake printer port should work fine with it.
The R3272 (and my TDS 420A) have a floppy drive that can be used to save the screenshot to a file. I tried to use them but both didn’t work, probably after 2 decades of not being used…
Did you consider the floppy drive emulators that are available? Data is written to a usb stick that plugs in the front.
No. I didn’t feel like opening up the R3272, and you’re never totally sure if they’re compatible.
But also: the parallel printer port solution is IMO easier to use. You rarely record just 1 screenshot at a time. When you have a USB stick, you need to keep a log of which file you took when. With this tool, I get the image immediately on my PC and then I rename the file right away with a name that makes sense.
As written in the introduction of the blog post, the floppy drives of both my Advantest R3273 and Tek TDS 420A didn’t work.
Also, the total build cost for the parallel port grabber is lower than a USB floppy drive + a pack of floppy disks.
Oh please, tell me how to Print to File from a Fluke Medtester 5000 because that would save me sooo much time and effort.
Looking at the user manual, a Medtester 5000C has a DB-25 parallel port. You should be able to capture the print output just fine. The manual doesn’t say what kind of format is printer to though, but it shouldn’t be too hard to figure out.
Nice project! I almost regret not having a device that has a printer port that I’d need to capture! My Rigol oscilloscope can save screen captures to USB drive just like Toms newer ‘scope. I used its ethernet to grab the raw captured data to process floppy disk flux transitions.
Ha! I literally just mentioned the potential for a device like this to “print” from Cassette(less) Basic on an IBM PC XT in a new video of mine,
Gotta make one!
That reminds me of the DOS game “The Last Half of Darkness”.
Part #2 plays in a dungeon and there’s a useful map feature.
However: It requires a physical printer to print to.
Years ago, I used Virtual PC 2004/2007 to interface the emulated parallel port with a suitable printer (remember line feed etc? Modern printers nolonger print line by line. They print batch wise.)
Tip: If you ever implement something like that, please consider supporting plotter languages rather than printer languages.
Epson FX, Star LC or HPGL (pre-PCL) were popular in the early 80s, for example.
Many late DOS programs can handle their format still, even as an interchange format.
So an HPGL printer driver (print to file) served as an export feature, for example, long before PDF printers were a thing.
What a coincidence! I have some boards on the way for a serial -> parallel adapter for receipt printers. I’m using an Arduino Micro, originally because of its USB capability, but I actually ended up ditching that idea because of USB grounding issues…
AKA Snappy Video Snapshot?
Reminds me of the Fujinet project for the old Atari computer – the hardware dongle emulates a printer, but instead it just creates a PDF that you can download on a web page.
This is brilliant! Excellent work.
Ivhad an other kind of dummy printer. With a push of button it deleted the print queue.
For centronics to usb I had a commercial device as well as usb to centronics.
This is a great project by itself and a great hw platform to implement IEEE-1284 devices, for example: a zip drive emulator or a network card.
Parallel port? What’s a parallel port? LOL!
It’d be nice to have the same gadget as a hardware means to circumvent PDF DRM (i.e with protections set to “you can view and print but cannot save as file”). One would print to the fake printer that has a USB stick attached and the output PDF would be saved there :P
Or just open the PDF with Okular and have it set to ignore DRM.
This is pretty cool. I actually did some of the initial “can I convert a printer data stream to a PDF or something” research myself recently, so pretty impressed to see this. Definitely considering building one (let’s be honest MOQ means I’ll build 5)
I still have 3 blank PCBs left. Shoot me a direct message on Twitter and can you have one of them.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)