Wow, I cannot believe it - my GoPiGo3 robot can print (via WiFi) to my 10 year old Canon MX860 network printer!
Canon printers use/used a custom LAN service discovery protocol (bjnp), so the initial install of CUPS could see the printer but could not print to it. I had to install the custom protocol, which luckily is already packaged and available.
Here is how I managed it:
Printer Setup On Raspberry Pi
$ sudo apt-get install cups
$ sudo usermod -a -G lpadmin pi
$ sudo apt-get install cups-backend-bjnp
$ sudo service cups restart
browse to https://localhost:631
Advanced->Proceed
(Bookmark)
Administration->Add Printer
sign in pi:xxxxx (pi password for the machine)
Click on Discovered Network Printers: Canon_MX860
Continue
Continue
Model: Canon MX860 series - CUPS+Gutenprint v5.2.11 (en)
Add Printer
Change Default Options: Duplex Print-LongEdge
Click Set Default Options
Click Administration->Set As Server Default
Printers->Maintenance->Print Test Page !!!
Get printer status:
$ lpstat -p -d
pi@Carl:~/Carl/Examples/imu/di_BNO055 $ lpstat -p -d
printer Canon_MX860_series is idle. enabled since Sun 17 May 2020 09:55:22 AM EDT
system default destination: Canon_MX860_series
Print a file:
$ lp resetIMU.py