This article reconstructs frontline troubleshooting notes from the Blog Garden author 145a: when an HP LaserJet M14-M17 cannot print on Debian, the root cause is not a missing driver. Instead, CUPS selects the wrong HPLIP USB backend. The correct path is
ipp-usb+ IPP Everywhere. The common symptom is that the print job finishes, but the printer does not respond. Keywords: IPP over USB, HPLIP, CUPS.
This article clearly explains why the HP LaserJet M14-M17 cannot print on Debian
When Debian/KDE detects the printer, but the print job shows as “completed” and the device only blinks without producing output, the problem is usually not the PPD file. The real issue is that the wrong communication protocol was selected.
Based on the information from Blog Garden, the HP LaserJet M14-M17 should not use the traditional HPLIP USB path. It should print through the local IPP endpoint exposed by ipp-usb.
| Parameter | Details |
|---|---|
| Device model | HP LaserJet M14-M17 |
| Operating system | Debian (KDE) |
| Print protocol | IPP over USB |
| CUPS driver model | IPP Everywhere (-m everywhere) |
| HPLIP version | 3.22.10 |
| Key daemon | ipp-usb |
| Typical error | Device is busy or in an error state |
| Device URI | ipp://localhost:60000/ipp/print |
| Duplex capability | Duplex=F, no automatic duplex support |
The direct symptom shows that the system detects the device but does not use the correct data path
hp-setup -i can detect the model and match hp-laserjet_m14-m17.ppd, which means device discovery works. But if the test page fails, the problem occurs in the data transmission stage.
sudo hp-setup -i
# HPLIP can detect the printer and try to create a queue
# But the test page may still fail later because the protocol does not match
This step only proves that HPLIP can see the device. It does not prove that HPLIP can drive it correctly.
The ipp-usb service state is the first signal for checking whether you are on the right track
If the printer is powered off, ipp-usb exits automatically in udev mode. So inactive (dead) does not always indicate a fault. It may simply mean that no serviceable device was detected.
systemctl status ipp-usb
lsusb | grep -i hp
# First check whether ipp-usb is running
# Then confirm that the USB layer can see the HP device
Use this command set to confirm that the device is connected, powered on, and already claimed by ipp-usb.
The real root cause is that CUPS selected the wrong HPLIP USB backend
The core issue is this: when KDE/CUPS first added the printer, it automatically bound the queue to an HPLIP USB URI such as hp:/usb/.... But the M14-M17 actually uses Protocol 4, which means IPP over USB, not traditional USB bulk transport.
That means HPLIP sends data to the device as raw print payload, while the device expects standard HTTP/IPP requests. The result is predictable: the printer receives the data, blinks twice, and then discards it.
The ipp-usb debug output is enough to confirm the protocol and capabilities
Several signals in the debug log matter a lot: VID:PID = 03f0:be2a, interface Class 7 / Protocol 4, listening on localhost:60000, and a print request returning 200 OK.
systemctl stop ipp-usb
sudo ipp-usb debug
# Stop the systemd-managed instance and enter debug mode manually
# Check for keywords such as /ipp/print, 200 OK, and Protocol 4
The goal here is not to run the service in debug mode permanently. It is to verify that this printer is actually exposing IPP service through ipp-usb.
The following commands provide the minimum repair path
First let systemd take over ipp-usb again, then delete the wrong queue, and finally recreate the printer with IPP Everywhere.
systemctl start ipp-usb
sudo lpadmin -x HP_LaserJet_M14-M17
sudo lpadmin -p HP_LaserJet_M14-M17 \
-v "ipp://localhost:60000/ipp/print" \
-E \
-m everywhere
# Delete the old HPLIP queue so it no longer uses the wrong hp:/usb URI
# Create a new queue with the local IPP endpoint exposed by ipp-usb
# everywhere tells CUPS to query printer capabilities automatically, without a PPD
These commands complete the switch from a vendor-specific USB backend to a standard IPP path.
The simplest print job can verify that the pipeline is working again
echo "Hello from ipp-usb!" | lp -d HP_LaserJet_M14-M17
# Send a minimal text job to verify the print pipeline
If the printer now produces output, that confirms the low-level protocol, queue URI, and CUPS driver model are all correct.
The missing duplex option is usually a hardware limitation, not a configuration problem
In the DNS-SD TXT records shown by ipp-usb debug, you can see Duplex=F. This means the device does not include an automatic duplex unit, so it is normal for the Linux graphical interface to omit that option.
If Windows appears to support “duplex,” it usually means software-assisted manual duplex: print odd pages first, then flip the paper and print even pages. It is not hardware-based automatic duplex printing.
The protocol difference explains why HPLIP can detect the printer but still fail to print
| USB Protocol Number | Communication Method | Typical Path | Fit |
|---|---|---|---|
| Protocol 1/2 | Traditional USB bulk transport | CUPS/HPLIP → USB bulk → printer | Suitable for older laser printers |
| Protocol 4 | IPP over USB | CUPS → IPP → ipp-usb → USB → printer |
Suitable for newer models such as the M14-M17 |
# Protocol 4 means IPP over USB, not traditional bulk transport
# This is also why you should choose ipp-usb instead of the HPLIP USB backend
Once you understand this table, many HP printer failures that show “job completed” but produce no output become much easier to explain.
The Linux printing stack is moving from vendor drivers to IPP Everywhere
Newer HP devices use IPP over USB. In practice, this turns a USB printer into a network-style service. The client no longer depends on a proprietary protocol. Instead, it uses HTTP/IPP to query capabilities and submit jobs.
That is the value of IPP Everywhere: fewer proprietary drivers, lower cross-distribution compatibility costs, and a unified way for CUPS to negotiate paper, resolution, PDL, and other capabilities.
This image is only an author-declared marker and does not contain technical architecture details, so it does not require technical interpretation.
FAQ
Q1: Why does hp-setup detect the printer but printing still fails?
A: Successful detection only means device discovery works. It does not mean the data path is correct. The M14-M17 requires the IPP path provided by ipp-usb, not the traditional HPLIP USB backend.
Q2: How can I quickly tell whether my HP printer should use ipp-usb?
A: Check ipp-usb debug or related enumeration output for Protocol 4, /ipp/print, or localhost:60000. If those appear, you should usually prefer IPP Everywhere.
Q3: Why is there no duplex printing option on Linux?
A: This is not a missing driver feature. The device declares Duplex=F. That means the model does not support automatic duplex printing and can only do software-assisted manual duplex.
Core summary: Based on the troubleshooting record from Blog Garden author 145a, this article reconstructs the root cause behind the HP LaserJet M14-M17 issue on Debian/KDE where jobs appear to complete but no pages are printed. The system uses the HPLIP USB backend by mistake, while the printer actually depends on IPP over USB. This guide covers the diagnostic method, the CUPS repair commands, the protocol differences, and how to determine duplex capability.