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 boards (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.
Verify that your /etc/gettydefs
syntax is correct by
doing the following:
linux# getty -c /etc/gettydefs
This can also happen when the uugetty
initialization is failing.
See section
getty Or uugetty Still Doesn't Work.
You probably have an IRQ conflict. Make sure there are no IRQs
being shared. Check all your boards (serial, ethernet, SCSI, etc...).
Make sure the jumper settings, and the setserial
parameters are
correct for all your serial devices. Also check /proc/ioports
and /proc/interrupts
for conflicts.
uugetty
doesn't respawn
This can happen when your modem doesn't reset when DTR is dropped.
I saw my RD and SD LEDs go crazy 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.
getty
:
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
, which 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: #DT38400
# 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.
agetty
:
Add the -L
flag to the agetty
line in your
/etc/inittab
. This will make it ignore modem control signals.
Then restart init
by typing init q
. The entry should look
like this:
s1:345:respawn:/sbin/agetty -L 9600 ttyS1 vt100
If you are trying to run your modem faster than 38400 bps, and you don't have 16550A UARTs, you should upgrade them. See section What Are UARTs? about UARTs.
This is only partly 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. But when setserial changes the IRQ's, you should see this on the startup screen.
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
at first when Linux boots.
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 A Modem
If Linux looks for /dev/modem
when you try to transfer
files, look at /etc/profile
or /etc/csh.cshrc
.
There may be 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:
linux% 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
, and in
/var/adm/getty.log
. 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 reconfigure your modem.
You could also try mgetty
. Some people have better luck with
it.