When working with CUPS (Common UNIX Printing System) on Debian stable, you might encounter this specific error pattern:
D [01/Sep/2017:18:21:29 +0200] cupsdSetBusyState: newbusy="Not busy", busy="Active clients"
D [01/Sep/2017:18:21:29 +0200] [Client 33] HTTP_STATE_WAITING Closing for error 32 (Broken pipe)
D [01/Sep/2017:18:21:29 +0200] [Client 33] Closing connection.
The key symptoms are:
- Print jobs successfully reach the CUPS server
- No physical output from the printer
- Direct printing from the server works fine
- Error 32 (Broken pipe) appears in logs
The typical setup involves:
# Server-side configuration (print server)
socket://ip:9100
# Client-side configuration
ipp://IP/printers/printer1
As noted in the original case, changing the printer driver resolved the issue. Here's how to approach this systematically:
# List available drivers
lpinfo -m
# Modify printer with new driver
lpadmin -p printer1 -m drivername.ppd
# Alternative approach (using web interface)
sudo systemctl restart cups
http://localhost:631
If driver changes don't resolve the issue, consider these approaches:
# Check raw socket connection
telnet printer_ip 9100
# Verify CUPS error logs
tail -f /var/log/cups/error_log
# Test raw printing
echo "TEST" | lpr -P printer1 -o raw
# Alternative connection methods
lpadmin -p printer1 -v ipp://printer_ip/ipp/port1 -m everywhere
The error 32 (Broken pipe) typically indicates communication interruption. Some solutions include:
- Add
ErrorPolicy retry-job
in /etc/cups/printers.conf - Increase timeout values in /etc/cups/cupsd.conf:
Timeout 300 JobTimeout 1800
- Check for network MTU issues with:
ping -s 1472 -M do printer_ip
For Epson printers (like the hp1536dnf mentioned):
# Install proprietary drivers if needed
wget -O epson.deb https://download.ebz.epson.net/dsc/du/02/DriverDownloadInfo.do?LG2=EN
sudo dpkg -i epson.deb
sudo apt-get install -f
# Alternative PPD location
lpadmin -p epson-printer -m /usr/share/ppd/epson-201401w.ppd
When working with CUPS (Common Unix Printing System) on Debian, you might encounter this cryptic error while trying to print through a network-shared printer:
D [01/Sep/2017:18:21:29 +0200] cupsdSetBusyState: newbusy="Not busy", busy="Active clients"
D [01/Sep/2017:18:21:29 +0200] [Client 33] HTTP_STATE_WAITING Closing for error 32 (Broken pipe)
D [01/Sep/2017:18:21:29 +0200] [Client 33] Closing connection.
The server-side printer was configured with:
socket://ip:9100
While Linux clients were attempting to print through:
ipp://IP/printers/printer1
The "Broken pipe" error (EPIPE/Error 32) typically occurs when the client terminates the connection prematurely before CUPS can complete the print job. In this specific case, the issue stemmed from driver incompatibility between the client and server configurations.
Before troubleshooting, always verify the printer works directly from the server:
lp -d printer1 testfile.txt
The resolution involved changing the printer driver. Here's how to properly reconfigure the printer:
# Remove existing printer
lpadmin -x printer1
# Readd with correct driver (example using EPSON driver)
lpadmin -p printer1 -v socket://ip:9100 -m drv:///epson/epson-escpr2.ppd -E
# Verify new configuration
lpstat -t
For some network printers, setting up a raw queue works better:
lpadmin -p printer1_raw -v socket://ip:9100 -m raw -E
When facing similar issues, these commands help diagnose CUPS problems:
# Check CUPS error log
tail -f /var/log/cups/error_log
# List all available drivers
lpinfo -m
# Check printer status
cupsenable printer1
lpstat -o
Ensure proper network connectivity between clients and print server:
# Test raw socket connection
nc -zv printer_ip 9100
# Verify ipp port accessibility
nmap -p 631 printer_ip