Speed Touch 330, FreeBSD 4.8: Working
izamryan at uk.co.demon.materialitynospam.demon.co.uk
Thu Jul 10 20:54:51 PDT 2003
-----BEGIN PGP SIGNED MESSAGE-----
> I have a SpeedTouch 330 USB ADSL modem which I am trying to connect to
> Qwest's ADSL (PPPoA). I am running FreeBSD 4.2, and all I can find in the
> docs is support for a SpeedTouch USB, not the 330.
I initially tried this modem with FreeBSD 5.0, however since the driver caused
a kernel panic I am now using FreeBSD 4.8 and 2-3 days ago have gotten this
setup to work.
You WILL have problems using SpeedTouch hardware with buggy USB controllers. I
have previously used the SpeedTouch frog (the green modem) with a buggy USB
1.0 controller (my old machine) and experienced kernel panics after being
connected for a sufficient length of time.
I would recommend you use your motherboard's built in USB 2.0 controller, or
purchase an el-cheapo PCI USB expansion board.
Alternatively, instead of purchasing a USB ADSL modem, consider purchasing an
external ADSL router and connect to the router via ethernet. Unfortunately
this will expose you to the risk of remote exploits if the router you have
chosen has buggy firmware. I cannot recommend any models, as I have not done
any research into this.
This will have the effect of changing your SpeedTouch headache into a router
headache, but with the side benefit of making it somewhat easier to hook up
the XBox to the XBox live service.
If you can call it a benefit.
FreeBSD SPECIFIC ADVICE: PREAMBLE
Firstly, before you disrespect any code, keep in mind that BSD & OSS in
general is a volunteer project. I've observed that the quality of OSS
projects is adversely affected by their obscurity, and I reckon that FreeBSD
+ SpeedTouch 330 is a relatively obscure setup. FreeBSD excels in networked
environments, precisely because this is the environment most developers work
in and want FreeBSD to excel in.
If this setup is too flaky for you, it may be a result of the SpeedTouch 330
being somewhat obscure hardware. As much as I dislike saying it, try Linux
instead. There appears to be more mailing list traffic dedicated to Linux,
suggesting it is less of an obscure setup. Or it just might mean the
opposite: that all the BSD users have little/no problem. Go figure.
FreeBSD SPECIFIC ADVICE: Specifics
I've just read news claiming the newest beta driver (1.2 beta 2) supports
You can use the /usr/ports/net/pppoa port to install Benoit's speedtouch
drivers. It includes the following:
a helper program that initialises the speedtouch modem by sending
bytes from the firmware down the USB bus.
a helper program that intercepts the data off the USB bus and converts it
into something the FreeBSD ppp user-space daemon can use.
The documentation hints that this process is FLAKY on STARTUP.
Specifically: "another bug in the driver, in some cases pppoa2 does not
same as the above, but uses THREADS.
FreeBSD thread implementation in 4.x leaves a lot to be desired for.
FreeBSD thread implementation in 5.x is better.
I have had success with pppoa2, but I have encountered the abovementioned
> ... it seems that everything is
> fine except for the firmware that you download off of the SpeedTouch
> website. I am expecting to download speedmgmt.tar.gz, and they just have a
> zip file binary that extracts into 2 binary files that the Makefile doesn't
INSTALLING THE SPEEDTOUCH GPL DRIVER (HOWTO)
Unfortunately, the pppoa port does not include Speed Touch 330 support. The
1.2 beta versions from the sourceforge site support the Speed Touch 330.
I would suggest requesting an update to the ports package when version 1.2 is
out of beta. Either that or submit a patch.
Follow the following recipe to force the ports system to install the updated
1. Get the firmware.bin file from the following URLs. The modem is initialised
by sending some bytes from the firmware down the USB bus. I think that the
ZIP file that extracts into 2 binary files that you mention above contains
this firmware + other LINUX SPECIFIC files.
2. Get the latest beta SOURCE in .tar.gz (I'm using beta1, beta2 is out, your
mileage may vary YMMV). Copy the .tar.gz file to /usr/ports/distfiles
3. Perform an FTP search for the Alcatel firmware. This is needed for the
ports system, and I don't use this firmware. (use the one you downloaded in
step 1.) Copy the .tar.gz file to /usr/ports/distfiles
4. Ports uses md5 hashes to ensure downloaded software is not compromised. You
will have to override this by doing something like this :
bash-2.05b$ md5 speedtouch-1.2-beta2.tar.gz > distinfo
bash-2.05b$ cat distinfo
MD5 (speedtouch-1.2-beta2.tar.gz) = 5daa67d80be2f400471e764e8f1baed3
bash-2.05b$ md5 speedmgmt.tar.gz >> distinfo
5. You should now have 4 files: the good firmware, the latest speedtouch
source, the Alcatel firmware and a distinfo file.
I ran the following commands on a FreeBSD 4.5-Release. After this I cvsuped my
source trees, so YMMV.
(i) Copy distinfo into /usr/ports/net/pppoa.
This will overwrite the old md5 checksums.
(ii) cd /usr/ports/net/pppoa and
you should now have the latest speedtouch source extracted to
(iii) cd /usr/ports/net/pppoa/work
mv speedtouch-1.2-beta2 speedtouch-1_0
This will have the effect of tricking the ports system into thinking the new
source = the old source.
(iv) cd /usr/ports/net/pppoa
This will tell ports to compile the speedtouch source.
(v) mkdir /usr/local/share/speedtouch
For some reason ports does not create this directory but required it.
(vi) cp firmware.bin /usr/local/libdata/firmware.bin
CONGRATULATIONS! if you got this far without any hassle, you've got the most
up to date binaries installed with 2 firmware versions you can choose from.
All that's left to do is configure PPP and away you go.
1. The default install creates an adsl.sh.sample script in
Copy this to adsl.sh and change ONE line:
modem_run -f $PREFIX/libdata/mgmt.o
/usr/local/sbin/modem_run -f $PREFIX/libdata/firmware.bin -d /dev/ugen0
This has forces modem_run to initialise the modem on /dev/ugen0. If this
doesn't work, dmesg | grep -i speed and look at the device name the
speedtouch driver initialises to. I don't think mine worked without this
2. The default install has a ppp.conf.sample in
Backup the /etc/ppp/ppp.conf, and copy ppp.conf.sample to /etc/ppp/ppp.conf
and change ONE line:
set device !"/usr/local/sbin/pppoa2 -vpi <VPI> -vci <VCI> -v 1"
set device !"/usr/local/sbin/pppoa2 -vpi <VPI> -vci 38 -v <VCI> -d /dev/ugen0"
Again, this forces pppoa2 to use the modem on /dev/ugen0. I don't think mine
worked without this switch.
You can also try to add the switch: "-e 1", which the pppoa2 man page suggests
for SpeedTouch 330 modems. Haven't tried it yet.
Now edit <login>, <password> and <VPI>.<VCI> for the appropriate settings.
VIOLA: that should be it.
Alternatively, you can get rc.conf to start up ppp on startup and not call the
initialisation script from /usr/local/etc/rc.d/
Delete /usr/local/etc/rc.d/adsl.sh to prevent it from running at boot and edit
/etc/rc.conf by including the following lines.
Now just edit /etc/ppp/ppp.conf and include ONE line:
shell !"/usr/local/sbin/modem_run -m -f /usr/local/libdata/firmware.bin -d
before set authname <login>
This has the effect of starting ppp on boot BEFORE sendmail starts up. This
then allows sendmail to bind to the appropriate IP, but that's another story.
I still get some flakiness: it takes a long time to come up and I have to
Control+C to cancel something, but it still connects and I get connectivity.
I attach below the ppp.conf and adsl.sh for my system AS IT STANDS.
Demon.co.uk doesn't support LQR, so it's commented out.
I have decided to go for the alternate method by starting ppp on startup from
You'll notice the ppp.conf specifies pppoa3 not pppoa2, which I'm going to try
on my next reboot to see if it's any better than pppoa2.
Good luck, Rick!
I hope this is of some assistance to you. Please do not hesitate to email me
at the unscrambled address above (rewrite it backwards and remove the nospam)
for advice in this or any other FreeBSD matter.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (FreeBSD)
-----END PGP SIGNATURE-----
-------------- next part --------------
# PPP Sample Configuration File to use with the Speedtouch USB
# Written by Francois Rogler <francois at rogler.org>
# You will have to fill in :
# - <login>
# - <password>
# - <VPI>.<VCI> os defined by your provider. Common values are :
# - 8.35 or 8.67 in France
# - 0.38 in the UK
# - 8.48 in the Netherlands
# - 8.35 in the USA
# - 8.35 in Italy
# $Id: ppp.conf,v 1.3 2003/06/28 17:49:54 root Exp root $
ident user-ppp VERSION (built COMPILATIONDATE)
set log Phase Chat IPCP CCP tun command
shell !"/usr/local/sbin/modem_run -m -f /usr/local/libdata/firmware.bin -d /dev/ugen0"
set authname <login>
set authkey <password>
set device !"/usr/local/sbin/pppoa3 -vpi 0 -vci 38 -v 1 -d /dev/ugen0 -e 1"
set speed sync
set timeout 0
# enable lqr
set lqrperiod 5
set redial 15 10000
set dial ""
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR
More information about the freebsd-questions