LinuxSelfhelp.com

5. BTOpenworld Home 500 (Alcatel Speedtouch USB)

5.1. About this section

There is rather a large amount of credit due here, to Chris Jones for writing the Alcatel Speedtouch USB ASDL Modem mini-HOWTO that is now part of the DSL HOWTO. This helped me a great deal when trying to get my Speedtouch to work.

5.2. Warning

At home I use Linux Mandrake, although the version of the kernel I had was patched with the ATM kernel source I did end up patching a different kernel source to get it working. Please, please inspect your kernel source to see if you have the PPPoATM source patched against your kernel. To do this go into you kernel source directory, usually /usr/src/linux and do a make menuconfig. In the Network Device Support section check for:

  • Network device support->PPP over ATM

If it does exist then make sure it is present it you current kernel and you can skim-read the "Patching you kernel" section to make sure you have the correc toptions compiled in and then carry on.

This was just a minor warning as I orginially had a kernel patched with PPPoATM and without realising managed to trash my kernel tree by trying to force the patch onto it.

5.3. Distribution Specific Information

I have had reports about different distros that have varying PPPoATM support already builtin to the kernel:

  • Mandrake 8.0: The default 2.4.3 kernel already has the PPPoATM patch applied, I cannot remember if it compiled in but ignore steps refering the "Patching the Kernel" below. PS: You still need to configure the kernel.

  • Mandrake 8.1: Mandrake 8.1 supports the Speedtouch automatically, I have no had first hand experience but from what I can gather you simply have to download the Alcatel binaries and then use DrakNet to sort it out.

  • Debian: I have had reports that the standard Debian installtion does not include libpam, this must be installed for the PPPoATM plugin modules to work.

NOTE: From roughly kernel 2.4.16 the PPPoATM patch is included in Linus' main source tree. Therefore you can miss out patching the kernel and just configure it.

5.4. Requirements

To get your Speedtouch USB working in Linux you have a fairly heavyweight task ahead of you, but hey, if I could do it so can you! This is what you'll need to get it working:

  • You must have the kernel source installed and know the procedure for installing and compiling a new kernel. If this is a problem then read the Kernel HOWTO.

  • You must be running one of the following Kernels: 2.3.39, 2.4.0-test4, 2.4.1-pre7, 2.4.7, 2.4.8-pre5. This is because the PPPoATM patch for the kernel exists patched against specific kernels, some may work with similar kernel versions but I cannot vouch for that

  • You, obviously, need a USB controller of some description with at least one free plug. It also must be Linux compatible, nowadays this is most USB controllers that are UHCI/OHCI based. If you don't have one your local supplier would probably have a PCI USB Controller.

  • A heap-load of confidence with meddling with your config. eg: kernel recompiling, program installation...

5.5. Software Downloads

To get the Speedtouch working under Linux you will need some software and kernel patches found below:

5.6. Patching your kernel

Once you have the PPPoATM kernel patch (this assumes you use the patch against kernel 2.4.7) you need to make sure you have a working 2.4.7 kernel tree, next unzip the PPPoATM patch by doing:

NOTE: From rougly kernel 2.4.16 (I haven't tested to see hwo far back it goes) the PPPoATM patch is included in Linus' main kernel tree, therefore you may skip the patching below and resume ready to configure the kernel.

gzip -d pppoatm-2.zip

Next we will need to test-patch the kernel using the following commands:

patch -p1 -s -E --dry-run < /point/to/pppoatm-2

If that ran without failure then patch the kernel by removing the --dry-run as such:

patch -p1 -s -E < /point/to/pppoatm-2

That should have patched the kernel good-and-proper so we can go ahead and configure it, make sure the following options are selected along with your personal build 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

    You have to make a choice here, if your USB controller is UHCI based then select:

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

    Alternatively choose:

    USB Support->OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support

You could select any of these as modules or compiled-in but as I followed Chris Jones' HOWTO I compiled the all but UHCI/OHCI as compiled-in code. Save the kernel config and compile the kernel and modules as you normally do.

5.7. Kernel Drivers and Software

Now that the kernel will support using PPPoATM we can start compiling the bits to run the modem. Well start with the Kernel mode driver; first decompress the SARlib sources to a build directory. (Personally I build all my non-kernel sources in ~/sources) and do a make on it. There is no need to do a make install with this library.

Next return to your source root and decompress your Speedtouch drivers (from Sourceforge not Alcatel!), go in there and do a make, and then a make install.

Note: If you get an "Error 1" then check the Makefile for a line starting SARLIB:= and check it points to the right directory, the one where you just compiled SARlib.

Next install the Hotplug software and make sure it works. Once you've done that decompress Alcatel's binary management software and do a make on that. Then do a make install, the clever bit here is their installation registers the Speedtouch kernel driver and their binary to be run when the USB device is "hotplugged" (or coldplugged) into the system. Kiss goodbye to the hours of trying to writing modules loading scripts that always fail.

Next install the new PPPoATM aware PPPd program, I had no luck getting it compile from source on my machine so I used the RPM. Sorry you're on your own there!

5.8. PPPd Configuration

Warning: The action will remove all the default settings for any previous PPPd connection. (Not that you want them now you've got shiny new ADSL ;P)

In the /etc/ppp directory there is a file called options in that file put the following:

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

Make sure of the following things:

  • That you replace both name and user variables with your username.

  • That you get the correct VPI/VCI ATM pair, these are in the windows information software, from BTi my VPI:0 and VCI:38 so I use 0.38. Make sure you get this right or it will not work.

Next in your /etc/ppp/chap-secrets put:

  # Secrets for authentication using CHAP
  # client    server    secret    IP addresses
  "bloggs@hg5.btinternet.com"  *   "mypasswordhere"

5.9. Testing your link

Next thing to do is get the link up and test it. If you've got a nice distro like Mandrake you should find it will auto-init your USB drivers and filesystem, if not then the following can be used:

/sbin/modprobe usb-uhci

mount none /proc/bus/usb -tusbdevfs

Next load the Speedtouch driver by doing: /sbin/modprobe speedtch. Next use the speedmgmt program to get the modem init'ed: /usr/sbin/mgmt. After a while of the lights flashing on the modem the main console (and/or the syslog) should report:

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

Once the modem has been init'ed now make sure the PPPoATM module is loaded by doing:

modprobe pppoatm

Now start the PPP link by typing pppd You should see something similar to this:

  Oct 28 14:01:25 ds9 pppd: PPPoATM plugin_init
  Oct 28 14:01:25 ds9 pppd: PPPoATM setdevname_pppoatm
  Oct 28 14:01:25 ds9 pppd: PPPoATM setdevname_pppoatm - SUCCESS
  Oct 28 14:01:26 ds9 pppd: Using interface ppp0
  Oct 28 14:01:26 ds9 pppd: Connect: ppp0 <--> 0.38
  Oct 28 14:01:28 ds9 pppd: local IP address 255.255.255.255
  Oct 28 14:01:28 ds9 pppd: remote IP address 255.255.255.255
  Oct 28 14:01:28 ds9 pppd: primary DNS address 213.120.62.100

Once that's done you're in luck, now just configure the pppd to autodial at startup (beyond the scope of this HOWTO, sorry!). Hopefully HotPlug will get your device up and going before pppd needs it! :).