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:
This is probably obvious to some, but it wasn't for me. My Printer Setup Utility stopped working about a month ago, and I needed to set up a networked printer on my iBook. Many frustrated afternoons of Googling later, I discovered this simple trick:
Download the printer drivers you need from the manufacturer. I needed a Canon driver, and fortunately these were available in a standalone installer.
Install the printer drivers.
Make sure you have the latest version of CUPS (Common Unix Printing Service) installed. Download the latest .dmg and install.
Restart (I don't know if this is actually necessary).
Prior to installing 10.4.8, I was using cups 1.2.4 and gutenprint 5.0.0 to print to an Epson Photo R340 located on my Windows 2003 Server machine. After installing the 10.4.8 update, the print service was unavailable and there were no printers showing in System Preferences, nor would it let me add any new ones.
After panicking for a bit, and here's the hint (although it may be obvious), I reinstalled first gutenprint then cups 1.2.4, and everything was back to normal.
I recently installed a small free utility called Cee Pee You on my MacBook Pro that posts your CPU usage in the menu bar. Much to my surprise, my CPU usage was very high, more often then not pegging at over 90%, regardless of what I was doing -- idle or not.
Confused, intrigued and a bit nervous, I opened Terminal and opened a process list -- ps aux --- to see what the culrpit was. To my surprise, I had a printmanager job running and hogging the CPU, even though I was not currently printing anything. To delete the print job, I opened Printer Setup Utility, looked at my list of printers, and found that a print job that I had accidently sent to my Canon i960 while at work instead of to the Xerox printer was the culprit. I deleted the print job, and the CPU monitor immediately dropped to low numbers, under 20%, almost all of the time.
The lessons I learned from this that might be helpful are:
Active (in the menu bar or elsewhere within the finder environment) CPU monitoring is very helpful.
Choosing the wrong printer and not deleting the job immediately will kidnap your CPU until you delete the job, if you send it to a Canon inkjet printer that is not connected (I do not know if this effects other printers).
I am going to write/find an AppleScript or Automator script that checks for print queues and deletes them through a cron job. If anyone has anything like this that they want to share, even if it needs additional work, please post a link and I will take a look, add to it as I see fit, and post it back.
[robg adds: The similarly-free MenuMeters also puts CPU usage (among many other useful indicators) in your menu bar.]
I am sure you all know of this, but it saves me dough, so I will pass it on. I use a Canon Pixma iP3000 printer and I use up the black ink first, as I mostly print text.
I have been able to get up to a hundred extra pages out of a refill simply by opening up the printer, pulling out the "empty" ink tank, and then reinstalling the so-called "empty" tank. My record so far is four times.
Managing hundreds of Macs and almost that many printers can prove to be difficult. Here is the method we use at the school where I work. It makes updating units after a new printer is installed a snap. This method works with 10.3 and 10.4, but I haven't tested 10.2. We use a LoginHook to call the script that will add the printers. Here is an example of how to add a LoginHook. In Terminal, type:
Any script you put in /bin called loginscript.sh will run every time a user logs in. It runs as root, too, so you can have it do all kinds of cool stuff. Now on to the script (I've also included an uncommented version at the end).
Here's a relatively simple solution if you have a wireless network, a (wireless) router, and a network-enabled printer ... and your router is in a different location from both your iMac and your printer. I connected the printer (HP Photosmart 2575) to the iMac via hard-wire ethernet (using a crossover cable). I then allowed the iMac to dynamically allocate an IP address to the printer.
Next, I enabled a static route in my wireless router, so that requests to the printer's IP address went via the 'gateway' IP address of the iMac -- this address was the IP address of the AirPort adapter. The iMac seems quite happy to forward IP requests from the AirPort adapter to the Ethernet adaptor. I can now treat the printer as a networked printer (despite it being on a different subnet), and hence set up the printer on my Windows laptop. Hope that kind of makes sense -- I am happy to expand on any detail if anyone's interested!
Printing on my computer takes up a terrible amount of processor time. What's worse, so does a job simply waiting to be printed! So, if your computer seems to be getting bogged down by the simplest of tasks, take a look at your printer queue under the Printer Setup Utility (in Applications/Utilities), and make sure there's nothing waiting, just in case.
I was having trouble getting my 'unsupported' networked Canon ip1600 to work over the network (so I could print wirelessly from the Mac to my Windows PC without a print server). Canon was no help -- they told me what I was doing was impossible and unsupported. No matter what I did, I kept getting NT_STATUS_NO_MEMORY errors, or login errors. So I searched around the internet and found a ton of tips, and the following combination seems to work every time for me:
Make sure your Mac and windows PC are on the same workgroup (called workgroup!)
Make sure your Windows PC is sharing the printer for everyone (including guest)
Enable the guest account on XP
Once you've got that bit set up, then do this:
Download and install the shareware PrintFab drivers, which include the Canon IP 1600 drivers.
Set up the Samba print share as you normally would, except edit the file /etc/cups/printers.conf (as root level user), and change the DeviceURI to include guest@, something like this:
Open up Terminal and enter: #ln -s 'which smbspool' /usr/lib/cups/backend/smb
Now if you try to print, you shouldn't have any trouble (if everything above is done correctly.)