karelvo

Using an unsupported HP printer on macOS

published on 2025-03-23

In the year 2025, printers still suck. I have a HP LaserJet Pro CP1025nw Color Printer model (quite a mouthful) that has never vibed with me, but I also never considered to buy another model. It came out in 2010, has been nagging about its toners other than the black one being depleted since 2012, and has caused me more than a few headaches.

It needs a dedicated printing app on Windows, and when I used Arch Linux as my main driver I had to go through the process of installing foo2zjs and its specific driver. In fear of being labeled a sadomasochist, my latest CP1025-nw headache came when I switched to using macOS as my operating system of choice. According to the official documentation, the latest supported version for my printer is macOS 10.14; as of writing, 15.3 is the latest.

In other words: there was no way my MacBook Pro M3 was ever going to talk to my printer, unless I got creative. So I did.

My research led me to believe that the only reason why my MacBook did not support my printer, is because it was not compatible with the latest driver. I tried configuring it via the HP Smart app, the HP Utility tool (both GUI and CLI), and via CUPS. Sidenote: how is a common device such as a printer not plug-and-play at this point? Baffling.

In my CUPS interface, I could see the printer, and even configure it - but when attempting to print, all jobs failed (including when trying giving it the exact same drivers I was giving it on my Linux machine). In other words: my macOS new perfectly well what my printer was and even suggested setting it up, but fails to print. It seemed more a question of ‘not wanting to working’ than ‘not being able to work’.

Because I knew how to configure it on Linux (I did it multiple times), I decided to run a Linux VM and try all the same tricks. Using the open-source UTM proved to be enough for my use-case; all I needed was to run a barebones VM, ideally with a graphical environment to make it a bit easier to troubleshoot. Don’t tell my bosses - I literally work for competitor Parallels, which I am obliged to say can do a whole lot more (and is mostly optimized for emulating Windows) that I didn’t need for this dead easy job.

After setting up Debian 11 with XFCE from their gallery (with the default settings, this took only a single click), I proceded with the following steps:

Then, I disconnected the VM from the network as I did not need anything else; my plan was to just use it to accept print requests from my main OS.

Setting up my printer was a breeze via CUPS, although I must specify to allow USB passthrough for it to recognize my printer.

After configuring it with the driver I downloaded earlier, I prroceded to print a test page (something which I was never able to do) - and lo and behold, it worked!

To make things easy, I used UTM's shared folder capability and assigned a dedicated folder in my macOS’ home directory for passing it documents. What I do now is simply dragging whatever file I want to print in there, boot my VM and print it. The entire process takes me about 30 seconds more than it would if my printer were compatible with my OS, but this method is fine because I don’t need to print that often.

Here are some things I could do to further optimise and/or automate the process, but following the xkcd rule it doesn’t seem to be worth it for now:

All of the above options would also allow me to use a much slimmer VM that has only the barebones necessities for my printing needs.