It's possible to get the Xerox 4512N (networked) printer working in OS X. Here's how I did it...
Get the May 1997 PPD from the Xerox website by pretending you are a Windows user. The July 1997 version included in the Mac OS9/X package is buggy and won't work (and it isn't because of the Mac 9 line breaks; I tried fixing those). Just google for Xerox 4512N PPD to save yourself a lot of clicking around. Add a line to the PPD:
Add this anywhere after the printer model, nickname, etc. Do a Get Info on the PPD, authenticate, and change owner to system and the group to admin. Gzip it if you like (like all the other PPDs). Do another Get Info, authenticate, and change owner to system, group to admin. Drop the .gz file or the PPD file into the top-level /Library » Printers » PPD » Content » Resources folder -- the English localisation folder whose path name I don't exactly remember, but is pretty obvious.
New owners of Epson's Stylus Photo R2400 may not be aware that there are two types of black ink available for this printer: Matte and Photo. If you have the Matte ink cartridge installed, you will not have access to the Glossy paper choices (because Matte ink on glossy paper would not produce a quality print).
However, there is more madness to this method than you might expect. There's also a bug in the Epson driver software (for Tiger, at least) that prevents the printer from communicating the change in the cartridge back to the driver so, even though you have the correct ink installed, the Glossy paper options are still unavailable to choose.
The solution is to launch the Epson Printer Utility, click the Ink Levels button to show the eight cartridges and their respective ink levels, and then click on the black ink cartridge, so that it displays its information in the window. You'll note that it will show the correct information for that cartridge. When you quit the Printer Utility, calling up the Print dialog will now permit you to choose the Glossy paper.
(I'll note that both parts of this hint came from a number of Google searches to rectify the problem for a client.)
Sometime in Tiger's evolution, the CUPS implementation restricted PostScript (PS) printers to level 2 and higher. I have found that some PS level 2 and higher printers, including (read "especially") networked photocopiers, have an omission in their PPD files that prevents them from working properly with CUPS. The symptom is that when you print, your system displays the following message:
The process "cgpdftops" stopped unexpectedly with status 1
CUPS runs a series of filters prior to processing a job, and part of their job is to determine the PS level of the destination printer. If you are confident your PS device is level 2 or higher, look at the PPD you assigned to your printer (located in /Library/Printers).
We use a printer accounting system, which requires that the username and password be passed as a parameter in the smb URI. LPD wouldn't be an option in this case. I've created a script that I run when I've changed my password.
echo -n "Enter your username: "
echo -n "Enter your password (what you type will not be printed to the screen): "
read -s password
echo " "
echo "If you are prompted for a password, enter your system administrator password"
#$domain and $servername must be defined
sudo lpadmin -p 1055CMBond -v smb://$username:$password@$domain/$servername/hp1055cmbond -P "/Library/Printers/PPDs/Contents/Resources/en.lproj/HP DesignJet 1055CM PS3.gz"
sudo /usr/bin/enable 1055CMBond
sudo /usr/sbin/accept 1055CMBond
#make the printer the default, may require system password
sudo lpoptions -d 1055CMBond
#At one point I thought this was necessary
#uncomment if you need it
#sudo killall -HUP cupsd
This will overwrite printers with the same name, so they are essentially deleted and re-created with the new password. You'll need to define your domain and server name. As well, you'll need to know the path to the PPD file for your specific printer. My advice would be to define the printers manually the first time, and then peek into your printers.conf file for the PPD paths.
Our company's Windows network requires periodic password changes, and each time I do this (via a Windows machine, BTW, since I don't know how to do this from a Mac), all my Windows networked printers break. One solution is to delete the printers from Printer Setup Utility and then re-add them, but this gets old fast, especially if you have several networked printers.
The easiest method I've found is to first change the passwords directly, and then restart PrintingServices. The passwords are stored in a root-owned file at /etc » cups » printers.conf, in a URL for each printer:
You can easily edit this file in Terminal.app with sudo vi /etc/cups/printers.conf (Type :1:$s/old_pword/new_pword to change them all at once!). Save the file, then restart CUPS: sudo SystemStarter restart PrintingServices.
I needed to change my printer's advanced print setup automatically with AppleScript. AppleScript doesn't support this feature, so I found a way to do it with a shell script. First, create and save a custom settings preset in the printing dialog. For this example, assume those settings are named Preset1. Then, in the AppleScript Script Editor, enter the following code:
do shell script
"defaults write com.apple.print.custompresets
This way, the Preset1 settings will be used next time you print.
[robg adds: I broke the AppleScript onto three lines for better display here. I didn't want to use the AppleScript line break character, though, because the text inside the quotes cannot be broken in that manner. If you're going to use this code snippet, enter it as one long line with a space replacing each line break.]
I recently upgraded my Xerox Phaser 8400DP to a Phaser 8560DN printer. A few days later, when I attempted to output a PDF file using QuarkXPress 6.52, all I would get was an alert box stating that Quark was "Unable to create the xyz.pdf file." This was now happening consistently. Well, thanks to Quark's extremely detailed error reporting, I could tell immediately what the problem was ... NOT!
After hours of troubleshooting dead-ends, I finally figured out that when the Phaser 8560 printer was selected as the default printer, Quark would error instead of outputting PDFs. If any other printer was selected as default, Quark would instantly resume its PDF outputting capability.
I called Xerox, and after a nice session of less than 20 minutes, a support person actually took my word for it! While I waited, they installed their drivers for the new printer on a similar Powermac G4 to mine, opened a Quark 6.5 they already had installed, and tried the same (reproducible) technique to cause the error. They agreed that it was a verifiable error that is evidently caused by an incompatibility between Quark 6.5 and their new print drivers. They sent the problem on to their application programming technicians so that they could address the issue in the next bug-fix run. They could not, however, give me an ETA on that, but at least we know it is a Xerox issue.
The Problem: Anyone with a Power Mac who has Quark 6.x installed and a Phaser 8560 has a good possibility of not being able to export to PDF files. It is unknown if Intel Macs are affected.
The Workaround: Change the default printer to any other driver before attempting to output the PDF, and install an updated Xerox driver when it becomes available.
I've had an Canon iP5000 printer linked up to my AirPort Express for remote printing. It has never worked reliably: on long complex jobs it would just stop printing in the middle of a page. Well, now some early testing of a possible fix has allowed me to print long, complex jobs without the printer stopping in the middle. I'm happy, and will test the solution more over the next few weeks. Although not yet thoroughly tested, I thought I'd share my solution now, given how well it seems to be working.
What I did
I set up the firewall installed in Mac OS X to limit the bandwidth of the connection to the AirPort, so that print jobs go more slowly to the printer. This is easy to do, once you know how (detailed below).
Why I did it
Looking at the traffic between Mac OS X and the printer using Eavesdrop (nice tool, thank you), I noticed at the same point in the conversation that the printer would stop. Let me be clearer: it was always at a particular point in the protocol, not the same point in the job. I guessed, and it was a guess (don't know if it's correct), that traffic was heading over to the printer too quickly and it just couldn't cope.
Read the rest for the details on how I limited the connection speed to the printer...
Working on a site with a few hundred OS X machines, manually altering each computer's configuration can become very tedious, very fast. Especially when dealing with printers. I had issues whereby I would sometimes need to set up a number of computers with a new printer, and then remove it later. Add to that, I have printers constantly spitting things out because people hit Print a few too many times and clog up the queues. Fortunately, I managed to come across a few Unix commands which, using ssh or ideally Apple Remote Desktop (via the ever-useful 'Send UNIX command' function), can reduce jobs of many minutes, even hours, into seconds.
You can use CUPS to set up printer pools on your Mac, where a printer pool is defined as two or more printers. If you print to the pool, it will select the printer that is not currently busy with a print job. (If prompted for a username and password during any of the following, use your OS X account's short username and password.)
Open Safari and enter the CUPS address: http://127.0.0.1:631/printers/. Click on the Classes button, and then on the Add Class button. Enter the information you want for Name, Location, and Description -- the Description box will be what shows up in the Print dialog. Click Continue when done. Choose the printers you want in the pool from the displayed list; use the Command key to select more than one printer. Click Continue.
You're done. In the regular print dialog box, your pool will show up with the name you used in the Description box. If you print a job to the pool, it will be handled by the printer that is not currently printing a job. You can print another job, and it will be taken up by the next printer in the pool. You can get as many printers printing at the same time as you want.
[robg adds: This worked in my testing ... until it came time to remove the test pool I created. The CUPS browser interface button for Delete Class didn't work, claiming I didn't have any authorization to use it. This may have been an issue with Camino, but I just solved it via the brute force method: In Terminal, cd /etc/cups, then sudo rm classes.conf. Finally, I had to restart CUPS to make the pool vanish from the Print dialog: