OK, this is not really solved, but it works. I think the problem is really in two parts: first, CUPS finding the printer, and second: the driver. I added an entry in my configuration.nix
file to further populate my /etc/hosts
, equating the printer’s hostname with its local IP address; that change may have helped eliminate CUPS not being able to find the printer:
networking.hosts = {
"192.168.0.182" = [ "Canon7603ea.local" "Canon7603ea" ];
};
But to be clear, the connection chosen by CUPS by default (the one it finds on its own, not specified by me),
dnssd://Canon%20MF440%20Series._ipp._tcp.local/?uuid=6d4ff0ce-6b11-11d8-8020-00bbc17603ea
works fine[1]: it was apparently the driver which was the issue. Even when CUPS successfully [sic] completed jobs, there was never any printer output (and no record of rejection in the printer’s own log file). It wasn’t until I changed the driver, per the suggestion from @peterhoeg about IPP Everywhere™
in this post, then I got the thing to actually print. So I selected the default printer that CUPS
finds, but then selected the IPP Print Everywhere
driver (actually the first on the Canon
list, and not the canon-cups-ufr2
driver listed for this model). One caveat: CUPS
test pages won’t print correctly (there will be some output, but not pretty) – as far as CUPS
is concerned, this is just a Local Raw Printer
with very few, if any features. But it does print, finally.
Hope this saves someone else some time — I wasted many hours on this.
Edit added: Just to be clear, this isn’t really a permanent solution: it only gives you printing via lpr <filename>
, and this printer won’t show up in many applications (default printer will be “print_to_file”).
[1] But only as a raw printer in conjunction with lpr
– see note above.