Hardware manual
16.21 Almost all characters are wrong; Many missing or
many extras
Perhaps a baud mismatch. If one port sends at twice the speed that the other port is set to receive, then every
two characters sent will be received as one character. Each bit of this received character will be a sample of
two bits of what is sent and will be wrong. Also, only half the characters sent seem to get received. For flow
in the reverse direction, it's just the opposite. Twice as many characters get received than were sent. A worse
mismatch will produce even worse results.
A speed mismatch is not likely to happen with a modem since the modem autodetects the speed. One cause of
a mismatch may be due to serial port hardware that has been set to run at very fast speeds. It may actually
operate at a speed say 8 times that of which you (or an application) set it via software. See Very High Speeds
17. Interrupt Problem Details
While the section Troubleshooting lists problems by symptom, this section explains what will happen if
interrupts are set incorrectly. This section helps you understand what caused the symptom, what other
symptoms might be due to the same problem, and what to do about it.
17.1 Types of interrupt problems
The "setserial" program will show you how serial driver thinks the interrupts are set. If the serial driver (and
setserial) has it right then everything regarding interrupts should be OK. Of course a /dev/ttyS must exist for
the device and Plug-and-Play (or jumpers) must have set an address and IRQ in the hardware. Linux will not
knowingly permit an interrupt conflict and you will get a "Device or resource busy" error message if you
attempt to do something that would create a conflict.
Since the kernel tries to avoid interrupt conflicts and gives you the "resource busy" message if you try to
create a conflict, how can interrupt conflicts happen? Easy. "setserial" may have it wrong and erroneously
predicts no conflict when there will actually be a real conflict based on what is set in the hardware. When this
happens there will be no "... busy" message but a conflict will physically happen. Performance is likely to be
extremely slow. Both devices will send identical interrupt signals on the same wire and the CPU will
erroneously think that the interrupts only come from one device. This will be explained in detail in the
following sections.
Linux doesn't complain when you assign two devices the same IRQ provided that neither device is in use. As
each device starts up (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 in use, you'll see this "... busy" error
message. Thus if two devices use the same IRQ and you start up only one of the devices, everything is OK.
But when you next try to start the second device (without quitting the first device) you get "... busy" error
message.
17.2 Symptoms of Mis-set or Conflicting Interrupts
The symptoms depend on whether or not you have a modern serial port with FIFO buffers or an obsolete
serial port without FIFO buffers. It's important to understand the symptoms for the obsolete ones also since
sometimes modern ports seem to behave that way.
Serial HOWTO
16.21 Almost all characters are wrong; Many missing or many extras 65