See also Enabling CUPS
This page is for recipes for connecting specific printer models to XO laptops.
If you have such a recipe, please edit this page and add your recipe. Please strive to make your recipe as complete, specific, and self-contained as possible. Deferring to the CUPS documentation or to LinuxPrinting.org is likely to prove overwhelming to many new users. Don't assume that the reader has a Linux background.
Preference should go to recent printer models, as older printers tend to become unusable with time. A few useful recipes is much better than a thousand recipes for obscure printers.
 Printing with remote cups server
If you have another computer running cups with printers attached (say a school server or a home desktop), you don't need to install cups or printer drivers on olpc at all. This is good when you have only 256M ram. Instead, simply create the directory "/etc/cups" and add a file "/etc/cups/client.conf" with a single line:
where 22.214.171.124 is the ip of your IPP print server.
Shared printers on the print server will now appear on applications that support cups printing.
The cups server in Fedora (which your print server is likely to be) is configured to require Basic authentication by default. Although libcups supports this, the print UI in most apps does not (read cups docs to see if client.conf supports user and password), and you will have to configure the print server to allow the XO to print. I found it easiest to allow printing from any IP on the local LAN (including wireless).
 Konica magicolor 2430 dl
I found linux drivers for this printer, but it requires sudo and/or make capabilities to install. The site is http://foo2zjs.rkkda.com. As this is the only printer to which I have access, I hope to resolve this (soon.)
 Lexmark E342n Laser Printer
I followed Tony Pearson's Printing on XO Laptop with CUPS and LPR article step-by-step and got this printer to work without any problem. The Red Hat Linux driver was available herefrom the Lexmark printer support website, and it installed very easily with a provided bash script. I then used CUPS to install the printer and discovered that (as Tony points out in his article) a (root) user and password pop-up needs to appear with the last step of the CUPS install process, and you NEED to have Firefox or Opera running to see this as the default "Browse" will not handle this.
 Mac OS X Bonjour Shared Printer
Mac printer sharing is based on CUPS (see Printing on XO Laptop with CUPS and LPR) and it turned out to be relatively easy to get the XO to print there. The nice thing is that the shared printer seems to present itself as a generic postscript printer - mine is a Canon MP450 but the XO just needs to send it postscript, leveraging the driver on the Mac I assume.
First on my Mac I visited System Preferences --> Sharing and made sure 'printer sharing' was ticked. You can verify cups is running by opening Safari on the mac and visiting http://localhost:631/admin to see the cups admin screen.
Now on your XO (connected to the network), use the terminal activity and install cups:
sudo yum install cups.i386
This will take a little while and might ask you to confirm some things (say 'y'). Then start cups:
sudo service cups start
Now check that cups is running on the XO by opening the Browse activity and visiting http://localhost:631/admin - you should see a page similar to the one you saw in Safari on your Mac.
Click the 'Find New Printers' button. With any luck you'll see the printer published from your Mac. Select it and accept the default names. When it asks you what manufacturer it is, select Postscript, and then 'generic postscript' on the next screen.
Now you should see it listed on the 'Printers' tab. Try the 'print test page' button to confirm it's printing OK.
The final thing I needed to do was make sure it was set as my default printer - with the 'Set as Default' button (I actually did it in terminal using 'loptions -d newprintername' following the instructions at http://localhost:631/help/options.html?TOPIC=Getting+Started - for some reason 'lpstat -p -d' shows two printers with similar names so I just picked the one with the shorter name which seemed to work fine.) I tested printing from the command line with 'ls / | lpr' which printed out a list of files in the root directory.
Finally, you should be able to print from apps with built-in printer support: my kids are having a great time churning out pictures from the brilliant Tux Paint painting app.
 Brother HL 3070 CW Almost works
I would like to record this as a sucess but I have a small barrier which some astute Linix expert may help overcome. I, too, followed Tony Pearson's proceedure and sucessfully installed CUPS using yum on version 8.2. I downloaded the Linix driver and cupswrapper for the HL 3070CW from Brother and used rpm to install the driver. I pointed Firefox to the CUPS administrator program and it found the printer and CUPS labeled it with the name and appended the URL to the name. I tried to print a test page which it did. At this point I exited the program and my XO. When I returned to the XO later I tried printing things from Firefox, Abiword and BCLogo. Nothing printed and I ran the CUPS admin program which showed that the print jobs were queued but could not print because communication was lost with the printer. At this point the "A Ha" moment occurred and I checked the address of the printer on the router which was 126.96.36.199.4 but CUPS had installed the adress as 188.8.131.52.3. Thus the print jobs were pointed to the wrong address. Success was within my grasp, all I needed to do was modify the printer config to the correct address. I knew CUPS was going to want an ID nd password per Pearson's article so I changed the root password and proceeded to try to modify the printer address. It asked for the name and password which I provided at which point it didn't accept it.. that is were I am stuck. I have tried everything to modify the address but can't get beyond the security barrier. I can point the browser to the correct address and see the Brother admin program. In summary, I know that this will work but I need some suggestions as to get the driver address changed.
(Edit by Lew Payne on Jan 30, 2011) You need to add the following lines to /etc/pam.d/cups in order for http://localhost:631/printers to accept your login:
auth include system-auth
account include system-auth
You may also need to restart (HUP) the service in order for it to read in the modified file. If you don't know how to do this, simply reboot your system and then point your browser to http://localhost:631/printers and try again. Hope this helps!