A couple of days ago, I saw someone wheeling a new copier/printer/scanner into our office. Turned out it ended up here in Engineering to replace the Canon unit that used to be here. I never had managed to get the Canon to work on my Linux laptop, but this new Ricoh unit caught my attention because of the "Adobe Postscript 3" decal on it. If this thing understood Postscript, there was a chance... So I decided to give it a try.
Things started out well: the printer showed up in the list of network printers when I selected "New" in the "Printer configuration" screen. I selected it, wasn't sure what kind of connection to choose (IPP, LPD or AppSocket/JetDirect via DNS-SD didn't mean a thing to me), selected one at random and clicked "Forward". Then I had to select a driver. Since I didn't have a PPD file for this printer, I tried to find it in the standard selection. No such luck. The closest thing in the list was a Ricoh Aficio MP 4500 (without "C"), so I selected that. Then I printed a test page. Instead of the expected rows of colored boxes, I got several pages covered with garble. Bummer.
Not deterred, I decided to do it differently. Instead of choosing the printer from the list, I decided to choose AppSocket/HP JetDirect under network printers, and type in the printer's IP address manually. I selected the same driver as before and printed a test page. This time it worked! I have no idea why it worked now, and not when I had selected the printer from the list. I suspect that I did not choose the AppSocket/JetDirect option the first time, and there's a good chance it would work if I did, but I didn't bother to try it again.
The only problem left was that my test page printed in greyscale instead of color. I guess the "C" in the model number of our printer stands for "Color" and the driver I had chosen didn't have the "C". It would sure be nice if I could make a color printer print in color. I decided to go to the Ricoh site and see if they happened to have a Linux driver. I know--how naive. Printer manufacturers are pretty much the worst offenders when it comes to not supporting Linux. I was not surprised to find the usual list of Windows and Mac OS X drivers, but nothing for Linux. Something caught my eye though. The Mac drivers were listed as "PPD Installer". A PPD file is just what I needed. Not surprising, since Mac OS X and Linux share the same print subsystem, CUPS.
So I downloaded the "PPD installer", which turned out to be a .dmg file. I had no idea what to do with a .dmg file. Some Googling told me that it's a Mac OS disk image: a file system in a file. I tried to loop mount it as HFS and HFS+ as mentioned in the forum, but that didn't work. Looked like I had a compressed .dmg file on my hands. So I installed the AcetoneISO software that was also mentioned in one of the forum posts and gave that a try. Choosing the "Image Conversion" / "Convert MacOS Image" menu option, it successfully extracted the content of the .dmg file to a folder!
Ok, so now where was that PPD file? It was still not to be found. Apparently I had only extracted the installer image, but I was still stuck with an installer package instead of the raw files I was looking for. The most likely suspect to contain what I needed was the "PPD_Installer_RI3292E3L.pax.gz" file. I am familiar enough with the .gz extention, and a "gunzip" later I had a .pax file. Some more Googling told me this was similar to a .tar file, but I needed to install the "pax" utility to extract it. A quick
sudo apt-get install pax
later, I could run
pax -r < PPD_Installer_RI3292E3L.pax
to extract the file. Inside the extracted Library/Printers/PPDs/Contents/Resources folder, I finally found the PPD files I was looking for!
Only, they didn't have the extention .PPD, so I renamed the file I needed. I ran the "New printer" wizard again, this time selecting the PPD file when prompted to select a driver. Everything seemed to go great until I hit "Apply" and got the message:
Printer 'Ricoh' requires the '/Library/Printers/RICOH/
Filters/jobLogFilterC' program but it is not currently
installed. Please install it before using
I decided to ignore this and see if it worked anyway, but it didn't. CUPS kept complaining about this missing file whenever I attempted to print.
Sigh. I had no idea how to deal with PPD plugins on Linux and Googling didn't make me any wiser. After all this effort, was I still going to fail in getting this to work? The name "jobLogFilterC" made me think the function of this plugin wasn't even very vital to the operation of the printer, so I decided to take a look inside the PPD file and see where this plugin was called out. I found it in one place:
*cupsFilter: "application/vnd.cups-postscript 0 /Library/Printers/RICOH/Filters/jobLogFilterC"
I decided to comment it out. What did I have to loose?
*%cupsFilter: "application/vnd.cups-postscript 0 /Library/Printers/RICOH/Filters/jobLogFilterC"
I changed the driver to my hacked PPD file and chose to use the new PPD as is, not merging previous settings. No errors this time. Ok, "Print Test Page"... Bam! A nice colored test page! Finally! :-)
Now I am a pretty persistent guy, and I know something about computers, but I do wonder: how hard should it be to install a printer? Linux does not have a reputation for being easy, but the question is: who is to blame for that? Part of it may be Linux, but in this case, the manufacturer sure made it hard for me to get a simple file I needed that they already had. Once I got my hands on the PPD file and I had modified it to not call out the Mac OS specific plugin, it was very easy to install this printer. Now how hard would it be for Ricoh to just put up this PPD file on their web site? If it had been there, the whole process would have pretty much been a no-brainer.
Since I went through all this trouble to get what I needed, I decided to make the (modified) PPD's that I found in the Mac OS installer available for download. There are PPD's for the Ricoh Aficio MP C4501, C4501A, C5501 and C5501A in this package. I have only tested the C4501 driver. I hope these files may prove useful for others who are trying to make these printers work in Linux.