This is the OLD dialup howto documentation. DO NOT use or edit this. It is here only for archival purposes. Here is the NEW documentation: https://help.ubuntu.com/community/DialupModemHowto

This page tries to help you setting up the driver and configuration for a dialup connection over a modem. There are two parts to that:

  • Identifying the type of modem you are using and installing its driver
  • Configuring the dialup connection to your provider

Unfortunately these steps are not done automatically during the Ubuntu installation, but this is work in progress and will hopefully be improved in future releases.

This page often points you to web sites and asks you to download software. You will need another machine in order to do this, and a way to transfer data from the connected machine to the other one (e.g. floppies, USB keys, CD-R discs, Ethernet).

Installing the driver for your modem

Basically, there are two types of modems:

  1. Software modems (Winmodems), which are usually delivered as PCI or USB devices or builtin with desktop PCs and laptops these days: Some of these are not supported under Linux, some are. If you bought your computer or modem recently (since ~ 2000), chances are, that you have one of this kind. A Winmodem is a combination of hardware known as chipset (much less than in a true pure hardware modem) and software (written for the Windows operating systems family). A Linmodem is a Winmodem working under the Linux kernel. This can be accomplished thanks to the Linmodems.org project.

  2. Hardware modems, which are connected to the serial port for example and process the raw modem commands themselves: they have become very rare, but are well supported.

Software modems

Using scanModem Tool

There are different drivers available. To find out what kind of software modem you are using, go to linmodems.org, read the page, and download the scanModem tool (which will only recognize PCI and USB modems, not ISA modems). Copy it to your desktop in your Ubuntu machine, then open a command line and enter:

  •  $ cd ~/Desktop
     $ gunzip scanModem.gz
     $ chmod +x scanModem
     $ ./scanModem

Gunzip will 'unzip' the file, chmod will mark it as executable, and ./scanModem will run it. If it tells you to do something as root by issuing su - root, instead just enter the commands it wants following a "sudo", e.g. $ sudo modprobe snd-intel8x0m. scanModem will scan your modem and tell you what it is and how to configure it. It will not configure it for you. But after running, you will see a number of new folders, including a 'Modem' folder. Read read1st.txt and modemdata.txt in there, and see if you modem was recognized. This is admittedly not a straight-forward read and might need some more reading around on above mentioned page to find out which drivers your modem needs. Then scan through the following sections to find out about the easiest way to install that driver under Ubuntu.

Note: For many of the following drivers, you will need to enable the universe/multiverse repositories. See AddingRepositoriesHowto. This requires you to have working network connection. You can also search for packages to download in another system and transfer to your Ubuntu installation at http://packages.ubuntu.com/ . Be careful with the dependencies... Check out this forum post for another way to get packages using the LiveCD on another system with network connection and a CD burner: http://www.ubuntuforums.org/showpost.php?p=893732&postcount=6

If compiling from source

On your way to configuring your modem drivers, you may find out that you need to compile from source. In that case, prior to compiling, insert your Ubuntu installation CD.

Instructions for adding the contents of the CD to your respositories list should appear on the screen as soon as the CD is inserted, if you are using Ubuntu 6.06 (Dapper Drake) or above.

If no instructions appear, or you are not using the graphical environment, you can add the CD to your list of repositories manually, by running

sudo apt-cdrom add

If you installed Ubuntu using the Alternate CD, or you are using a version of Ubuntu older than 6.06, the CD repository is already part of your list and you do not need to add it again.

Now, to install the packages needed for compiling, run

sudo apt-get install build-essential linux-headers-`uname -r`

If you need more packages for compiling, you can find them from http://archive.ubuntu.com - always check that your system satisfies the dependencies before installing a new package using this website. The website will list you a number of dependencies for each package. Make sure those dependencies are installed before installing a new package. You can use Synaptic or equivalent to check for installed packages.

Installing GCC 3.4

In some instances, you will need the packages for version 3.4 of the GCC compiler, which, unfortunately, are not present on the installation CD, and will have to be obtained from another machine.

The appropriate files, at the time of writing, can be found here:

  • Assuming you have downloaded the files, and know where they are, you

    can install them using dpkg:

     sudo dpkg -i gcc-3.4-base_3.4.4-6ubuntu8_i386.deb
     sudo dpkg -i cpp-3.4_3.4.4-6ubuntu8_i386.deb
     sudo dpkg -i gcc-3.4_3.4.4-6ubuntu8_i386.deb
     sudo dpkg -i g++-3.4-3.4.4-6ubuntu8_i386.deb
    The order is important.

Modems supported by ALSA drivers (snd_atiixp_modem, snd_via82xx_modem, snd_intel8x0m)

If Modem/ModemData.txt tells you that the modem can be set up by loading (modprobe) the modules snd_atiixp_modem, snd_via82xx_modem or snd_intel8x0mcd, this section may be for you. You need the sl-modem-daemon package.

  • If you can go online with your Ubuntu, you can install the package/daemon by enabling the  multiverse  repository and then install the sl-modem-daemon package.

  • If you cannot go online with your Ubuntu, search for the package using http://packages.ubuntu.com/ , download (link to .deb is given under the text "Architecture") and transfer the package for your version of Ubuntu to your Desktop. After making sure you do not have any other .deb files in your Desktop, open a terminal (Alt+F2, type gnome-desktop -Ubuntu- or konsole -Kubuntu, hit enter), and type or copy-paste the following commands:

cd ~/Desktop
sudo dpkg -i *.deb

You can delete the .deb file you used if the installation was successful.

  • To set your country, run  sudo dpkg-reconfigure sl-modem-daemon -plow  and follow instructions on the terminal. Restart the daemon with  sudo /etc/init.d/sl-modem-daemon restart 

  • For further information to configure the daemon (if it is not working), see the following "text" files (using a text editor like gedit or nano):  /etc/default/sl-modem-daemon  and/or /usr/share/doc/sl-modem-daemon/README.Debian 

  • Now you can go on to use a dialing tool (see table of contents of this wiki page; preferably wvdial for slmodems).
  • If you get an error that says

FATAL: Module slamr not found.
SmartLink modem driver not available for this Kernel. Please read README.Debian
or try to install the package sl-modem-modules-2.6.15-20-686. Exiting...
invoke-rc.d: initscript sl-modem-daemon, action "start" failed.

You will need to follow the instructions per section "Modems supported by the Smartlink driver" in this wiki page.

Note: Every time you update the Linux kernel, you're going to have to run through the "Compiling the driver" procedure below again. This is usually the case when you upgrade from one version of Ubuntu (e.g. 5.10 Breezy Badger) to another (e.g. 6.04 Dapper Drake).


  • These are steps you will only have to run through the first time you build this driver, we're just making sure you have all the installed packages you need. Make sure you have followed the sections of this document entitled If compiling from source and Installing GCC 3.4.

Additionally, you will need the packages sl-modem-source sl-modem-daemon, which, unfortunately, may not be present on the CD and may have to be obtained from another machine.

Compiling the driver

  • Now you can use module-assistant to compile and install the driver:
    1. $ sudo module-assistant auto-install sl-modem

    2. $ sudo depmod -a (this updates the list of available modules)

Getting the modem to work

  • Edit the "SLMODEMD_COUNTRY="-line of the file /etc/default/sl-modem-daemon to include your country. The other lines should be fine as default.

    For the last step, run $ sudo modprobe slamr and $ sudo /etc/init.d/sl-modem-daemon restart and the device /dev/modem should appear. You can now go on configuring your dialup connection. (PS: This driver seems rather finicky, a reboot may help.)

Note about alternative drivers for some slmodems

  • Some slmodems (those using the ALSA modem drivers, in this case) do not need compilation. An example is the winmodem of HP Pavilion zv5120us (which uses snd-atiixp-modem as the modem driver). Refer to your scanModem output if this is the case for you. To make such a modem work, see the section above about "Modems supported by ALSA drivers", or notes just below. This note on linmodems.org explains it:

    From http://archives.linmodems.org/21040

    Slamr has ceased to be the appropriate driver under more current 2.6.n kernels
     If your modem controller is one of these
         PCI  ID       modem controller  name/source     low_level_driver
        =======        ===============    =======         =================
        1002:434d          ATI                            snd-atiixp-modem
        1002:4379          ATI                                 "
        1106:3068          VIA                            snd-via82xx-modem
        10b9:5451          ALI 5451 audio with modem      snd-ali5451-modem
        8086:????           many Intel controllers        snd-intel8x0m
        10de:00d9          Nvidia Corp                          "
        1039:7013          SIS 630                              "
         Others?                                                "

Dapper 6.06 Special Instructions

Due to a BUG in Ubuntu Dapper, you may need to follow these instructions, instead of the above module compilation instructions. First, check whether the bug is fixed yet. If it is, you can do the above steps. Steps below were taken from here.

  1. Read this entire document, as the steps below only compliment it and you should have all the preliminaries done as described for the Smartlink modem, but you can omit installing gcc-3.4 as this is not required for Dapper. Basically the sl-modem driver has to be installed first and then the sl-modem-daemon. The daemon in the repositories will work after an installation, but the /dev/ttySL0 will not be rewritten and the symlink to /dev/modem will not exist after a reboot. The new daemon found in the debian repos solve this. There was a mention that the daemon now looks for ungrab-winmodem and if you get an error message refering to this, you may need to install as well.
  2. Download sl-modem-daemon2.9.9d+e-pre2-5.deb and sl-modem_2.9.9d+e-pre2.orig.tar.gz from the debian website http://packages.debian.org/unstable/misc/sl-modem-daemon. I have found that the slmodem-2.9.11-20051101.tar.gz works better in dapper and this can also be downloaded from the linmodem website http://phep2.technion.ac.il/linmodems/packages/smartlink/.

  3. It may also be required that you download and install the ungrab-winmodem from the linmodem website as well.
  4. Copy the sl-modem-daemon file to your local repository and update your Packages.gz file, this will allow you to install with Synaptic etc. Or use your favourite way to install a .deb file.
  5. Copy the sl-modem_2.9.9+e-pre2.orig.tar.gz ( or preferably the slmodem-2.9.11-20051101.tar.gz) file to your Desktop and right click on it and select “Extract here” and a folder wth the same name will be created with the extracted files on your desktop.
  6. Now rename the folder to an easier name such as “slmodem”
  7. Open a terminal and cd in to the slmodem folder
  8. Type make
  9. Type sudo make install
  10. Type sudo modprobe slamr
  11. Type dmesg | grep slamr
  12. Now install sl-modem-daemon2.9.9d+e-pre2-5.deb with Synaptic or in your own favourite way.
  13. Use Kppp to query the modem, if this works you are there!
  14. Edit /etc/default/sl-modem-daemon to change the line SLMODEMD_COUNTRY= USA to i.e SOUTHAFRICA or your country
  15. Type sudo /etc/init.d/sl-modem-daemon restart to restart the daemon.
  16. If you do a “Query modem” in Kppp and you will see that your country has changed.
  17. It seems as if the Smartlink modems with Netodragon chip MDV92XP does not work, but the ND92XPA chip works.

Modems supported by the Lucent driver

This section is for you if the output of scanModem tells you something like: 'The modem has a supported Lucent/Agere DSP (digital signal processing) chipset.'. You will be able to use a driver from the "restricted-modules" package, which should be installed by default.

  • (To check that the necessary package is installed, use your package manager, e.g. Synaptic or Adept. You need to look for a package, which is called linux-restricted-modules-ARCH, where ARCH is the last part of the $ uname -r output, i.e. your kernel flavor. If it is not installed yet, install it there.)

Setup steps for ltmodem

  • In a terminal type
      $ sudo sh -c "echo ltserial >> /etc/modules"
      $ sudo sh -c "echo ltmodem >> /etc/modules"
    to add them to the module autoloading list.
  • Since udev rewrites /dev on each boot, and some dialup programs rely on the existence of /dev/modem, you need to have a symlink created on boot (from /dev/ttyLTM0 to /dev/modem). To do this, create the file /etc/udev/rules.d/10-local.rules, and put these lines in it:
      KERNEL="ttyLTM0", SYMLINK="modem"
  • Now load the drivers for the first time:
      $ sudo modprobe ltserial
      $ sudo modprobe ltmodem

    This should have created the device /dev/modem and you can now go on to configure your dialup connection.

  • No, I get an error about "FATAL: module not found" for this step Sad :(

    Note for "5.04 Hoary" users: Ubuntu 5.04 Hoary was shipped with kernel 2.6.10, which has some problems with these modules. To fix, change the grub boot commands /boot/grub/menu.lst as follows (pci=routeirq is new):

      ## ## Start Default Options ##
      ## default kernel options
      ## default kernel options for automagic boot options
      ## If you want special options for specifiv kernels use kopt_x_y_z
      ## where x.y.z is kernel version. Minor versions can be omitted.
      ## e.g. kopt=root=/dev/hda1 ro
      # kopt=root=/dev/hda1 ro pci=routeirq

    Do not forget to update grub: $ sudo update-grub

Martian, an alternive to ltmodem

On 6.06.1, It's possible that as part of trying to load the ltserial module, you'll get the error: "FATAL: Error inserting ltserial (...): Invalid argument".

In this case, Installing the Martian driver may be a solution to get your Lucent winmodem to work. First, you'll need to follow the instructions above to install build-essential and your kernel headers packages, to prepare to compile the driver.

Download the most recent version with "full" in the name, from here: http://www.barrelsoutofbond.org/downloads/martian/

Instructions for installing the file software are in the "INSTALL" file. Until someone makes an "init" script for it, There is an additional step needed to be able to use the modem after you boot up.

   sudo martian_helper --daemon

If your software expects the modem to be located at /dev/modem, you may also need to run this command:

   sudo ln -s /dev/ttySM0 /dev/modem

Hopefully "Martian" will become an offical Ubuntu package to make this whole process easier.

Modems supported by the Intel537EP driver

This section describes how to install a 537EP driver on Dapper Drake 6.06 and 6.10.


You will need the following:

1. A compatible Intel softmodem - supported models are 537, 537EP, 537SP, 537AA or 537EA. To find out what model you have, see the preceding section on ScanModem. 536* modems may work but I have not tested them.

2. A 32-bit kernel, if "uname -r" prints something ending in 386 or 686, you probably have a 32-bit kernel.

3. The Intel537EP driver, available at http://downloadfinder.intel.com/scripts-df-external/Detail_Desc.aspx?agr=Y&ProductID=1230&DwnldID=9284&strOSs=39&OSFullName=Linux*&lang=eng (more recent versions exist, but you will have to find the instructions yourself).

4. GCC 3.4, details on this are at the top of this page

5. Developer tools and the kernel headers, both of which are on the Ubuntu CD. See the section at the top of this page on compiling

Installing on Ubuntu 6.06

On 6.06, a complicated series of hacks are necessary. First, unpack the 537EP driver to a directory of your choice. A folder called Intel-537 should be created when you unpack. Rename that folder to whatever "uname -r" prints. After that, type in the following order: "make clean", "make 537", and "sudo make install". This will create and install the driver and a set of scripts. However, the boot script provided by Intel does not work on 6.06. Therefore, we have to sudo gedit /etc/init.d/537_boot and replace the script with the following:

kernel=`uname -r`
if [ -a /etc/SuSE-release ]; then
case "$1" in
start | b)
if ! ( modprobe -f $serial 1>/dev/null 2>/dev/null ); then
if ! ( insmod -f $serial 1>/dev/null 2>/dev/null ); then
echo error loading $serial
rmmod $serial
exit 1
major=`cat /proc/devices | awk "\\$2==\"Intel537\" {print \\$1}"`
echo major="($major)"
rm -f /dev/$device
mknod /dev/$device c $major 1 2> /dev/null 1> /dev/null
chgrp $group /dev/$device
chmod $mode /dev/$device
ln -sf /dev/Intel5370 /dev/modem 1> /dev/null 2> /dev/null
if ! ps -C $registry 1> /dev/null 2> /dev/null; then
if ! ( /usr/sbin/$registry 2> /dev/null 1> /dev/null & ); then
echo "Modem registry ($registry) could not start."
echo "Please see international users secion in readme.txt for more info."
exit 0
rmmod 537 1> /dev/null 2> /dev/null
rmmod 537_core 1> /dev/null 2> /dev/null
rmmod $serial 1> /dev/null 2> /dev/null
restart | reload)
/bin/bash "$0" stop
/bin/bash "$0" start
exit 0
if lsmod | grep "$serial " >/dev/null; then
lsmod | grep "$serial " > /dev/null
echo "$serial NOT loaded"
if ps -C $registry 1> /dev/null 2> /dev/null; then
ps -C $registry
echo "$registry NOT running"
exit 0
echo unknown $serial script parameter
exit 1
exit 0

If you get an access denied error, type "sudo chmod 300 /etc/init.d/537_boot" and try again. To finish, copy the folder that you unpacked the driver to /etc/init.d with "sudo cp (foldername) /etc/init.d". After a restart, you should be able to dial a connection with your favorite dialer (personally, I experienced a lot of "LINE IS BUSY and NO DIAL TONE" errors before a successful dial).

Installing on 6.06.1

Fortunately, the install works perfectly on 6.06.1 (you have 6.06.1 if "uname -r" prints 2.6.15-27-386 or 2.6.15-27-686). Simply unpack, then type the following:

1. make clean 2. make 537 3. sudo make install

The boot script for this driver was designed for SUSE, so you will have to change the line in /etc/init.d/537_boot that says "mode=664" to "mode=666" if you want to dial without root permissions.

Installing on Edgy (6.10)

An edgy install is similar to the procedure for 6.06.1. However, the SUSE 9.3 drivers mentioned above return build errors when run through make. Therefore, we must revert to an earlier version, Phillipe Vouter's modified drivers at http://linmodems.technion.ac.il/packages/intel/Philippe.Vouters/intel-537EP_secure- . You can build them with the same commands as those shown for 6.06.1, but make sure to type "export MODEM_TYPE=537EP", replacing 537EP with your modem type.


Kudos to chuckman78 for his guide (available at http://ubuntuforums.org/showthread.php?t=210405), from which I borrowed from extensively.

Modems supported by the Intel536EP driver

This page describes how to install the driver for the Intel 536EP internal modem on Ubuntu for i386 systems. Some of these are sold as Cnet modems and have Ambient chips on board. The process below is quick easy and works quite well.

The procedure is fairly similar for Ubuntu releases 4.10, 5.04 and 5.10. There is a minor complication on 5.10, discussed below.

  • As of this writing, compilation and usage has been tested on 5.10, 6.06 and 6.10; only compilation has been tested on 5.04 and nothing at all tested on 4.10. If anyone else succeeds (or fails), please update this page.

There are 4 steps in this howto:

  1. Install required Ubuntu packages
  2. Download required files
  3. Compile the driver
  4. Install the driver

Install required Ubuntu packages

  • Ubuntu 5.04 (Hoary Hedgehog)

Make sure you have followed the section of this document entitled If compiling from source.

  • Ubuntu 5.10 (Breezy Badger)

Make sure you have additionally followed the section entitled Installing GCC 3.4.

  • Ubuntu 6.06 (Dapper Drake)

    Ubuntu 6.10 (Edgy Eft)

It's not clear if you need GCC 3.4 for these; it will probably work with the 'normal' gcc you get when following the If compiling from source section.

Get the driver itself

  • Download the drivers for the modem. For Ubuntu 5.04, 5.10 and 6.06, use this link:


  • For 6.10, use this instead:


  • Make sure you know where you've saved this file, which is named

    Intel-536EP-4.71.tgz or intel-536EP-`; for the purposes of this document it will be assumed that it is in your home directory (which is /home/<username>, where <username> is your username).

Compiling the driver

  • First we need to uncompress the downloaded file. Start a terminal window and run the following command:
      tar xzf Intel-536EP-4.71.tgz
    or (for 6.10)
      tar xzf intel-536EP-
    This assumes you saved the file downloaded from Intel in your home

    directory; otherwise, type cd <directory-where-the-file-is> before typing the tar command above.

    This will create a directory Intel-536 with the source contained in it. Change to this directory by typing

      cd Intel-536
    or (for 6.10)
      cd intel-536EP-
    Still in the terminal window, type the following:
      make clean
    This should produce output looking like this:
      Try `uname --help' for more information.
      cd coredrv; make clean
      make[1]: Entering directory `/home/rory/Intel-536/coredrv'
      rm -f *.ko *.o *~ core
      make[1]: Leaving directory `/home/rory/Intel-536/coredrv'
      rm -f *.o *.ko
    Now type
      make 536
    This will result in many lines of output being printed to the terminal window; you can ignore most of them. The final lines should look like this:
        CC      /home/rory/Intel-536/coredrv/Intel536.mod.o
        LD [M]  /home/rory/Intel-536/coredrv/Intel536.ko
      make[2]: Leaving directory `/usr/src/linux-headers-2.6.12-9-386'
      make[1]: Leaving directory `/home/rory/Intel-536/coredrv'

    There should be an Intel536.ko file in the directory now; test this by typing ls -l Intel536.ko; the output should look like

      -rw-r--r--  1 rory rory 1070520 2005-10-16 21:02 Intel536.ko

The file size should be similar, though probably not identical.

Installing the driver

  • There are two steps to installing the driver. The first is to copy the Intel536.ko file created above to an appropriate directory, and the second is to cause the driver to be loaded at boot time.

    Installing the Intel536.ko file Copy the file to the modules directory by this command:

      sudo cp Intel536.ko /lib/modules/$(uname -r)/kernel/drivers/char
    You may be prompted for a password; if so, enter your user password.

    Make your system aware of this module with depmod:

      sudo depmod -a

    Finally, load the driver with the modprobe command:

      sudo modprobe Intel536
    This command should not print a response; if it prints something like this:
      FATAL: Module Intel536 not found.
    you have made an error; most likely you have copied the file to the wrong place. If you see a different error message, there may be an error in the module, or your modem, or you may not have a Intel 536-based modem.

    Loading the driver at boot time

    To load the module at boot time, we need to add a line "Intel536" to the file /etc/modules. First make a backup of the file:

      sudo cp /etc/modules /etc/modules.backup
    Now add the required line as follows:
      sudo sh -c "echo Intel536 >> /etc/modules"

Using the modem

  • The name of your modem device is /dev/536ep0. You can now use

sudo pppconfig to set up pon & poff. To use Kppp you will need to create a symlink be able to link the /dev/536ep0 to /dev/modem. Udev rewrites the /dev on each reboot and you thus have to create a file /etc/udev/rules.d/10-local.rules and put the following lines in it:

  •   # Intelmodem536ep
      KERNEL="536ep0" SYMLINK="modem"

Now reboot and you can use Kppp to query the modem as this is a quick check if all is well before dialling out. Configure KPP for your ISP connection. These Intel modems are found to be more stable and less finicky that the Smartlink types on Breezy.

Modems supported by the Conexant drivers

Note: Conexant does not provide drivers for Linux, but commercial Linux drivers are available from Linuxant, a seperate company. Licenses cost 19.99 US dollars. That comes with at least one year support and kernel-version upgrades, after which you need to purchase it again if you are running a different kernel which needs a newer version of the driver. Without the license, the drivers are limited to a maximum speed of 14.4Kbps. However, some Conexant modems can be run with the sl-modem-drivers (smart link) or an open source driver. Note that in general, you can buy a Lucent or Intel (smartlink, or other brand with intel chipset) modem for less than 19.99 US.

Open Source

Quick Steps for setup of Linuxant/Conexant HSF driver

  • Assuming you know everything there is to know about your setup, all you need to do is:

    Get the ZIPped Debian hsfmodem package from Linuxant from another connected machine (find the Ubuntu 5.10 package). Remember to extract the Debian package to your Desktop (easier to locate). You will use the terminal application to run the commands listed below. The terminal application looks in specific directories for ".deb" packages. If you download binary file then goto Step 3.

Step 1

  • If you are using Ubuntu 5.10 (Breezy Badger), make sure you have followed the section of this document entitled Installing GCC 3.4.

Step 2

  • Then install hsfmodem:

unzip hsfmodem_*.deb.zip          #extract file
sudo dpkg -i hsfmodem_*.deb       #install .deb package

Step 3

  • And finalize the modem driver installation:

sudo hsfconfig
  • sudo hsfconfig will prompt you about your location, your email address and license credentials, assuming you've purchased one; if not, then go by the FREE license key which will grant you up to 14.4 kbps connectivity only Sad :(

PCTel Modems

Original forum post here: http://ubuntuforums.org/showpost.php?p=928212&postcount=10 The OP couldn't edit the wiki, I thank him for his time and effort for contributing.

Following are the instructions:

In order to use PcTEL Micromodem 56 (HSP56 MicroModem Pctel, or any other modem supported by driver) you will have to switch to kernel or lower. Even so, some units will NOT work with 2.6 kernel (consult README file in driver archive), but all of them work with 2.4 kernels. To make the short story long, going online on Ubuntu 5.10 aka. Breezy Badger you have to do four things: (before u do all this, read this section until the end) I. get some utilities (gcc & initrd among else) II. get vanilla kernel on www.kernel.org (I suggest) III. Recompile the kernel IV.Install the driver and configure ppp

Here are the details: (I will assume your kernel source is in /usr/src

Open terminal and use root privileges

sudo apt-get install gcc-3.4 build-essential libncurses5-dev kernel-package gnome-ppp
#this step ensures you will have easier time later on
sudo ln -sf /usr/bin/gcc-3.4 /usr/bin/gcc # this will make your system use gcc 3.4 instead of 4.0.2 This is necessary because you will not be able to compile kernel with gcc-4 series

Go to your downloaded kernel folder

sudo tar -xvfj kernel-
cd kernel-
sudo make mrproper
sudo make xconfig #if xconfig doesn't work use menuconfig or gconfig instead

Configure your kernel if you know what you are doing, but you don't since you are reading this so don't do anything you are not 100% sure about.

File-> Load go to /boot and select config-2.6.12-9-386 or current config file (check with uname -r in a separate terminal)
sudo make-kpkg clean
sudo make-kpkg --initrd --revision=custom.1.0 kernel_image

After couple of hours, or less depending on you CPU....
cd /root
sudo dpkg -i kernel-image-

If something goes wrong you will have to delete folder in /usr/src with your new kernel's name, NOT your default kernel.

If something goes wrong, go to where your kernel source is and run sudo make clean  and repeat everything above. If you are using GRUB that's it. No more. If you are using LILO, google a bit and you'll find how to configure it.

Only one note here: you will not see standard Ubuntu splash on boot process; screen will be black, but the boot will go as normal. If you want to see what is happening go to /boot/grub and open menu.lst and under line that goes boot /boot/vmlinus something...something  quiet splash  delete  splash . Or, if you will you can go on-line and find a better way to do this. There are enough resources.

Second, if you are messing with configuration of the kernel, DO NOT change things you are not sure about. Sure, feel free to select only your graphic/music card or such things, but if you are not sure if you need something don't remove that. Remember, these are the settings that work.

  • Actually, if this compiled kernel doesn't work, you will have to add some changes... and here they are: (you can do this in the first attempt)


These settings may be changed in Block Devices in kernel configuration or you can open file /boot/config- and look for these lines (if they don't exist, make them).First thing seems to be nesessary only on older Pcs, but what does old mean is beyond me. I have Pentium II 400 Mhz @ 128 Mb RAM and it takes three hours to compile kernel if no changes are made to config file. Final size is cca. 12 Mb, however fully customized kernel is around 2 MB and it takes 30 minutes to compile. You can speed up the process by killing gdm and all the stuf you dont need. Here is how to: f1+ctrl+alt and then use sudo

sudo /etc/init.d/gdm stop

now continue with  make menuconfig  ...

See http://www.falkotimme.com/howtos/debian_kernel2.6_compile/ for more help on this (kernel compilation) step.

You will now have to download modem drivers and install them. Simply run

sudo ./setup
Or in the ~/src folder
sudo ./configure
sudo make
sudo make install

from within the untarred modem driver directory. In order to use second method you will have to copy your kernel source to /usr/src. Do this Only AFTER you have successfuly compiled the kernel, and DO NOT compile it from /usr/src.

Final step: once you have sucessfuly compiled the kernel and the drivers you will whish to be able to load the drivers every time you boot the machine. Here is how you do it: go to /etc and look for file called modules. Open it and add following lines:


You can also load them by

sudo modprobe linmodem
sudo modprobe pctel
sudo modprobe pctel_hw

In the end, you will have two kernels you can chose among, if something goes wrong. Remmember that what you do by using one kernel will not be undone when you use the other one.

Hardware modems

Hardware modems don't need a special driver. If your modem connects to the serial port and you know the COM port, the device name is /dev/ttySx, where x is one less than the COM port number. For example, if your modem is on COM2, the device is /dev/ttyS1, or if your modem is on COM1, the device is /dev/ttyS0. You can use this device name to configure your dialup connection.

Note by RaduCristianFotescu: I experienced the problem of a non-detected and not working external hardware serial modem (which made pppconfig, wvdial[conf] and gnome-ppp unuseable) even after issuing a 'sudo ln -s /dev/ttyS0 /dev/modem'. Of course, it previously worked in Slackware and Mepis! Eventually I got it working by making sure the modem was ON and connected to the RS-232 at the time when the kernel was booting! I guess it's smth with the boot scripts...

Configuring the dialup connection to your provider

There are different tools, which can help you to configure & establish a dialup connection. Some of them are command line based (pppconfig & pon/poff, wvdialconf & wvdial), while others use a graphical interface (System => Administration => Networking, kppp, gnome-ppp).

With all these tools, to establish a dialup connection, the user has to be member of the "dip" and "dialout" groups, so put all users who are supposed to connect via dialup into these groups:

  •  $ sudo adduser USERNAME dip
     $ sudo adduser USERNAME dialout

where of course USERNAME has to be substituted.

You will also need to know the device node of your modem. The "Installing the driver"-section of this page should have told you about it. In case you don't know it, assume /dev/modem.

System => Administration => Networking (Ubuntu)

The Networking section of System => Administration will let you set up the ppp connection in a graphical interface. You have to know your device name, ISP phone number, username and password to set it up. You can also use the Gnome Modem Monitor and Network Monitor panel applets if you want to stop, start and monitor modem connections without opening the Networking GUI every time. Some people have had a problem with the modem dialing during bootup. This may be related to setting the modem as default route to the internet on the Options tab of Interface properties.

Note: It has been reported, that connections started with this interface might be very slow, if they work. You can try it, but if this is the case for you, just try one of the other options.

kppp (Kubuntu, but also possible on Ubuntu)

Kppp can be installed and comes with Kubuntu and is a very nice program with all the features you would like from a dialer. It has a nice window showing that it is connected and gives the duration as well. It can also be configured to calculate your telco connection cost. If it is not installed yet, you can install it with your package manager, e. g. $ sudo apt-get install kppp, and find it in the "Internet" section of the menu.

Every user, who is in the dip/dialout groups, can use kppp to configure, connect and manage a connection to an ISP. If you need help with its interface, go to "Help -- Handbook" or use the online handbook here: [WWW] http://docs.kde.org/stable/en/kdenetwork/kppp/

If you have problems with Authentification, you might want to edit /etc/ppp/peers/kppp-options and activate the line noauth by removing the comment sign.

pppconfig & pon/poff

This is a command line based option to manage dialup connections. This makes it very flexible, but maybe not so straightforward to configure.

Collecting Information

You will need:

  • Your ISP's phone number
  • Your username and password on the ISP
  • The name of the modem device (/dev/...)

Setting up ppp

  1. Open a terminal (Applications > System Tools > Terminal) and type

      $ sudo pppconfig
  2. You will be on the main menu. Choose 'Create Create a connection'.
  3. Leave the name as 'provider', hit 'Ok'.
  4. Select 'Dynamic Use dynamic DNS', hit 'Ok'.
  5. Select 'PAP Peer Authentication Protocol', hit 'Ok'.
  6. Enter your user name for the ISP, hit 'Ok'.
  7. Enter your password for the ISP, hit 'Ok'.
  8. Leave the speed at 115200 as recommended, hit 'Ok'.
  9. Choose Tone or Pulse dialing, hit 'Ok'.
  10. Enter the phone number to your ISP (do not use any dashes), hit 'Ok'.
  11. You can try to have your modem detected automatically, but it did not work for me, even on my easily detectable external modem.
  12. If the modem wasn't detected, it will ask you for the port your modem is on. Enter the device name for your modem, hit 'Ok'.
  13. A summary screen will appear and give you the opportunity to make changes if needed.
  14. Choose 'Finished Write files and return to main menu.'.
  15. Choose 'Quit Exit this utility'.
  16. Exit the terminal window, type:

      $ exit

Connecting to the ISP

Log out and back in (for the group setting to take effect). Every "dialout/dip" user will now be able to connect and disconnect with these commands:

  •  $ pon    # connect to the ISP configured as "provider"
     $ poff   # disconnect the ISP configured as "provider"

You can also check the last messages generated by these commands with:

  •  $ plog   # shows the (status) messages generated by pon and poff

If you want to configure more ISPs, start pppconfig again, go through the steps, but give it a different name in step 3 (e.g. provider2). You can then (dis)connect by pon provider2 and poff provider2.

Changing speaker volume

To quiet or silence the connection noises (dialing, negotiation, etc.), follow these steps:

  1. Open a terminal (Applications > System Tools > Terminal) and type

     $ sudo nano /etc/chatscripts/provider
  2. Locate the line marked 'OK-AT-OK'.
  3. Change 'ATDT' to 'ATxxDT', where 'xx' is one of the following:
    • M0 Silence the speaker
    • L1 Low volume
    • L2 Medium volume
    • L3 High volume For example: ATM0DT. Leave the rest of the line unchanged.
  4. Save the file (Ctrl-o) and exit (Ctrl-x).

Using Modem Lights panel-application

While it's good to be able to get online, it'd be nice to have a single way to either connect or disconnect.

The easiest way is by using Modem Lights. Right click on the top panel, select 'Add to panel', and choose 'Modem Lights'. If your modem device is other than ttyS0, you'll have to configure the app. Right-click Modem Lights, choose Preferences -> Advanced, and change the lock file to point to your modem device.

For example, if you have an internal modem on /dev/modem, the Device would be ppp0 and the Lock File /var/lock/LCK..modem

Besides allowing you to connect and disconnect with a single click, Modem Lights also gives you information on how long you've been connected, and a graphical view of your modem's activity.

wvdialconf & wvdial

I prefer wvdial, because it tells you whether your modem is configured or not. Type in a terminal

  •  $ sudo wvdialconf /etc/wvdial.conf

If it says 'no modem found' or something similar, sorry... the driver for your modem seems not to be installed properly yet. The lack of a /dev/modem is not supposed to break wvdial's configuration. If the modem is found, finish the setup with:

  •  $ sudo nano /etc/wvdial.conf

After opening the wvdial.conf file, input your ISP information where needed (look inside the file for fields) and add other options that might be needed for your software modem. You will know what these options are if you asked for help from linmodems.org mailing list. Examples options that you can try to add, if dialling does not work:

  • add X3 to Init2 (means dial without waiting)

  • add Carrier Check = no as a new line (useful for Smartlink modems)

  • add Stupid mode = on as a new line (will start pppd immediately--required by some ISPs)

Typing man wvdial.conf in a separate terminal will give details on options.

Once you are ready, save the file (Ctrl-o) and exit (Ctrl-x), and try to dial:

  • sudo wvdial

will dial and connect. Upon connection, it will spit out some information about your connection (local IP, remote IP, DNS address, etc.). Do not close the terminal where wvdial is running. Leave it alone until you want the connection to be terminated, and hit CTRL+C on that terminal once you want to end the connection.

If you lose the connection a short time after connecting (30 sec - 3 min), you might need to edit options for pppd:

gksudo gedit /etc/ppp/options

Find lcp-echo-interval30 and lcp-echo-failure4. Comment out these options by adding a '#' at the start of these lines, eg. # lcp-echo-interval30 and # lcp-echo-failure4.

If you connect successfully but your Internet applications do not function (eg. web pages do not load in Firefox), you might need to add replacedefaultroute as a new line in the pppd option file.


gnome-ppp is a graphical frontend to wvdial and can be installed by $ sudo apt-get install gnome-ppp. You will find it in the Applications menu and the configuration is probably straightforward.

If wvdial works but you have problems connecting with gnome-ppp, view the wvdial.conf you created earlier in the wvdialconf section above:

gksudo gedit /etc/wvdial.conf

open the wvdial.conf file that gnome-ppp creates (in a different location):

gksudo gedit $HOME/.wvdial.conf

and compare the settings. Change the settings in the gnome-ppp wvdial so they match the settings in the functioning /etc/wvdial.conf. Do not delete lines--if you need to remove a setting, simply delete the text to the right of the = sign, eg. "Init3 = ". Despite the warning at the bottom of the gnome-ppp wvdial.conf file, you can add lines if necessary, eg. "Stupid Mode = on".


DialupModemHowtoOld (last edited 2008-08-06 17:00:03 by localhost)