apple / cups

Apple CUPS Sources
https://www.cups.org
Apache License 2.0
1.85k stars 453 forks source link

Canon CP-1300 Driver with CP-1500? #6120

Open fraubush opened 1 year ago

fraubush commented 1 year ago

Hey all,

I've been working on a project with a Raspberry Pi (3B) and a Canon Selphy CP-1500 printer. I've set up the printer with CUPS using the driver for the CP-1300, as there isn't a driver available for the CP-1500 for Linux yet that I've found. I tested the whole setup on my partner's CP-1300 (work printer) first then thought i'd be slick and get the 'upgrade' when I went to purchase my parts list...

With the CP-1300 driver and the CP-1500 printer, I'm able to print a single photo successfully. However, when I try to print a second photo, I'm running into an issue. The printer icon shows up in the top right taskbar indicating a job is processing, but the printer doesn't seem to be receiving the signal for the second job. The printer's display, which usually shows when a job is processing, only reacts for the first print job. If I leave the print job in the queue, I can reboot the Pi, start the job again, and it will print one time again.

I'm still pretty new to this Linux / Pi stuff and I've also looked through the CUPS error log, but I'm not sure what I should be looking for.

Does anyone have any suggestions for what could be going wrong, or what else I could try to troubleshoot this issue?

My backup plan is to just give my partner the 1500 for her work since the paper and ink is interchangeable and I use her 1300 for the project but if I could get this working it would save me a small bit of headache.

Any help would be greatly appreciated!

bwolleb commented 7 months ago

Hi, I am running into the exact same issue, did you find a workaround?

TJay0 commented 6 months ago

Hi guys, I have the same behavioral with my CP1500. I can only print one time with the CP1300 driver. Any ideas how to fix this issue?

bwolleb commented 6 months ago

Yes, don't use the Gutenprint backend, try to add the printer using IPP with the printer connected via wifi. IPP over USB doesn't work for now because of a strange behavior of the firmware (I opened another issue regarding this on the ipp-usb repo, and the workaround will likely be included in the next release).

speachy commented 5 months ago

(Gutenprint dyesub maintainer here)

The problem you're seeing is actually the result of using the stock CUPS usb backend, which doesn't quite work with the CP1500 because Canon still doesn't quite respect USB printer class operation even in their latest printers, requiring intelligent higher-level protocol handshaking to keep the printer happy.

In October of 2022, support was added to Gutenprint's USB backend for the CP1500, and as far as I'm aware, it will JustWork(tm).

However, the CP1500 does work with ipp-usb (or rather, the latest version of ipp-usb, again due to firmware bugs that violate the IPP-USB (and IPP as well) specifications. This is why I still recommend using gutenprint (and not ipp-usb) with these models.

bwolleb commented 5 months ago

Thanks for these clarifications @speachy. So it seems Canon firmware can't work normally with either the normal usb backend, nor IPP over USB without workarounds (they are pushing people to use their own print app I believe).

However, before going the ipp-usb way (and finding that it also requires a workaround) I tried to use the Gutenprint USB backend for the CP1500 (3 weeks ago, using the latest snapshot at that time) and ran into the exact same issue as mentioned by @fraubush: the printer doesn't respond after the first print, due to some missing acknowledgment.

speachy commented 5 months ago

Thanks for these clarifications @speachy. So it seems Canon firmware can't work normally with either the normal usb backend, nor IPP over USB without workarounds (they are pushing people to use their own print app I believe).

That, or standard AirPrint or Mopria clients, which aren't, strictkly speaking, IPP-compliant.

However, before going the ipp-usb way (and finding that it also requires a workaround) I tried to use the Gutenprint USB backend for the CP1500 (3 weeks ago, using the latest snapshot at that time) and ran into the exact same issue as mentioned by @fraubush: the printer doesn't respond after the first print, due to some missing acknowledgment.

That's news to me! Last I checked (which admittedly was a while back) the CP1500 worked properly with multiple sequential prints. So please email me directly, and let's get this bug triaged and properly squashed. (I have a CP1500 but I need to figure out where I stashed it..)

Dad0u commented 3 weeks ago

Hi, i just bought a CP1500 and i am facing the same issue when printing from a Linux PC : the first print comes out as expected but the driver becomes unresponsive when trying to send a second print. I am using the gutenprint 5.3.4 driver of the CP1300 (which i believe is the recommended driver for the CP1500). Sadly, printing through wireless is not an option for me.

If this is of any help, here are the associated lines in /var/log/cups/ :

E [06/May/2024:19:49:17 +0200] [Job 21] Unable to send data to printer.
W [06/May/2024:19:49:18 +0200] [Job 21] Backend usb returned status 1 (failed)
E [06/May/2024:19:49:55 +0200] [CGI] ippfind (PID 17821) stopped with status 2!
E [06/May/2024:19:49:55 +0200] [cups-deviced] PID 17803 (driverless) stopped with status 2!

Any update on the issue ? I know very little about printer drivers but let me know if i can be of any use for testing on my CP1500.

speachy commented 3 weeks ago

The error you're reporting shows that it's using the 'usb' backend as opposed to the 'gutenprint53+usb' backend, which is needed to talk to the printer properly.

So you have two ways forward: Update to the latest Gutenprint snapshot build, or use the 'ipp-usb' stuff instead of Gutenprint. ( https://github.com/OpenPrinting/ipp-usb )

This same answer applies to the original bug reporter too.

Dad0u commented 3 weeks ago

Thank you for your reply. I managed to print reliably using ipp-usb.

I installed the ipp-usb package and added the printer using the address http://127.0.0.1:60000. The Debian wiki was useful to help me set it up (instructions not specific to Debian).