Make sure you are using the correct syntax for your version of
init
. The different init
's that are out there use different
syntax in the /etc/inittab
file. Make sure you are using the
correct syntax for your version of getty
.
This problem can arise when DCD or DTR are not set correctly.
DCD should only be set when there is an actual connection (ie someone is dialed in), not when getty
is watching the port.
Check to make sure that your modem is configured to only set DCD when
there is a connection. DTR should be set whenever something
is using, or watching the line, like getty
, kermit
, or some
other comm program.
Another common cause of ``device busy'' errors, is that you set up your serial port with an interrupt already taken by something else. As each device initializes, it asks Linux for permission to use its hardware interrupt. Linux keeps track of which interrupt is assigned to whom, and if your interrupt is already taken, your device won't be able to initialize properly. The device really doesn't have much of any way to tell you that this happened, except that when you try to use it, it will return a ``device-busy'' error. Check the interrupts on all of your cards (serial, ethernet, SCSI, etc.). Look for IRQ conflicts.
Make sure your modem is configured correctly. Look at registers `
E
and Q
.
This can occur when your modem is chatting with getty
.
Make sure you are calling getty
correctly from your
/etc/inittab
. Using the wrong syntax or device names will
cause serious problems.
You probably have an IRQ conflict. Make sure there are no IRQs
being shared. Check all your cards (serial, ethernet, SCSI, etc...).
Make sure the jumper settings, and the setserial
parameters are
correct for all your serial devices.
This can happen when your modem doesn't reset when DTR is dropped.
I saw my RD and SD LEDs go nuts when this happened to me.
You need to have your modem reset. Most Hayes compatible modems
do this with &D3
, but on my USR Courier, I had to set
&D2
and S13=1
. Check your modem manual.
This is done on purpose for security reasons. Generally, you should only have root logins enabled on the console. It is considered dangerous to allow root logins on anything other than the console.
But, you asked... Edit /etc/login.defs
, and find the line
that says CONSOLE
. Add the name of the serial device to it. Say
I have my terminal on ttyS1
. I would change the line:
CONSOLE tty1:tty2:tty3:tty4:tty5:tty6:tty8
to
CONSOLE tty1:tty2:tty3:tty4:tty5:tty6:tty8:ttyS1
You probably don't have CLOCAL
in your /etc/gettydefs
entry
for the terminal, and you're probably not using a full null modem cable.
You need CLOCAL
. CLOCAL
tells Linux to ignore modem control
signals. Here is what it should look like:
# 38400 bps Dumb Terminal entry
DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #D38400
# 19200 bps Dumb Terminal entry
DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200
# 9600 bps Dumb Terminal entry
DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600
Next, kill
the getty
process so a new one will be
spawned with the new entry.
If you are trying to run your modem at > 19200 bps, and you don't have 16550A UARTs, you should upgrade them. See section What are UARTs? about UARTs.
This is true. Linux does not do any IRQ detection on startup, it only does serial device detection. Thus, disregard what it says about the IRQ, because it's just assuming the standard IRQs. This is done, because IRQ detection is unreliable, and can be fooled.
So, even though I have my ttyS2
set at IRQ 5, I still see
Jan 23 22:25:28 misfits vmunix: tty02 at 0x03e8 (irq = 4) is a 16550A
You have to use setserial
to tell Linux the IRQ you are using.
rz
and/or sz
don't work when I call my Linux box on my modem. If Linux looks for /dev/modem
when you try to transfer
files, look at /etc/profile
, and /etc/csh.cshrc
.
There are a bunch of aliases defined there on some distributions,
most notably Slackware. These aliases mess up the zmodem programs.
Take them out, or correct them.
This happens on virtual consoles when you send binary data to
your screen, or sometimes on serial connections.
The way to fix this is to type echo ˆvˆ[c
. For the
control-character-impaired, thats echo <ctrl>v<esc>c
.
getty
or uugetty
still doesn't work. There is a DEBUG
option that comes with getty_ps
. Edit your
config file
/etc/conf.{uu}getty.ttyS
N and
add DEBUG=
NNN. Where NNN is one of the following
combination of numbers according to what you are trying to debug:
D_OPT 001 option settings
D_DEF 002 defaults file processing
D_UTMP 004 utmp/wtmp processing
D_INIT 010 line initialization (INIT)
D_GTAB 020 gettytab file processing
D_RUN 040 other runtime diagnostics
D_RB 100 ringback debugging
D_LOCK 200 uugetty lockfile processing
D_SCH 400 schedule processing
D_ALL 777 everything
Setting DEBUG=010
is a good place to start.
If you are running syslogd
, debugging info
will appear in your log files. If you aren't running syslogd
info will appear in /tmp/getty:ttyS
N for debugging
getty
and /tmp/uugetty:ttyS
N for uugetty
. Look at the
debugging info and see what is going on. Most likely, you will need
to tune some of the parameters in your config
file, and you may have to configure your modem differently, too.
getty
You might like these better:
mgetty
, a different version of getty
, can also handle faxes.
It can be found on the Linux FTP sites.
agetty
, a simpler version of getty
. This version
comes with most distributions. If not, it should be on the Linux
FTP sites.
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter