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.
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.
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.
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...
To get the Speedtouch working under Linux you will need some software and kernel patches found below:
The kernel patch for your kernel. They can be found at http://www.kernel.org/pub/linux/kernel/people/axboe/PPPoATM/. Please note not all the kernels have patches.
The latest SpeedTouch driver from http://sourceforge.net/project/showfiles.php?group_id=3581
The latest SARlib library from http://sourceforge.net/project/showfiles.php?group_id=22221
The Alcatel speed management software. You can get it from http://www.alcatel.com/consumer/dsl/dvrreg_lx.htm. I can't distribute this because of Alcatel's licensing scheme so get it from them.
Some description of PPPoATM aware PPPd binary:
Red Hat 7 RPM (glibc 2.2): http://sourceforge.net/project/showfiles.php?group_id=23818
Debian (.deb): http://sourceforge.net/project/showfiles.php?group_id=23818
Tarball: http://sourceforge.net/project/showfiles.php?group_id=23818
The Linux Hotplug software from http://linux-hotplug.sourceforge.net. Get it installed as per their instructions. It seemed simple enough so I won't cover it here
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.
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!
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 [email protected] user [email protected] 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 "[email protected]" * "mypasswordhere" |
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! :).