Benoît Papillault, Last update: 2001-03-31
Warning
This page is outdated and is kept only for historical reasons, you can
find the latest speedtouch driver on sourceforge, at the
following address:
http://speedtouch.sourceforge.net/.
There are two drivers for Speedtouch USB/330 modem under Linux:
Modem ALCATEL ADSL SpeedTouch USB
Download
The latest version of all my source code is available in speedtouch.tar.gz. Be warned that it's
the latest source code, usually updated daily, but it may not be a
working version. Make your choice!
Utilities
The following utility allows you to upload the modem's microcode. To
compile it, you will need the libusb library installed.
Once the microcode has been uploaded, you have to initialize your ADSL
line with the following utility modem_diag.
To check your USB support under Linux and the libusb:
- lsmod should display: usbcore and one of the following modules:
usb-uhci, uhci or ohci. If this is not the case, recompile your
kernel as needed and do a "modprobe usbcore usb-uhci"
- mount should display "none on /proc/bus/usb type usbdevfs (rw)" in
one of its ouput lines. If this is not the case, add the following
line to your /etc/fstab:
none /proc/bus/usb usbdevfs defaults 0 0
and type "mount -a"
-
"cat /proc/bus/usb/devices" should list all your USB devices in the
following form. Check the presence of the Alcatel modem.
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 3 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=d800
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=d400
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=06b9 ProdID=4061 Rev= 0.00
S: Manufacturer=ALCATEL
S: Product=Speed Touch USB
S: SerialNumber=0090D013AAB8
C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbdevfs
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl= 50ms
I: If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=Alcatel SpeedTouch USB
I: If#= 1 Alt= 1 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=Alcatel SpeedTouch USB
E: Ad=06(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=07(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=87(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
I: If#= 1 Alt= 2 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=Alcatel SpeedTouch USB
E: Ad=06(O) Atr=02(Bulk) MxPS= 32 Ivl= 0ms
E: Ad=07(O) Atr=02(Bulk) MxPS= 32 Ivl= 0ms
E: Ad=87(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
I: If#= 1 Alt= 3 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=Alcatel SpeedTouch USB
E: Ad=06(O) Atr=02(Bulk) MxPS= 16 Ivl= 0ms
E: Ad=07(O) Atr=02(Bulk) MxPS= 16 Ivl= 0ms
E: Ad=87(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E: Ad=05(O) Atr=02(Bulk) MxPS= 8 Ivl= 0ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 8 Ivl= 0ms
USB packet format on endpoint 7
After analysis of the USB packets, it appears that they directly
contains a list of ATM cells. This explains that the packet size is
alway a multiple of 53. In the following example, ATM cells contain
AAL5 frames, which in turn contain PPP packets, containing IP
packets. USB endpoint 7 is used for sending ATM cells, and endpoint
0x87 is used for receiving.
Packet example:
0000: 00 80 02 30 ec 00 21 45 00 00 42 00 13 00 00 40
0010: 11 08 94 c1 fd db 07 c1 fc 13 03 04 07 00 35 00
0020: 2e 9c 85 00 01 01 00 00 01 00 00 00 00 00 00 07
0030: 64 79 6e 73 69 00 80 02 32 ec 74 65 08 72 6f 6d
0040: 61 6e 77 65 62 03 63 6f 6d 00 00 01 00 01 00 00
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060: 00 00 00 00 00 44 9e 1b 26 04
Total size is 0x6a = 106 = 2*53 = 2 ATM cells
Cell 1:
0000: 00 80 02 30 ec 00 21 45 00 00 42 00 13 00 00 40
0010: 11 08 94 c1 fd db 07 c1 fc 13 03 04 07 00 35 00
0020: 2e 9c 85 00 01 01 00 00 01 00 00 00 00 00 00 07
0030: 64 79 6e 73 69
Cell 1 header:
0000: 00 80 02 30 ec 00 21 45 00 00 42 00 13 00 00 40
0010: 11 08 94 c1 fd db 07 c1 fc 13 03 04 07 00 35 00
0020: 2e 9c 85 00 01 01 00 00 01 00 00 00 00 00 00 07
0030: 64 79 6e 73 69
0 => GFC = 0
0 8 => VPI = 8
0 02 3 => VCI = 35
0 => PT=0, CLP=0
ec => HEC
PPP header:
0000: 00 80 02 30 ec 00 21 45 00 00 42 00 13 00 00 40
0010: 11 08 94 c1 fd db 07 c1 fc 13 03 04 07 00 35 00
0020: 2e 9c 85 00 01 01 00 00 01 00 00 00 00 00 00 07
0030: 64 79 6e 73 69
00 21 : it says that this PPP packet carries an IP packet.
IP header:
0000: 00 80 02 30 ec 00 21 45 00 00 42 00 13 00 00 40
0010: 11 08 94 c1 fd db 07 c1 fc 13 03 04 07 00 35 00
0020: 2e 9c 85 00 01 01 00 00 01 00 00 00 00 00 00 07
0030: 64 79 6e 73 69
45 = IPv4, header length = 5 words of 4 bytes, so 20 bytes
.... 0x11 => 17, this IP packet carries a UDP packet (6 for TCP)
c1 fd db 07 => 193.253.219.7 ( ANice-102-1-2-7.abo.wanadoo.fr)
c1 fc 13 03 => 193.252.19.3 (ns3.wanadoo.fr)
UDP header:
0000: 00 80 02 30 ec 00 21 45 00 00 42 00 13 00 00 40
0010: 11 08 94 c1 fd db 07 c1 fc 13 03 04 07 00 35 00
0020: 2e 9c 85 00 01 01 00 00 01 00 00 00 00 00 00 07
0030: 64 79 6e 73 69
04 07 : source port = 1031
00 35 : destination port = 53 (yeah, that's DNS, everything is matching)
However, this simple scheme hides the SAR/AAL5 layer which
scramble/descramble AAL5 frames ranging from 1 to 65535 bytes, to ATM
cells which only carry 48 bytes each.
|