PROBLEMS WITH MODEMS "I just bought and installed an XYZ V-Dot-Everything internal modem, and it works with communication package, but not with Kermit". This has long been a common complaint about internal modems. The same complaint is also now being heard with alarming frequency about some of the newer external modems. With internal modems, particularly when they are installed on COM3 or COM4, the most common problems are: 1. Kermit doesn't know the modem's address, or the device is using an IRQ number other than 3 or 4. These problems can be fixed by giving the appropriate SET COMn command to Kermit. 2. The internal modem is installed incorrectly, with an address or IRQ that conflicts with one already in use on your PC. 3. The internal modem does not correctly emulate a real IBM PC serial port, and therefore fails Kermit's hardware test, and therefore can only be used through the BIOS. 4. The device is in a laptop, notebook, or palmtop computer, and power to the internal modem or serial port has been disabled in the CMOS setup, or has been turned off automatically when the cover is closed or the machine shut down. In mid-1992, a new generation of low-cost, high-speed modems, both internal and external, began to appear on the market. These modems typically offer a wide range of features: V.32 and V.32bis modulation, V.42 and MNP error correction, V.42bis and MNP data compression, etc. Unfortunately, many of these modems suffer from bugs not found in earlier modems. The problems are generally related to initialization of the modem and interaction with its command processor. Some common complaints: 1. "The modem won't dial or respond to commands". Or the modem ignores commands when Kermit's PARITY is set to a particular value, like EVEN. Or commands are not processed correctly above a certain interface speed. 2. "I can dial successfully, and in general send characters to and through the modem, but I never get any characters back." This looks suspiciously like the "talk-but-not-listen" problem, but in some cases it is a bug in, or a configuration problem with, the modem, having nothing to do with Kermit: the modem is simply not sending any characters to the PC. 3. "After using the modem with communication software, it also works with Kermit, but it won't work with Kermit unless I run first." 4. "I can communicate in command-mode with the modem, up until I give it an ATZ command, at which point it seems to die." 5. The modem does not pass the BREAK signal. 6. The DSR signal goes off after successful dialing. And so on. All of these are modem, not Kermit, problems. Some suggestions for overcoming them: 1. Before giving a DIAL command, which invokes a macro containing OUTPUT commands for the modem's command processor, give the command: SET OUTPUT PACING For example: SET OUTPUT PACING 100 OUTPUT AT Q0 E1 V1 &F\13 2. External modems only: Check that your modem cable has wires for (at least) the TD, RD, SG, CTS, RTS, DSR, CD, and DTR RS-232 signals. If it does not, replace the cable with a real modem cable, or (temporarily) configure your modem to compensate for the missing signals. 3. Read your modem manual and check your modem's configuration. Perhaps its interface speed is locked to a different speed than the one Kermit is using. Perhaps Kermit is set to use RTS/CTS flow control, but the modem is not asserting CTS. Also, check its factory and/or saved settings, and under what conditions they are restored (for example, are they restored when the PC drops DTR?). How are you selecting saved settings -- read your modem manual about (e.g.) the difference between AT&F and AT&F2. Be aware that the AT&Fn commands might not restore all S-registers, so double check them. Be particularly sensitive to the registers that control interface speed, modulation technique, error correction, data compression, negotiation, and fallback, and note that each modem maker probably uses different registers and commands to control each of these features. 4. Try the following sequence to initialize the port (using COM3 in this example): SET COM3
; (if necessary) SET PORT 3 ; Select port 3 HANGUP ; Drop DTR on port 3 SET PORT 3 ; Re-initialize port 3 5. SET PARITY NONE when talking to the modem, and then set parity to whatever the remote host or service requires after making the connection. (NOTE: MS-DOS Kermit might set its parity to some other value automatically as a result of automatic parity detection during file transfer.) 6. Ensure your PC bus speed is 8MHz. Some PCs (not PS/2s) come with a BIOS SETUP facility that lets you change the PC's bus speed, memory wait states, etc. In general, it is dangerous to deviate from the defaults, particularly from the 8MHz bus speed, a standard for add-on devices; it might be required by your communication board or internal modem. 7. Dial at a lower speed. Make your interface speed match the modulation speed -- e.g. use 9600 for V.32, 2400 for V.22bis, etc. Turn off modem error correction and compression. etc etc. NOTE: connection problems between the two modems have nothing to do with Kermit and are beyond the scope of this document. If a modem appears to dial correctly, gets connection tones, and then hangs up, it is a problem between the two modems (involving one or both modems and/or the phone company), and indicates a modem configuration problem, a bug, or a basic incompatibility between the calling and answering modems. 8. The ATZ problem. If the modem doesn't work after an ATZ command, HANGUP and the SET LINE again. If that doesn't do it, power the modem off and on. 9. If the modem can't be configured to pass the BREAK signal, but it does correctly implement a command for sending BREAK, such as AT\B9, define an MS-DOS Kermit macro, SBREAK, to send a BREAK as follows: define sbreak pause 1, output +++, pause 1, output ATB\{92}9\13, - pause 1, output ATO\13, connect and assign it to the key of your choice, for example F1: set key \315 {Ksbreak} 10. Call your modem maker's technical support number. Ask if they have replacement chips to fix bugs in your modem. .