Hallo zusammen.
Ich habe immer wieder feststellen müssen, dass meine Anleitung für ISDN bei manchen Leuten keinen Erfolg hat. Darum habe ich mir einen anderen Weg überlegt, wie ein Zugang ins Internet mit capi möglich ist.
Wie ich vorgegangen bin
Bei der Installation von Mdk10.1 Official habe ich darauf geachtet, dass die Entwicklungsprogramme (lässt sich bei der Auswahl der Pakete mit einem Kreuz versehen) installiert werden, andernfalls kann es beim Compilieren zu Problemen wegen fehlender Programme kommen.
Nach der Installation wird Mdk10.1 neu gestartet. Ich starte dann immer nur mit init 3 in den Runlevel 3, um bestimmte Arbeiten leichter erledigen zu können.
1. Deinstallation aller Pakete, die mit ISDN zu tun haben:
urpme
isdn4net (für capi4linux verantwortlich)
isdn4k-utils (für isdn4linux verantwortlich)
libisdn4k-utils
Danach ist ein Neustart erforderlich, damit die bereits geladenen Module capi4linux und isdn4linux wieder entladen werden (was sicher auch mit service capi4linux stop und service isdn4linux stop geht, aber da kommen immer Meldungen, dass es nicht vollständig erledigt ist).
Nach Neustart werden beide nicht mehr geladen.
2. Als erstes muss ich nun die kernel-source für den installierten Kernel (in meinem Fall der 2.6er) installieren.
3. Nun werden die capi4k-utils benötigt, die hier
ftp://me.in-berlin.de/pub/capi4linux/ca ... -22.tar.gz zu bekommen sind.
Entpacke das Archiv in ein Verzeichnis deiner Wahl. Dadurch entstehen mehrere Unterverzeichnisse:
/avmb1
/capi20
/capifax
/capiinfo
/capiinit
/pppdcapiplugin
/rcapid
/scripts
Wechsle nun nach und nach in folgende Verzeichnisse (als root) und gib dann nacheinander die angegebenen Befehle ein:
3.1 /capi20
./configure
make
make install
3.2 /capiinfo
./configure
make
make install
3.3 /capiinit
./configure
make
make install
3.4 /pppdcapiplugin
make
make install
3.5 /scripts
./makedev.sh
Danach lässt sich leicht feststellen, ob alles geklappt hat:
modprobe capi
modprobe capifs
lsmod muss nun alle geladenen Module anzeigen, in unserem Fall:
capi
capifs
kernelcapi
4. Jetzt kommen die speziellen Module, deine ISDN-Hardware betreffend, ins Spiel
Für eine AVM-PCI-ISDN-Karte heisst das Archiv fcpci-suse9.1-3.11-02.tar.gz, unter
www.avm.de/de zu erhalten.
Das Archiv wieder in ein beliebiges Verzeichnis entpacken, dadurch entsteht das Verzeichnis /fritz, in das als root zu wechseln ist.
Der Befehl
make zuerst, danach
make install
Nun wird das entsprechende Modul unter /lib/modules/Name des Kernels/extra untergebracht.
Damit der Kernel dieses Modul auch erkennt, muss als root im Verzeichnis /lib/modules/Name des Kernels folgender Befehl abgesetzt werden:
depmod -a
Danach
modprobe fcpci
lsmod ergibt dann folgenden Überblick (Ausschnitt):
fcpci 500376 0
capi 13856 0
capifs 3880 2 capi
kernelcapi 41472 2 fcpci,capi
Damit diese Module bei jedem Neustart gleich geladen sind, gehört in die Datei /etc/modprobe.preload folgender Eintrag:
capi
capifs
fcpci
Nun brauchen wir noch im Verzeichnis /etc die Datei capi.conf mit folgendem Inhalt:
Code:
fcpci - - - - - -
Damit ist bereits fast alles vorbereitet, was für einen Zugang zum Internet grundsätzlich gebraucht wird.
Anmerkung: Leute mit AVM-USB-ISDN-Adapter kommen auf diesem Wege nicht weiter, sie müssen wegen der Firmware das Verzeichnis /usr/share/isdn haben, das ohne isdn4k-utils nicht erstellt wird.
Ob man es händisch erstellen und die Firmware einfach da hineinkopieren kann, weiss ich nicht, da ich auf meinem Rechner nur die ISDN-Karte habe. Das wäre aber mal zu testen von jemandem, der solch einen Adapter nutzt.
5. Nun muss der Zugang zu deinem Provider konfiguriert werden.
Dazu muss im Verzeichnis /etc/ppp/peers eine Datei angelegt werden, am besten mit dem Namen des Providers in Kurzform. Folgenden Inhalt muss diese Datei haben: (hier für T-Online)
Code:
sync
noauth
user "AnchlusskennungT-Online-Nr.#Mitbenutzernummer"
plugin userpass.so
password "persönliches Kennwort"
defaultroute
plugin capiplugin.so
msn "eigene Telefonnummer"
number "0191011"
protocol hdlc
/dev/null
usepeerdns
Wenn du als User (und nicht als root) ins Internet willst, musst du die Rechte dieser Datei entsprechend ändern.
6. Wie ich mich nun ins Internet einwähle
Zwei kleine Scripte, die unter /usr/bin gespeichert, in den Rechten für User geändert werden und ausführbar gemacht werden müssen, habe die Namen pon und poff (von Kanotix übernommen):
pon:
Code:
#!/bin/sh
while [ $# -ge 1 ]; do
case "$1" in
--quick|-q)
QUICK=true
shift
;;
-*)
echo "
Usage: pon [OPTIONS] [provider] [arguments]
-q|--quick pppd hangs up after all ip-up scripts are run
If pon is invoked without arguments, /etc/ppp/ppp_on_boot file will be
run, presuming it exists and is executable. Otherwise, a PPP connection
will be started using settings from /etc/ppp/peers/provider.
If you specify one argument, a PPP connection will be started using
settings from the appropriate file in the /etc/ppp/peers/ directory, and
any additional arguments supplied will be passed as extra arguments to
pppd.
"
exit 0
;;
*)
break
;;
esac
done
if [ ! -r /etc/ppp/peers/ ]; then
echo "Error: only members of the 'dip' group can use this command."
exit 1
fi
if [ "$1" ]; then
PROVIDER=$1
shift
fi
if [ -z "$PROVIDER" ]; then
if [ -x /etc/ppp/ppp_on_boot ]; then
[ "$QUICK" ] && touch /var/run/ppp-quick
exec /etc/ppp/ppp_on_boot
fi
# try the default script
PROVIDER=provider
fi
if [ ! -e "/etc/ppp/peers/$PROVIDER" ]; then
echo "
The file /etc/ppp/peers/$PROVIDER does not exist. Please create it or use
a command line argument to use another file in the /etc/ppp/peers/ directory."
exit 1
fi
[ "$QUICK" ] && touch /var/run/ppp-quick
exec /usr/sbin/pppd call $PROVIDER "$@"
poff:
Code:
#!/bin/sh
# $Id: poff,v 1.8 1999/08/28 16:34:51 phil Exp $
# Written by John Hasler <john@dhh.gt.org> and based on work
# by Phil Hands <phil@hands.com>. Distributed under the GNU GPL
if [ -x /usr/bin/kill ]; then
KILL="/usr/bin/kill"
else
KILL="/bin/kill"
fi
SIG=TERM
DONE="stopped"
MODE=""
usage ()
{
cat <<!EOF!
usage: $0 [option] [provider]
options:
-r Cause pppd to drop the line and redial.
-d Toggle the state of pppd's debug option.
-c Cause pppd to renegotiate compression.
-a Stop all pppd's. 'provider' will be ignored.
-h Print this help summary and exit.
-v Print version and exit.
none Stop pppd.
Options may not be combined.
If 'provider' is omitted pppd will be stopped or signalled if and only if
there is exactly one running unless the '-a' option was given. If
'provider' is supplied the pppd controlling the connection to that
provider will be stopped or signalled.
!EOF!
}
# Get option. If there are none replace the "?" that getopts puts in
# FLAG on error with "null".
getopts rdcavh FLAG
if [ "$?" -ne 0 ]; then
FLAG="null"
fi
# Check for additional options. Should be none.
getopts :rdcavh DUMMY
if [ "$?" -eq 0 ]; then
echo "$0: Illegal option -- ${OPTARG}."
exit 1
fi
case $FLAG in
"r") SIG=HUP; DONE=signalled; shift ;;
"d") SIG=USR1; DONE=signalled; shift ;;
"c") SIG=USR2; DONE=signalled; shift ;;
"a") MODE="all"; shift ;;
"v") echo "$0$Revision: 1.8 $_TrickToPrint_RCS_Revision"; exit 0 ;;
"h") usage; exit 0 ;;
"?") exit 1;
esac
# Get the PIDs of all the pppds running. Could also get these from
# /var/run, but pppd doesn't create .pid files until ppp is up.
PIDS=$(pidof pppd)
# poff is pointless if pppd isn't running.
if [ -z "$PIDS" ]; then
echo "$0: No pppd is running. None ${DONE}."
exit 1
fi
# Find out how many pppd's are running.
N=$(echo "$PIDS" | wc -w)
# If there are no arguments we can't do anything if there is more than one
# pppd running.
if [ "$#" -eq 0 -a "$N" -gt 1 -a $FLAG != "a" ]; then
echo "$0: More than one pppd running and no "-a" option and
no arguments supplied. Nothing ${DONE}."
exit 1
fi
# If either there are no arguments or '-a' was specified kill all the
# pppd's.
if [ "$#" -eq 0 -o "$MODE" = "all" ]; then
$KILL -$SIG $PIDS || {
echo "$0: $KILL failed. None ${DONE}."
exit 1
}
exit 0
fi
# There is an argument, so kill the pppd started on that provider.
PEER=$(echo $1 | sed -e 's#/#/#g')
PID=$(ps -o pid,cmd axw | awk "/^ *[0-9]* *(/usr/sbin/)?pppd call $PEER( |$)/ {print $1}")
if [ "$PID" ]; then
$KILL -$SIG $PID || {
echo "$0: $KILL failed. None ${DONE}."
exit 1
}
else
echo "$0: I could not find a pppd process for provider '$1'. None ${DONE}."
exit 1
fi
exit 0
Wichtig in diesem Zusammenhang ist, dass von /sbin/killall5 ein Link im selben Verzeichnis erstellt werden muss mit dem Namen pidof, andernfalls bekommt man eine Fehlermeldung, wenn die Verbindung getrennt wird.
Die Datei /usr/sbin/pppd muss auch für User freigegeben werden, drum müssen die Rechte von root erweitert werden.
In einer Konsole als User kann ich /usr/bin/pon T-Online eingeben, so werde ich verbunden
/usr/bin/poff T-Online trennt die Verbindung wieder.
6. Eleganter geht es mit dem Tool GKrellM, da kann man unter Konfiguration . Netz ppp0 wählen und in die Befehlszeilen genau das eingeben, was sonst in der Konsole jedesmal neu geschrieben werden müsste.
Dann genügt ein Mausklick auf den kleinen rechteckigen Knopf neben der Online-Zeit-Angabe unter ppp0.
7. Wie ich meine OnlineZeiten registriere
kisdnwatch geht in diesem Falle nicht. Grund: es braucht die ISDN-Tools.
Aber ein kleiner Trick erzeugt eine Log-Datei namens ppp-usage im Verzeichnis /var/log.
Dazu müssen zwei kleine Dateien erstellt werden, die unter /etc/ppp zu speichern sind:
ip-up.local
ip-down.local
Sie haben folgenden Inhalt:
Code:
# The date and time
DATE=$(date +"%d.%m.%Y %H:%M:%S")
# Log some data
Format: Date/Time Onlinetime [s] Bytes send Bytes reveived
/bin/echo $DATE $CONNECT_TIME $BYTES_SENT $BYTES_RCVD >> /var/log/ppp-usage
So sieht nach mehreren Online-Sitzungen die ppp-usage aus:
Code:
21.04.2005 15:17:09
21.04.2005 15:17:24 15 110 104
21.04.2005 16:00:52
21.04.2005 16:02:19 87 906 708
21.04.2005 16:03:44
21.04.2005 16:29:33 1550 409179 10699124
21.04.2005 16:33:33
21.04.2005 16:45:59 746 194011 5208816
21.04.2005 16:50:12
21.04.2005 16:54:52 280 19074 415422
21.04.2005 17:00:15
21.04.2005 17:27:22 1627 434404 11769269
Dabei bedeutet die erste Zeile mit Datum und Uhrzeit immer den Beginn, die nachfolgende Zeile mit Datum, Uhrzeit, gesendeten Bytes, empfangenen Bytes das Ende der Verbindung.
Da diese Datei zunächst root gehört, ich sie aber gern als User lesen möchte, muss ich die Rechte ändern mit chmod 644 /var/log/ppp-usage.
So muss ich die OnlineZeit selbst errechnen, aber das ist besser als gar keinen Überblick zu haben.
Schlussbemerkung
Es ist mir klar, dass gewisse Einschränkungen durch diesen Weg ins Internet bestehen:
kisdnwatch
kisdndial
xisdnload
Diese Tools stellen schon eine Erleichterung dar für ISDN-NutzerInnen.
Aber für Leute, die sich nicht plagen wollen mit den Boot-Fehlermeldungen, wenn capi4linux, isdn4linux und network an der Reihe sind, ist dieser Weg schneller und leichter einzurichten.
Ich hoffe, damit einigen frustrierten Leuten wieder Lust an Mandriva zu machen.
Windhund