Table of Contents
Introduction
Dial-up connections use analog modems to transmit digital signals over traditional copper phone lines. These connections require no infrastructure other than the telephone network.
- Dial-up is often the only choice available for rural or remote areas where broadband installations do not exist.
- In case of broadband failure, power outage or governments shutting down internet access and cellphone networks, (already happened in several countries) dial-up is a way to get back on-line.
- Where telephone access is widely available, dial-up remains an option to travellers.
Modem choice
Software modem
Any notebook modem is almost certainly a software modem and needs a specific driver. The biggest problem users may have with notebook modems is unsupported drivers and this is not specific to Linux : many vendors have disappeared since the launch of Win98/XP, and no drivers have been developed for these old modems to work with Windows Vista or later, and don't expect a 64bit driver. Modems that fall into this category include most Diamond modems (manufacturer gone out of business), most PCTel modems, many Smartlink modems, many Motorola modems, some USR modems, as well as some modems based upon chipsets from Conexant, and Agere.
Linux may provide support drivers for software modems. Though there are a few software modems that you can find drivers for and in general as these drivers are not free software, installation or packaging is far from being an easy task.
Hardware modem
Full hardware modems normally work “out of the box” with Linux, including Slitaz GNU/Linux. There is no need to install drivers for such a modem in Slitaz GNU/Linux as they are already provided. Hardware modems can be an internal device (pci slot), an expansion card (pcmcia, card-express) or an external peripheral connected to one of the serial or USB ports.
Internal vs External
Note: Although the DC voltage in telephone lines does not cause immediate danger to the user, the AC ring signal (70-120V AC) can still give a nasty shock. Moreover, telephone wires are also exposed to many different environmental effects (nearby lightning, ground potential differences in buildings, interference from power lines) which can sometimes cause high voltage spikes on the telephone wires that may damage your modem. It happened to my modem and I found it easier and cheaper to change an external modem than to replace a full motherboard.
Modem installation
Software modem
Software modems will work under Linux only if a driver exists and gets installed. Slitaz offer several packages of drivers:
- linmodem-agrsm : Agere Modem Drivers for 11c11040 chipsets
- linmodem-intel-536ep : Intel Modem Drivers for 536EP chipset
- linmodem-intel-537 : Intel Modem Drivers for 537 chipsets
- linmodem-slmodem : Drivers for the Smartlink winmodems
First, you have to identify the modem's chipset, then select the driver that fits your software modem. You'll find valuable help at:
PCMCIA modem
If you want to use a PCMCIA Modem card, you have to install the driver for PCMCIA serial devices:
# tazpkg get-install linux-dialup
When you insert the PCMCIA modem, the driver will generally attempt to allocate the first unused serial device used by the card. This command will tell you the device allocated:
# dmesg | tail
$ dmesg | tail -3 pcmcia 0.1: pcmcia: registering new device pcmcia0.1 (IRQ: 3) serial_cs 0.1: trying to set up [0x0101:0x0556] (pfc: 0, multi: 1, quirk: (null)) serial8250: ttyS0 at I/O 0x3f8 (irq = 3) is a 16550A
Serial port configuration
All modems, hardware or software modems with the appropriate driver loaded are reached using serial ports. The serial port is either a regular port on your system or provided hard-wired as part of an internal-modem card. In all cases, to communicate with your modem, Slitaz GNU/Linux needs only to communicate with the serial port.
PC systems accept up to 4 regular serial ports:
Num | Device | Port | Irq |
---|---|---|---|
1 | /dev/ttyS0 | 0x03f8 | 4 |
2 | /dev/ttyS1 | 0x02f8 | 3 |
3 | /dev/ttyS2 | 0x03e8 | 4 |
4 | /dev/ttyS3 | 0x02e8 | 3 |
Software modems may add exotic devices to your system like /dev/ttyAGS3, /dev/536ep, /dev/ttySL0…
In order to test the modem, we first need to configure the serial device. Install setserial:
# tazpkg get-install setserial
And type:
# setserial /dev/<serial_device> irq <ii> port <0xzz> autoconfig auto_irq
With the proper values for the serial device, irq and port.
Then install the minicom package:
# tazpkg get-install minicom
Then as root, open an XTerm and type in:
# minicom -c on /dev/<serial_device> -o
Once minicom is up, type:
AT
Your modem should answer:
OK
If your modem doesn't send a response, try another device (or maybe your serial device is badly configured), you'll find help at:
# ln -s /dev/ttyS0 /dev/modem
Connect the modem to the phone line
Connect to the telephone wiring
The modem must be connected to an analog telephone line. In some countries, a country-specific modem cable adapter is also required. Jacks for digital PBX systems may resemble analog telephone jacks, but they are not compatible with the modem.
Pay attention to the different kinds of phone lines: analog and ISDN. You can't connect an analog modem to an ISDN port and vice versa. Connecting to the wrong port may even destroy your modem. If your machine features an internal modem as well as an internal ethernet card, also pay attention to plug the right cable into the plug. Otherwise you may easily damage your hardware.
Handling different country standards
Telephone signalling (dial tone, engaged signal, etc) and DC current regulators options are specific to a particular country. The modem needs to recognise each of these to be able to respond accordingly. Your phone line needs a DC current of 25 to 35mA for a working phone. In some countries the DC current regulator is located in the telephone exchange at the Central Office, but in other countries it's in the telephone set so if you do not properly set the country in which you operate your modem, you risk plugging in your modem to a phone line with no regulator at all and too much DC current (or both regulators and a too low DC current). In both cases, you won't have a reliable connection and could even run the risk of destroying your modem if the DC current is too high.
If you bought and operate a hardware modem in the country where you live, it's not an issue as you can make some assumptions as to that it will meet the national specifications.
Old hardware modems were specific to a particular country. But if you operate a software modem or you're a traveller, you have to set up your modem according to the country you are in. Fortunately, most modems currently in use can be programmed to be used with any country's phone system.
Configure and Use a Dial-Up Connection
Launch the Slitaz Netbox Manager from the System tools menu or via a terminal:
$ subox netbox
ppp-on file
Select the ppp tab, then click on the Tune Button. Go to to the end of the file and change /dev/ttyS0 to /dev/modem and set the speed to 115200 bds. These settings usually work but you may need to set specific values according to your modem setup.
# exec /usr/sbin/pppd debug lock modem crtscts /dev/modem 115200 \ asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \ noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
DNS
If you add the option usepeerdns, the peer will ask for up to 2 DNS server addresses. The addresses supplied by the peer (if any) are processed by the /etc/ppp/ip-up script and the /etc/resolv.conf updated with the address(es) supplied by the peer. Otherwise, simply enter the address of a well known DNS server like OpenDNS in /etc/resolv.conf:
nameserver 208.67.222.222 nameserver 208.67.220.220
chat file
If you need to send a specific init option to your modem before starting ppp, edit the /etc/ppp/scripts/ppp-on-dialer file. Add the new string before OK ATDT$TELEPHONE:
exec chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATL1+GCI=20 \ OK ATDT$TELEPHONE \ CONNECT '' \ ogin:--ogin: $ACCOUNT \ assword: $PASSWORD
This file is a chat program designed to connect the user with a standard UNIX style getty/login connection. For calling an ISP from a dial-out machine you need in most cases to delete the last two lines:
exec chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT \c
Save the file.
Start connection
Enter your Login/password and Telephone number of your ISP in the corresponding fields, then select the Start button. The modem should dial your Internet Provider.
debug
As pppd is started with a debug option, you can see the debug log. Enter:
$ tail -f /var/log/messages
Sample output:
$ tail -f /var/log/messages Mar 23 11:25:29 (none) daemon.notice pppd[6240]: pppd 2.4.5 started by root, uid 0 Mar 23 11:25:30 (none) local2.info chat[6242]: timeout set to 3 seconds Mar 23 11:25:30 (none) local2.info chat[6242]: abort on (\nBUSY\r) Mar 23 11:25:30 (none) local2.info chat[6242]: abort on (\nNO ANSWER\r) Mar 23 11:25:30 (none) local2.info chat[6242]: abort on (\nRINGING\r\n\r\nRINGING\r) Mar 23 11:25:30 (none) local2.info chat[6242]: send (rAT^M) Mar 23 11:25:30 (none) local2.info chat[6242]: expect (OK) Mar 23 11:25:31 (none) local2.info chat[6242]: rAT^M^M Mar 23 11:25:31 (none) local2.info chat[6242]: OK Mar 23 11:25:31 (none) local2.info chat[6242]: -- got it Mar 23 11:25:31 (none) local2.info chat[6242]: send (ATH0^M) Mar 23 11:25:31 (none) local2.info chat[6242]: timeout set to 30 seconds Mar 23 11:25:31 (none) local2.info chat[6242]: expect (OK) Mar 23 11:25:31 (none) local2.info chat[6242]: ^M Mar 23 11:25:31 (none) local2.info chat[6242]: ATH0^M^M Mar 23 11:25:31 (none) local2.info chat[6242]: OK Mar 23 11:25:31 (none) local2.info chat[6242]: -- got it Mar 23 11:25:31 (none) local2.info chat[6242]: send (ATZ^M) Mar 23 11:25:31 (none) local2.info chat[6242]: expect (OK) Mar 23 11:25:31 (none) local2.info chat[6242]: ^M Mar 23 11:25:31 (none) local2.info chat[6242]: ATZ^M^M Mar 23 11:25:31 (none) local2.info chat[6242]: OK Mar 23 11:25:31 (none) local2.info chat[6242]: -- got it Mar 23 11:25:31 (none) local2.info chat[6242]: send (ATDT0860922000^M) Mar 23 11:25:31 (none) local2.info chat[6242]: expect (CONNECT) Mar 23 11:25:31 (none) local2.info chat[6242]: ^M Mar 23 11:25:56 (none) local2.info chat[6242]: ATDTxxxxxxx^M^M Mar 23 11:25:56 (none) local2.info chat[6242]: CONNECT
Page Review Section | |
---|---|
Quality | Needs review |
Review | Major Updates |
Priority | Medium |
Problems | add a forum post link |
OR add a lab issue tracker link | |
How to Improve | Suggest briefly |