Retinix
News
About Retinix
Articles
Projects
Links

Yet another Alcatel SpeedTouch USB for Linux HOWTO

Introduction

There are now quite a few HOWTOs for this on the net, but most deal with using older linux kernels. My HOWTO is written in Spetember 2001 and deals with using a 2.4.7 kernel. I've performed all the compilation on a Slackware 8.0 system that simply had its kernel upgraded to 2.4.7.

It is also specific to ppp over ATM which is used in New Zealand.

The Steps

  • Get a 2.4.7 linux kernel and explode it under /usr/src/

  • Go to Jens Axboe's directory and pick up the pppoatm patch for your kernel (ie for 2.4.7). He has something called 'lanai*' that you don't need. Just download either the bz2 or gz'ipped copy of the pppoatm patch.

  • Put the pppoatm-2.gz file into /usr/src

  • Patch the kernel:
       cd /usr/src
       gzip -c pppoatm-2.gz | patch -p1 -s -E
    
    You should not have gotten any errors. If you did give up.

  • Configure the kernel:
       cd /usr/src/linux
       make menuconfig
    
    You'll need to set the following options:
    • Code Maturity Level Options
      • Prompt for development and/or incomplete code/drivers [*]
    • Loadable Module Support
      • Enable Loadable Module Support [*]
    • Processor type and features
      • Processor Family (Set it to the CPU your modem will end up being connected to)
      • Symmetric multi-processing support [N]
    • General Setup
      • Support for hot-pluggable devices [*]
    • Networking Options
      • Packet Socket [*]
      • Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) [*]
    • Network Device Support
      • PPP (Point-to-Point Protocol) Support [M]
      • PPP Deflate Compression [M]
      • PPP BSD-Compress Compression [M]
      • PPP over ATM (Experimental) [M]
    • USB Support
      • Support for USB [M]
      • Preliminary USB Device Filesystem [*]
      • UHCI (Intel PIIX4, VIA,...) Support [M]
      • OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support [M]
    You may need to turn on HDLC support as well. I did as I found it in another HOWTO somewhere. Can't exactly hurt.

  • Build the kernel:
    cd /usr/src/linux
    make dep
    make bzImage
    make modules
    make modules_install
    
    You should now have your kernel built. You need to copy it somewhere and then run lilo or fix it so it will actually boot (all beyond the scope of this doco). You should probably reboot and make sure your system comes back up on its new kernel.

  • get SARlib from SourceForge. It was version 0.2.4 when I wrote this. Extract it and rename the name of the directory it creates. For example:
    cd /usr/src
    tar xvzf /tmp/sarlib-0.2.4.tgz
    mv sarlib-0.2.4 sarlib
    
    The new directory name must be 'sarlib'. Now compile it:
    cd sarlib
    make
    

  • get the SpeedTouch module bit from SourceForge. Don't get the version from Alcatel's web site. Its pretty old now. The one I got from SourceForge was version 1.5, and the Alcatel one was probably version 1.0. Extract it and compile it. The directory you extract to must be at the same level as where you put sarlib. So following on from the prior example:
    cd /usr/src
    tar xvzf SpeedTouch-1.5.tar.gz
    cd SpeedTouch
    make
    make install
    
    I noticed here that SpeedTouch has CFLAGS set in the Makefile such that it compiles for a 686 architecture (I think a Pentium 2 and up). If you're like me and are going to be using the modem on a lower end PC, then change the Makefile to something like a 486.

  • Most other HOWTOs talk about installing Hotplugging at this point. I can't be bothered with it, so we'll manually start all the daemons when necessary. Besides the modems going to be permanently plugged in isn't it???

  • Install the Binary management application. Download it from Alcatel. You need to give your name and some other rubbish before they let you have it.
    cd /usr/src
    tar xvzf /tmp/speedmgmt.tar.gz
    cd mgmt
    make install
    
    The management app effectively comes precompiled, so only requires a 'make install'

  • Attempt to install ATM. Download it from the Linux ATM site. I found that I couldn't compile it completely on Slackware 8.0 (glibc 2.2.3). It would get somewhere in io.c and die. But I found a note on the net somewhere that you just need it to install the atm header files for when you compile pppd with ATM extensions. So try this:
    cd /usr/src
    tar xvzf /tmp/atm-0.78.tar.gz
    cd atm
    make
    make install
    
    I've since discovered that you need more than the header files /usr/include/atm*.h. You need the /usr/lib/libatm.a and /usr/lib/libatmd.a libraries as well. Fortunately, my Slackware 8.0 compile got far enough to build these libraries, such that the make install installs them correctly (NB: I've since tried this whole build using Slackware 7.1, glibc 2.1.3 and I get no compile errors at all).

  • Download a pppd with ATM extensions. I got mine from www.nzdsl.co.nz, but it now seems to have disappeared. I've upped my own copy to here.
    cd /usr/src
    tar xvzf /tmp/ppp-2.4.0b2-pppoe-pppoatm.tar.gz
    cd ppp-2.4.0b2-pppoe-pppoatm
    ./configure
    make
    make install
    
    For some reason, the make install only installs the pppoe plugin. You'll need to manually cd into pppd/plugins and copy pppoatm.so to /usr/lib/pppd/plugins. Actually you only need the pppd and the pppoatm.so files that are created.

    Depending on your distro (or setup) you may need to create a /dev/ppp device file:

       mknod /dev/ppp c 108 0
    

  • Mount the USB filesystem. Add the following line to /etc/fstab:
    /dev/usb /proc/bus/usb/ usbdevfs defaults 0 0
    
    Mount it now with:
    mount /proc/bus/usb
    

  • Create an /etc/ppp/options like so:
    lock
    defaultroute
    usepeerdns
    noipdefault
    noauth
    passive
    asyncmap 0
    lcp-echo-interval  2
    lcp-echo-failure   7
    name user@domain
    user user@domain
    
    plugin /usr/lib/pppd/plugins/pppoatm.so
    0.100
    
    The 0.100 is the VCI/VPI pair used here in NZ. Change it to whatever it is in your own country. Both the user@domain's need to be changed to your own ADSL user name.

    Create an /etc/ppp/chap-secrets file with your username and password:

    # Secrets for authentication using CHAP
    # client        server  secret                  IP addresses
    user@domain     *       password
    
    And copy it to /etc/ppp/pap-secrets

Starting it up

  • Make sure your USB is running. You'll need to do one of the following modprobes depending on what kind of USB chipset you have:
       modprobe usb-ohci
    
       OR
    
       modprobe uhci
    
  • Make sure all the PPP modules are loaded. If you've compiled everything in modules, then you should:
       modprobe ppp_generic
       modprobe ppp_async
       modprobe ppp_deflate
    
    and don't forget the pppoatm kernel module!
       modprobe pppoatm
    

  • Plug in the Alcatel Modem. look at /var/adm/messages. You should have some message about a new device.

  • Insert the speedtch module and start the binary management app.
       modprobe speedtch
       /usr/sbin/speedmgmt &
    
    This is where I often have to wait a long long time as the lights on the Modem flash and flash and flash until it gets a connection. You know its done when the LEDs stop flashing and are both solid GREEN. You should also have a message in /var/adm/messages like:
    Sep  7 16:07:49 mysys Speedmgmt[173]: Modem initialised at 
     2336 kbit/s downstream and 800 kbit/s upstream
    

  • Start up pppd:
       pppd
    
    You should have some messages in /var/adm/messages about your IP and your remote IP and some DNS servers too. It will automatically create /etc/ppp/resolv.conf. A simple way to use this is to make /etc/resolv.conf a symlink to it.

Notes

  1. If you're going to build all this software on one machine and then install it on another (say an old PC you want to use as a firewall), remember to compile everything for the processor of the other machine. For me this meant going through all the Makefiles and adding something extra to the CFLAGS definition:
       CFLAGS += -march=i486
    
    Of course, there probably is an easier way using arguments to make.

  2. If you're going run these things on a read-only file system, you need to know:
    • /var probably needs to be read/write since so many processes use it as such.
    • speedmgmt creates a socket and consequently a file in /tmp, so /tmp needs to be read/writable.

Sep 27,2001

1