Speedtouch Links

En Español

Home
Firmware Extractor
Fedora Core
Ubuntu
Mandriva
SuSE 9.2
Linux From Scratch
Xbox and PS2 Masquerading
FAQ
Help (mailing list)
Tux riding the SpeedTouch
SourceForge Logo

The Linux Kernel Speedtouch Driver for SuSE

The way the kernel handles the firmware changed with the 2.6.10 kernel. New kernels can load the firmware themselves, older (pre 2.6.10) kernels need to use modem_run to load the firmware. So if you are using SuSE-9.2 or older, please follow the SuSE-9.2 page

Things You Will Need

Different versions of the Speedtouch use different firmware. If you already have firmware you know works with your modem then stick with that. Otherwise, if you have an old green revision 0 or a revision 2 modem (they're usually purple/burgundy) the KQD6_3.012 file from this zip file is the one to use. That zip also holds the ZZZL_3.012 firmware for the (usually silver) revision 4 modem.

The old green rev 0's can be temperamental, if it doesn't like the KQD6_3.012, try the mgmt.o firmware from this tarball

If you don't know what revision of modem you have, first, as root, mount the usb filesystem on /proc/bus/usb

su -c "mount usbfs"

Enter the root password, then copy this command into the shell

awk '/4061/ { print $5 }' /proc/bus/usb/devices

It should print out the revision number of your modem

To prepare the firmware (so the kernel can load it) you'll need to split it in two with a precompiled copy of the firmware extractor.

You'll need to know if your ISP uses PPPoA or PPPoE. If you don't know, consult this table.

If your ISP uses PPPoE you will need a copy of the br2684ctl bridging utility to be able to do PPPoE over ATM.

Save the files you need onto something like a floppy disk or USB stick then reboot into SuSE and copy them into your home folder.
If you get an error message saying something like "no such file or directory" it may be because you didn't save something you need. Or it could be that when you downloaded a file, windows renamed it with a .txt extension.

When you save the firmware, firmware-extractor and so on, save a copy of this page so that you'll be able to read it and (more importantly) copy and paste commands into a terminal when you're offline in SuSE.

Prepare the Firmware

If you've got a revision 0 or revision 2 modem unzip the KQD6_3.012 and use the firmware-extractor to split it into two parts, speedtch-1.bin and speedtch-2.bin. Open a terminal to get a command prompt then copy and paste these commands:

unzip SpeedTouch330_firmware_3012.zip &&
chmod +x firmware-extractor &&
./firmware-extractor KQD6_3.012

For a revision 4 modem it's basically the same but with different firmware, use the ZZZL_3.012 file in the same zip.

unzip SpeedTouch330_firmware_3012.zip &&
chmod +x firmware-extractor &&
./firmware-extractor ZZZL_3.012

If you've got some other firmware file you want to try, split it in two with the firmware-extractor in the same way

chmod +x firmware-extractor &&
./firmware-extractor /path/to/your/firmware

Secrets

Open a text editor and put one line in it like this:

"username@isp" "*" "password"

Where username@isp is the username your ISP gave you (often, but not always, it has an @isp bit at the end) and password is the password you chose when you set up your account with your ISP. Put quotes around the string to protect any control characters from the shell and don't miss out the spaces in the " "*" " bit. Save it as a plain text file in your home folder and call it secrets

If your ISP is PPPoE skip down to the PPPoE section


PPP Over ATM

Create a file to configure pppd. Open a text editor and copy and paste this into it. Change username@isp for the username your ISP knows you by. Also, change the 0.00 at the bottom for the VP/VC values for your country/ISP that you looked up earlier

noipdefault
defaultroute
user 'username@isp'
noauth
updetach
usepeerdns
plugin pppoatm.so
0.00

### If the firmware loads and pppd won't
### connect uncomment this option to make
### pppd be more verbose in the system log

# debug

### For more details (and more options)
### read man pppd

Save it in your home folder as a plain text file called speedtch

Connect on Boot

Make a bootscript. Open a text editor and copy this into it.

#!/bin/bash
modprobe pppoatm
count=0
while [[ $((count++)) -lt 40 ]]
do
  if dmesg | grep 'ADSL line is up'
  then
    pppd call speedtch
    exit 0
  fi
  sleep 1
done
echo "The SpeedTouch firmware did not load"

Save it in your home folder as a plain text file and call it dial

Tidying Up

Now, to copy those files into the right places you will need to become root, so use the command su, enter the root password, and then copy and paste these commands into the shell.

cp speedtch-{1,2}.bin /lib/firmware &&
install -m400 speedtch /etc/ppp/peers &&
install -m400 secrets /etc/ppp/chap-secrets &&
install -m400 secrets /etc/ppp/pap-secrets &&
install -m744 dial /etc/init.d/dial &&
insserv dial &&
rm -f /etc/init.d/rc5.d/K*dial

Reboot and you should be online.

If not, is the firmware is loading OK? Once the kernel has loaded the speedtch module the left LED should stay green while the right LED flashes eight or nine times (and then stays green).

If the firmware loads but ppp can't connect with your ISP check the details you put in /etc/ppp/{chap,pap}-secrets and /etc/ppp/peers/speedtch. Also try adding the option 'debug' to /etc/ppp/peers/speedtch, it will then be more verbose in /var/log/messages.

When it's all working you can delete the files you created in your home folder.

Please report any problems to the mailing list

PPPoE

Create a file to configure pppd. Open a text editor then copy and paste this into it. Change username@isp for the username your ISP knows you by.

noipdefault
defaultroute
user 'username@isp'
noauth
updetach
usepeerdns
plugin rp-pppoe.so
nas0

### If the firmware loads and pppd won't
### connect uncomment this option to make
### pppd be more verbose in the system log

# debug

### For more details (and more options)
### read man pppd

Save it in your home folder as a plain text file called speedtch

Connect on Boot

Make a bootscript. Open a text editor and copy this into it.
Change VP.VC for the VPI/VCI numbers for your country/ISP. For example in Australia it would be 8.35

#!/bin/bash
modprobe pppoatm
modprobe br2684
count=0
while [[ $((count++)) -lt 40 ]]
do
  if dmesg | grep 'ADSL line is up'
  then
    br2684ctl -b -c 0 -a VP.VC
    sleep 3
    ifconfig nas0 192.168.0.1 netmask 255.255.255.0
    sleep 10
    pppd call speedtch
    exit 0
  fi
  sleep 1
done
echo "The SpeedTouch firmware did not load"

Save it in your home folder as a plain text file and call it dial

Tidying Up

To copy those files into the right places you will need to become root, so use the command su, enter the root password, and then copy and paste these commands into the shell.

cp speedtch-{1,2}.bin /lib/firmware &&
install -m 744 br2684ctl /usr/sbin &&
install -m400 speedtch /etc/ppp/peers &&
install -m400 secrets /etc/ppp/chap-secrets &&
install -m400 secrets /etc/ppp/pap-secrets &&
install -m744 dial /etc/init.d/dial &&
insserv dial &&
rm -f /etc/init.d/rc5.d/K*dial

Reboot and you should be online.

If not, is the firmware is loading OK? Once the kernel has loaded the speedtch module the left LED should stay green while the right LED flashes eight or nine times (and then stays green).

If the firmware loads but ppp can't connect with your ISP check the details you put in /etc/ppp/{chap,pap}-secrets and /etc/ppp/peers/speedtch. Also try adding the option 'debug' to /etc/ppp/peers/speedtch, it will then be more verbose in /var/log/messages.

When it's all working you can delete the files you created in your home folder.

Please report any problems to the mailing list

Annoyances

If you don't have an ethernet connection and the boot process hangs for a minute while SuSE tries to configure a non-existent eth0 connection, try removing /etc/sysconfig/network/ifcfg-eth-($NUMBERS).

mv /etc/sysconfig/network/ifcfg-eth* /root

If you use Gnome and you get an error message that netapplet has crashed, try removing /opt/gnome/bin/netapplet

mv /opt/gnome/bin/netapplet /root