Macintosh Printing
The Macintosh OS is engineered to operate in a variety of printing environments.
Apple provides an extensive collection of printer drivers to facilitate
printing.
OS X printing is based upon CUPS (Common UNIX Printing System), the standard
printing facility for Unix systems in general, and the one which Apple adopted
for OS X. (Apple started developing a printing facility from scratch in 2001,
but dropped that to adopt CUPS, which has been in OS X since 10.2.) Indeed, in
2007 Apple acquired the source code and its originator, Michael Sweet.
General topics
How to define a printer
Printers are defined in an OS X dialog.
Go into System Preferences > Printers & Scanners (previously Print & Scan)
to there click on '+' to begin defining the printer.
Where printer definitions end up
When a printer is defined, its full definition is within CUPS,
specifically in the /etc/cups/printers.conf file.
The printer name you specified at the OS X level has to be "normalized" for
CUPS: specifically, blank and hyphen characters will be changed to underscore (_) chars.
You can see what the Mac level printer names are by going into
System Preferences > Print & Scan,
or by launching the System Information utility to there click on Printers.
To see the corresponding names of the printers within CUPS,
you can go into the Terminal utility and enter the command:
lpstat -s
or lpc status | grep :
About duplex printing
Many printers support double-sided printing, also known as duplex printing.
When you define a printer a Duplex Printing Unit checkbox will appear.
If you check it, at printing time the dialog will have a Two-Sided
checkbox.
Selecting Two-Sided at print time causes the PostScript driver to generate
duplex statements into the PostScript, to cause duplex printing on printers
which need that definition.
(This duplex spec within the PostScript is needed where that PostScript will be
sent to the printer.)
Checking the Two-Sided box each time is a nuisance: is there a way to
have that checkbox permanently checked?
Yes, via the following technique...
Browse to http://localhost:631/printers
Click on your duplex printer;
Administration > Set Default Options
2-sided printing: Long Edge (Portrait)
Click: Set Default Options
And that's it: you will find the checkbox already filled in thereafter.
Printing to or through a Windows server
Setting up the printer
Perhaps the dominant method of printing to a Windows server is via the SMB
protocol.
This can be achieved by going into System Preferences > Print & Scan
to there click on '+' to begin defining the printer.
Click on the Advanced icon to get started.
This will do some searching, then present a form to fill in, as follows:
Type: Windows printer via spoolss
URL: smb://<Windows server network address>/<Print queue name>
Name: __Some_name_that_makes_sense_to_you__
Location: __Where_you_know_the_printer_to_be__
Print Using: Generic PostScript Printer
Click Add.
An interjection dialog will appear.
If the printer supports double-sided printing, click in the
Duplex Printing Unit checkbox there. Click OK.
The printer is now defined, and can be chosen in a print dialog.
Where the Windows print server requires authenticated access, you will obviously
have to provide your username and password.
You obviously didn't enter that information into the printer definition (and
shouldn't), so where do you enter it?
At print time, in your first use of this printer you should see the queue
display for the printer pop up. (If not, double-click on its icon in Print & Scan.)
Clicking on Resume (or the circular arrow) should bring up an authentication
dialog, whereupon you can enter the username and password, which you would then
want to save in the Keychain, so as to not have to go through this interaction
again for future printing.
Understanding the Keychain's participation in printing
The Keychain is the historic password and general authentication keys management
facility on the Macintosh.
As seen above, when printing through a Windows print server which requires
authentication, a username and password are to be provided, which are best
stored in the Keychain.
(They will be stored as Kind "network password".)
You may expect that there will be a need for one Keychain password entry for
each such printer — and then be surprised to see your first print to an
additional printer go through with no authentication dialog.
How can that be?
Well, the Name for the Keychain item is just an indicative name which allows you
to manage Keychain entries.
The key information is embodied in the following three elements:
Account
| The username or other string identity.
|
Where
| The network identity of the server to connect to.
|
Password
| The password to be used.
|
The printing operation will cause a Keychain search for an account name and
network address matching the one involved in the printing operation, and thus
can and will use the first matching one, regardless of the Keychain item's Name.
This also means that you can have multiple keychain items with the same name,
because their key internal details are different.
When there are authentication problems, as when your password as known to the
remote server has changed, there is the impulse to delete the associated Keychain
items, and start fresh with a new one.
However, you can update an existing Keychain item...
Begin by double-clicking to open it.
Click in the Show password checkbox to expose the password and thus
allow it to be changed.
Make changes as appropriate, then click Save Changes.
That's it.
Keychain health
It's healthy to clear junk out of the Keychain every once in a while.
Get rid of expired certificates, and ancient password entries that you know are
no longer relevant.
In addition, you can have OS X assess the Keychain via the Keychain Access
utility, as follows:
Keychain Access > Keychain First Aid
Enter your user name and password
Select Verify and click Start
(Any problems found will be displayed.)
If there are problems, select Repair, and then click Start.
Reboot thereafter, for thoroughness.
There are Keychain First Aid settings (Keychain Access > Preferences > First Aid)
but in most cases the standard values are fine.
Dealing with problems
Print button pulsates/flashes; no response when clicked
The print button pulsates to indicate that it is the action that will be
taken if the Return/Enter key is pressed. Once pressed, the print
dialog should disappear and the job should proceed to print.
In this problem, the button is clicked, but nothing happens. (This, in
feeding a Windows 2008 print server, requiring authentication.)
So, what's wrong?
In OS 10.6, when a printer is defined via the usual OS X System
Preferences GUI (Advanced tab, "Windows"), it ends up with a CUPS option
of auth-info-required=none (seen via command lpoptions -p
). Going to print in 10.6 in the same Windows
authentication environment, one clicks the Print button and the
interaction then proceeds, the job going into the print queue;
thereafter one has to Resume the job in that queue to get a pop-up
authentication dialog, where one would enter "Domain/Username" and
Password (and save in Keychain). CUPS then dynamically changes the
printer option to be auth-info-required=username,password upon
realizing that reality.
In OS 10.7+, when a printer is defined the same way, it ends up with the
option auth-info-required=negotiate, which is for Kerberos — which
is appropriate for going through a Windows print server in a university
enviroment (but otherwise may not be appropriate).
CUPS may eventually get by this and finally put the job into the print
queue and allow authentication to proceed, where one would enter "Username" (do
*not* include Domain, in 10.7) and Password (and save in Keychain). (CUPS then
sets the printer option to auth-info-required=username,password).
Sometimes it remains stuck.
This can usually be fixed by going into the Terminal utility and there
enter the command to operate on the CUPS printer name:
sudo lpadmin -p <PrinterName> -o auth-info-required=username,password
This will update the printer stanza in /etc/cups/printers.conf, and then the printing works.
Error message "Hold for Authentication"
On Macintosh, OS Mountain Lion, appears in a printer's job progress
display, where the job doesn't flow. Is likely due to stale, stored
credentials: Go into the Keychain Access utility and delete the
password entry for at least that printer.
Refer to the keychain notes, above, and look for other site-related password entries of
Kind "network password", to delete all of them, as any of them may be
interfering, having an old password stored in them.
(You can click on the Kind column header to sort by kind, to make finding the
Network ones easier.)
Then go through authentication afresh, remembering the correct password in the
Keychain. The job should now print.
If there had been a hung print job when this error message was encountered, and
clicking Resume on the job won't get it to move, and clicking 'X' won't remove
it, you can do the following to get rid of it:
Go into System Preferences > Printers & Scanners, and there click on "Options & Supplies".
From that, copy the Device Name string (which is the internal name of the printer).
Launch the Terminal utility to gain command line access.
Enter the command: lpq -P PrinterName
where the printer name is the device name string you found above.
This shows you the jobs queued on that destination, within your Mac.
Get rid of the problem job via command: lprm -P PrinterName JobNumber
where the job number is what lpq reported under "Job".
You can now cleanly submit a print job as usual in your Mac work.
Notes
OS X Mavericks (OS 10.9) begins Apple's use of SMB2 as its default file sharing protocol,
with Apple Filing Protocol still available, but secondary.
This will make Macs better performers in the enterprise. This displaces the SMBX stand-in.
As such, expect printing with Windows print servers to be more robust.
Back to the Things Apple page