[cups] Autoselect correct PPD on Mac OS X?

Julian Daniel jdaniel at smcdsb.on.ca
Thu Jun 23 20:23:50 PDT 2016


Hmmmm...I see that the client also sends out a couple SNMP requests that
appear to work fine for our HP printers, but return NULL for our Xerox
copiers:

User Datagram Protocol, Src Port: 161 (161), Dst Port: 50336 (50336)
Simple Network Management Protocol
    version: version-1 (0)
    community: public
    data: get-response (2)
        get-response
            request-id: 1419218898
            error-status: noSuchName (2)
            error-index: 1
            variable-bindings: 1 item
                1.3.6.1.4.1.11.2.3.9.1.1.7.0: Value (Null)
                    Object Name: 1.3.6.1.4.1.11.2.3.9.1.1.7.0
(iso.3.6.1.4.1.11.2.3.9.1.1.7.0)
                    Value (Null)


Is this the mysterious source for the Generic PPD decision? I wonder why
Xerox wouldn't populate this SNMP field?


Julian Daniel
Network Administrator,
Information & Communications Technology (ICT)
Catholic Education Centre
Simcoe Muskoka CDSB
+1-705-722-3555 ext 201 <+17057223555,201>
jdaniel at smcdsb.on.ca



On 23 June 2016 at 22:21, Julian Daniel <jdaniel at smcdsb.on.ca> wrote:

> How does CUPS determine the correct PPD to use with the autoselect feature
> in Mac OS X's Add Printer dialog box under Printers & Scanners in System
> Preferences?
>
> I have around 100 Xerox copiers at ~50 sites, all connected to a WAN.
>
> If I connect directly with the printer by entering the IP address, the
> correct PPD is selected pretty much every time with every version of Mac OS
> X.
>
> If I connect to a central CUPS server, which has the same printer
> correctly defined with the proper PPD, things get very flaky. On Mac OS X
> 10.11, it seems to just work. I have intermittent results with Mac OS X
> 10.6-10.10, with some clients managing to get the correct PPD but most get
> "Generic Postscript Printer".
>
> I tried a packet capture, and it appears that the client first queries the
> central print (CUPS) server, then talks directly to the printer itself. The
> CUPS server provides all the necessary details required to set up the
> printer on the client, but then the client asks the printer for ".ppd", and
> the printer responds with a "no such file". I'm not sure whether this is
> the reason, but then the client (Mac OS X 10.9.5 in this case) selects the
> default Generic Postscript Printer PPD - even though the exact same PPD
> returned in the IPP response from the CUPS server matches one installed on
> the client already (this is the one that is autoselected when the client
> connects directly to the printer).
>
> I've listed the relevant four packets below, in case they help understand
> what's happening:
>
> Frame 1776: 161 bytes on wire (1288 bits), 161 bytes captured (1288 bits)
> Ethernet II, Src: Apple_xx:xx:xx (Masked:xx:xx:xx), Dst: MySwitch_xx:xx:xx
> (Masked:xx:xx:xx)
> Internet Protocol Version 4, Src: 10.246.140.218, Dst: 10.199.10.73
> Transmission Control Protocol, Src Port: 49228 (49228), Dst Port: 631
> (631), Seq: 323, Ack: 1, Len: 95
> [6 Reassembled TCP Segments (417 bytes): #1771(200), #1772(8), #1773(29),
> #1774(37), #1775(48), #1776(95)]
> Hypertext Transfer Protocol
>     POST /printers/CEC295Q HTTP/1.1\r\n
>     Content-Length: 217\r\n
>     Content-Type: application/ipp\r\n
>     Host: elemprtsrv01.smcdsb.mynet:631\r\n
>     User-Agent: CUPS/1.7.2 (Darwin 13.4.0; x86_64) IPP/2.0\r\n
>     Expect: 100-continue\r\n
>     \r\n
>     [Full request URI:
> http://elemprtsrv01.smcdsb.mynet:631/printers/CEC295Q]
>     [HTTP request 1/2]
>     [Response in frame: 1784]
> Internet Printing Protocol
>     Version: 2.0
>     Operation-id: Get-Printer-Attributes (0x000b)
>     Request ID: 4
>     Operation attributes
>         attributes-charset: utf-8
>         attributes-natural-language: en-us
>         printer-uri: ipp://localhost/printers/CEC295Q
>         requested-attributes: device-uri
>     End of attributes
>
> Frame 1784: 91 bytes on wire (728 bits), 91 bytes captured (728 bits)
> Ethernet II, Src: MySwitch_xx:xx:xx (Masked:xx:xx:xx), Dst: Apple_xx:xx:xx
> (Masked:xx:xx:xx)
> Internet Protocol Version 4, Src: 10.199.10.73, Dst: 10.246.140.218
> Transmission Control Protocol, Src Port: 631 (631), Dst Port: 49228
> (49228), Seq: 1, Ack: 418, Len: 25
> Hypertext Transfer Protocol
>     HTTP/1.1 100 Continue\r\n
>     \r\n
>     [HTTP response 1/2]
>     [Time since request: 0.002785000 seconds]
>     [Request in frame: 1776]
>     [Next response in frame: 1799]
>
> Frame 1799: 1167 bytes on wire (9336 bits), 1167 bytes captured (9336 bits)
> Ethernet II, Src: MySwitch_xx:xx:xx (Masked:xx:xx:xx), Dst: Apple_xx:xx:xx
> (Masked:xx:xx:xx)
> Internet Protocol Version 4, Src: 10.199.10.73, Dst: 10.246.140.218
> Transmission Control Protocol, Src Port: 631 (631), Dst Port: 49228
> (49228), Seq: 8066, Ack: 418, Len: 1101
> [10 Reassembled TCP Segments (9141 bytes): #1786(200), #1788(1448),
> #1789(169), #1790(1448), #1791(367), #1794(1448), #1795(1448), #1797(1448),
> #1798(64), #1799(1101)]
> Hypertext Transfer Protocol
>     HTTP/1.1 200 OK\r\n
>     Date: Thu, 23 Jun 2016 15:44:32 GMT\r\n
>     Server: CUPS/1.5\r\n
>     Connection: Keep-Alive\r\n
>     Keep-Alive: timeout=30\r\n
>     Content-Language: en_US\r\n
>     Content-Type: application/ipp\r\n
>     Content-Length: 8941\r\n
>     \r\n
>     [HTTP response 2/2]
>     [Prev request in frame: 1776]
>     [Prev response in frame: 1784]
> Internet Printing Protocol
>     Version: 2.0
>     Status-code: Successful (Successful-OK)
>     Request ID: 4
>     Operation attributes
>         attributes-charset: utf-8
>         attributes-natural-language: en-us
>     Printer attributes
>         marker-change-time: Jun 23, 2016 09:19:05 EDT
>         printer-current-time: 07e006170f2c20002b0000
>         printer-dns-sd-name: CEC-295 2nd Floor Copier Q @ ADM-073
> Elementary Print Server
>         printer-error-policy: retry-job
>         printer-error-policy-supported: abort-job
>         printer-icons: http://10.199.10.73:631/icons/CEC295Q.png
>         printer-is-accepting-jobs: true
>         printer-is-shared: true
>         printer-more-info: http://10.199.10.73:631/printers/CEC295Q
>         printer-op-policy: default
>         printer-state: Idle
>         printer-state-change-time: Jun 23, 2016 09:19:05 EDT
>         printer-state-message: Ready to print.
>         printer-state-reasons: none
>         printer-type: 8433876
>         printer-up-time: Jun 23, 2016 11:44:32 EDT
>         printer-uri-supported: ipp://10.199.10.73:631/printers/CEC295Q
>         queued-job-count: 0
>         uri-authentication-supported: requesting-user-name
>         uri-security-supported: none
>         printer-name: CEC295Q
>         printer-location: Outside Room 201
>         printer-info: CEC-295 2nd Floor Copier Q
>         printer-uuid: urn:uuid:01234567-abcd-abcd-abcd-0123456789ab
>         job-quota-period: 0
>         job-k-limit: 0
>         job-page-limit: 0
>         auth-info-required: none
>         job-sheets-default: none
>         device-uri: ipp://10.246.19.22/ipp/
>         marker-colors: #000000
>         marker-levels: 66
>         marker-low-levels: 10
>         marker-high-levels: 100
>         marker-names: Toner Bottle CRU
>         marker-types: toner
>         document-format-supported: application/octet-stream
>         copies-default: 1
>         document-format-default: application/octet-stream
>         job-hold-until-default: no-hold
>         job-priority-default: 50
>         number-up-default: 1
>         notify-lease-duration-default: 86400
>         notify-events-default: job-completed
>         print-quality-default: 4
>         color-supported: false
>         pages-per-minute: 55
>         print-quality-supported: 4
>         printer-make-and-model: Xerox WorkCentre 5955, 3.80
>         media-default: na_letter_8.5x11in
>         media-col-default:
>         media-supported: na_letter_8.5x11in
>         media-source-supported: tray1
>         media-type-supported: auto
>         media-bottom-margin-supported: 529
>         media-left-margin-supported: 529
>         media-right-margin-supported: 529
>         media-top-margin-supported: 529
>         output-bin-supported: face-down
>         output-bin-default: face-down
>         output-mode-supported: monochrome
>         output-mode-default: monochrome
>         print-color-mode-supported: monochrome
>         print-color-mode-default: monochrome
>         printer-resolution-default: 000002580000025803
>         printer-resolution-supported: 000002580000025803
>         sides-supported: one-sided
>         sides-default: two-sided-long-edge
>         printer-commands: ReportStatus
>         port-monitor: none
>         port-monitor-supported: none
>         finishings-supported: 3
>         finishings-default: 3
>         charset-configured: utf-8
>         charset-supported: us-ascii
>         compression-supported: none
>         copies-supported: 000000010000270f
>         cups-version: 1.5.4
>         generated-natural-language-supported: en-us
>         ipp-versions-supported: 1.0
>         ippget-event-life: 15
>         job-creation-attributes-supported: copies
>         job-hold-until-supported: no-hold
>         job-ids-supported: true
>         job-k-octets-supported: 0000000005ca6e28
>         job-priority-supported: 100
>         job-settable-attributes-supported: copies
>         job-sheets-supported: none
>         jpeg-k-octets-supported: 0000000005ca6e28
>         jpeg-x-dimension-supported: 000000000000ffff
>         jpeg-y-dimension-supported: 000000010000ffff
>         media-col-supported: media-bottom-margin
>         multiple-document-handling-supported:
> separate-documents-uncollated-copies
>         multiple-document-jobs-supported: true
>         multiple-operation-time-out: 300
>         natural-language-configured: en-us
>         notify-attributes-supported: printer-state-change-time
>         notify-lease-duration-supported: 000000007fffffff
>         notify-max-events-supported: 100
>         notify-events-supported: job-completed
>         notify-pull-method-supported: ippget
>         notify-schemes-supported: mailto
>         number-up-supported: 1
>         operations-supported: 2
>         orientation-requested-supported: 3
>         page-ranges-supported: true
>         pdf-k-octets-supported: 0000000005ca6e28
>         pdf-versions-supported: adobe-1.2
>         pdl-override-supported: attempted
>         printer-op-policy-supported: authenticated
>         printer-settable-attributes-supported: printer-info
>         server-is-sharing-printers: true
>         which-jobs-supported: completed
>     End of attributes
>
> Frame 1807: 223 bytes on wire (1784 bits), 223 bytes captured (1784 bits)
> Ethernet II, Src: Apple_xx:xx:xx (Masked:xx:xx:xx), Dst: MySwitch_xx:xx:xx
> (Masked:xx:xx:xx)
> Internet Protocol Version 4, Src: 10.246.140.218, Dst: 10.246.19.22
> Transmission Control Protocol, Src Port: 49229 (49229), Dst Port: 631
> (631), Seq: 1, Ack: 1, Len: 157
> Hypertext Transfer Protocol
>     GET /ipp/.ppd HTTP/1.1\r\n
>     Host: 10.246.19.22:631\r\n
>     If-Modified-Since: Sun, 25 Jun 4461702 20:03:32 GMT\r\n
>     User-Agent: CUPS/1.7.2 (Darwin 13.4.0; x86_64) IPP/2.0\r\n
>     \r\n
>     [Full request URI: http://10.246.19.22:631/ipp/.ppd]
>     [HTTP request 1/1]
>     [Response in frame: 1809]
>
> Frame 1809: 446 bytes on wire (3568 bits), 446 bytes captured (3568 bits)
> Ethernet II, Src: MySwitch_xx:xx:xx (Masked:xx:xx:xx), Dst: Apple_xx:xx:xx
> (Masked:xx:xx:xx)
> Internet Protocol Version 4, Src: 10.246.19.22, Dst: 10.246.140.218
> Transmission Control Protocol, Src Port: 631 (631), Dst Port: 49229
> (49229), Seq: 1, Ack: 158, Len: 380
> Hypertext Transfer Protocol
>     HTTP/1.1 404 Not Found\r\n
>     Date: Thu, 23 Jun 2016 15:42:52 GMT\r\n
>     Server: Apache\r\n
>     X-Frame-Options: SAMEORIGIN\r\n
>     Content-Length: 206\r\n
>     Content-Type: text/html; charset=iso-8859-1\r\n
>     \r\n
>     [HTTP response 1/1]
>     [Time since request: 0.003537000 seconds]
>     [Request in frame: 1807]
> Line-based text data: text/html
>
>
> I can't figure out how the Client's CUPS works out the PPD to use - I
> noticed that the printer's Bonjour/DNS-SD output includes:
>
> product=(Xerox WorkCentre 5955)
> ty=Xerox WorkCentre 5955 v1
>
>
> which matches the PPD on "product" but not on "ty[pe]" - here is the
> output when shared from the CUPS server:
>
> product=(Xerox WorkCentre 5955)
> ty=Xerox WorkCentre 5955, 3.80
>
>
> and that is exactly what's contained in the Product and Nickname lines in
> the PPD, so they should be a match - why isn't the client seeing this:
>
> *Manufacturer: "Xerox"
> *ModelName: "Xerox WorkCentre 5955"
> *ShortNickName: "Xerox WorkCentre 5955"
> *Product: "(Xerox WorkCentre 5955)"
> *NickName: "Xerox WorkCentre 5955, 3.80"
>
>
> I've also created Wide Area Bonjour entries in DNS with exactly the same
> data output by the server, however it seems that anything stated in my
> entries is ignored by the client - it just queries the server and then the
> printer itself, and only uses the _ipp._tcp (and cups and universal)
> entries to find the server.
>
> Can please you help me figure out what's missing, or how I can change my
> config so that the client pays attention to the CUPS server and either
> downloads the PPD from the server or uses a previously-installed version on
> the local drive (/Library/Printers/PPD/Contents/Resources/)?
>
> And why does it work some of the time, or only on specific OSes?
>
> Julian Daniel
> Simcoe Muskoka CDSB
>
>
>

-- 
This is a staff email account managed by Simcoe Muskoka Catholic District 
School Board.  This email and any files transmitted with it are 
confidential and intended solely for the use of the individual or entity to 
whom they are addressed. If you have received this email in error please 
notify the sender.



More information about the cups mailing list