Answer: Because, as opposed to any other SpeedTouch HOWTOs, which I greatly benefited from, it describes hot to use your modem without installing userspace drivers.
Second: Why another SpeedTouch HOWTO?
Answer: Because it is an "Alternative" HOWTO
Background
Excerpt from Summary of changes from v2.6.9 to v2.6.10
As you can see, from 2.6.10 kernel, you can use kernel built-in firmware loader.<dwmw2@shinybook.infradead.org>
USB: Generic USB ATM/DSL core and completed SpeedTouch driver
This can now load the firmware and initialise the modem for itself,
with no need for any userspace help (except for putting the firmware
in /lib/firmware in the first place).
The core packet I/O code is split out into a separate file where it can
be used by drivers for some of the other similar modems.
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
This is what I'm going to do in this HOWTO.
Modem Set Up
- Check Revision
Do not assume the revision of your modem basing on its color. The common mistake (mine too) is that silver modems are revision 4.
Mine is silver and it's revision 2. The fact us that purple or silver modems are revision 2 and silver-platinum modems are revision 4.
But I repeat: Do not assume the revision of your modem basing on its color. Insted issue this commands:orCode: Select all
cat /proc/bus/usb/devices | grep -B 1 THOMSONorCode: Select all
cat /proc/bus/usb/devices | grep -B 1 ALCATELYou should see a line saying "Rev=X.00". X is your revision.Code: Select all
cat /proc/bus/usb/devices | grep 4061
Get Firmware
You can download firmware from here. There is a lot of speedtouch related information apart from firmware.
For modem revision 0 and 2 get those files:
- Boot Block and Firmware combined: KQD6_3.012
For modem revision 4 get those files:
- Boot Block and Firmware combined: ZZZL_3.012
You may as well use this link to get a ZIP file with firmware for all revisions.
Previous verions of Boot Block and Firmware (also in non-combined version) can be found here
Place Your Firmware- If you are using non-combined Boot Block and Firmware files
You need to rename your firmware after the speedtch package name and place it in /lib/firmware. This is how to do this:Code: Select all
mv {path-to-your-firmware}/{Boot-Block-File(1)}.eni {path-to-your-firmware}/speedtch-1.bin mv {path-to-your-firmware}/{Firmware-File(2)}.eni {path-to-your-firmware}/speedtch-2.bin mkdir /lib/firmware mv {path-to-your-firmware}/speedtch* /lib/firmware
- If you are using combined Boot Block and Firmware file
Download a copy of firmware-extractor from here and extract it to your home folder. Then change directory to firmware-extractor (default location), copy and rename your combined firmware file to mgmt.o. Next run:After this switch user (su) to root and run:Code: Select all
./configure makeCode: Select all
make install
Issue this command:to see which USB interfaces you have (EHCI|UHCI|OHCI). This information will be used later when configuring kernel.Code: Select all
cat /proc/bus/usb/devices | grep USB - If you are using non-combined Boot Block and Firmware files
- Below you can see which options you should enable in kernel to be able to establish internet connection using SpeedTouch.
Note that these are the option you must compile. Any others (like compression support) is not neccesary until you do not plan to use them or maybe your ISP requires them (?).
I'm compiling all the network related stuff as modules, but it's really up to you.
Under Device Drivers ---> Generic Driver OptionsUnder ---> Networking ---> Networking support (NET [=y]) ---> Networking optionsCode: Select all
| | <*> Hotplug firmware loading support | |Under Device Drivers ---> Network Device Support --->Code: Select all
| | <M> Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) | |Under Device Drivers ---> USB supportCode: Select all
| | <M> PPP (point-to-point protocol) support | | | | [ ] PPP multilink support (EXPERIMENTAL) (NEW) | | | | [ ] PPP filtering (NEW) | | | | < > PPP support for async serial ports (NEW) | | | | < > PPP support for sync tty ports (NEW) | | | | < > PPP Deflate compression (NEW) | | | | < > PPP BSD-Compress compression (NEW) | | | | < > PPP over Ethernet (EXPERIMENTAL) (NEW) | | | | <M> PPP over ATM | |Under Device Drivers ---> USB support ---> USb DSL modem supportCode: Select all
| |<*> Support for Host-side USB | | | |[ ] USB verbose debug messages | | | |--- Miscellaneous USB options | | | |[*] USB device filesystem | | | |[ ] Enforce USB bandwidth allocation (EXPERIMENTAL) | | | |[ ] Dynamic USB minor allocation (EXPERIMENTAL) | | | |[ ] USB suspend/resume (EXPERIMENTAL) | | | |--- USB Host Controller Drivers | | | |<*> EHCI HCD (USB 2.0) support | | | |[ ] Full speed ISO transactions (EXPERIMENTAL) | | | |[ ] Root Hub Transaction Translators (EXPERIMENTAL) | | | |< > OHCI HCD support | | | |<*> UHCI HCD (most Intel and VIA) support | | | |< > SL811HS HCD support | |Code: Select all
| | <*> USB DSL modem support | | | | <*> Speedtouch USB support | |
- First, put "atm" in your use flags in /etc/make.conf. It is required to get the pppoatm.so file. Then:Note, that it is not neccessary to emerge speedtouch.
Code: Select all
emerge linux-atm emerge ppp
- If you havn't already done this:
Note, that it is not neccessary to add hotplug to any runlevel for the purpose of firmware loading.
Code: Select all
emerge hotplug
- If compiled "Alcatel Speedtouch USB support" and "PPP over ATM" as modules, make sure to put
in /etc/modules.autoload.d/kernel-2.6 file
Code: Select all
speedtch pppoatm
- Peer Config
- This is my peer configuration files. I encourage you to browse the ppp(d) manuals to see if there are some option possibkly useful for you.
Code: Select all
user "your.username@your.isp" plugin pppoatm.so 0.35 # <--- your VPI.VCI numbers. You can check them in many places # +- including on http://www.linux-usb.org/SpeedTouch/faq/index.html#q12 noipdefault usepeerdns defaultroute persist noauth nopcomp noccp novj
- This is my peer configuration files. I encourage you to browse the ppp(d) manuals to see if there are some option possibkly useful for you.
- If you did all the above and reboot-ed (after kernel compile), you can check if it works issuing:
Code: Select all
pppd call {Yor-Peer-Name}
- I've written a runscript which you can use to have your internet connection started with system. All you have to do is put the init script in /etc/init.d/ and the config file in /etc/conf.d/. I name them myInet, but you can use whatever name you wish. Just make sure to use the same name for init and conf files.
Note that it won't work for those who doesn not use /proc filesystem. TODO here is to find out how to get speedtch state info from sysfs.
You can make it start with system issueing:Init ScriptCode: Select all
rc-update add myInet defaultConf FileCode: Select all
#!/sbin/runscript # $Header: $ depend() { need net after modules } start() { einfo "Starting Internet connection..." ebegin " Checking interface..." CheckIFace eend ebegin " Checking line status..." CheckLine eend ebegin " Bringing ${IFLink} up" if [ -x "$(which pppd)" ] then if [ -f "/etc/ppp/peers/${Peer}" ] then einfo " Conncting to ${Peer}..." start-stop-daemon --start\ --exec $(which pppd) call ${Peer} > /dev/null else eend " ${Peer} not found in /etc/ppp/peers" fi else eend " pppd daemon not found" fi eend } stop() { einfo "Stopping Internet connection..." ebegin " Bringing ${IFLink} down" if [ -x "$(which ifconfig)" ] then if [ -z "$(/sbin/ifconfig | egrep "$IFLink")" ] then # Link is not up but pppd may be running ewarn " Interface seems to be down already" fi einfo " Stopping pppd" start-stop-daemon --stop --pidfile /var/run/${IFLink}.pid fi eend } ################################################################################ CheckLine() { if [ "`cat /proc/net/atm/speedtch\:0 | grep Line | grep up | wc -l | awk '{print$1}'`" != "0" ] then pppd call ${Peer} else sleep 5 CheckLine fi } CheckIFace() { if [ -e "/var/run/${IFLink}.pid" ] \ && [ -n "$(/sbin/ifconfig | grep $IFLink)" ] then einfo " Connection already established. Exiting" exit elif [ -e "/var/run/${IFLink}.pid" ] \ && [ -n "$(/sbin/ifconfig | grep $IFLink)" ] then ewarn " ${IFLink} link is up but there is no established\ conncetion. Killing ${IFLink} process..." start-stop-daemon --stop --pidfile /var/run/${IFLink}.pid einfo " Done ;)" fi } # vim:ts=4Code: Select all
# /etc/conf.d/myInet: # $Header: $ # Config file for /etc/init.d/myInet Peer="ISP Name" IFLink="ppp0"
Edits:
2005.04.21: Added: "Hotplug firmware loading support" kernel option should be enabled | Thanks to xming
2005.05.06: Added: Hotplug is needed to eneble firmware autoload
2005.05.06: Added: "atm" use flag required to get the pppoatm.so file | Thanks to funkatron
2005.05.27: Amended: Startup runscript. Now it works flawlessly
2006.04.01: Amended: Section about downloading firmware and installing it has been updated
2006.04.01: Amended: Section about kernel config amended for new kernel config structure





