Speed Touch 330, FreeBSD 4.8: Working

Izam-Ryan Bahrin izamryan at uk.co.demon.materialitynospam.demon.co.uk
Thu Jul 10 20:54:51 PDT 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> 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.

GENERAL OBSERVATIONS

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 
FreeBSD 5.1
http://speedtouch.sourceforge.net/index.php?/news.en.html

You can use the /usr/ports/net/pppoa port to install Benoit's speedtouch 
drivers. It includes the following:

	modem_run:
		a helper program that initialises the speedtouch modem by sending
		bytes from the firmware down the USB bus.

	pppoa2:
		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
		fork well"

	pppoa3:
		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.

		http://www.mail-archive.com/speedtouch@ml.free.fr/msg01339.html

I have had success with pppoa2, but I have encountered the abovementioned 
problem.

> ... 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
> recognize.


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 
beta

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.

http://speedtouch.sourceforge.net/files/firmware.bin
http://speedtouch.sourceforge.net/index.php?/download.en.html


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

http://sourceforge.net/project/showfiles.php?group_id=32758&release_id=168217


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

http://www.alltheweb.com/search?cat=ftp&cs=iso-8859-1&ftype=4&q=speedmgmt.tar.gz


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
	make extract
	
	you should now have the latest speedtouch source extracted to
	/usr/ports/net/pppoa/work
	
	(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
	make build

	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.


CONFIGURING PPP

1. The default install creates an adsl.sh.sample script in
/usr/local/etc/rc.d/

Copy this to adsl.sh and change ONE line:

modem_run -f $PREFIX/libdata/mgmt.o

to

/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 
switch.

2. The default install has a ppp.conf.sample in
/usr/local/share/doc/speedtouch

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"


to

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.


ALTERNATIVE CONFIGURATION

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.

ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="adsl"
ppp_nat="NO"

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 
/dev/ugen0"

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.


IN CONCLUSION

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 
rc.conf

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.

Kind Regards,

Izam-Ryan Bahrin.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (FreeBSD)

iD8DBQE/CBLmsQXZdmpre1gRAmPKAJ9wstDuAJIlU3JyWyMqPdBRuqxwzQCbBpjB
4a6/SeMbZyVUMbUsIr2JgqQ=
=wkmp
-----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 $
#################################################################

default:
 ident user-ppp VERSION (built COMPILATIONDATE)
 set log Phase Chat IPCP CCP tun command

adsl:
 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"
 accept chap
 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
 enable dns


More information about the freebsd-questions mailing list