---
name: "mgettydefs"
section: "4"
platform: "linux"
package: "mgetty"
version: "1.2.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/mgettydefs"
---

# mgettydefs(4)

speed and terminal settings used by mgetty

## NAME

mgettydefs - speed and terminal settings used by mgetty

## DESCRIPTION

The **/etc/gettydefs** file contains information used by *mgetty*(1) to set up the speed and terminal settings for a line. It also supplies information on what the *login* prompt should look like.

Many versions of UNIX have a version of *getty*(1) that also reads  **/etc/gettydefs**. Both *mgetty* and *getty* expect similar formats in **/etc/gettydefs** except that, when used by *mgetty*, extended functionality is available. Even so, the additional functions are simply ignored by standard *getty*, so they can co-exist using the same file. Note, however, that *mgetty* can be compiled to use a file different from **/etc/gettydefs** if your *getty* gets upset about the extensions. This manual page documents **/etc/gettydefs** and describes the extended functionality available when used by *mgetty*(1). This document will refer to *getty*(1) except where *mgetty*'s behaviour is different.

Each entry in **/etc/gettydefs** has the following format:

-

  label# initial-flags # final-flags # login-prompt #next-label

Each entry is followed by a blank line. The login prompt field can contain quoted characters which will be converted to other values. The sequences and their substitutions are:

- **\\n**

  newline

- **\\r**

  carriage return

- **\\g**

  beep

- **\\b**

  backspace

- **\\v**

  vertical tab (VT)

- **\\f**

  formfeed

- **\\t**

  tab

- **\\L**

  portname

- **\\C**

  time in [*ctime*(3)](/ctime/3.md) format.

- **\\N**

  number of users currently logged in

- **\\U**

  number of users currently logged in

- **\\D**

  date in DD/MM format

- **\\T**

  time in hh:mm:ss format

- **\\I**

  modem CONNECT attributes

- **\\sequence**

  where "sequence" is a valid strtol format, such as: \\0nnn (octal), \\0xnnn (hex), or \\nnn (decimal).

Note that standard *getty* usually only supports \\b, \\r and \\n.

The various fields are:

- *label*

  This is the string against which *getty* tries to match its second argument. It is often the speed, such as **1200**, at which the terminal is supposed to run, but it need not be (see below).

- *initial-flags*

  These flags are the initial [*ioctl*(2)](/ioctl/2.md) settings to which the terminal is to be set if a terminal type is not specified to *getty*. The flags that *getty* understands are the ones listed in [*termio*(7)](/termio/7.md)). *mgetty* is usually compiled for [*termios*(7)](/termios/7.md) and often has a more complete set than *getty*.

- Normally only the speed flag is required in the

  *initial-flags*. *getty* automatically sets the terminal to raw input mode and takes care of the other flags. If the "-s" option is used with *mgetty*(1) the speed setting is ignored. The *initial-flag* settings remain in effect until *getty* executes [*login*(1)](/login/1.md).

- *final-flags*

  These flags take the same values as the *initial-flags* and are set just before *getty* executes *login*. The speed flag is again required, except with *mgetty* if the -s flag was supplied. Two other commonly specified *final-flags* are **TAB3**, so that tabs are sent to the terminal as spaces, and **HUPCL**, so that the line is hung up on the final close.

- *login-prompt*

  This entire field is printed as the *login-prompt*. Unlike the above fields where white space  (a space, tab or new-line) is ignored, they are included in the *login-prompt* field. This field is ignored if the "-p" option has been specified to *mgetty*(1).

- *next-label*

  specifies the label to use if the user user types a *\<break\>* character, or *getty* detects a reception error. *Getty* searches for the entry with *next-label* as its *label* field and set up the terminal for those settings. Usually, a series of speeds are linked together in this fashion, into a closed set; for instance, **2400** linked to **1200**, which in turn is linked to **300**, which finally is linked to **2400**. *next-label* is ignored with *mgetty*(1).

Several additional composite settings are available for *initial-flags* and *final-flags*. The following composite flags are supported by *mgetty* and are usually supported by *getty*:

- **SANE**

  equivalent to \`\`stty sane''. (BRKINT, IGNPAR, ISTRIP, ICRNL, IXON, OPOST, CS8, CREAD, ISIG, ICANON, ECHO, ECHOK)

- **ODDP**

  Odd parity (CS7, PARENB, PARODD)

- **PARITY**,**EVENP**

  even parity (CS7, PARENB)

- **-ODDP**,**-PARITY**,**-EVENP**

  no parity (resets PARENB, PARODD, and sets CS8)

- **RAW**

  raw I/O (no canonical processing) (turns off OPOST, ICANON)

- **-RAW**,**COOKED**

  enable canonical processing (turns on OPOST, ICANON)

- **NL**

  Ignore newlines. (ICRNL, ONLCR)

- **-NL**

  Respect newlines (turns INLCR, IGNCR, ICRNL, ONLCR, OCRNL, ONLRET off)

- **LCASE**

  Ignore case - treat all as lowercase. (IUCLC, OLCUC, XCASE) Is set if mgetty believes login is entirely uppercase.

- **-LCASE**

  Repect case  (turns off IUCLC, OLCUC and XCASE)

- **TABS**

  output tabs as tabs

- **-TABS**,**TAB3**

  output tabs as spaces

- **EK**

  Sets VERASE to "#" and VKILL to CKILL respectively. (note that while many gettys default VERASE to "#". *mgetty* defaults VERASE to backspace.)

Additionally, *mgetty* (but not *getty*) can set any of the control characters listed in the **c\_cc** termio(termios) structure by the use of two tokens:

\<character name\> \<value\>

Eg:

VERASE ^h

The value can be set as \`\`^\<character\>'', \`\`\\nnn'' or \`\`\\\<character\>'' (normal UNIX \\ escapes).

See the  [*termio*(7)](/termio/7.md) or [*termios*(7)](/termios/7.md) manual pages to a list of which \`\`V'' variables can be changed. Note that many of these can be changed in the c\_cc array, but won't have any effect.

If *getty* is called without a second argument, the first entry of **/etc/gettydefs** is used by *getty*, thus making the first entry of **/etc/gettydefs** the default entry. It is also used if *getty* cannot find the specified *label*. *Mgetty* use a default label of \`\`n'', but this can be changed in the configuration. If **/etc/gettydefs** itself is missing, there is one entry built into the command which brings up a terminal at **300** (configuration parameter in *mgetty*) baud.

It is strongly recommended that after making or modifying **/etc/gettydefs**, it be run through *getty* with the check option to be sure there are no errors.

## EXAMPLES

The following two lines show an example of 300/1200 baud toggle, which is useful for dial-up ports:

-

  1200# B1200 HUPCL # B1200 SANE IXANY TAB3 #login: #300\
   300# B300 HUPCL # B300 SANE IXANY TAB3 #login: #1200

The following line shows a typical 9600 baud entry for a hard-wired connection (not currently supported for *mgetty*):

-

  9600# B9600 # B9600 SANE IXANY IXANY ECHOE TAB3 #login: #9600

The following line is a typical smart-modem setup, suitable for *mgetty*:

-

  ```
  19200mg#
      B19200 #
      B19200 SANE VERASE \b VINTR \003 HUPCL #
      \n\D \T \N Users @!login: #19200mg
  ```

## FILES

/etc/gettydefs

## SEE ALSO

[mgetty(8)](/mgetty/8.md), [getty(8)](/getty/8.md), [login(1)](/login/1.md), [ioctl(2)](/ioctl/2.md), [termio(7)](/termio/7.md), [termios(7)](/termios/7.md).
