9. Appendix: The Alcatel SpeedTouch USB ADSL Modem

Author: Chris Jones , copyright © 2001

with minor edits by Hal Burgiss .

9.1. Introduction

Installation, configuration and use of the Alcatel SpeedTouch USB ADSL modem with Linux.

French translation available http://www.linuxdude.co.uk/docs/Alcatel-Speedtouch-USB-mini-HOWTO-FR.txt.

9.1.1. Preface

This is an adaptation of Chris Jones' Alcatel-Speedtouch-USB-mini-HOWTO. The current version of this document can be found at http://www.linuxdude.co.uk/docs/Alcatel-Speedtouch-USB-mini-HOWTO/.

As always with Linux, there is more than one way to skin a cat. This document takes one approach that is a working model. There are other ways, and there may be some contradictions to the INSTALL instructions as included by Alcatel. One notable example: The Alcatel driver supports both PPPoE and PPPoA. Alcatel suggests PPPoE as easier, but many are finding PPPoA more stable even if maybe a little more work to get going. This HOWTO only covers the PPPoA driver! The docs included by Alcatel have some information on PPPoE driver installation.

Also, this driver has just recently been released as of March 2001. It is still dependent on experimental code. Do not expect it to be as stable as ethernet modem solutions. Hopefully, this should change quickly as more users are able to provide feedback to the developers.

The driver also requires a 2.4.x kernel. If you are now running a 2.2 kernel, this will require a major upgrade -- of not just the kernel itself, but related packages such as modutils as well. You can find what all is required by reading /usr/src/linux/Documentation/Changes in the 2.4 kernel source tree. I would further suggest that you get a plain vanilla 2.4 system up and running stably before attempting the process below.

Warning

This process is not for the faint of heart. Novice users should strongly consider an ethernet modem, if this is a possibility.

9.1.2. Background

The Alcatel SpeedTouch USB ADSL modem has become a popular choice for providing low cost, widely available ADSL services, particularly in the UK, where BT Ignite (a division of British Telecom) install it for use over their ADSL network. Although BT plan to move to a new ADSL router soon, the SpeedTouch USB is still used by a large number of people, many of whom wish to use Linux, rather than Windows to access the Internet.

Initially the SpeedTouch USB was only useful to people running either Windows 2000 or Windows 98. Alcatel recently released a MacOS driver and have now released a Linux driver.

This document will show you, as simply as possible, how to configure a Linux machine to connect to the Internet using a SpeedTouch USB.

9.1.3. Assumptions

Several assumptions are made by this document:

  1. You are using Red Hat 7.0 (although the instructions are very similar for other distributions). You should also have all the latest updates.

  2. You are running the 2.4.2 kernel (this is not the appropriate place for kernel installation instructions; they are all over the web).

  3. You are in the UK (this is the only ADSL network I have access to, so it's all I know. If you have any differences for your country, please email me and I'll amend the HOWTO).

The first assumption is merely because I use Red Hat 7.0 and so that is what I've had to use to get it working. I would like to cover other distributions, so if you spot any differences, please email me and I'll amend the HOWTO.

The second assumption is far more critical than the first - you MUST be running AT LEAST 2.4.1, but I have found 2.4.2 to be more stable and the SpeedTouch USB driver works fine with it.

9.1.4. Caveat

Unfortunately, much of the software required for this setup is beta quality and you may experience crashes, random oopses, etc. Hopefully work on the driver will bring its stability up to scratch and everyone can be happy.

9.2. Patching the kernel

For this section you will need the following items. (Please note that by the time you read this, the versions may have changed, so adjust accordingly.)

  1. A working 2.4.2 kernel source tree (usually held in /usr/src/linux/). You should already be running the kernel - there are many guides on the web that will teach you how to install the 2.4 kernel.

  2. The pppoatm kernel patch by Jens Axboe. This is available from:

    http://www.kernel.org/pub/linux/kernel/people/axboe/PPPoATM/2.4.1-pre7/pppoatm-1.gz

    To extract the patch from this, run gzip -d pppoatm-1.gz

  3. Originally we used a combined kernel patch that covered the SpeedTouch driver and the SAR library it depends on. Unfortunately this patch has suffered some bit rot and isn't based on the current driver versions anymore so this next step is mildly more complex than it used to be.

    If your current kernel is using the combined patch (this will only be the case if you have followed this HOWTO before) and you want to upgrade to the latest versions of the SpeedTouch driver and SARlib you will need to 'revert' the combined patch (ie re-apply it to the kernel as you did originally, but with the '-R' option) and follow the SpeedTouch/SARlib instructions below.

    Firstly you need the latest SpeedTouch driver which is available from:

    http://sourceforge.net/

    You will also need the latest version of SARlib, available from:

    http://sourceforge.net/

    Extract both of the files you just downloaded with these commands:

    tar -xvzf sarlib-x.y.z.tgz
    tar -xvzf speedtouch-x.y.tar.gz

Over-helpful browsers: It is possible that your web browser has already unzipped the above patches (i.e. Netscape automatically unzips .gz files). If this has happened, simply rename the patch files to remove the .gz suffix and continue with the following instructions.

Once you have all of these pre-requisites, we can start patching.

Patching Procedure

  1. Change directory into the kernel source directory: cd /usr/src/linux

  2. Test the pppoatm-1 patch: patch -p1 -s -E --dry-run < /path/to/pppoatm-1

    If this command produces any output then something is wrong with your 2.4.2 kernel source tree. Please fix it before continuing.

  3. Apply the pppoatm-1 patch: patch -p1 -s -E < /path/to/pppoatm-1

  4. Now we need to compile the driver. This is very easy and can be done with the following commands:

    cd SpeedTouch (this directory is created by extracting the speedtouch-x.y.tar.gz archive)
    make
    make install (this needs to be done as root)

    This will put the resulting kernel driver (speedtch.o) in /lib/modules/2.4.x/kernel/drivers/usb/ (where 'x' is the kernel version you are running).

9.3. Configuring the kernel

For this section you will need:

9.3.1. Configuration

To configure the kernel, load your favorite kernel configuration method: (e.g. cd /usr/src/linux; make xconfig)

You need to select the following kernel options:

  • Code maturity levels->Prompt for development and/or incomplete code/drivers

  • Networking options->Asynchronous Transfer Mode (ATM)

  • Network device support->PPP (point-to-point protocol) support

  • Network device support->PPP support for async serial ports

  • Network device support->PPP Deflate compression

  • Network device support->PPP BSD-Compress compression

  • Network device support->PPP over ATM

  • USB support->Support for USB

  • USB support->Preliminary USB device filesystem

  • USB support->UHCI (Intel, PIIX4, VIA, ...) support

    You may need to choose the OHCI driver here, depending on your USB controller)

  • USB support->Alcatel Speedtouch USB support

    This option is only available if you are using the older combined kernel patch for the kernel SpeedTouch driver. If you downloaded the separate SpeedTouch and SARlib tarballs then this option won't be shown and you don't need to worry about it.

Selection: For simplicity, I recommend selecting Y (rather than M) for all of these, except the last two (UHCI/OHCI support and Alcatel Speedtouch USB support. Those are better left as M).

Now compile and install the kernel and modules as you would normally.

9.4. Installing the software

For this section you will need the items listed below. (Again, be aware of possible version updates.)

  1. The results of Patching the kernel and Configuring the kernel.

  2. Alcatel's binary management application. This is available from http://www.alcatel.com/consumer/dsl/dvrreg_lx.htm. You must download it from Alcatel, the license forbids us from distributing it.

  3. A PPPoATM-aware PPP daemon. This is available from:

    • Red Hat 7 RPM (GLIBC2.2): http://sourceforge.net/project/showfiles.php?group_id=23818

    • Red Hat 6 RPM: NOT YET AVAILABLE

    • Debian .deb: http://sourceforge.net/project/showfiles.php?group_id=23818

    • Tarball: http://sourceforge.net/project/showfiles.php?group_id=23818

  4. A working PPP setup (there are many guides on the Internet on how to configure PPP in 2.4 kernels)

  5. The Linux HotPlug software from http://linux-hotplug.sourceforge.net. Install this as per its instructions (RPM installation is the simplest)

9.4.1. Installing pppd

Install whichever ppp package you need. You might have to create the file /dev/ppp yourself, which can be done with the following commands:

cd /dev
./MAKEDEV ppp

If your distribution does not include the MAKEDEV script, or it fails to create the correct device, you can use the following command:

mknod /dev/ppp c 180 0

9.4.2. Installing speedmgmt

Extract the Alcatel binary driver tarball (speedmgmt.tar.gz) and install it as per its included instructions.

9.5. Configuring the software

For this section you will need:

9.5.1. Configuring pppd

Edit the file /etc/ppp/options and replace its contents with the following:

          lock
          defaultroute
          noipdefault
          noauth
          passive
          asyncmap 0
          name user@domain
          user user@domain
          plugin /usr/lib/pppd/plugins/pppoatm.so
          0.38
    

Don't forget: You will need to replace the two "user@domain"s with your ADSL username.

Also, in the above example "0.38" is the VPI/VCI ATM pair for the author's provider. You will need to know what the correct values are for your provider, and substitute those. If these values are incorrect, you may sync, but will not be able to connect to your ISP's IP layer, and probably be frustrated. These values can be obtained from the Window's Alcatel client or your ISP. Other commonly used values: 0.32, 0.35, 8.32, 8.35.

Edit the file /etc/ppp/chap-secrets and replace its contents with the following:

          # Secrets for authentication using CHAP
          # client        server  secret                  IP addresses
          user@domain     *       password
    

Now put the same contents in /etc/ppp/pap-secrets.

Don't forget: You will need to replace "user@domain" with your ADSL username and "password" with your ADSL password.

9.5.2. Final configuration

Note: At this point your ADSL modem should be unplugged from the computer.

  1. Load the USB and Speedtouch kernel modules with these commands:

    1. /sbin/modprobe usb-uhci

    2. /sbin/modprobe speedtch

  2. Mount the USB device filesystem with this command: mount none /proc/bus/usb -tusbdevfs

  3. Start the Alcatel management application with this command: /usr/sbin/mgmt

  4. Plug the ADSL modem into a USB port and wait a few seconds. It might be an idea to have a second terminal open watching /var/log/messages so you can see when the modem is initialized, which will look like this:

    Speedmgmt[2074]: Modem initialised at 576 kbit/s downstream and 288 kbit/s upstream

Caveat: Some people have reported that plugging the modem in immediately before running the mgmt application works and can sometimes work better than plugging it in afterward.

Once you have connected successfully, you might like to experiment with the sequence in which you perform the Final configuration. It is possible (and has been reported a number of times) to leave the modem plugged in continuously if you load the modules/apps in the correct order.

9.5.3. Connecting

If all of the software is installed and configured correctly, you should be able to initiate your ADSL connection with the command: pppd

Again, it would be useful to watch /var/log/messages so you can read pppd's output. Ideally you will connect, authenticate and be on the Internet. At this point you are on your own.

Assuming everything works you should see output from pppd similar to the following:

          Mar 22 23:54:42 zanshin pppd[2076]: Plugin /usr/lib/pppd/plugins/pppoatm.so loaded.
          Mar 22 23:54:42 zanshin pppd[2076]: PPPoATM plugin_init
          Mar 22 23:54:42 zanshin pppd[2076]: PPPoATM setdevname_pppoatm
          Mar 22 23:54:42 zanshin pppd[2076]: PPPoATM setdevname_pppoatm - SUCCESS
          Mar 22 23:54:42 zanshin pppd[2077]: pppd 2.4.0b1 started by root, uid 0
          Mar 22 23:54:42 zanshin pppd[2077]: Using interface ppp0
          Mar 22 23:54:42 zanshin pppd[2077]: Connect: ppp0 <--> 0.38
          Mar 22 23:54:45 zanshin pppd[2077]: local  IP address xxx.xxx.xxx.xxx
          Mar 22 23:54:45 zanshin pppd[2077]: remote IP address yyy.yyy.yyy.yyy
    

9.6. Known problems

The management application will most likely make your computer freeze when you try to reboot. There is a possible workaround for this - when your machine reboots, kill pppd, then mgmt.

As-is, a 2.4.2 or below kernel will crash if you try to use the Alcatel driver with an SMP build of the kernel. A patch is available that will fix this, from http://sourceforge.net/project/showfiles.php?group_id=23818

9.7. Revision History

9.8. Credits

Many thanks to all the people who send me ideas, corrections and additions for this HOWTO.

Special thanks must go to Telsa Gwynne for her outstanding help in the conversion of this document from a feeble HTML file to a glorious, spangly Docbook SGML file.