Preface:
The goal is to establish a ppp dialin connection to my provider (planet internet netherlands) using the webvox. I use the CAPI4Linux, the purpose of CAPI is to access any isdn devices in a uniform manner rather then manufacturer specific way. CAPI provides a lowerlevel simple interface so that any programs (my case the dialup software pppd) can use any isdn-device.
The "KPN Webvox" is equal to the "AVM Fritz!X USB" with the exeption of a the product-id being 0x2800 instead of 0x2000. On pointing this out to AVM I received a rather threatning letter about national differences and license agreements. However AVM is responsible for producing the Webvox.
I've struggled 3 weeks to compile the AVM Fritz!X software to support this usb/isdn modem under any linux distibution, and 2001 sept 5 I've succeeded. Due to changes in different versions of each program some patches are needed to get it installed. Please comment this page.
Download:
ftp.avm.de/cardware/fritzx.usb/linux/ fxusb-suse7.3-03.09.10.tar.gz
ftp://ftp.in-berlin.de/pub/capi4linux/ capi4k-utils-2001-11-07.tar.gz
ftp.samba.org/pub/ppp/
unpack archives with "gunzip -cd archivename.tar.gz | tar xvf -" this will create a direcory with the programfiles.
sometime you must run the "./configure" script first and then compile the source with "make"
ASSEMBLY:
There are a lot of components and a lot of fixes to make, so it's important to know how everything interacts.
FXUSB is the name of the driver that talks to the WEBVOX and provides a CAPI interface for PPPD
It is written by the german company AVM with SUSE instead of compatibility with Linux. PPPD is the dialup software which is modular and does not include CAPI by default
PPPDCAPIPLUGIN is part of capi4k-linux that lets PPPD talk to FXUSB
Made by Carsten, he maintains the isdn efforts for the kernel
FXUSB:
In the fxusb-suse7.3-x.y.z.tar.gz file are some binary drivers for SUSE which I don't use, so the configurationfiles are in different places, I work only with the sourcecode as this is more platform independant.
This file contains both the CAPI and the Driver for the specific adapter. The directory fritz/src.drv/ has the driver for the FXUSB. Here you find the core of the driver (fxusb.o) and contains everything you need. In fritz/src.drv compile it with "make CARD=fxusb"
FIX 1:
Check with "more /proc/bus/usb" what product-id your adapter has.
In main.c I changed line 22 the product-id of FXUSB_PRODUCT=0x2000 to 0x2800
FIX 2:
make CARD=fxusb will make the actual kerneldriver fxusb.o which controls your webvox The makefile however has an error in linking some symbols like : __udvi3__ the linker didn't include libgcc.a and produces a crippled driver. Type "locate gcclib.a" and repeat the last line starting with "LD" and add the runtime library libgcc.a. When you double click the last line and press the middle mouse button (or double click and use ctrl-insert to copy and shift-insert to copy and paste you endup with a line like
"ld fxusb.o main.o drv.o tables.o queue.o lib.o tools.o ../lib/fxusb-lib.o /usr/lib/gcc-lib/i586-mandrake-linux-gnu/2.96/libgcc.a"
fxusb.o can be copied to /lib/modules/ using "cp fxusb.o /lib/modules/2.4.8-26mdk/kernel/drivers/usb". I added a line in /lib/modules/2.4.8mdk/modules.dep to let modprobe find the driver /lib/modules/2.4.8-26mdk/kernel/drivers/usb/fxusb.o.gz: /lib/modules/2.4.8-26mdk/kernel/drivers/isdn/avmb1/capidrv.o.gz
you can load the driver with "modprobe fxusb". Use "lsmod" to see if it is correctly loaded. The driver should now show up in the USB-bus information To see if fxusb is correctly loaded check /proc/usb/devices.
"modprobe -r fxusb" will remove this kernelmodule.
CAPI4K-utils:
The capi4k utilities provide the plugin that makes pppd connect over an isdn-line (sync-tty). It also has a tool to simplify the startup of the CAPI-components.
FIX 3:
To compile capi4k-linux use "make config" but first you need to do some cleaning-up. In the directory scripts/lxdialog/ type "make clean all" If you want to compile it without the configuration script compile /capi20/ first and then the /pppdcapiplugin/
The PPP.H keeps changing throughout the versions of pppd, and this means that the plugins need have the matching version The struct "option_t" is not compatible with the one of ppp-2.4.1 this makes the options list run out of sync which results in incompatibility between pppd and it's plugin ... an #IFDEF VERSION == "2.4.1" would be welcome to unify the ppp.h The problem is solved in a workaround by compiling for 4 different versions of pppd
The capi4k-utils offer via "make menuconfig" a choice which parts of CAPI4K-utils to compile. What you need is CAPIINIT and PPPDCAPIPLUGIN. On exit the configure script will run. After "make" and "make install" you have the command "CAPIINIT" to load the kernelmodules. This command makes the devices available. The PPPDCAPIPLUGIN is an addon to PPPD and allows for some extra options to use PPP in conjunction with ISDN. it should be copied to /usr/lib/pppd/2.4.1/pppdcapimod.so
To start the capi-driver with "CAPIINIT"
FIX 4:
I had to manually copy /capi4k-utils/capi20/libs/libcapi20.so.2.0.6 to /lib/ and made a symlink "ln -s libcapi20.so.2.0.6 libcapi20.so" to satisfy pppdcapiplugin he 6 kernelmodules with a name including capi. If not use "dmesg" to show you the kernel messages and "cat /var/log/messages" will show you even more debug information.
To specify some provider specific information like username and dialin number edit the file below. You also need to specify your password in the chap-secrets file. set the permissions for this file to "chmod 500 chapsecrets" to prevent the outsideworld to easily read your password.
/etc/ppp/peers/isdn/planet
#
# Planet Internet
#
sync
noauth
name geert326@planet.nl
defaultroute
plugin capiplugin.so
#controller 1
#numberprefix 0
msn 076541xxxx
number 0765334333
protocol hdlc
usepeerdns
ipcp-accept-local
ipcp-accept-remote
/dev/null
/etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
geert326@planet.nl * ;KTd?!eRIB *
When this is all setup the command "pppd call isdn/planet" will provide you a connection. To kill it you can use "kill /var/pid/pppd" which you ofcourse can script for easier use.
Schematics:
Overview of modules are loaded on top of one another
Connects to the PPPD
|
PPP_GENERIC
|
CAPI.O
/ | \ CAPIDRV
| \ \ / |
| \ FXUSB |
| \ | | KERNELCAPI
| \ | | /
CAFPIFS \ | | /
CAPIUTIL
|
|
Connects to the kernel
lsmod
Module Size Used by
capi 19872 0
capifs 3792 0 [capi]
fxusb 587632 2 [capi capifs]
capidrv 26368 1
kernelcapi 30576 4 [capi fxusb capidrv]
capiutil 23104 0 [capidrv kernelcapi]
** text below still needs heavy revision, its about the things needed to be explained here aswell **
Things you need (to know) * pppd --version
fritz/lib/fxusb-lib.o
fritz/src.drv/fxusb.o
/usr/modules
capi4k-utils/capi20
capi4k-utils/pppcapiplugin/
* make PPPVERSIONS=2.4.0 /scripts/lxdialog/ * make clean all
Device files:
If the devicefiles /dev/capi20 and /dev/ppp don't exist create them manually ans-serif" size="-1" color="#999999">"mknod /dev/capi20 c 168 0"
"mknod /dev/ppp c 108"
Processes:
/proc/bus/usb/devices
/proc/capi
/proc/ppp
Kernel options:
USB
USBFS
USB-UHCI
Network options:
PPP
PPPsync
ISDN:
CAPI
capiinit
capiinfo
/etc/usb/default.conf
=====
SORRY VAN DE LAP TEXT, het stond op een site waarvan ik dacht dat hij temporary was. nu is de handleiding zeker gesteld.
Nu nog in smoothwall freesco en BSD's....