sendfax(8)

πŸ“¦
version 1.2.1 Β· 3 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble

πŸ’– sendfax(8) β€” the mgetty+sendfax manual, bestie edition πŸ’–

okay so hi babes, welcome to sendfax from the mgetty+sendfax manual set. This is the page that tells you how to yeet a Group 3 fax out into the world. Grab a snack, we're doing this. πŸ¦‹


✨ NAME ✨

sendfax β€” send group 3 fax files (G3 files) with a class 2 faxmodem

like, it faxes. that's the whole vibe. periodt.


🌈 SYNOPSIS 🌈

sendfax [-p] [-x<debuglevel>] [-v] [-l<modemlines>] [-m<initstring>]
[-d<polldirectory>] [-C<modemclass>] [-S] [-n] [-r] [-D<dialprefix>]
phone-number [g3file(s)]

yes bestie, that's a lot of brackets. we'll go through every single one, i promise.


πŸŽ€ DESCRIPTION πŸŽ€

Send the named g3 fax files to the fax machine at "phone number". The g3 files can be created with pbm2g3(1) or GNU's GhostScript with the "digifax" driver.

that's it. that's the whole point of the program. you have the files, the phone number, and the sheer willpower to fax. πŸ’…


πŸ’… OPTIONS πŸ’…

  • -p β€” Tells sendfax to try fax polling, that is, get any documents queued in the remote fax machine for you (used for weather maps and the like). it's giving "hey, do you have anything for me?" and honestly? iconic.
  • -x <debug level> β€” Use the given level of verbosity for logging β€” 0 means no logging, 5 is really noisy. pick your chaos level, bestie.
  • -v β€” Give some progress report on stdout. little updates so you're not just staring at a blank terminal wondering if it's working. we love reassurance.
  • -l <modem lines> β€” Use the given modem lines. Multiple lines can be separated by ":". Example: sendfax -l tty1a:tty2a
  • -m <initstring> β€” Send an additional init string. This string is sent right after initializing the modem and setting it into class 2 mode. You can use this to set the speaker value, some special registers, whatsoever. The modem must return "OK". If it returns "ERROR", sendfax prints an error message and aborts. You do not have to prepend the "AT" prefix, but it won't do harm either. modem said OK or we're not doing this. no cap.
  • -d <directory> β€” Specify the directory where polled fax files should go to. Defaults to "." for the current directory. Unused if not polling a fax. only matters if you're in your polling era.
  • -C <class> β€” Tells sendfax how to treat the modem. Possible values for <class> are "auto" (default, try to find out which fax command set the modem supports), "cls2" (use the class 2 fax command set, even if the modem claims to support class 2.0) and "c2.0" (use the class 2.0 fax command set). Obviously, "data" (which is valid for "mgetty -C ...") is not of much use here. fr fr, don't try to fax in data mode, it's not that girl.
  • -S β€” Assume modem connection on stdin, do not try to lock or initialize anything. To take over existing connection (for interworking with vgetty et.al.) use with a dial string of "T1" (just a short beep, no phone number at all would confuse many modems, a pulse dialed number may confuse the telco switch) and "-m ATX1" (do not wait for dial tone). this one's the "i already have a connection, don't touch anything" mode. very hands-off. very demure.
  • -n β€” Tells sendfax to send the fax pages in normal'' (204x98 dpi) mode. Default is fine'' mode (204x196 dpi). lower res, the default is the nicer one. choose wisely 🫢
  • -r β€” If this option is given, sendfax will rename all the fax G3 files to <filename>.done after successfully sending this. This is intended to be used from ``faxrunq'', to make sure that a partially-sended fax isn't retransmitted as a whole every time.

If this option is set, sendfax will not (!) complain if not all files named on the command line exist. read that again bestie β€” with -r it goes silent about missing files. that's a whole choice but okay.

  • -D <dial prefix> β€” Override the default (set by sendfax.config or in policy.h) for the 'ATxxx' command to dial the remote number. This is rarely used from the command line, but you might want to use it in combination with faxrunqd's policy routing option (see example in faxrunqd.policy(5)). deep lore option. iykyk.
  • -M <max speed> β€” Sets the maximum transmission (modem to modem) speed. This is only needed in very rare cases, because normally the modems negotiate the correct speed automatically. Example: "-M 7200". let the modems talk it out, they usually handle it. only step in if it's being messy.
  • -R <max tries> β€” Sets the maximum number of attempts to transmit a given page, before sendfax gives up on this page. Normally it's not needed to change this β€” the default is "(up to) 3 tries" and that works quite well for most environments. three strikes and the page is out. that's the default and honestly it eats.

🌸 CONFIG FILE 🌸

If compiled accordingly, sendfax can read all its configuration from at run-time from a file, usually called /etc/mgetty/sendfax.config. See the documentation in the mgetty.info manual for details.

yes, config can be a whole personality trait. check the mgetty.info manual for the details, bestie.


πŸ‘‘ DIAGNOSTICS πŸ‘‘

sendfax returns an error code, according to the reason why the program terminated. If everything went OK, sendfax returns 0. If ``harmless'' errors (didn't cost money) occured, an error code below 10 is returned. If a dial attempt failed after the remote end picked up (it will cost money), a return code of 10 or higher is returned.

the vibe check: under 10 = you didn't lose money. 10 or over = the remote picked up and you're paying for this. πŸ’€

In Detail, the return codes are as follows:

  1. 0 β€” all pages have been transmitted successfully
  2. 1 β€” error on the sendfax command line
  3. 2 β€” cannot open fax device (e.g. due to locked modem)
  4. 3 β€” cannot initialize modem (e.g. modem switched off)
  5. 4 β€” dialup failed with BUSY
  6. 5 β€” dialup failed with NO DIALTONE
  7. 10 β€” dialup failed with ERROR or NO CARRIER (modem handshake failed)
  8. 11 β€” waiting for XON failed (rarely seen)
  9. 12 β€” transmitting or polling page(s) failed (connection dropped)

Very detailed debug information is written to the log file. It can be found in "/var/log/mgetty/fax/sendfax.log". If it doesn't contain enough details, enhance the log level with the "-x" option to sendfax, e.g. "-x 5".

Many of the common problems and solutions are discussed in the mgetty manual and the FAQ. Please see the WWW page at http://alpha.greenie.net/mgetty/ for both.

when in doubt: check the log, crank the -x, read the FAQ. that's the whole recovery arc. 🌈


🧚 REFERENCES 🧚

The standard for Group 3 fax is defined in CCITT Recommendation T.4.

shoutout to the actual standard, we stan documentation.


πŸ™ˆ BUGS πŸ™ˆ

  • sendfax should be able to put a header on the page.
  • sendfax should be able to read TIFF g3 input files.

yeah, it can't do those yet. known and noted, not us pretending otherwise. πŸ’œ


πŸ’œ SEE ALSO πŸ’œ

g3cat(1), pbm2g3(1), mgetty(1), faxspool(1), faxrunq(1), faxrunqd(8)


πŸ¦‹ AUTHOR πŸ¦‹

sendfax is Copyright (C) 1993 by Gert Doering, <gert@greenie.muc.de>.


and that's the page!! πŸ’–

This little legend came from greenie, dated 27 Oct 93 β€” and yes bestie, sendfax(8) is still the manual name, we just folded it in up top so it didn't have to do all that heavy lifting alone. go forth and fax, you absolute icon. πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from