.TH AGETTY 8 
.SH NAME
agetty \- alternative Linux getty

.SH SYNOPSIS
.BR "agetty " [\-8ihLmnUw]
.RI "[-f " issue_file ]
.RI "[-l " login_program ]
.RI "[-I " init ]
.RI "[-t " timeout ]
.RI "[-H " login_host ]
.I port
.I baud_rate,...
.RI [ term ]
.br
.BR "agetty " [\-8ihLmnw]
.RI "[-f " issue_file ]
.RI "[-l " login_program ]
.RI "[-I " init ]
.RI "[-t " timeout ]
.RI "[-H " login_host ]
.I baud_rate,...
.I port
.RI [ term ]

.SH DESCRIPTION
.ad
.fi
\fBagetty\fP opens a tty port, prompts for a login name and invokes
the /bin/login command. It is normally invoked by \fIinit(8)\fP.

\fBagetty\fP has several \fInon-standard\fP features that are useful
for hard-wired and for dial-in lines:
.IP o
Adapts the tty settings to parity bits and to erase, kill,
end-of-line and uppercase characters when it reads a login name.
The program can handle 7-bit characters with even, odd, none or space
parity, and 8-bit characters with no parity. The following special
characters are recognized: @ and Control-U (kill); #, DEL and
back space (erase); carriage return and line feed (end of line).
.IP o
Optionally deduces the baud rate from the CONNECT messages produced by
Hayes(tm)-compatible modems.
.IP o
Optionally does not hang up when it is given an already opened line
(useful for call-back applications).
.IP o
Optionally does not display the contents of the \fI/etc/issue\fP file.
.IP o
Optionally displays an alternative issue file instead of \fI/etc/issue\fP.
.IP o
Optionally does not ask for a login name.
.IP o
Optionally invokes a non-standard login program instead of
\fI/bin/login\fP.
.IP o
Optionally turns on hard-ware flow control
.IP o
Optionally forces the line to be local with no need for carrier detect.
.PP
This program does not use the \fI/etc/gettydefs\fP (System V) or
\fI/etc/gettytab\fP (SunOS 4) files.
.SH ARGUMENTS
.na
.nf
.fi
.ad
.TP
port
A path name relative to the \fI/dev\fP directory. If a "-" is
specified, \fBagetty\fP assumes that its standard input is
already connected to a tty port and that a connection to a
remote user has already been established.
.sp
Under System V, a "-" \fIport\fP argument should be preceded
by a "--".
.TP
baud_rate,...
A comma-separated list of one or more baud rates. Each time
\fBagetty\fP receives a BREAK character it advances through
the list, which is treated as if it were circular.
.sp
Baud rates should be specified in descending order, so that the
null character (Ctrl-@) can also be used for baud rate switching.
.TP
term
The value to be used for the TERM environment variable. This overrides
whatever init(8) may have set, and is inherited by login and the shell.
.SH OPTIONS
.na
.nf
.fi
.ad
.TP
\-8
Assume that the tty is 8-bit clean, hence disable parity detection.
.TP
\-h
Enable hardware (RTS/CTS) flow control. It is left up to the
application to disable software (XON/XOFF) flow protocol where
appropriate.
.TP
\-i
Do not display the contents of \fI/etc/issue\fP (or other) before writing the
login prompt. Terminals or communications hardware may become confused
when receiving lots of text at the wrong baud rate; dial-up scripts
may fail if the login prompt is preceded by too much text.
.TP
\-f \fIissue_file\fP
Display the contents of \fIissue_file\fP instead of \fI/etc/issue\fP.
This allows custom messages to be displayed on different terminals.
The \-i option will override this option.
.TP
\-I \fIinitstring\fP
Set an initial string to be sent to the tty or modem before sending
anything else. This may be used to initialize a modem.  Non printable
characters may be sent by writing their octal code preceded by a
backslash (\\). For example to send a linefeed character (ASCII 10,
octal 012) write \\012.
.PP
.TP
\-l \fIlogin_program\fP
Invoke the specified \fIlogin_program\fP instead of /bin/login.
This allows the use of a non-standard login program (for example,
one that asks for a dial-up password or that uses a different
password file).
.TP
\-H \fIlogin_host\fP
Write the specified \fIlogin_host\fP into the utmp file. (Normally,
no login host is given, since \fBagetty\fP is used for local hardwired
connections and consoles. However, this option can be useful for 
identifying terminal concentrators and the like.
.TP
\-m
Try to extract the baud rate the CONNECT status message
produced by Hayes(tm)\-compatible modems. These status
messages are of the form: "<junk><speed><junk>".
\fBagetty\fP assumes that the modem emits its status message at
the same speed as specified with (the first) \fIbaud_rate\fP value
on the command line.
.sp
Since the \fI\-m\fP feature may fail on heavily-loaded systems,
you still should enable BREAK processing by enumerating all
expected baud rates on the command line.
.TP 
\-n 
Do not prompt the user for a login name. This can be used in
connection with \-l option to invoke a non-standard login process such
as a BBS system. Note that with the \-n option, \fBagetty\fR gets no input from
user who logs in and therefore won't be able to figure out parity,
character size, and newline processing of the connection. It defaults to 
space parity, 7 bit characters, and ASCII CR (13) end-of-line character.
Beware that the program that \fBagetty\fR starts (usually /bin/login)
is run as root.
.TP
\-t \fItimeout\fP
Terminate if no user name could be read within \fItimeout\fP
seconds. This option should probably not be used with hard-wired
lines.
.TP
\-L
Force the line to be a local line with no need for carrier detect. This can
be useful when you have a locally attached terminal where the serial line
does not set the carrier detect signal.
.TP
\-U
Turn on support for detecting an uppercase only terminal.  This setting will
detect a login name containing only capitals as indicating an uppercase
only terminal and turn on some upper to lower case conversions.  Note that
this has no support for any unicode characters.
.TP
\-w 
Wait for the user or the modem to send a carriage-return or a
linefeed character before sending the \fI/etc/issue\fP (or other) file
and the login prompt. Very useful in connection with the \-I option.
.PP
.SH EXAMPLES
This section shows examples for the process field of an entry in the
\fI/etc/inittab\fP file.  You'll have to prepend appropriate values
for the other fields.  See \fIinittab(5)\fP for more details.

For a hard-wired line or a console tty:
.ti +5
/sbin/agetty 9600 ttyS1

For a directly connected terminal without proper carriage detect wiring:
(try this if your terminal just sleeps instead of giving you a password:
prompt.)
.ti +5
/sbin/agetty \-L 9600 ttyS1 vt100

For a old style dial-in line with a 9600/2400/1200 baud modem:
.ti +5
/sbin/agetty \-mt60 ttyS1 9600,2400,1200

For a Hayes modem with a fixed 115200 bps interface to the machine:
(the example init string turns off modem echo and result codes, makes
modem/computer DCD track modem/modem DCD, makes a DTR drop cause a 
dis-connection and turn on auto-answer after 1 ring.)
.ti +5
/sbin/agetty \-w \-I 'ATE0Q1&D2&C1S0=1\\015' 115200 ttyS1

.SH ISSUE ESCAPES
The issue-file (\fI/etc/issue\fP or the file set with the \-f option)
may contain certain escape codes to display the system name, date and
time etc. All escape codes consist of a backslash (\\) immediately
followed by one of the letters explained below.

.TP
b
Insert the baudrate of the current line.
.TP
d
Insert the current date.
.TP
s
Insert the system name, the name of the operating system.
.TP
l
Insert the name of the current tty line.
.TP
m
Insert the architecture identifier of the machine, eg. i486
.TP
n
Insert the nodename of the machine, also known as the hostname.
.TP
o
Insert the NIS domainname of the machine.
.TP
O
Insert the DNS domainname of the machine.
.TP
r
Insert the release number of the OS, eg. 1.1.9.
.TP
t
Insert the current time.
.TP
u
Insert the number of current users logged in.
.TP
U
Insert the string "1 user" or "<n> users" where <n> is the number of current
users logged in.
.TP
v
Insert the version of the OS, eg. the build-date etc.
.TP
Example: On my system, the following \fI/etc/issue\fP file:

.na
.nf
.ti +.5
This is \\n.\\o (\\s \\m \\r) \\t
.TP
displays as

.ti +.5
This is thingol.orcan.dk (Linux i386 1.1.9) 18:29:30

.fi

.SH FILES
.na
.nf
/var/run/utmp, the system status file.
/etc/issue, printed before the login prompt.
/dev/console, problem reports (if syslog(3) is not used).
/etc/inittab, \fIinit\fP(8) configuration file.
.SH BUGS
.ad
.fi
The baud-rate detection feature (the \fI-m\fP option) requires that
\fBagetty\fP be scheduled soon enough after completion of a dial-in
call (within 30 ms with modems that talk at 2400 baud). For robustness,
always use the \fI\-m\fP option in combination with a multiple baud
rate command-line argument, so that BREAK processing is enabled.

The text in the \fI/etc/issue\fP file (or other) and the login prompt
are always output with 7-bit characters and space parity.

The baud-rate detection feature (the \fI-m\fP option) requires that
the modem emits its status message \fIafter\fP raising the DCD line.
.SH DIAGNOSTICS
.ad
.fi
Depending on how the program was configured, all diagnostics are
written to the console device or reported via the syslog(3) facility.
Error messages are produced if the \fIport\fP argument does not
specify a terminal device; if there is no utmp entry for the
current process (System V only); and so on.
.SH AUTHOR(S)
.na
.nf
W.Z. Venema <wietse@wzv.win.tue.nl>
Eindhoven University of Technology
Department of Mathematics and Computer Science
Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands

Peter Orbaek <poe@daimi.aau.dk>
Linux port and more options. Still maintains the code.

Eric Rasmussen <ear@usfirst.org>
Added \-f option to display custom login messages on different terminals.

.SH AVAILABILITY
The agetty command is part of the util-linux-ng package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
