Why Trying to Make My HP Laser Printer Work Over the Network Was a Terrible Idea (and What I Learned)
Or: How I Fought a Printer and the Printer Won
I just wanted to print.
Simple, right?
Little did I know I was about to fall into the deepest Linux rabbit hole of my life.
The Setup
I had a HP Laser 107a — cheap, compact, perfect for my light office needs.
And I had a spare Raspberry Pi sitting around.
My thinking was simple:
- Connect printer via USB to the Pi ✅
- Run CUPS server on the Pi ✅
- Share printer over the network ✅
- Live happily ever after ✅
Easy, right?
WRONG.
The First Attempt: CUPS on Raspberry Pi
I installed CUPS on Raspberry Pi, plugged the printer in via USB,
and expected it to just appear in the web interface.
It didn't.
After some digging, I realized:
- HP Laser 107a is a GDI-only printer (needs special driver).
- HP only provides drivers for x86 (Intel/AMD) platforms — NOT ARM (like Raspberry Pi).
✅ No ARM drivers
✅ No rastertospl filter
✅ No love for Raspberry Pi
At that moment, I had two choices:
- Give up
- Or find a way to "move" the USB printer to another machine.
The Second Attempt: USBIP and Madness
I discovered USBIP — a Linux technology to share USB devices over network.
Idea:
- Raspberry Pi keeps USB cable connection to the printer
- My PC (running CUPS) connects over network as if the printer was local
Sounds smart, right?
Well, in theory...
In practice:
- Kernel modules (vhci-hcd) needed.
- Permissions on
/dev/bus/usb/...constantly broke. - CUPS couldn't find the printer properly.
- Device files randomly disappeared or reattached.
- USBIP over Docker containers needed
--privilegedmode, USB forwarding, and custom backends.
I spent hours writing fake CUPS backends, setting up socket listeners,
and trying to "trick" CUPS into seeing the USBIP device as a real printer.
VirtualHere: Almost a Solution
Then I found VirtualHere — a user-space USB over network tool.
Way easier than USBIP!
But still:
- Needed manual IP adding (auto-discovery blocked by firewalls)
- Needed running client software outside Docker
- Needed careful device mapping into containers
At this point, it felt like every solution created 2 new problems.
The Realization
Sometimes, the smartest move is to stop fighting the hardware.
Instead of wasting more days:
✅ I bought a long USB extension cable.
✅ Plugged the printer directly into my PC.
✅ Installed the HP driver normally.
✅ Printed happily.
Zero Docker.
Zero Raspberry Pi.
Zero USBIP.
Zero VirtualHere.
Peace.
What I Learned
- HP’s cheap printers are not "real" printers — they are Windows-GDI boxes pretending.
- ARM platforms (like Raspberry Pi) get no love for exotic USB printers.
- USBIP is an amazing but overcomplicated technology for home use.
- Brother printers have a massive fanbase in Linux communities for a reason.
- Sometimes a €10 USB cable solves €1000 of engineering pain.
My Recommendations
If you are building a home or office printing setup:
✅ Buy a real network printer (with built-in Ethernet/Wi-Fi + IPP support).
✅ Avoid cheap GDI-only HP printers if you want Linux happiness.
✅ If you must keep a GDI printer, plug it directly into a real PC.
✅ Value your time more than saving €10 on hardware.
Closing Thought
I don't regret this experience.
It taught me more about Linux, CUPS, USB, and network printing internals than any guide could.
But if I could go back, I'd slap the printer out of my own hands and whisper:
"Spend €50 more. Save 50 hours of your life."
TL;DR:
- Printing is easy.
- Until you buy the wrong printer.
😂🖨️🔥