# driverless CUPS and Canon printer [RESOLVED]

## marinheiro

I have a Canon PIXMA G6050. It once worked with the Canon drivers, but for some unknown reason stopped doing so. So, I'm trying to set it up with the CUPS driverless settings. 

To do that I:

1. Enabled Bonjour on the printer. The single option was to give it a name, which is 'mycanon'.

2. Enable ipp on the printer. No options: enabled or disabled only

Then recompiled CUPS with the zeroconf use flag on and restarted CUPS, deleted all existing printers, and searched for new printers. The menu gives me 3 options:

 *Quote:*   

> mycanon (Canon G6000 series)
> 
> Canon G6000 series (driverless) (Canon G6000 series)
> 
> Canon G6000 series 1.020 (Canon G6000 series)

 

The first option gives me the connection 

```
dnssd://mycanon._ipp._tcp.local/?uuid=00000000-0000-1000-8000-001865030e5f
```

. I select the model as 

```
G6000 series - IPP Everywhere
```

. The CUPS error log shows 

```
[CGI] Unable to connect to \"000000774FA7.local:631\": Name or service not known
```

The second option gives me the connection 

```
ipps://mycanon._ipps._tcp.local/
```

 and I select 

```
current make and model - IPP everywhere
```

, but the error message is the same.

The third option gives me the connection 

```
socket://192.168.0.63
```

 (this is the correct IP address). I select  the driver as 

```
Canon G6000 series, driverless, cups-filters 1.2.87(en)
```

 and get the error: 

```
[CGI] Unable to create PPD file: Could not poll sufficient capability info from the printer (ipps://mycanon._ipps._tcp.local/, ipps://000000774FA7.local:631/ipp/print) via IPP!
```

.

If with the third option I select instead the standard G6000 series driver, I get my original error that pushed me into trying to get driverless to work: after a lot of communication with the printer, getting print levels and so forth, CUPS fails to actually print with the error message 

```
 [rastertocanonij] pstocanonij write error,32.
```

.

I have no idea where to go from here. I don't know where the mysterious 00000..0074A7.local address is being generated or how to override it (the ideal solution if CUPS is dropping all filters in the future), or failing that how to fix pstocanonij.

Thanks for any advice

Graham

PS lpstat -le

```

mycanon network none ipps://applecanonn._ipps._tcp.local/

Canon_G6000_series_1.020 permanent ipp://localhost/printers/Canon_G6000_series_1.020 socket://192.168.0.63

```

Last edited by marinheiro on Wed Oct 20, 2021 10:31 am; edited 1 time in total

----------

## user

Hi marinheiro

CUPS and sisters are always fun.

My usuable routine without "zeroconf" is one time cups printer configuation via IPP protocol.

1) verify IPP is supported and active on printer (ipptool from net-print/cups)

# ipptool -tv ipp://<printer-ip>:631/ get-printer-attributes.test

# ipptool -tv ipp://<printer-ip>:631/ get-printer-attributes-2.0.test

(not supported by printers with older IPP versions)

2) manual printer add ("everywhere" means "driverless" in CUPS terminology)

# lpadmin -E -p <desirable-cups-printer-name> -v ipp://<printer-ip>:631/binary_p1 -m everywhere

(/binary_p1 may differ by each printer manufacturer)

3) verify working CUPS printer "communication"

# lpoptions -p <desirable-cups-printer-name> -l

Then the fun with supported content formats and correct/desirable printed documents can begin.

----------

## marinheiro

Thanks for the help!

```
 ipptool -tv ipp://<printer-ip>:631/ get-printer-attributes.test  
```

 returns pages of stuff - all seems ok.

```
ipptool -tv ipp://<printer-ip>:631/ get-printer-attributes-2.0.test
```

 returns nothing at all.

```
lpadmin -E -p office-printer -v ipp://<printer-ip>:631/binary_p1 -m everywhere
```

 (with the same ip address used for ipptool) returns 

```
 lpadmin: Unable to query printer: Not Found
```

Things that look relevant from the get-printer-attributes command include:

```

ipp-versions-supported (1setOf keyword) = 1.1,2.0

ipp-features-supported (keyword) = airprint-1.8

operations-supported (1setOf enum) = Print-Job,Validate-Job,Create-Job,Send-Document,Cancel-Job,Get-Job-Attributes,Get-Jobs,Get-Printer-Attributes,Close-Job,Identify-Printer

```

I tried without the binary_p1, and the lpadmin command returns silently;  

```
lpoptions -p office-printer -l 
```

 then works. The office-printer shows up in the CUPS web interface as 'G6000 series - IPP Everywhere'. However, it always shows as 'Idle, Rejecting Jobs, Not Shared', and if I try to print a test page the log shows "Returning IPP server-error-not-accepting-jobs for Print-Job (ipp://localhost:631/printers/office-printer) from localhost". I don't know if this has anything to do with not having used 'binary_p1'. 

'lpstat -p office-printer -t' gives:

```

printer office-printer is idle.  enabled since Sat 16 Oct 2021 12:49:48 BST

scheduler is running

no system default destination

device for office-printer: ipp://192.168.xxx.xxx:631/

office-printer not accepting requests since Sat 16 Oct 2021 12:49:48 BST -

   reason unknown

```

The printer itself is fine, and I can print to it from Windows (using WSD), but I can't find a way to get it to 'accept requests' over ipp. Googling mostly gives discussions about a bug in CUPS handling of error messages.

Graham

----------

## NeddySeagoon

marinheiro,

```
lpadmin -E -p office-printer -v ipp://<printer-ip>:631/binary_p1 -m everywhere
```

The binary_p1 part is not a literal. It can vary from printer to printer.

You may be able to use the CUPS admin interface to find out why the printer is not accepting jobs and fix it.

Browse to localhost:631 and log in as root, so you can do admin things.

/var/log/cups/error_log may contain some hints too.

-- edit --

There is no need to hide IP address in one of the private ranges.

They are not allowed on the internet.

When you try, your ISP will silently drop such packets. They may send you a nastygram to tell you not to do that too..

----------

## marinheiro

Neddy 	

 *Quote:*   

> Code:	
> 
> lpadmin -E -p office-printer -v ipp://<printer-ip>:631/binary_p1 -m everywhere	
> 
> The binary_p1 part is not a literal. It can vary from printer to printer. 

 

I've got that. However, I not know what the purpose of binary_p1 or whatever text-string is equivalent for this printer is. I have tried grepping through the IPP RFCs, and not found it. I also don't know what the Canon version of it is. There is nothing I can find in the Canon documentation, and I've talked to Canon help who told me I didn't need to know about it as 'Linux doesn't use ipp'!!

 *Quote:*   

> You may be able to use the CUPS admin interface to find out why the printer is not accepting jobs and fix it.
> 
> Browse to localhost:631 and log in as root, so you can do admin things.
> 
> /var/log/cups/error_log may contain some hints too.
> ...

 

The office-printer shows up in the CUPS web interface as 'G6000 series - IPP Everywhere'. However, it always shows as 'Idle, Rejecting Jobs, Shared'. I can't see any way to change this from the admin interface (I can pause and resume the printer, but that is independent of this problem). If I try to print a test page the log shows "Returning IPP server-error-not-accepting-jobs for Print-Job (ipp://localhost:631/printers/office-printer) from localhost". I've tried varying the log level and not got anything more helpful.

Graham

----------

## marinheiro

The lpadmin command to add the printer to CUPS should have been:

 *Quote:*   

> lpadmin -p <printername>  -E -v ipp://<ip address>/ipp/print -m everywhere

 

ie. instead of /binary_p1 append /ipp/print  to the ip address of the printer. This string is the name of the print queue.

This works for my Canon G6050 printer, and according to https://openprinting.github.io/cups/ is actually the generic solution.

Graham

----------

## figueroa

Amazing. I used it just now on my Samsung SL-M332ND mono laser printer and it works fine. It doesn't register the left and bottom margin as accurately as Samsung's own driver collection dated December 15, 2016, uld_V1.00.39_01.17.tar.gz. The ipp everywhere driver cuts off a bit on the left and bottom margin, which may be a non-issue in typical use.

The results of this ipadmin command appear to be identical to the results setup using the CUPS web interface via localhost:631.

----------

## marinheiro

andy

 *Quote:*   

> The results of this ipadmin command appear to be identical to the results setup using the CUPS web interface via localhost:.

 

Though they weren't for me - see the original post in this thread. Are you using the default CUPS? OR maybe there's a difference in what the printer itself broadcasts?

Graham

----------

## figueroa

Graham, what do you mean by "default CUPS?" I use CUPS. I have many printers, local but mostly network. I don't have printing problems. I was just commenting on the superiority of the registration of the drivers downloaded from Samsung. That particular printer also works well with PCL and PostScript drivers.

----------

## marinheiro

Andy,

I was just wondering whether my inability to set up ipp for my printer directly from the CUPS web interface was a problem on the CUPS side or the printer side - as you got it to work from the web interface, I wondered if you might have a later version of CUPS installed direct from github, rather than the stock gentoo package, As you don't then the problem must be something specific to my printer. I guess its not all Canon printers with the problem - the G6050 seems to be an uncommon one, which may be why I couldn't find any similar error reports.

Anyway, lpadmin solves it for me so I'm happy now.

Graham

----------

## figueroa

Unfortunately for this thread, I'm running bog-standard, stable net-print/cups-2.3.3_p2-r2. My use flags are: X acl dbus pam ssl threads usb -debug -kerberos -selinux -static-libs -systemd -xinetd -zeroconf

I also have installed:

net-print/foomatic-db

net-print/foomatic-db-ppds

net-print/gutenprint

net-print/hplip

net-print/splix

net-print/cups-pdf

net-print/cups-filters (a dependency)

as well as the Samsung driver package noted above.

----------

