aboutsummaryrefslogtreecommitdiff
path: root/en/handbook/serialcomms/chapter.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'en/handbook/serialcomms/chapter.sgml')
-rw-r--r--en/handbook/serialcomms/chapter.sgml2100
1 files changed, 0 insertions, 2100 deletions
diff --git a/en/handbook/serialcomms/chapter.sgml b/en/handbook/serialcomms/chapter.sgml
deleted file mode 100644
index f2d114ce25..0000000000
--- a/en/handbook/serialcomms/chapter.sgml
+++ /dev/null
@@ -1,2100 +0,0 @@
- <chapter id="serialcomms">
- <title>Serial Communications</title>
-
-
- <sect1 id="serial">
- <title>Serial Basics</title>
-
- <para><emphasis>Assembled from FAQ.</emphasis></para>
-
- <para>This section should give you some general information about
- serial ports. If you do not find what you want here, check into the
- Terminal and Dialup sections of the handbook.</para>
-
- <para>The <filename>ttyd<replaceable>X</replaceable></filename> (or <filename>cuaa<replaceable>X</replaceable></filename>)
- device is the regular device you will want to open for your
- applications. When a process opens the device, it will have a
- default set of terminal I/O settings. You can see these settings
- with the command</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>stty -a -f /dev/ttyd1</userinput></screen>
- </informalexample>
-
- <para>When you change the settings to this device, the settings are in
- effect until the device is closed. When it is reopened, it goes
- back to the default set. To make changes to the default set, you
- can open and adjust the settings of the &ldquo;initial state&rdquo; device.
- For example, to turn on <acronym>CLOCAL</acronym> mode, 8 bits, and
- <emphasis>XON/XOFF</emphasis> flow control by default for ttyd5, do:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>stty -f /dev/ttyid5 clocal cs8 ixon ixoff</userinput></screen>
- </informalexample>
-
- <para>A good place to do this is in
- <filename>/etc/rc.serial</filename>. Now, an application will have
- these settings by default when it opens <filename>ttyd5</filename>.
- It can still change these settings to its liking, though.</para>
-
- <para>You can also prevent certain settings from being changed by an
- application by making adjustments to the &ldquo;lock state&rdquo; device. For
- example, to lock the speed of <filename>ttyd5</filename> to 57600
- bps, do</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>stty -f /dev/ttyld5 57600</userinput></screen>
- </informalexample>
-
- <para>Now, an application that opens <filename>ttyd5</filename> and
- tries to change the speed of the port will be stuck with 57600
- bps.</para>
-
- <para>Naturally, you should make the initial state and lock state
- devices writable only by <username>root</username>. The
- <filename>MAKEDEV</filename> script does <emphasis>not</emphasis> do
- this when it creates the device entries.</para>
-
- </sect1>
-
- <sect1 id="term">
- <title>Terminals</title>
-
- <para><emphasis>Contributed by &a.kelly;<!-- <br> -->28 July
- 1996</emphasis></para>
-
- <para>Terminals provide a convenient and low-cost way to access the
- power of your FreeBSD system when you are not at the computer's
- console or on a connected network. This section describes how to
- use terminals with FreeBSD.</para>
-
-
- <sect2 id="term-uses">
- <title>Uses and Types of Terminals</title>
-
- <para>The original Unix systems did not have consoles. Instead,
- people logged in and ran programs through terminals that were
- connected to the computer's serial ports. It is quite similar to
- using a modem and some terminal software to dial into a remote
- system to do text-only work.</para>
-
- <para>Today's PCs have consoles capable of high quality graphics,
- but the ability to establish a login session on a serial port
- still exists in nearly every Unix-style operating system today;
- FreeBSD is no exception. By using a terminal attached to a unused
- serial port, you can log in and run any text program that you
- would normally run on the console or in an <command>xterm</command> window in the X Window System.</para>
-
- <para>For the business user, you can attach many terminals to a
- FreeBSD system and place them on your employees' desktops. For a
- home user, a spare computer such as an older IBM PC or a Macintosh
- can be a terminal wired into a more powerful computer running
- FreeBSD. You can turn what might otherwise be a single-user
- computer into a powerful multiple user system.</para>
-
- <para>For FreeBSD, there are three kinds of terminals:</para>
-
-
- <itemizedlist>
-
- <listitem>
- <para><link linkend="term-dumb">Dumb terminals</link></para>
- </listitem>
-
- <listitem>
- <para><link linkend="term-pcs">PCs acting as
- terminals</link></para>
- </listitem>
-
- <listitem>
- <para><link linkend="term-x">X terminals</link></para>
- </listitem>
-
- </itemizedlist>
-
-
- <para>The remaining subsections describe each kind.</para>
-
-
- <sect3 id="term-dumb">
- <title>Dumb Terminals</title>
-
- <para>Dumb terminals are specialized pieces of hardware that let
- you connect to computers over serial lines. They are called
- &ldquo;dumb&rdquo; because they have only enough computational power to
- display, send, and receive text. You cannot run any programs on
- them. It is the computer to which you connect them that has all
- the power to run text editors, compilers, email, games, and so
- forth.</para>
-
- <para>There are hundreds of kinds of dumb terminals made by many
- manufacturers, including Digital Equipment Corporation's VT-100
- and Wyse's WY-75. Just about any kind will work with FreeBSD.
- Some high-end terminals can even display graphics, but only
- certain software packages can take advantage of these advanced
- features.</para>
-
- <para>Dumb terminals are popular in work environments where
- workers do not need access to graphic applications such as those
- provided by the X Window System.</para>
-
- </sect3>
-
- <sect3 id="term-pcs">
- <title>PCs Acting As Terminals</title>
-
- <para>If a <link linkend="term-dumb">dumb terminal</link> has
- just enough ability to display, send, and receive text, then
- certainly any spare personal computer can be a dumb terminal.
- All you need is the proper cable and some <emphasis>terminal
- emulation</emphasis> software to run on the computer.</para>
-
- <para>Such a configuration is popular in homes. For example, if
- your spouse is busy working on your FreeBSD system's console,
- you can do some text-only work at the same time from a less
- powerful personal computer hooked up as a terminal to the
- FreeBSD system.</para>
-
- </sect3>
-
- <sect3 id="term-x">
- <title>X Terminals</title>
-
- <para>X terminals are the most sophisticated kind of terminal
- available. Instead of connecting to a serial port, they usually
- connect to a network like Ethernet. Instead of being relegated
- to text-only applications, they can display any X
- application.</para>
-
- <para>We introduce X terminals just for the sake of completeness.
- However, this chapter does <emphasis>not</emphasis> cover setup,
- configuration, or use of X terminals.</para>
-
- </sect3>
- </sect2>
-
- <sect2 id="term-cables-ports">
- <title>Cables and Ports</title>
-
- <para>To connect a terminal to your FreeBSD system, you need the
- right kind of cable and a serial port to which to connect it. This
- section tells you what to do. If you are already familiar with
- your terminal and the cable it requires, skip to
- <link linkend="term-config">Configuration</link>.</para>
-
-
- <sect3 id="term-cables">
- <title>Cables</title>
-
- <para>Because terminals use serial ports, you need to use
- serial&mdash;also known as RS-232C&mdash;cables to connect the terminal
- to the FreeBSD system.</para>
-
- <para>There are a couple of kinds of serial cables. Which one
- you'll use depends on the terminal you want to connect:</para>
-
-
- <itemizedlist>
-
- <listitem>
- <para>If you are connecting a personal computer to act as a
- terminal, use a <link linkend="term-null">null-modem</link> cable. A null-modem cable connects
- two computers or terminals together.</para>
- </listitem>
-
- <listitem>
- <para>If you have an actual terminal, your best source of
- information on what cable to use is the documentation that
- accompanied the terminal. If you do not have the
- documentation, then try a <link linkend="term-null">null-modem</link> cable. If that does not work, then
- try a <link linkend="term-std">standard</link>
- cable.</para>
- </listitem>
-
- </itemizedlist>
-
-
- <para>Also, the serial port on <emphasis>both</emphasis> the
- terminal and your FreeBSD system must have connectors that will
- fit the cable you are using.</para>
-
-
- <sect4 id="term-null">
- <title>Null-modem cables</title>
-
- <para>A null-modem cable passes some signals straight through,
- like &ldquo;signal ground,&rdquo; but switches other signals. For
- example, the &ldquo;send data&rdquo; pin on one end goes to the
- &ldquo;receive data&rdquo; pin on the other end.</para>
-
- <para>If you like making your own cables, here is a table
- showing a recommended way to construct a null-modem cable for
- use with terminals. This table shows the RS-232C signal names
- and the pin numbers on a DB-25 connector.</para>
-
- <informaltable frame="none">
- <tgroup cols="5">
- <thead>
- <row>
- <entry>Signal</entry>
- <entry>Pin #</entry>
- <entry></entry>
- <entry>Pin #</entry>
- <entry>Signal</entry>
- </row>
- </thead>
-
- <tbody>
-
- <row>
- <entry>TxD</entry>
- <entry>2</entry>
- <entry>connects to</entry>
- <entry>3</entry>
- <entry>RxD</entry>
- </row>
-
- <row>
- <entry>RxD</entry>
- <entry>3</entry>
- <entry>connects to</entry>
- <entry>2</entry>
- <entry>TxD</entry>
- </row>
-
- <row>
- <entry>DTR</entry>
- <entry>20</entry>
- <entry>connects to</entry>
- <entry>6</entry>
- <entry>DSR</entry>
- </row>
-
- <row>
- <entry>DSR</entry>
- <entry>6</entry>
- <entry>connects to</entry>
- <entry>20</entry>
- <entry>DTR</entry>
- </row>
-
- <row>
- <entry>SG</entry>
- <entry>7</entry>
- <entry>connects to</entry>
- <entry>7</entry>
- <entry>SG</entry>
- </row>
-
- <row>
- <entry>DCD</entry>
- <entry>8</entry>
- <entry>connects to</entry>
- <entry>4</entry>
- <entry>RTS</entry>
- </row>
-
- <row>
- <entry>RTS</entry>
- <entry>4</entry>
- <entry></entry>
- <entry>5</entry>
- <entry>CTS</entry>
- </row>
-
- <row>
- <entry>CTS</entry>
- <entry>5</entry>
- <entry>connects to</entry>
- <entry>8</entry>
- <entry>DCD</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <note>
- <para>For DCD to RTS, connect pins 4 to 5 internally in the
- connector hood, and then to pin 8 in the remote
- hood.</para>
- </note>
- </sect4>
-
- <sect4 id="term-std">
- <title>Standard RS-232C Cables</title>
-
- <para>A standard serial cable passes all the RS-232C signals
- straight-through. That is, the &ldquo;send data&rdquo; pin on one end
- of the cable goes to the &ldquo;send data&rdquo; pin on the other end.
- This is the type of cable to connect a modem to your FreeBSD
- system, and the type of cable needed for some
- terminals.</para>
-
- </sect4>
- </sect3>
-
- <sect3 id="term-ports">
- <title>Ports</title>
-
- <para>Serial ports are the devices through which data is
- transferred between the FreeBSD host computer and the terminal.
- This section describes the kinds of ports that exist and how
- they are addressed in FreeBSD.</para>
-
-
- <sect4 id="term-portkinds">
- <title>Kinds of Ports</title>
-
- <para>Several kinds of serial ports exist. Before you purchase
- or construct a cable, you need to make sure it will fit the
- ports on your terminal and on the FreeBSD system.</para>
-
- <para>Most terminals will have DB25 ports. Personal computers,
- including PCs running FreeBSD, will have DB25 or DB9 ports.
- If you have a multiport serial card for your PC, you may have
- RJ-12 or RJ-45 ports.</para>
-
- <para>See the documentation that accompanied the hardware for
- specifications on the kind of port in use. A visual
- inspection of the port often works, too.</para>
-
- </sect4>
-
- <sect4 id="term-portnames">
- <title>Port Names</title>
-
- <para>In FreeBSD, you access each serial port through an entry
- in the <filename>/dev</filename> directory. There are two
- different kinds of entries:</para>
-
- <itemizedlist>
-
- <listitem>
- <para>Callin ports are named
- <filename>/dev/ttyd<replaceable>X</replaceable></filename> where <replaceable>X</replaceable> is the port number, starting from zero. Generally, you use the callin port for terminals. Callin ports require that the serial line assert the data carrier detect (DCD) signal to work.</para>
- </listitem>
-
- <listitem>
- <para>Callout ports are named
- <filename>/dev/cuaa<replaceable>X</replaceable></filename>. You usually do not use the callout port for terminals, just for modems. You may use the callout port if the serial cable or the terminal does not support the carrier detect signal.</para>
- </listitem>
-
- </itemizedlist>
-
- <para>See the <citerefentry><refentrytitle>sio</refentrytitle><manvolnum>4</manvolnum></citerefentry> manual page for more information.</para>
-
- <para>If you have connected a terminal to the first serial port
- (<devicename>COM1</devicename> in DOS parlance), then you want to use
- <filename>/dev/ttyd0</filename> to refer to the terminal. If
- it is on the second serial port (also known as <devicename>COM2</devicename>), it is
- <filename>/dev/ttyd1</filename>, and so forth.</para>
-
- <para>Note that you may have to configure your kernel to support
- each serial port, especially if you have a multiport serial
- card. See <link linkend="kernelconfig">Configuring the FreeBSD Kernel</link> for more
- information.</para>
-
- </sect4>
- </sect3>
- </sect2>
-
- <sect2 id="term-config">
- <title>Configuration</title>
-
- <para>This section describes what you need to configure on your
- FreeBSD system to enable a login session on a terminal. It
- assumes you have already configured your kernel to support the
- serial port to which the terminal is connected&mdash;and that you have
- connected it.</para>
-
- <para>In a nutshell, you need to tell the <command>init</command> process, which is responsible for
- process control and initialization, to start a <command>getty</command> process, which is responsible for
- reading a login name and starting the <command>login</command> program.</para>
-
- <para>To do so, you have to edit the <filename>/etc/ttys</filename>
- file. First, use the <command>su</command> command to
- become root. Then, make the following changes to
- <filename>/etc/ttys</filename>:</para>
-
- <procedure>
- <step>
- <para>Add an line to <filename>/etc/ttys</filename> for the
- entry in the <filename>/dev</filename> directory for the
- serial port if it is not already there.</para>
- </step>
-
- <step>
- <para>Specify that <filename>/usr/libexec/getty</filename> be
- run on the port, and specify the appropriate <replaceable>getty</replaceable> type from the
- <filename>/etc/gettytab</filename> file.</para>
- </step>
-
- <step>
- <para>Specify the default terminal type.</para>
- </step>
-
- <step>
- <para>Set the port to &ldquo;on.&rdquo;</para>
- </step>
-
- <step>
- <para>Specify whether the port should be &ldquo;secure.&rdquo;</para>
- </step>
-
- <step>
- <para>Force <command>init</command> to reread the
- <filename>/etc/ttys</filename> file.</para>
- </step>
- </procedure>
-
- <para>As an optional step, you may wish to create a custom
- <replaceable>getty</replaceable> type for use in step 2 by making an
- entry in <filename>/etc/gettytab</filename>. This document does
- not explain how to do so; you are encouraged to see the
- <citerefentry><refentrytitle>gettytab</refentrytitle><manvolnum>5</manvolnum></citerefentry> and the <citerefentry><refentrytitle>getty</refentrytitle><manvolnum>8</manvolnum></citerefentry> manual pages for more
- information.</para>
-
- <para>The remaining sections detail how to do these steps. We will
- use a running example throughout these sections to illustrate what
- we need to do. In our example, we will connect two terminals to
- the system: a Wyse-50 and a old 286 IBM PC running Procomm
- terminal software emulating a VT-100 terminal. We connect the Wyse
- to the second serial port and the 286 to the sixth serial port (a
- port on a multiport serial card).</para>
-
- <para>For more information on the <filename>/etc/ttys</filename>
- file, see the <citerefentry><refentrytitle>ttys</refentrytitle><manvolnum>5</manvolnum></citerefentry> manual page.</para>
-
-
- <sect3 id="term-etcttys">
- <title>Adding an Entry to <filename>/etc/ttys</filename></title>
-
- <para>First, you need to add an entry to the
- <filename>/etc/ttys</filename> file, unless one is already
- there.</para>
-
- <para>The <filename>/etc/ttys</filename> file lists all of the
- ports on your FreeBSD system where you want to allow logins. For
- example, the first virtual console <filename>ttyv0</filename>
- has an entry in this file. You can log in on the console using
- this entry. This file contains entries for the other virtual
- consoles, serial ports, and pseudo-ttys. For a hardwired
- terminal, just list the serial port's <filename>/dev</filename>
- entry without the <filename>/dev</filename> part.</para>
-
- <para>When you installed your FreeBSD system, the
- <filename>/etc/ttys</filename> file included entries for the
- first four serial ports: <filename>ttyd0</filename> through
- <filename>ttyd3</filename>. If you are attaching a terminal on
- one of those ports, you do not need to add an entry.</para>
-
- <para>In our example, we attached a Wyse-50 to the second serial
- port, <filename>ttyd1</filename>, which is already in
- the file. We need to add an entry for the 286 PC connected to
- the sixth serial port. Here is an excerpt of the
- <filename>/etc/ttys</filename> file after we add the new entry:</para>
-
- <programlisting>
-ttyd1 "/usr/libexec/getty std.9600" unknown off secure
-ttyd5</programlisting>
-
- </sect3>
-
- <sect3 id="term-getty">
- <title>Specifying the <replaceable>getty</replaceable>
- Type</title>
-
- <para>Next, we need to specify what program will be run to handle
- the logins on a terminal. For FreeBSD, the standard program to
- do that is <filename>/usr/libexec/getty</filename>. It is what
- provides the <prompt>login:</prompt> prompt.</para>
-
- <para>The program <command>getty</command> takes one
- (optional) parameter on its command line, the
- <replaceable>getty</replaceable> type.
- A <replaceable>getty</replaceable> type tells about
- characteristics on the terminal line, like bps rate and parity.
- The <command>getty</command> program reads these
- characteristics from the file
- <filename>/etc/gettytab</filename>.</para>
-
- <para>The file <filename>/etc/gettytab</filename> contains lots of
- entries for terminal lines both old and new. In almost all
- cases, the entries that start with the text <literal>std</literal> will work for hardwired terminals.
- These entries ignore parity. There is a <literal>std</literal> entry for each bps rate from 110 to
- 115200. Of course, you can add your own entries to this file.
- The manual page <citerefentry><refentrytitle>gettytab</refentrytitle><manvolnum>5</manvolnum></citerefentry> provides more information.</para>
-
- <para>When setting the <replaceable>getty</replaceable> type in
- the <filename>/etc/ttys</filename> file, make sure that the
- communications settings on the terminal match.</para>
-
- <para>For our example, the Wyse-50 uses no parity and connects at
- 38400 bps. The 286 PC uses no parity and connects at 19200 bps.
- Here is the <filename>/etc/ttys</filename> file so far (showing
- just the two terminals in which we are interested):</para>
-
- <programlisting>
-ttyd1 "/usr/libexec/getty std.38400" unknown off secure
-ttyd5 "/usr/libexec/getty std.19200"</programlisting>
-
- <para>Note that the second field&mdash;where we specify
- what program to run&mdash;appears in quotes. This is important,
- otherwise the type argument to <command>getty</command> might be interpreted as the next
- field.</para>
-
- </sect3>
-
- <sect3 id="term-deftermtype">
- <title>Specifying the Default Terminal Type</title>
-
- <para>The third field in the <filename>/etc/ttys</filename> file
- lists the default terminal type for the port. For dialup ports,
- you typically put <literal>unknown</literal> or
- <literal>dialup</literal> in this field because users
- may dial up with practically any kind of terminal or software.
- For hardwired terminals, the terminal type does not change, so
- you can put a real terminal type in this field.</para>
-
- <para>Users will usually use the <command>tset</command> program in their
- <filename>.login</filename> or <filename>.profile</filename>
- files to check the terminal type and prompt for one if
- necessary. By setting a terminal type in the
- <filename>/etc/ttys</filename> file, users can forego such
- prompting.</para>
-
- <para>To find out what terminal types FreeBSD supports, see the
- file <filename>/usr/share/misc/termcap</filename>. It lists
- about 600 terminal types. You can add more if you wish. See
- the <citerefentry><refentrytitle>termcap</refentrytitle><manvolnum>5</manvolnum></citerefentry> manual page for information.</para>
-
- <para>In our example, the Wyse-50 is a Wyse-50 type of terminal
- (although it can emulate others, we will leave it in Wyse-50
- mode). The 286 PC is running Procomm which will be set to
- emulate a VT-100. Here are the pertinent yet unfinished entries
- from the <filename>/etc/ttys</filename> file:</para>
-
- <programlisting>
-ttyd1 "/usr/libexec/getty std.38400" wy50 off secure
-ttyd5 "/usr/libexec/getty std.19200" vt100</programlisting>
-
- </sect3>
-
- <sect3 id="term-enable">
- <title>Enabling the Port</title>
-
- <para>The next field in <filename>/etc/ttys</filename>, the fourth
- field, tells whether to enable the port. Putting <literal>on</literal> here will have the <command>init</command> process start the program in the
- second field, <command>getty</command>, which will
- prompt for a login. If you put <literal>off</literal> in the fourth field, there will be no
- <command>getty</command>, and hence no logins on the
- port.</para>
-
- <para>So, naturally, you want an <literal>on</literal>
- in this field. Here again is the <filename>/etc/ttys</filename>
- file. We have turned each port <literal>on</literal>.</para>
-
- <programlisting>
-ttyd1 "/usr/libexec/getty std.38400" wy50 on secure
-ttyd5 "/usr/libexec/getty std.19200" vt100 on</programlisting>
-
- </sect3>
-
- <sect3 id="term-secure">
- <title>Specifying Secure Ports</title>
-
- <para>We have arrived at the last field (well, almost: there is an
- optional <literal>window</literal> specifier, but we
- will ignore that). The last field tells whether the port is
- secure.</para>
-
- <para>What does &ldquo;secure&rdquo; mean?</para>
-
- <para>It means that the root account (or any account with a user
- ID of 0) may login on the port. Insecure ports do not allow
- root to login.</para>
-
- <para>How do you use secure and insecure ports?</para>
-
- <para>By marking a port as insecure, the terminal to which it is
- connected will not allow root to login. People who know the
- root password to your FreeBSD system will first have to login
- using a regular user account. To gain superuser privileges,
- they will then have to use the <command>su</command>
- command.</para>
-
- <para>Because of this, you will have two records to help track
- down possible compromises of root privileges: both the <command>login</command> and
- the <command>su</command> command make records in the
- system log (and logins are also recorded in the <filename>wtmp</filename> file).</para>
-
- <para>By marking a port as secure, the terminal will allow root
- in. People who know the root password will just login as root.
- You will not have the potentially useful login and <command>su</command> command records.</para>
-
- <para>Which should you use?</para>
-
- <para>Just use &ldquo;insecure.&rdquo; Use &ldquo;insecure&rdquo;
- <emphasis>even</emphasis> for terminals <emphasis>not</emphasis>
- in public user areas or behind locked doors. It is quite easy
- to login and use <command>su</command> if you need
- superuser privileges.</para>
-
- <para>Here finally are the completed entries in the
- <filename>/etc/ttys</filename> file, with comments added to
- describe where the terminals are:</para>
-
- <programlisting>
-ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure # Kitchen
-ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure # Guest bathroom</programlisting>
-
- </sect3>
-
- <sect3 id="term-hup">
- <title>Force <command>init</command> to Reread
- <filename>/etc/ttys</filename></title>
-
- <para>When you boot FreeBSD, the first process, <command>init</command>, will read the
- <filename>/etc/ttys</filename> file and start the programs
- listed for each enabled port to prompt for logins.</para>
-
- <para>After you edit <filename>/etc/ttys</filename>, you do not
- want to have to reboot your system to get <command>init</command> to see the changes. So, <command>init</command> will reread
- <filename>/etc/ttys</filename> if it receives a SIGHUP (hangup)
- signal.</para>
-
- <para>So, after you have saved your changes to
- <filename>/etc/ttys</filename>, send <literal>SIGHUP</literal> to <command>init</command> by typing:</para>
- <informalexample>
- <screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen>
- </informalexample>
-
- <para>(The <command>init</command>
- process <emphasis>always</emphasis> has process ID 1.)</para>
-
- <para>If everything is set up correctly, all cables are in place,
- and the terminals are powered up, you should see login prompts.
- Your terminals are ready for their first logins!</para>
-
- </sect3>
- </sect2>
-
- <sect2 id="term-debug">
- <title>Debugging your connection</title>
-
- <para>Even with the most meticulous attention to detail, something
- could still go wrong while setting up a terminal. Here is a list
- of symptoms and some suggested fixes.</para>
-
-
- <variablelist>
- <varlistentry><term>No login prompt appears</term>
- <listitem>
- <para>Make sure the terminal is plugged in and powered up.
- If it is a personal computer acting as a terminal, make
- sure it is running terminal emulation software on the
- correct serial port.</para>
-
- <para>Make sure the cable is connected firmly to both the
- terminal and the FreeBSD computer. Make sure it is the
- right kind of cable.</para>
-
- <para>Make sure the terminal and FreeBSD agree on the bps
- rate and parity settings. If you have a video display
- terminal, make sure the contrast and brightness controls
- are turned up. If it is a printing terminal, make sure
- paper and ink are in good supply.</para>
-
- <para>Make sure that a <command>getty</command>
- process is running and serving the terminal. Type
-
- <informalexample>
- <screen>&prompt.root; <userinput>ps -axww|grep getty</userinput></screen>
- </informalexample> to get a list of running <command>getty</command> processes. You should see an
- entry for the terminal. For example, the display
-
- <informalexample>
- <screen>22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1</screen>
- </informalexample> shows that a <command>getty</command> is running on the second
- serial port <literal>ttyd1</literal> and is
- using the <literal>std.38400</literal> entry in
- <filename>/etc/gettytab</filename>.</para>
-
- <para>If no <command>getty</command> process is
- running, make sure you have enabled the port in
- <filename>/etc/ttys</filename>. Make sure you have run
- <command>kill -HUP 1</command>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term>Garbage appears instead of a login
- prompt</term>
-
- <listitem>
- <para>Make sure the terminal and FreeBSD agree on the bps
- rate and parity settings. Check the getty processes to
- make sure the correct <replaceable>getty</replaceable>
- type is in use. If not, edit
- <filename>/etc/ttys</filename> and run <command>kill -HUP
- 1</command>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term>Characters appear doubled; the password
- appears when typed</term>
-
- <listitem>
- <para>Switch the terminal (or the terminal emulation
- software) from &ldquo;half duplex&rdquo; or &ldquo;local echo&rdquo; to &ldquo;full
- duplex.&rdquo;</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
-
- </sect2>
- </sect1>
-
- <sect1 id="dialup">
- <title>Dialin Service</title>
-
- <para><emphasis>Contributed by &a.ghelmer;.</emphasis></para>
-
- <para>This document provides suggestions for configuring a FreeBSD
- system to handle dialup modems. This document is written based on
- the author's experience with FreeBSD versions 1.0, 1.1, and 1.1.5.1
- (and experience with dialup modems on other UNIX-like operating
- systems); however, this document may not answer all of your
- questions or provide examples specific enough to your environment.
- The author cannot be responsible if you damage your system or lose
- data due to attempting to follow the suggestions here.</para>
-
-
- <sect2 id="dialup-prereqs">
- <title>Prerequisites</title>
-
- <para>To begin with, the author assumes you have some basic
- knowledge of FreeBSD. You need to have FreeBSD installed, know
- how to edit files in a UNIX-like environment, and how to look up
- manual pages on the system. As discussed below, you will need
- certain versions of FreeBSD, and knowledge of some terminology
- &amp; modem and cabling.</para>
-
-
- <sect3>
- <title>FreeBSD Version</title>
-
- <para>First, it is assumed that you are using FreeBSD version 1.1
- or higher (including versions 2.x). FreeBSD version 1.0
- included two different serial drivers, which complicates the
- situation. Also, the serial device driver (<devicename>sio</devicename>) has improved in every release of
- FreeBSD, so more recent versions of FreeBSD are assumed to have
- better and more efficient drivers than earlier versions.</para>
-
- </sect3>
-
- <sect3>
- <title>Terminology</title>
-
- <para>A quick rundown of terminology:</para>
-
-
- <variablelist>
- <varlistentry><term>bps</term>
- <listitem>
- <para>Bits per Second &mdash; the rate at which data is
- transmitted</para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term>DTE</term>
-
- <listitem>
- <para>Data Terminal Equipment &mdash; for example, your
- computer</para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term>DCE</term>
-
- <listitem>
- <para>Data Communications Equipment &mdash; your modem</para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term>RS-232</term>
-
- <listitem>
- <para>EIA standard for serial communications via
- hardware</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
-
- <para>If you need more information about these terms and data
- communications in general, the author remembers reading that
- <emphasis>The RS-232 Bible</emphasis> (anybody have an ISBN?) is
- a good reference.</para>
-
- <para>When talking about communications data rates, the author
- does not use the term &ldquo;baud&rdquo;. Baud
- refers to the number of electrical state transitions that may be
- made in a period of time, while &ldquo;bps&rdquo; (bits per second) is the &ldquo;correct&rdquo;
- term to use (at least it does not seem to bother the curmudgeons
- quite a much).</para>
-
- </sect3>
-
- <sect3>
- <title>External vs. Internal Modems</title>
-
- <para>External modems seem to be more convenient for dialup,
- because external modems often can be semi-permanently configured
- via parameters stored in non-volatile RAM and they usually
- provide lighted indicators that display the state of important
- RS-232 signals. Blinking lights impress visitors, but lights are
- also very useful to see whether a modem is operating
- properly.</para>
-
- <para>Internal modems usually lack non-volatile RAM, so their
- configuration may be limited only to setting DIP switches. If
- your internal modem has any signal indicator lights, it is
- probably difficult to view the lights when the system's cover is
- in place.</para>
-
- </sect3>
-
- <sect3>
- <title>Modems and Cables</title>
-
- <para>A background knowledge of these items is assumed</para>
-
-
- <itemizedlist>
-
- <listitem>
- <para>You know how to connect your modem to your computer
- so that the two can communicate (unless you have an
- internal modem, which does not need such a cable)</para>
- </listitem>
-
- <listitem>
- <para>You are familiar with your modem's command set, or
- know where to look up needed commands</para>
- </listitem>
-
- <listitem>
- <para>You know how to configure your modem (probably via a
- terminal communications program) so you can set the
- non-volatile RAM parameters</para>
- </listitem>
-
- </itemizedlist>
-
-
- <para>The first, connecting your modem, is usually simple &mdash; most
- straight-through serial cables work without any problems. You
- need to have a cable with appropriate connectors (DB-25 or DB-9,
- male or female) on each end, and the cable must be a DCE-to-DTE
- cable with these signals wired:</para>
-
-
- <itemizedlist>
-
- <listitem>
- <para>Transmitted Data (<acronym>SD</acronym>)</para>
- </listitem>
-
- <listitem>
- <para>Received Data (<acronym>RD</acronym>)</para>
- </listitem>
-
- <listitem>
- <para>Request to Send (<acronym>RTS</acronym>)</para>
- </listitem>
-
- <listitem>
- <para>Clear to Send (<acronym>CTS</acronym>)</para>
- </listitem>
-
- <listitem>
- <para>Data Set Ready (<acronym>DSR</acronym>)</para>
- </listitem>
-
- <listitem>
- <para>Data Terminal Ready (<acronym>DTR</acronym>)</para>
- </listitem>
-
- <listitem>
- <para>Carrier Detect (<acronym>CD</acronym>)</para>
- </listitem>
-
- <listitem>
- <para>Signal Ground (<acronym>SG</acronym>)</para>
- </listitem>
-
- </itemizedlist>
-
-
- <para>FreeBSD needs the <acronym>RTS</acronym> and
- <acronym>CTS</acronym> signals for flow-control at speeds above
- 2400bps, the <acronym>CD</acronym> signal to detect when a call
- has been answered or the line has been hung up, and the
- <acronym>DTR</acronym> signal to reset the modem after a session
- is complete. Some cables are wired without all of the needed
- signals, so if you have problems, such as a login session not
- going away when the line hangs up, you may have a problem with
- your cable.</para>
-
- <para>The second prerequisite depends on the modem(s) you use. If
- you do not know your modem's command set by heart, you will need
- to have the modem's reference book or user's guide handy.
- Sample commands for USR Sportster 14,400 external modems will be
- given, which you may be able to use as a reference for your own
- modem's commands.</para>
-
- <para>Lastly, you will need to know how to setup your modem so
- that it will work well with FreeBSD. Like other UNIX-like
- operating systems, FreeBSD uses the hardware signals to find out
- when a call has been answered or a line has been hung up and to
- hangup and reset the modem after a call. FreeBSD avoids sending
- commands to the modem or watching for status reports from the
- modem. If you are familiar with connecting modems to PC-based
- bulletin board systems, this may seem awkward.</para>
-
- </sect3>
-
- <sect3>
- <title>Serial Interface Considerations</title>
-
- <para>FreeBSD supports NS8250-, NS16450-, NS16550-, and
- NS16550A-based EIA RS-232C (CCITT V.24) communications
- interfaces. The 8250 and 16450 devices have single-character
- buffers. The 16550 device provides a 16-character buffer, which
- allows for better system performance. (Bugs in plain 16550's
- prevent the use of the 16-character buffer, so use 16550A's if
- possible). Because single-character-buffer devices require more
- work by the operating system than the 16-character-buffer
- devices, 16550A-based serial interface cards are much prefered.
- If the system has many active serial ports or will have a heavy
- load, 16550A-based cards are better for low-error-rate
- communications.</para>
-
- </sect3>
- </sect2>
-
- <sect2>
- <title>Quick Overview</title>
-
- <para>Here is the process that FreeBSD follows to accept dialup
- logins. A <command>getty</command> process, spawned by
- <command>init</command>, patiently waits to open the
- assigned serial port (<filename>/dev/ttyd0</filename>, for our
- example). The command <command>ps ax</command> might
- show this:</para>
-
-
- <informalexample>
- <screen> 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0</screen>
- </informalexample>
-
- <para>When a user dials the modem's line and the modems connect, the
- <acronym>CD</acronym> line is asserted by the modem. The kernel
- notices that carrier has been detected and completes
- <command>getty</command>'s open of the
- port. <command>getty</command> sends a <prompt>login:</prompt> prompt at the specified initial line
- speed. <command>getty</command> watches to see if
- legitimate characters are received, and, in a typical
- configuration, if it finds junk (probably due to the modem's
- connection speed being different than <command>getty</command>'s speed), <command>getty</command> tries adjusting the line speeds until
- it receives reasonable characters.</para>
-
- <para>We hope <command>getty</command> finds the correct
- speed and the user sees a <prompt>login:</prompt>
- prompt. After the user enters his/her login name, <command>getty</command> executes
- <filename>/usr/bin/login</filename>, which completes the login by
- asking for the user's password and then starting the user's
- shell.</para>
-
- <para>Let's dive into the configuration...</para>
-
- </sect2>
-
- <sect2>
- <title>Kernel Configuration</title>
-
- <para>FreeBSD kernels typically come prepared to search for four
- serial ports, known in the PC-DOS world as
- <devicename>COM1:</devicename>, <devicename>COM2:</devicename>,
- <devicename>COM3:</devicename>, and <devicename>COM4:</devicename>. FreeBSD can presently also handle
- &ldquo;dumb&rdquo; multiport serial interface cards, such as the Boca Board
- 1008 and 2016 (please see the manual page <citerefentry><refentrytitle>sio</refentrytitle><manvolnum>4</manvolnum></citerefentry> for kernel configuration information
- if you have a multiport serial card). The default kernel only
- looks for the standard COM ports, though.</para>
-
- <para>To see if your kernel recognizes any of your serial ports,
- watch for messages while the kernel is booting, or use the
- <command>/sbin/dmesg</command> command to replay the
- kernel's boot messages. In particular, look for messages that
- start with the characters <literal>sio</literal>. Hint:
- to view just the messages that have the word <literal>sio</literal>, use the command:</para>
-
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/dmesg | grep 'sio'</userinput></screen>
- </informalexample>
-
- <para>For example, on a system with four serial ports, these are the
- serial-port specific kernel boot messages:</para>
-
-
- <informalexample>
- <screen>sio0 at 0x3f8-0x3ff irq 4 on isa
-sio0: type 16550A
-sio1 at 0x2f8-0x2ff irq 3 on isa
-sio1: type 16550A
-sio2 at 0x3e8-0x3ef irq 5 on isa
-sio2: type 16550A
-sio3 at 0x2e8-0x2ef irq 9 on isa
-sio3: type 16550A</screen>
- </informalexample>
-
- <para>If your kernel does not recognize all of your serial ports,
- you will probably need to configure a custom FreeBSD kernel for
- your system.</para>
-
- <para>Please see the BSD System Manager's Manual chapter on
- &ldquo;Building Berkeley Kernels with Config&rdquo; [the source for which is
- in <filename>/usr/src/share/doc/smm</filename>] and &ldquo;FreeBSD
- Configuration Options&rdquo; [in <filename>/sys/conf/options</filename>
- and in
- <filename>/sys/<replaceable>arch</replaceable>/conf/options.<replaceable>arch</replaceable></filename>, with <emphasis>arch</emphasis> for example being <filename>i386</filename>] for more information on configuring and building kernels. You may have to unpack the kernel source distribution if have not installed the system sources already (<filename>srcdist/srcsys.??</filename> in FreeBSD 1.1, <filename>srcdist/sys.??</filename> in FreeBSD 1.1.5.1, or the entire source distribution in FreeBSD 2.0) to be able to configure and build kernels.</para>
-
- <para>Create a kernel configuration file for your system (if you
- have not already) by <command>cd</command>ing to
- <filename>/sys/i386/conf</filename>. Then, if you are creating a
- new custom configuration file, copy the file
- <filename>GENERICAH</filename> (or <filename>GENERICBT</filename>,
- if you have a BusTek SCSI controller on FreeBSD 1.x) to
- <filename>YOURSYS</filename>, where <filename>YOURSYS</filename>
- is the name of your system, but in upper-case letters. Edit the
- file, and change the device lines:</para>
-
- <programlisting>
-device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
-device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr
-device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr
-device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr</programlisting>
-
- <para>You can comment-out or completely remove lines for devices you
- do not have. If you have a multiport serial board, such as the
- Boca Board BB2016, please see the <citerefentry><refentrytitle>sio</refentrytitle><manvolnum>4</manvolnum></citerefentry> man page for complete information on
- how to write configuration lines for multiport boards. Be careful
- if you are using a configuration file that was previously used for
- a different version of FreeBSD because the device flags have
- changed between versions.</para>
-
- <note>
- <para><literal>port "IO_COM1"</literal> is a
- substitution for <literal>port 0x3f8</literal>,
- <literal>IO_COM2</literal> is <literal>0x2f8</literal>,
- <literal>IO_COM3</literal> is <literal>0x3e8</literal>, and
- <literal>IO_COM4</literal> is <literal>0x2e8</literal>, which are
- fairly common port addresses for their respective serial ports;
- interrupts 4, 3, 5, and 9 are fairly common interrupt request
- lines. Also note that regular serial ports <emphasis>cannot</emphasis> share interrupts on ISA-bus PCs
- (multiport boards have on-board electronics that allow all the
- 16550A's on the board to share one or two interrupt request
- lines).</para>
- </note>
-
- <para>When you are finished adjusting the kernel configuration file,
- use the program <command>config</command> as documented
- in &ldquo;Building Berkeley Kernels with Config&rdquo; and the
- <citerefentry><refentrytitle>config</refentrytitle><manvolnum>8</manvolnum></citerefentry> manual page to prepare a kernel
- building directory, then build, install, and test the new
- kernel.</para>
-
- </sect2>
-
- <sect2>
- <title>Device Special Files</title>
-
- <para>Most devices in the kernel are accessed through &ldquo;device
- special files&rdquo;, which are located in the
- <filename>/dev</filename> directory. The <devicename>sio</devicename> devices are accessed through the
- <filename>/dev/ttyd<replaceable>?</replaceable></filename> (dial-in) and
- <filename>/dev/cua0<replaceable>?</replaceable></filename> (call-out) devices. On FreeBSD
- version 1.1.5 and higher, there are also initialization devices
- (<filename>/dev/ttyid<replaceable>?</replaceable></filename> and
- <filename>/dev/cuai0<replaceable>?</replaceable></filename>) and locking devices
- (<filename>/dev/ttyld<replaceable>?</replaceable></filename> and
- <filename>/dev/cual0<replaceable>?</replaceable></filename>). The initialization devices are
- used to initialize communications port parameters each time a port
- is opened, such as <literal>crtscts</literal> for
- modems which use <literal>CTS/RTS</literal> signaling for flow
- control. The locking devices are used to lock flags on ports to
- prevent users or programs changing certain parameters; see the
- manual pages <citerefentry><refentrytitle>termios</refentrytitle><manvolnum>4</manvolnum></citerefentry>, <citerefentry><refentrytitle>sio</refentrytitle><manvolnum>4</manvolnum></citerefentry>, and <citerefentry><refentrytitle>stty</refentrytitle><manvolnum>1</manvolnum></citerefentry> for
- information on the terminal settings, locking &amp; initializing
- devices, and setting terminal options, respectively.</para>
-
-
- <sect3>
- <title>Making Device Special Files</title>
-
- <para>A shell script called <command>MAKEDEV</command> in the
- <filename>/dev</filename> directory manages the device special
- files. (The manual page for <citerefentry><refentrytitle>MAKEDEV</refentrytitle><manvolnum>8</manvolnum></citerefentry> on
- FreeBSD 1.1.5 is fairly bogus in its discussion of
- <acronym>COM</acronym> ports, so ignore it.) To use
- <command>MAKEDEV</command> to make dialup device special files
- for <devicename>COM1:</devicename> (port 0), <command>cd</command> to <filename>/dev</filename> and issue
- the command <command>MAKEDEV ttyd0</command>.
- Likewise, to make dialup device special files for
- <devicename>COM2:</devicename> (port 1), use <command>MAKEDEV ttyd1</command>.</para>
-
- <para><command>MAKEDEV</command> not only creates the
- <filename>/dev/ttyd<replaceable>?</replaceable></filename> device special files, but also
- creates the <filename>/dev/cua0<replaceable>?</replaceable></filename> (and all of the
- initializing and locking special files under FreeBSD 1.1.5 and
- up) and removes the hardwired terminal special file
- <filename>/dev/tty0<replaceable>?</replaceable></filename>, if it exists.</para>
-
- <para>After making new device special files, be sure to check the
- permissions on the files (especially the
- <filename>/dev/cua*</filename> files) to make sure that only
- users who should have access to those device special files can
- read &amp; write on them &mdash; you probably do not want to allow
- your average user to use your modems to dialout. The default
- permissions on the <filename>/dev/cua*</filename> files should
- be sufficient:</para>
-
- <informalexample>
- <screen>crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cua01
-crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuai01
-crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cual01</screen>
- </informalexample>
-
- <para>These permissions allow the user <username>uucp</username>
- and users in the group <username>dialer</username> to use the call-out devices.</para>
-
- </sect3>
- </sect2>
-
- <sect2>
- <title>Configuration Files</title>
-
- <para>There are three system configuration files in the
- <filename>/etc</filename> directory that you will probably need to
- edit to allow dialup access to your FreeBSD system. The first,
- <filename>/etc/gettytab</filename>, contains configuration
- information for the <filename>/usr/libexec/getty</filename>
- daemon. Second, <filename>/etc/ttys</filename> holds information
- that tells <filename>/sbin/init</filename> what
- <filename>tty</filename> devices should have <command>getty</command> processes running on them. Lastly,
- you can place port initialization commands in the
- <filename>/etc/rc.serial</filename> script if you have FreeBSD
- 1.1.5.1 or higher; otherwise, you can initialize ports in the
- <filename>/etc/rc.local</filename> script.</para>
-
- <para>There are two schools of thought regarding dialup modems on
- UNIX. One group likes to configure their modems and system so
- that no matter at what speed a remote user dials in, the local
- computer-to-modem RS-232 interface runs at a locked speed. The
- benefit of this configuration is that the remote user always sees
- a system login prompt immediately. The downside is that the system
- does not know what a user's true data rate is, so full-screen
- programs like Emacs will not adjust their screen-painting methods
- to make their response better for slower connections.</para>
-
- <para>The other school configures their modems' RS-232 interface to
- vary its speed based on the remote user's connection speed. For
- example, V.32bis (14.4 Kbps) connections to the modem might make
- the modem run its RS-232 interface at 19.2 Kbps, while 2400 bps
- connections make the modem's RS-232 interface run at 2400 bps.
- Because <command>getty</command> does not understand
- any particular modem's connection speed reporting,
- <command>getty</command> gives a <prompt>login:</prompt> message at an initial speed and
- watches the characters that come back in response. If the user
- sees junk, it is assumed that they know they should press the
- <literal>&lt;Enter&gt;</literal> key until they see a
- recognizable prompt. If the data rates do not match, <command>getty</command> sees anything the user types as
- &ldquo;junk&rdquo;, tries going to the next speed and gives the
- <prompt>login:</prompt> prompt again. This procedure can
- continue ad nauseum, but normally only takes a keystroke or two
- before the user sees a good prompt. Obviously, this login sequence
- does not look as clean as the former &ldquo;locked-speed&rdquo; method, but
- a user on a low-speed connection should receive better interactive
- response from full-screen programs.</para>
-
- <para>The author will try to give balanced configuration
- information, but is biased towards having the modem's data rate
- follow the connection rate.</para>
-
-
- <sect3>
- <title><filename>/etc/gettytab</filename></title>
-
- <para><filename>/etc/gettytab</filename> is a <citerefentry><refentrytitle>termcap</refentrytitle><manvolnum>5</manvolnum></citerefentry>-style file of configuration
- information for <citerefentry><refentrytitle>getty</refentrytitle><manvolnum>8</manvolnum></citerefentry>. Please see the
- <citerefentry><refentrytitle>gettytab</refentrytitle><manvolnum>5</manvolnum></citerefentry> manual page for
- complete information on the format of the file and the list of
- capabilities.</para>
-
-
- <sect4>
- <title>Locked-Speed Config</title>
-
- <para>If you are locking your modem's data communications rate
- at a particular speed, you probably will not need to make any
- changes to <filename>/etc/gettytab</filename>.</para>
-
- </sect4>
-
- <sect4>
- <title>Matching-Speed Config</title>
-
- <para>You will need to setup an entry in
- <filename>/etc/gettytab</filename> to give <command>getty</command> information about the speeds you
- wish to use for your modem. If you have a 2400 bps modem, you
- can probably use the existing <literal>D2400</literal> entry. This entry already exists
- in the FreeBSD 1.1.5.1 <filename>gettytab</filename>
- file, so you do not need to add it unless it is missing under
- your version of FreeBSD:</para>
-
- <programlisting>
-#
-# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
-#
-D2400|d2400|Fast-Dial-2400:\
- :nx=D1200:tc=2400-baud:
-3|D1200|Fast-Dial-1200:\
- :nx=D300:tc=1200-baud:
-5|D300|Fast-Dial-300:\
- :nx=D2400:tc=300-baud:</programlisting>
-
- <para>If you have a higher speed modem, you will probably need
- to add an entry in <filename>/etc/gettytab</filename>; here is
- an entry you could use for a 14.4 Kbps modem with a top
- interface speed of 19.2 Kbps:</para>
-
- <programlisting>
-#
-# Additions for a V.32bis Modem
-#
-um|V300|High Speed Modem at 300,8-bit:\
- :nx=V19200:tc=std.300:
-un|V1200|High Speed Modem at 1200,8-bit:\
- :nx=V300:tc=std.1200:
-uo|V2400|High Speed Modem at 2400,8-bit:\
- :nx=V1200:tc=std.2400:
-up|V9600|High Speed Modem at 9600,8-bit:\
- :nx=V2400:tc=std.9600:
-uq|V19200|High Speed Modem at 19200,8-bit:\
- :nx=V9600:tc=std.19200:</programlisting>
-
- <para>On FreeBSD 1.1.5 and later, this will result in 8-bit, no
- parity connections. Under FreeBSD 1.1, add
- <literal>:np:</literal> parameters to the <literal>std.<replaceable>xxx</replaceable></literal>
- entries at the top of the file for 8 bits, no parity;
- otherwise, the default is 7 bits, even parity.</para>
-
- <para>The example above starts the communications rate at 19.2
- Kbps (for a V.32bis connection), then cycles through 9600 bps
- (for V.32), 2400 bps, 1200 bps, 300 bps, and back to 19.2
- Kbps. Communications rate cycling is implemented with the
- <literal>nx=</literal> (&ldquo;next
- table&rdquo;) capability. Each of the lines uses a
- <literal>tc=</literal> (&ldquo;table
- continuation&rdquo;) entry to pick up the rest of the
- &ldquo;standard&rdquo; settings for a particular data rate.</para>
-
- <para>If you have a 28.8 Kbps modem and/or you want to take
- advantage of compression on a 14.4 Kbps modem, you need to use
- a higher communications rate than 19.2 Kbps. Here is an
- example of a <filename>gettytab</filename> entry
- starting a 57.6 Kbps:</para>
-
- <programlisting>
-#
-# Additions for a V.32bis or V.34 Modem
-# Starting at 57.6 Kbps
-#
-vm|VH300|Very High Speed Modem at 300,8-bit:\
- :nx=VH57600:tc=std.300:
-vn|VH1200|Very High Speed Modem at 1200,8-bit:\
- :nx=VH300:tc=std.1200:
-vo|VH2400|Very High Speed Modem at 2400,8-bit:\
- :nx=VH1200:tc=std.2400:
-vp|VH9600|Very High Speed Modem at 9600,8-bit:\
- :nx=VH2400:tc=std.9600:
-vq|VH57600|Very High Speed Modem at 57600,8-bit:\
- :nx=VH9600:tc=std.57600:</programlisting>
-
- <para>If you have a slow CPU or a heavily loaded system and you
- do not have 16550A-based serial ports, you may receive sio
- &ldquo;silo&rdquo; errors at 57.6 Kbps.</para>
-
- </sect4>
- </sect3>
-
- <sect3 id="dialup-ttys">
- <title><filename>/etc/ttys</filename></title>
-
- <para><filename>/etc/ttys</filename> is the list of <filename>ttys</filename> for <command>init</command> to monitor.
- <filename>/etc/ttys</filename> also provides security
- information to <command>login</command> (user
- <username>root</username> may only login on ttys marked
- <literal>secure</literal>). See the manual page for
- <citerefentry><refentrytitle>ttys</refentrytitle><manvolnum>5</manvolnum></citerefentry> for more
- information.</para>
-
- <para>You will need to either modify existing lines in
- <filename>/etc/ttys</filename> or add new lines to make
- <command>init</command> run <command>getty</command> processes automatically on your new
- dialup ports. The general format of the line will be the same,
- whether you are using a locked-speed or matching-speed
- configuration:</para>
-
- <programlisting>
-ttyd0 "/usr/libexec/getty xxx" dialup on</programlisting>
-
- <para>The first item in the above line is the device special file
- for this entry &mdash; <literal>ttyd0</literal> means
- <filename>/dev/ttyd0</filename> is the file that this <command>getty</command> will be watching. The second item,
- <literal>"/usr/libexec/getty
- <replaceable>xxx</replaceable>"</literal>
- (<replaceable>xxx</replaceable> will be replaced by the initial
- <filename>gettytab</filename> capability) is the
- process <command>init</command> will run on the
- device. The third item, <literal>dialup</literal>,
- is the default terminal type. The fourth parameter,
- <literal>on</literal>, indicates to <command>init</command> that the line is operational. There
- can be a fifth parameter, <literal>secure</literal>,
- but it should only be used for terminals which are physically
- secure (such as the system console).</para>
-
- <para>The default terminal type (<literal>dialup</literal> in the example above) may depend on
- local preferences. <literal>dialup</literal> is the
- traditional default terminal type on dialup lines so that users
- may customize their login scripts to notice when the terminal is
- <literal>dialup</literal> and automatically adjust
- their terminal type. However, the author finds it easier at his
- site to specify <literal>vt102</literal> as the
- default terminal type, since the users just use VT102 emulation
- on their remote systems.</para>
-
- <para>After you have made changes to
- <filename>/etc/ttys</filename>, you may send the <command>init</command> process a <acronym>HUP</acronym>
- signal to re-read the file. You can use the command
-
- <informalexample>
- <screen>&prompt.root; <userinput>kill -1 1</userinput></screen>
- </informalexample>
-
- to send the signal. If this is your first time setting up
- the system, though, you may want to wait until your modem(s) are
- properly configured and connected before signaling <command>init</command>.</para>
-
-
- <sect4>
- <title>Locked-Speed Config</title>
-
- <para>For a locked-speed configuration, your <filename>ttys</filename> entry needs to have a fixed-speed
- entry provided to <command>getty</command>. For a
- modem whose port speed is locked at 19.2 Kbps, the <filename>ttys</filename> entry might look like this:</para>
-
- <programlisting>
-ttyd0 "/usr/libexec/getty std.19200" dialup on</programlisting>
-
- <para>If your modem is locked at a different data rate,
- substitute the appropriate name for the <literal>std.<replaceable>speed</replaceable></literal>
- entry for <literal>std.19200</literal> from
- <filename>/etc/gettytab</filename> for your modem's data
- rate.</para>
-
- </sect4>
-
- <sect4>
- <title>Matching-Speed Config</title>
-
- <para>In a matching-speed configuration, your <filename>ttys</filename> entry needs to reference the
- appropriate beginning &ldquo;auto-baud&rdquo; (sic) entry in
- <filename>/etc/gettytab</filename>. For example, if you added
- the above suggested entry for a matching-speed modem that
- starts at 19.2 Kbps (the <filename>gettytab</filename> entry
- containing the <literal>V19200</literal> starting point), your
- <filename>ttys</filename> entry might look like this:</para>
-
- <programlisting>
-ttyd0 "/usr/libexec/getty V19200" dialup on</programlisting>
- </sect4>
- </sect3>
-
- <sect3>
- <title><filename>/etc/rc.serial</filename> or
- <filename>/etc/rc.local</filename></title>
-
- <para>High-speed modems, like V.32, V.32bis, and V.34 modems, need
- to use hardware (<filename>RTS/CTS</filename>) flow control.
- You can add <command>stty</command> commands to
- <filename>/etc/rc.serial</filename> on FreeBSD 1.1.5.1 and up,
- or <filename>/etc/rc.local</filename> on FreeBSD 1.1, to set the
- hardware flow control flag in the FreeBSD kernel for the modem
- ports.</para>
-
- <para>For example, on a sample FreeBSD 1.1.5.1 system,
- <filename>/etc/rc.serial</filename> reads:</para>
-
- <programlisting>
-#!/bin/sh
-#
-# Serial port initial configuration
-
-stty -f /dev/ttyid1 crtscts
-stty -f /dev/cuai01 crtscts</programlisting>
-
- <para>This sets the <literal>termios</literal> flag
- <literal>crtscts</literal> on serial port #1's
- (<devicename>COM2:</devicename>) dialin and dialout
- initialization devices.</para>
-
- <para>On an old FreeBSD 1.1 system, these entries were added to
- <filename>/etc/rc.local</filename> to set the <literal>crtscts</literal> flag on the devices:</para>
-
- <programlisting>
-# Set serial ports to use RTS/CTS flow control
-stty -f /dev/ttyd0 crtscts
-stty -f /dev/ttyd1 crtscts
-stty -f /dev/ttyd2 crtscts
-stty -f /dev/ttyd3 crtscts</programlisting>
-
- <para>Since there is no initialization device special file on
- FreeBSD 1.1, one has to just set the flags on the sole device
- special file and hope the flags are not cleared by a
- miscreant.</para>
-
- </sect3>
- </sect2>
-
- <sect2>
- <title>Modem Settings</title>
-
- <para>If you have a modem whose parameters may be permanently set in
- non-volatile RAM, you will need to use a terminal program (such as
- Telix under PC-DOS or <command>tip</command> under
- FreeBSD) to set the parameters. Connect to the modem using the
- same communications speed as the initial speed <command>getty</command> will use and configure the modem's
- non-volatile RAM to match these requirements:</para>
-
-
- <itemizedlist>
-
- <listitem>
- <para><acronym>CD</acronym> asserted when connected</para>
- </listitem>
-
- <listitem>
- <para><acronym>DTR</acronym> asserted for operation; dropping
- DTR hangs up line &amp; resets modem</para>
- </listitem>
-
- <listitem>
- <para><acronym>CTS</acronym> transmitted data flow control</para>
- </listitem>
-
- <listitem>
- <para>Disable <acronym>XON/XOFF</acronym> flow control</para>
- </listitem>
-
- <listitem>
- <para><acronym>RTS</acronym> received data flow control</para>
- </listitem>
-
- <listitem>
- <para>Quiet mode (no result codes)</para>
- </listitem>
-
- <listitem>
- <para>No command echo</para>
- </listitem>
-
- </itemizedlist>
-
-
- <para>Please read the documentation for your modem to find out what
- commands and/or DIP switch settings you need to give it.</para>
-
- <para>For example, to set the above parameters on a USRobotics
- Sportster 14,400 external modem, one could give these commands to
- the modem:</para>
-
-
- <programlisting>
-ATZ
-AT&amp;C1&amp;D2&amp;H1&amp;I0&amp;R2&amp;W</programlisting>
-
- <para>You might also want to take this opportunity to adjust other
- settings in the modem, such as whether it will use V.42bis and/or
- MNP5 compression.</para>
-
- <para>The USR Sportster 14,400 external modem also has some DIP
- switches that need to be set; for other modems, perhaps you can
- use these settings as an example:</para>
-
-
- <itemizedlist>
-
- <listitem>
- <para>Switch 1: UP &mdash; DTR Normal</para>
- </listitem>
-
- <listitem>
- <para>Switch 2: Do not care (Verbal Result Codes/Numeric
- Result Codes)</para>
- </listitem>
-
- <listitem>
- <para>Switch 3: UP &mdash; Suppress Result Codes</para>
- </listitem>
-
- <listitem>
- <para>Switch 4: DOWN &mdash; No echo, offline commands</para>
- </listitem>
-
- <listitem>
- <para>Switch 5: UP &mdash; Auto Answer</para>
- </listitem>
-
- <listitem>
- <para>Switch 6: UP &mdash; Carrier Detect Normal</para>
- </listitem>
-
- <listitem>
- <para>Switch 7: UP &mdash; Load NVRAM Defaults</para>
- </listitem>
-
- <listitem>
- <para>Switch 8: Do not care (Smart Mode/Dumb Mode)</para>
- </listitem>
-
- </itemizedlist>
-
-
- <para>Result codes should be disabled/suppressed for dialup modems
- to avoid problems that can occur if <command>getty</command>
- mistakenly gives a <prompt>login:</prompt> prompt to a modem that is in command
- mode and the modem echoes the command or returns a result code. I
- have heard this sequence can result in a extended, silly
- conversation between <command>getty</command> and the
- modem.</para>
-
-
- <sect3>
- <title>Locked-speed Config</title>
-
- <para>For a locked-speed configuration, you will need to configure
- the modem to maintain a constant modem-to-computer data rate
- independent of the communications rate. On a USR Sportster
- 14,400 external modem, these commands will lock the
- modem-to-computer data rate at the speed used to issue the
- commands:</para>
-
- <programlisting>
-ATZ
-AT&amp;B1&amp;W</programlisting>
- </sect3>
-
- <sect3>
- <title>Matching-speed Config</title>
-
- <para>For a variable-speed configuration, you will need to
- configure your modem to adjust its serial port data rate to
- match the incoming call rate. On a USR Sportster 14,400
- external modem, these commands will lock the modem's
- error-corrected data rate to the speed used to issue the
- commands, but allow the serial port rate to vary for
- non-error-corrected connections:</para>
-
- <programlisting>
-ATZ
-AT&amp;B2&amp;W</programlisting>
- </sect3>
-
- <sect3>
- <title>Checking the Modem's Configuration</title>
-
- <para>Most high-speed modems provide commands to view the modem's
- current operating parameters in a somewhat human-readable
- fashion. On the USR Sportster 14,400 external modems, the
- command <command>ATI5</command> displays the settings
- that are stored in the non-volatile RAM. To see the true
- operating parameters of the modem (as influenced by the USR's
- DIP switch settings), use the commands <command>ATZ</command>
- and then <command>ATI4</command>.</para>
-
- <para>If you have a different brand of modem, check your modem's
- manual to see how to double-check your modem's configuration
- parameters.</para>
-
- </sect3>
- </sect2>
-
- <sect2>
- <title>Troubleshooting</title>
-
- <para>Here are a few steps you can follow to check out the dialup
- modem on your system.</para>
-
-
- <sect3>
- <title>Checking out the FreeBSD system</title>
-
- <para>Hook up your modem to your FreeBSD system, boot the system,
- and, if your modem has status indication lights, watch to see
- whether the modem's <acronym>DTR</acronym> indicator lights when
- the <prompt>login:</prompt> prompt appears on the
- system's console &mdash; if it lights up, that should mean that
- FreeBSD has started a <command>getty</command>
- process on the appropriate communications port and is waiting
- for the modem to accept a call.</para>
-
- <para>If the <acronym>DTR</acronym> indicator doesn't light, login
- to the FreeBSD system through the console and issue a <command>ps ax</command> to see if FreeBSD is trying to run a
- <command>getty</command> process on the correct port.
- You should see a lines like this among the processes
- displayed:</para>
-
- <informalexample>
- <screen> 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
- 115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1</screen>
- </informalexample>
-
- <para>If you see something different, like this:
-
- <informalexample>
- <screen> 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0</screen>
- </informalexample>
-
- and the modem has not accepted a call yet, this means that
- <command>getty</command> has completed its open on
- the communications port. This could indicate a problem with the
- cabling or a mis-configured modem, because <command>getty</command> should not be able to open the
- communications port until <acronym>CD</acronym> (carrier detect)
- has been asserted by the modem.</para>
-
- <para>If you do not see any <command>getty</command>
- processes waiting to open the desired <filename>ttyd<replaceable>?</replaceable></filename>
- port, double-check your entries in
- <filename>/etc/ttys</filename> to see if there are any mistakes
- there. Also, check the log file
- <filename>/var/log/messages</filename> to see if there are any
- log messages from <command>init</command> or
- <command>getty</command> regarding any problems. If
- there are any messages, triple-check the configuration files
- <filename>/etc/ttys</filename> and
- <filename>/etc/gettytab</filename>, as well as the appropriate
- device special files <filename>/dev/ttyd?</filename>, for any
- mistakes, missing entries, or missing device special
- files.</para>
-
- </sect3>
-
- <sect3>
- <title>Try Dialing In</title>
-
- <para>Try dialing into the system; be sure to use 8 bits, no
- parity, 1 stop bit on the remote system. If you do not get a
- prompt right away, or get garbage, try pressing <literal>&lt;Enter&gt;</literal> about once per second. If
- you still do not see a <prompt>login:</prompt>
- prompt after a while, try sending a <command>BREAK</command>.
- If you are using a high-speed modem to do the dialing, try
- dialing again after locking the dialing modem's interface speed
- (via <command>AT&amp;B1</command> on a USR Sportster,
- for example).</para>
-
- <para>If you still cannot get a <prompt>login:</prompt> prompt, check
- <filename>/etc/gettytab</filename> again and double-check
- that</para>
-
-
- <itemizedlist>
-
- <listitem>
- <para>The initial capability name specified in
- <filename>/etc/ttys</filename> for the line matches a name
- of a capability in <filename>/etc/gettytab</filename></para>
- </listitem>
-
- <listitem>
- <para>Each <literal>nx=</literal> entry matches another
- <filename>gettytab</filename> capability name</para>
- </listitem>
-
- <listitem>
- <para>Each <literal>tc=</literal> entry matches another
- <filename>gettytab</filename> capability name</para>
- </listitem>
-
- </itemizedlist>
-
-
- <para>If you dial but the modem on the FreeBSD system will not
- answer, make sure that the modem is configured to answer the
- phone when <acronym>DTR</acronym> is asserted. If the modem
- seems to be configured correctly, verify that the
- <acronym>DTR</acronym> line is asserted by checking the modem's
- indicator lights (if it has any).</para>
-
- <para>If you have gone over everything several times and it still
- does not work, take a break and come back to it later. If it
- still does not work, perhaps you can send an electronic mail
- message to the &a.questions;describing your modem and your
- problem, and the good folks on the list will try to help.</para>
-
- </sect3>
- </sect2>
-
- <sect2>
- <title>Acknowledgments</title>
-
- <para>Thanks to these people for comments and advice:</para>
-
-
- <variablelist>
- <varlistentry><term>&a.kelly;</term>
- <listitem>
- <para>for a number of good suggestions</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
-
- </sect2>
- </sect1>
-
- <sect1 id="dialout">
- <title>Dialout Service</title>
-
- <para><emphasis>Information integrated from FAQ.</emphasis></para>
-
- <para>The following are tips to getting your host to be able to
- connect over the modem to another computer. This is appropriate for
- establishing a terminal session with a remote host.</para>
-
- <para>This is useful to log onto a BBS.</para>
-
- <para>This kind of connection can be extremely helpful to get a file
- on the Internet if you have problems with PPP. If you need to ftp
- something and PPP is broken, use the terminal session to ftp it.
- Then use zmodem to transfer it to your machine.</para>
-
-
- <sect2>
- <title>Why cannot I run <command>tip</command> or
- <command>cu</command>?</title>
-
- <para>On your system, the programs <command>tip</command>
- and <command>cu</command> are probably executable only
- by <username>uucp</username> and group
- <username>dialer</username>. You can use the group <username>dialer</username> to control who has access to your
- modem or remote systems. Just add yourself to group
- dialer.</para>
-
- <para>Alternatively, you can let everyone on your system run
- <command>tip</command> and <command>cu</command> by typing:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>chmod 4511 /usr/bin/tip</userinput></screen>
- </informalexample>
-
- <para>You do not have to run
- this command for <command>cu</command>, since <command>cu</command> is just a hard link to <command>tip</command>.</para>
-
- </sect2>
-
- <sect2>
- <title>My stock Hayes modem is not supported, what can I do?</title>
-
- <para>Actually, the man page for <command>tip</command>
- is out of date. There is a generic Hayes dialer already built in.
- Just use <literal>at=hayes</literal> in your
- <filename>/etc/remote</filename> file.</para>
-
- <para>The Hayes driver is not smart enough to recognize some of the
- advanced features of newer modems&mdash;messages like
- <literal>BUSY</literal>, <literal>NO
- DIALTONE</literal>, or <literal>CONNECT
- 115200</literal> will just confuse it. You should turn those
- messages off when you use <command>tip</command> (using
- <command>ATX0&amp;W</command>).</para>
-
- <para>Also, the dial timeout for <command>tip</command>
- is 60 seconds. Your modem should use something less, or else tip
- will think there is a communication problem. Try
- <command>ATS7=45&amp;W</command>.</para>
-
- <para>Actually, as shipped <command>tip</command> does
- not yet support it fully. The solution is to edit the file
- <filename>tipconf.h</filename> in the directory
- <filename>/usr/src/usr.bin/tip/tip</filename> Obviously you need
- the source distribution to do this.</para>
-
- <para>Edit the line <literal>#define HAYES
- 0</literal> to <literal>#define HAYES
- 1</literal>. Then <command>make</command> and
- <command>make install</command>. Everything works
- nicely after that.</para>
-
- </sect2>
-
- <sect2 id="direct-at">
- <title>How am I expected to enter these AT commands?</title>
-
- <para>Make what is called a &ldquo;direct&rdquo;
- entry in your <filename>/etc/remote</filename> file. For example,
- if your modem is hooked up to the first serial port,
- <filename>/dev/cuaa0</filename>, then put in the following line:</para>
-
- <programlisting>
-cuaa0:dv=/dev/cuaa0:br#19200:pa=none</programlisting>
-
- <para>Use the highest bps rate your modem supports in
- the br capability. Then, type <command>tip
- cuaa0</command> and you will be connected to your
- modem.</para>
-
- <para>If there is no <filename>/dev/cuaa0</filename> on your system,
- do this:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>cd /dev</userinput>
-&prompt.root; <userinput>MAKEDEV cuaa0</userinput></screen>
- </informalexample>
-
- <para>Or use cu as root with the following command:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>cu -l<replaceable>line</replaceable> -s<replaceable>speed</replaceable></userinput></screen>
- </informalexample>
-
- <para><replaceable>line</replaceable> is the
- serial port (e.g.<filename>/dev/cuaa0</filename>) and <replaceable>speed</replaceable> is
- the speed (e.g.<literal>57600</literal>). When you are
- done entering the AT commands hit <command>~.</command>
- to exit.</para>
-
- </sect2>
-
- <sect2>
- <title>The <literal>@</literal> sign for the pn capability does not
- work!</title>
-
- <para>The <literal>@</literal> sign in the phone number capability tells
- tip to look in <filename>/etc/phones</filename> for a phone
- number. But the <literal>@</literal> sign is also a special character
- in capability files like <filename>/etc/remote</filename>. Escape
- it with a backslash:</para>
-
- <programlisting>
-pn=\@</programlisting>
-
- </sect2>
-
- <sect2>
- <title>How can I dial a phone number on the command line?</title>
-
- <para>Put what is called a &ldquo;generic&rdquo;
- entry in your <filename>/etc/remote</filename> file. For example:</para>
-
- <programlisting>
-tip115200|Dial any phone number at 115200 bps:\
- :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
-tip57600|Dial any phone number at 57600 bps:\
- :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:</programlisting>
-
- <para>Then you can things like:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>tip -115200 5551234</userinput></screen>
- </informalexample>
-
- <para>If you prefer <command>cu</command> over <command>tip</command>,
- use a generic cu entry:
-
- <programlisting>
-cu115200|Use cu to dial any number at 115200bps:\
- :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:</programlisting>
- and type:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>cu 5551234 -s 115200</userinput></screen>
- </informalexample>
- </sect2>
-
- <sect2>
- <title>Do I have to type in the bps rate every time I do
- that?</title>
-
- <para>Put in an entry for <literal>tip1200</literal> or
- <literal>cu1200</literal>, but go ahead and use
- whatever bps rate is appropriate with the br capability. <command>tip</command> thinks a good default is 1200 bps which
- is why it looks for a <literal>tip1200</literal>
- entry. You do not have to use 1200 bps, though.</para>
-
- </sect2>
-
- <sect2>
- <title>I access a number of hosts through a terminal server.</title>
-
- <para>Rather than waiting until you are connected and typing
- <command>CONNECT &lt;host&gt;</command> each time,
- use tip's <literal>cm</literal> capability. For
- example, these entries in <filename>/etc/remote</filename>:
-
- <programlisting>
-pain|pain.deep13.com|Forrester's machine:\
- :cm=CONNECT pain\n:tc=deep13:
-muffin|muffin.deep13.com|Frank's machine:\
- :cm=CONNECT muffin\n:tc=deep13:
-deep13:Gizmonics Institute terminal server:\
- :dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:</programlisting>
-
- will let you type <command>tip pain</command>
- or <command>tip muffin</command> to connect to the
- hosts pain or muffin; and <command>tip
- deep13</command> to get to the terminal server.</para>
-
- </sect2>
-
- <sect2>
- <title>Can tip try more than one line for each site?</title>
-
- <para>This is often a problem where a university has several modem
- lines and several thousand students trying to use them...</para>
-
- <para>Make an entry for your university in
- <filename>/etc/remote</filename> and use <literal>@</literal> for the
- <literal>pn</literal> capability:</para>
-
- <programlisting>
-big-university:\
- :pn=\@:tc=dialout
-dialout:\
- :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:</programlisting>
-
- <para>Then, list the phone numbers for the university in
- <filename>/etc/phones</filename>:</para>
-
- <programlisting>
-big-university 5551111
-big-university 5551112
-big-university 5551113
-big-university 5551114</programlisting>
-
- <para><command>tip</command> will try each one in the
- listed order, then give up. If you want to keep retrying, run
- <command>tip</command> in a while loop.</para>
-
- </sect2>
-
- <sect2>
- <title>Why do I have to hit CTRL+P twice to send CTRL+P
- once?</title>
-
- <para>CTRL+P is the default &ldquo;force&rdquo; character, used to tell
- <command>tip</command> that the next character is
- literal data. You can set the force character to any other
- character with the <command>~s</command> escape, which
- means &ldquo;set a variable.&rdquo;</para>
-
- <para>Type <command>~sforce=<replaceable>single-char</replaceable></command>
- followed by a newline. <replaceable>single-char</replaceable> is any single character.
- If you leave out <replaceable>single-char</replaceable>, then the force
- character is the nul character, which you can get by typing CTRL+2
- or CTRL+SPACE. A pretty good value for <replaceable>single-char</replaceable> is SHIFT+CTRL+6, which I
- have seen only used on some terminal servers.</para>
-
- <para>You can have the force character be whatever you want by
- specifying the following in your
- <filename>&#36;HOME/.tiprc</filename> file:</para>
-
- <programlisting>
-force=&lt;single-char&gt;</programlisting>
-
- </sect2>
-
- <sect2>
- <title>Suddenly everything I type is in UPPER CASE??</title>
-
- <para>You must have pressed CTRL+A, <command>tip</command>'s &ldquo;raise character,&rdquo; specially
- designed for people with broken caps-lock keys. Use <command>~s</command> as above and set the variable
- <literal>raisechar</literal> to something reasonable. In fact, you can set it to
- the same as the force character, if you never expect to use either
- of these features.</para>
-
- <para>Here is a sample .tiprc file perfect for Emacs users who need
- to type CTRL+2 and CTRL+A a lot:</para>
-
- <programlisting>
-force=^^
-raisechar=^^</programlisting>
-
- <para>The ^^ is SHIFT+CTRL+6.</para>
-
- </sect2>
-
- <sect2>
- <title>How can I do file transfers with <command>tip</command>?</title>
-
- <para>If you are talking to another UNIX system, you can send and
- receive files with <command>~p</command> (put) and
- <command>~t</command> (take). These commands run
- <command>cat</command> and <command>echo</command> on the remote system to accept and
- send files. The syntax is:</para>
-
- <cmdsynopsis>
- <command>~p</command>
- <arg choice="plain">local-file</arg>
- <arg choice="opt">remote-file</arg>
- </cmdsynopsis>
-
- <cmdsynopsis>
- <command>~t</command>
- <arg choice="plain">remote-file</arg>
- <arg choice="opt">local-file</arg>
- </cmdsynopsis>
-
- <para>There is no error checking, so you probably should use another
- protocol, like zmodem.</para>
-
- </sect2>
-
- <sect2>
- <title>How can I run zmodem with <command>tip</command>?</title>
-
- <para>To receive files, start the sending program on the remote end.
- Then, type <command>~C rz</command> to begin
- receiving them locally.</para>
-
- <para>To send files, start the receiving program on the remote end.
- Then, type <command>~C sz <replaceable>files</replaceable></command>
- to send them to the remote system.</para>
-
- </sect2>
- </sect1>
- </chapter>
-
-<!--
- Local Variables:
- mode: sgml
- sgml-declaration: "../chapter.decl"
- sgml-indent-data: t
- sgml-omittag: nil
- sgml-always-quote-attributes: t
- sgml-parent-document: ("../handbook.sgml" "part" "chapter")
- End:
--->
-