I own an Epson ET-2850 printer. I often get prints that cancel themselves 1/3 through being printed. I thought that wifi might have been the issue. Unfortunately, the ET-2850 doesn't come with an ethernet port.
The issue is hard to reproduce. I found that around 1/10 of the prints of photos made using an AirPrint on iPhones get cancelled.
ipp-usb is a project that allows you to turn any IPP-capable USB printer into an IPP network printer with capabilities such as mDNS, which make the printer AirPrint-capable. I plugged my printer to a Raspberry Pi and installed ipp-usb, and configured it to listen to 0.0.0.0
rather than localhost so that I could use AirPrint from my iPhone.
Unfortunately, ipp-usb doesn't work with my printer: when selecting the printer in AirPrint from my iPhone, it would would immediately unselect itself. Also, the printer shows as "offline" in AirPrint. Fortunately, I can easily man-in-the-middle the IPP traffic to see what's going on. When running Wireshark from the Pi, I noticed that AirPrint does two consecutive requests using the method Get-Printer-Attributes
:
Something caught my eye: somehow, the printer-uri
was using an unusual hostname: pi.local.
. Although the ending dot is a valid domain name, it is not always well supported.
The response from the Pi is weird, too.
This \002
was suspecious enough. And sure enough, looking at the iPhone logs using Apple Configurator confirmed my doubts:
Exception during reading: Invalid UTF8 bytes
I don't have a solution yet. ipptool -tv ipp://pi.local:60000/ipp/print /usr/share/cups/ipptool/get-printer-attributes.test | bat