Software fax machine

The goal of this project is building a computer-based fax machine with my FreeBSD server, an old modem, and the Hylafax software.

As user interface, either shell access or the Fax0r device are used here.

Building hylafax from ports collection

comms/hylafax can be built quite easily with the option PAGESIZE="ISO A4".


The modem is attached to the second serial port in the system, i.e. sio1. The correct device to use for faxing is /dev/ttyd1.

Sending faxes

My modem identifies as USR EM6800-E 56K External modem Rev. 4.7.30.

With the default config (which is xonxoff software handshaking), I only got "no dialtone" errors:

FaxSend[25413]: SEND FAILED: JOB 18 DEST 21 ERR No local dialtone

This occurred because my modem is connected to an internal telephone system (yes, all my electronics and communications equipment is a bit oversized for home use), and this system generates its own dialtone. A change in config.ttyd1 solved this issue:

ModemResultCodesCmd:    ATQ0X4          # enable result codes

had to be changed to

ModemResultCodesCmd:    ATQ0X3          # enable result codes

Also, to be able to dial internal phone numbers, phone number reformatting has to be switched off. To get an external line, I have to add an extra "0" to the phone number now, and e.g. "22" would dial another modem in my telephony system.

This line must be included in the modem config:

DialStringRules:        etc/dialrules.blank

to use this [file]({attach}images/dialrules.blank.

A script is used to scan pages to be faxed on a USB-attached flatbed scanner.

Receiving faxes

/etc/ttys needs a line for receiving faxes, as documented in hylafax docs:

ttyd1   "/usr/local/sbin/faxgetty"      dialup  on  insecure

*work in progress: * When basic sending and receiving of faxes works, some extras can be added.

Start, stop and restart hylafax