#include "LUGO.style"

<PAGE name="ISDN und GNU/Linux">

Ein paar Anmerkungen zum Thema ISDN (IS Doch Nonsense) und GNU/Linux in
Verbindung mit einer Teles 16/3 ISDN-Karte. <p>

<em>Von Wolfgang Nowak</em> <p>

Kernelversion: 2.0.27 oder neuer, HiSax_1.3.patch_for_2.0.26.gz
Der Patch funktioniert auch mit 2.0.28. <p>


   Der normale I4L-Treiber kann weiterhin mit einkomplimiert werden,
   die /dev/ttyIx Mimik funktioniert damit ganz wunderbar, mit mgetty
   kann so die ISDN-Karte wie ein Modem bedient werden. Mgetty ab 0.99 .
<P>

Beim Konfigurieren des Kernels sind die gewuenschten Optionen, wie
SYNC-PPP etc bei den I4L-Optionen einzutragen. Dringend anzuraten ist
die Verwendung als Modul, da das feste Einbinden noch Probleme mit sich
bringt. Ich hab's garnicht erst anders ausprobiert. Ausserdem laesst sich's
so besser experimentieren ;-)
<P>

In /usr/src/linux/drivers/isdn/teles/config.c sind die Spezialitaeten der
Karte, IRQ und Protokoll (DSS1 oder 1TR6, in Zweifel DSS1) einzutragen,
bei einer Teles16/3 ist MEMBASE=0. Sinnvoll ist es, die Karte in einem
Dos-Rechner mit dem mitgelieferten Konfig-Tool auf in die Hardware
passende Werte zu konfigurieren.
<P>

Bei mir haben nach dem Umstellen auf den HiSax die ISDNutils nicht mehr
funktioniert, wen wunderts, also: Neu Kompilieren. ISDNLog nimmt sehr viel
Systemlast, bei einem 486/66/32 ca 80Prozent, irgendetwas hakt da
noch, besser nicht verwenden. Schade eigentlich. Wer tcpdump benutzt,
sollte es mit dem Patch aus den ISDN4k-utils.2.0 neu bauen, sonst knallt
ein laufendes tcpdump bei startender ISDNVerbindung mit einem Seg-Fault
durch.
<P>

Die Hardware wird initialisiert mit
<BR>

<PRE>
/sbin/modprobe -v hisax HiSax_id=Tel0 io=3,2,5,0xd80
</PRE>

<BR>
wobei io=$TELES_Modell,$PROTOKOLL,$IRQ,$PORT

<BR>
und wieder abgeklemmt mit
<BR>

<PRE>
modprobe -r hisax
</PRE>

<BR>
Das ist eigentlich alles, was fuer die Einstellung der Hardware notwendig
ist. Karsten Keil (der Programmierer)  hat es einem da einfach gemacht.
<P>


Die Netzwerkeinstellungen haengen sehr davon ab, was Du machen moechtes.
Bei mir baumelt eine grosse Wohngemeinschaft mit 4 Rechnern
am "zurbel", der Adressraum ist 192.168.0.x mit einer Netzmaske
von (local) ff:ff:ff:00
Die Verbindung nach Aussen geschieht &uuml;ber
<P>

<OL>
<LI>News- und Mail ueber UUCP, never change a running System ;-)
<LI>Einwaehlen per Modem (tty) fuer Freunde und Bekannte
<LI>Dialup-IP via ISDN mit synchronenm PPP auf den Livingstone Portmaster
   bei Familie NorthNet, Adressraum 192.109.226.x
</OL>

<P>
<PRE>
#Interface einrichten:
/sbin/isdnctrl addif ippp0
/sbin/isdnctrl eaz ippp0 MEINE_TELEFONNUMMER

#Die angerufenen Nummern:
/sbin/isdnctrl addphone ippp0 out PROVIDER_TELEFON_1
/sbin/isdnctrl addphone ippp0 out PROVIDER_TELEFON_2
usw. usw.

#Layer-2 Protokoll:
/sbin/isdnctrl l2_prot ippp0 hdlc


#Layer-3 Protokoll ist zur Zeit immer "Trans":
/sbin/isdnctrl l3_prot ippp0 trans


#Wir wollen ja Sync-PPP:
/sbin/isdnctrl encap ippp0 syncppp


#Sicherheitslevel, darf uns jeder anrufen oder nur wenige:
/sbin/isdnctrl secure ippp0 off|on

#Nach welcher Inaktivitaetszeit (Sekunden) soll die Leitung gesprengt werden:
/sbin/isdnctrl huptimeout ippp0 300

#Wenn das mit den Gebuehreninfos mal klappen wuerde:
/sbin/isdnctrl chargehup ippp0 on|off

#Zeige, welches Paket die Verbindung ausloest
# 0=Halt die Klappe, 31 (?) = Ich bin eine Parkuhr, laber mich voll.
# Bei 1 wird gerade noch angezeigt, welcher Request die
# Verbindung herstellen will
/sbin/isdnctrl verbose 1


# Maximale Anzahl der Waehlversuche pro Telefonnummer
/sbin/isdnctrl dialmax ippp0 4

# Callback Optionen, nicht getestet...
/sbin/isdnctrl callback ippp0 off|on
/sbin/isdnctrl cbdelay ippp0 5
/sbin/isdnctrl cbhup ippp0 on|off

# Der iprofd sorgt dafuer, dass ISDN"Modem"-Settings nicht verlustig gehen.
/sbin/iprofd /etc/isdnlog/modemsettings

# Debugging
/sbin/telesctrl Tel0 1 4

# ...und ab geht die Post, wir bauen uns ein Interface,
# 0.0.0.0 sind wir, 192.109.226.2 der Einwaehlknoten.
ifconfig ippp0 0.0.0.0 pointopoint 192.109.226.2

# Der normale pppd tut sowas nicht
/sbin/ipppd

</PRE>

<P>
<PRE>
# Das folgende Scriptchen setzt die Route, wehe dem, der vergisst, sie
# spaeter wieder zu loeschen:

#!/bin/sh
# /usr/sbin/pon
ifconfig ippp0 up
route add  192.109.226.2 metric 1 dev ippp0
route add  default gw 192.109.226.2 metric 1


Dem Unfug ein Ende bereiten wir mit

#!/bin/sh
#/usr/sbin/poff
/sbin/isdnctrl hangup ippp0
route del  default
route del  192.109.226.2
route add  default 192.168.0.0
ifconfig ippp0 down
</PRE>
<P>

Es ist definitiv nicht sinnvoll, die Route auf ippp0 zu belassen,
da nicht nur Nameserver gerne mal ein Paeckchen nach draussen verschicken.
Wenn Windowsrechner im Netz haengen, kommt die Leitung nie zur Ruhe, das
wird dann teuer.
Wenn jemand einen Tip hat, wie isdnlog ordentlich zu handhaben ist,
immer her mit den Infos. So jedenfalls nicht:
<P>

<PRE>
##/sbin/isdnlog -vw2 -m2048 -D /dev/isdnctrl0
##/sbin/isdnlog -D -v7 -l1015 -x4087 -M -n -W80 /dev/isdnctrl0
</PRE>

<P><PRE>


#/etc/ppp/options

/dev/ippp0
0.0.0.0:
# my user name
user    wuffel
# my system name
name zurbel
defaultroute
lock
# no CHAP authentification
#-chap
#-pap
#
# accept IP addresses from peer
ipcp-accept-local
ipcp-accept-remote
#noipdefault
#
# try to get IP address from interface
# option specific to ipppd (as opposed to pppd)
#useifip
#
# disable header-compression
# Seh ich nicht ein , das klappt ganz prima auch so.
#-vj
#-vjccomp
-ac
-pc
-bsdcomp
#
# max receive unit
mru 1500
# max transmit unit
mtu 1500


# ... und damit wir auch reingelassen werden:
# Bitte Tabulatoren verwenden.

# example for /etc/ppp/pap-secrets

# client        server  pw              iplist
wuffel  *       MEIN_PASSWORT
*                       *               ""
</PRE>

<P>
Dieses Paper ist sehr knapp und wahrscheinlich laesst sich
vieles besser einrichten, ich uebernehme keine Funktionsgarantie,
bei mir klappt so alles wunderbar. Kommentare bitte an
wuffel@zurbel.infodrom.north.de.
Wenn experimentierfreudige ISDNler Lust haben, ich moechte
gerne rausbekommen, wie ich ISDN-Dial-IN hinbekomme, da fehlen mir bis
jetzt entsprechende Mitbastler.

</PAGE>

# Local variables:
# mode: html
# mode: auto-fill
# mode: iso-accents
# end:
