Semirocket Printer

← Back


Semirocket Printer (SrP for short) is a project of a free, DIY 2D (inkjet) printer. It uses widely and cheaply available ink cartridges with integrated print heads. The goal of SrP is to be a fully usable substitute of home colour inkjet printers. At least with Linux (I have no ambitions to write drivers for Windows :-P but you’re welcome to help :·)).

Imagine! No artificial restrictions on inks you are allowed to use. No planned obsolescence. Full documentation (if something breaks down, you can repair it!). Hackable and extendable (Ethernet? WiFi? Printing from USB disks or SD cards? All is possible!).

How it all started

One day, my printer broke down. It was just a single part, but the most crucial one: a printing head. It clogged. This wasn’t one of those cheap printers so I wanted to somehow fix it. But, pitfall #1: I didn’t find any manuals or information that would help. Pitfall #2: even if I had some manual, there are no spare parts one could buy.

So I came to a conclusion: to ditch conventional printers and to go and build my own—just like people build 3D printers. But, pitfall #3: there is no such project as a DIY 2D printer. Ah… –_–

Long story short: I started doing lots of research and strengthened my decission to start such a project. I found a suitable ink cartridge with an integrated print head, bought a second-hand printer for it and started reverse engineering it to find out how exactly the printer prints with the ink cartridge – what signals it sends, what voltages it uses, etc. So, that’s it. :·)

Current Status


I have mostly reverse-engineered an ink cartridge HP 15 (i.e., black). I have its pinout and used voltages on print (hopefully valid ones).

To do: [if I get the printer to work again] reverse-engineer also timing of signals. Afterwards all the same for HP 17 (i.e., tri-colour) for which I am unaware of any documentation whatsoever (not even the pinout). Build a circuit to obtain the voltages I need to drive the cartridge. Design a cartridge holder and a PCB for it.

Issues: the HP printer often refuses to do anything, it just blinks (signalling that the cartridge is "malfunctioning"), although it worked few moments ago and nothing changed or moved in the meantime. This is probably due to bad connections inside of a breadboard. The latest issue is when it doesn’t blink, but also doesn’t do anything else. so far I didn’t manage to create an ink drop. There is wide range of possible causes: faulty/fried nozzles, wrong voltages/pulses, bad testing circuit, erroneous software, … (an oscilloscope would help quite a lot).

State of the original HP printer: it’s out of order. No more reverse engineering. :·(


I’m awaiting parts to start designing a PCB to connect the cartridge to (without any need to solder wires to the cartridge, which is current status). This PCB will be placed to a 3D model of a cartridge holder (or a carriage) that is also yet to be designed. I have already measured the dimensions of both cartridges so my next step is to design a 3D model of the static cartridge holder (possibly with a stand).


Currently, I have an AVR firmware for testing the cartridge and finding out pulse width. Unfortunately, it’s not working. I need to add LCD output at least. [source code]


To do: choose a licence for all this. Any suggestions?

How to help

You can either join with your reverse engineering efforts (I can help you figure out how), improve the construction, 3D parts, circuits or even software/algorithms. Join my IRC to get in touch!

Last updated: 2018-06-18