Ring Indicator
From Wikipedia, the free encyclopedia
This article needs additional citations for verification. Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (September 2007) |
It has been suggested that this article or section be merged with RS-232. (Discuss) |
Ring Indicator, abbreviated as RI, is a signal that exists inside an RS232 serial communications cable that goes between a computer and a modem. The signal is sent from the modem to the computer, typically over pin 9 of a nine-pin (DE9) serial port, or pin 22 over a 25-pin (DB25) port. Its purpose is to indicate to the computer that the phone line is ringing.
As implemented in modern PC hardware, a hardware interrupt is generated that can be captured by the processor any time the RI signal changes state. This functionality was originally present in the 8250 series UART - the chip responsible for providing the serial port - which was present in the original IBM PC XT. Virtually all serial hardware for newer PC's, including the popular 16550 UART, has maintained this functionality. Having support for this hardware interrupt means that a program or operating system can be informed of a change in state of the RI pin, without requiring the software to constantly "poll" the state of the pin.
Unlike nearly all of the status pins in the typical PC's 9-pin RS-232 port, RI is a one-way signal from the modem to the computer (or more correctly, the DCE to the DTE) that does not corresponding to some other signal to carry similar information the opposite way. Conceptually, TXD is paired with RXD, DTR is paired with DCD, and RTS paired with CTS, as each of these signals usually carry the same type of information. The only remaining signal pins are DSR and RI, however both of these signals go in the same direction (to the computer or DTE) rather than in opposite directions (as the other three mentioned pairs).
Contents |
[edit] As used on modems
On an external modem with LED lights, the status of the Ring Indicator pin is often coupled to the "AA" (auto answer) light. Normally, the AA light is either off if the modem is not in auto-answer mode, or on if the auto answer mode is enabled (see ATS0 in the Hayes command set). However, when a ring is detected and the RI signal is asserted, the state of the AA light is simultaneously flipped - so it temporarily turns on if auto-answer mode is off, or off if it's on. This doesn't change the auto answer status - rather, it is simply meant as a visual indication of ringing and the assertion of the RI signal.
In practice, most telecommunications programs or server hosts do not actually use the RI signal to detect ringing. Rather, they typically wait for the "RING" message sent to the host over the data pins.[citation needed]
The asserted RI signal lasts nearly exactly as long as the ringing on the telephone line - for example, 2.0 seconds per ring burst in North America. The RI signal follows the ringing pattern closely - in fact, it is possible for a computer program to detect distinctive ring patterns from the phone company by monitoring the transitions of the RI signal. If the phone line rings, for example, two short burts and then a long burst, the RI signal will imitate this pattern. In practice, distinctive ring detection is a feature built in to the command sets of many modern modems. Distinctive ring allows a single phone line to be "shared purpose" whereby it has multiple phone numbers, distinguished only by the ringing pattern, and the modem only answers calls whose ring pattern identify the call as a data call.
[edit] As used with other hardware
Even when not used with modems, the signal still exists on a standard PC serial port. Although the signal is unused by most hardware, it is notably used by some older uninterruptible power supplies (UPS's) to signal a power failure state to the computer. Although newer UPS devices typically send serial data over the "receive data" pins, using the Ring Indicator pin is particularly cheap and simple to implement, because it is essentially a simple signal that can be sent to the computer in the form of either a constant positive or constant negative voltage. When the state of the Ring Indicator pin changes, it results in an interrupt being triggered by a PC's UART, meaning the computer does not need to constantly poll the status of the pin to get the status of the UPS.
[edit] Wake-on-ring
The Ring Indicator pin can also be configured in the BIOS on some computer motherboards to wake the computer from sleep mode. This functionality is known as wake-on-ring, and is conceptually similar to the wake-on-LAN feature found on many Ethernet controllers. A home automation controller from a popular company known as X10 is a notable example of this type of use. The controller, which connects to the computer's serial port, can be programmed to assert the RI line on the serial port upon detecting a home automation event of the user's choice, waking up the computer to query the controller for the event ID and then perform any response programmed for the event.
Despite RS232 being considered somewhat of a "legacy" standard, the wake-on-ring functionality is still considered important enough that it is implemented into USB-to-serial converters. When implemented, the USB-to-serial converter remains on standby while the computer is in sleep mode, and sends an ACPI "wake" event over the USB port when the appropriate Ring Indicator transition is detected.
Motherboard BIOSes may refer to this feature with other names or phrases, such as "Power on by external modems".
[edit] Floating RI interference in serial cables
Some poor quality serial cables can cause computer problems with the Ring Indicator signal. This happens if there is inductive interference between the RI line and the RXD/TXD lines when the cable is used with equipment that does not provide any signal on the RI line, and often occurs when using serial extension cords with equipment (which usually carry all 9 or more pins) that only uses a small subset of the serial lines.
In this scenario, the voltage on the RI line freely "floats", and can pick up interference from neighboring signals. If the RI line picks up interference from the RXD/TXD lines (which change from high to low rapidly with every bit transmitted, often thousands of times per second), it can cause the computer to erroneously detect enormous quantities of transitions on the RI line. Each of these transitions generates CPU interrupts and kernel events and can disrupt application software and waste a significant amount of CPU time. If the RI line is unused but carried through a cable next to other wiring, it is important to tie it to either a high or low signal instead of leaving it disconnected and floating. Simply tying it to the output of some other pin on the computer that outputs a steady RS232-level voltage (such as DTR or RTS) will eliminate this problem, regardless of which signal is actually being output on the pin chosen. Connecting the pin to ground should be avoided, because the resulting lack of voltage differential (0 volts) is considered an undefined signal in the RS232 standard.