CUPS is a printing system for UN*X. It provides filters to automagically convert files in various formats, and back ends to send the raw data to parallel ports, serial ports, sockets, USB devices and so on (in particular, the cupsomatic filter developed by Grant Taylor allows you to print PostScript® files on zillions of printers).

I developed a very simple GPL'd shell script that acts as a back end for a serial faxmodem. Essentially, you print with lpr and the fax is sent. The nice thing is that you have CUPS around, and this means, for instance, that you can check whether your fax has been sent just using your favorite browser (as you would do for any other printer), even if the faxmodem is really on a remote server. There is also a companion PPD file that allows to set several options from CUPS web interface.

The script requires a fax back end to be chosen between efax, a simple but effective fax management program, HylaFAX, a sophisticated server-based fax handling system, CapiSuite, an ISDN telecommunication suite, and mgetty-fax. You can find them packaged and ready-to-use for every possible Linux distribution.


There is a tar file with very simple install instructions, or a ready-to-use RPM package. Once you completed the installation, you just have to create a printer using the fax back end (see the man page).


To send a fax, just print to the printer you created, setting the job name with the -J option of lpr to the phone number you wish to dial (this now works also with a Samba print server). Note that otherwise the job name will be the file name. Printing from systems that do not allow to change the job name requires setting the manual dialing option.