Just another FreeBSD ISDN HowTo :)

SadButTrue

Metal Freak
Da ich mich seit längerer zeit mit FreeBSD und ISDN herumschlage und viele einzelteile gefunden hab ich mir gedacht mal alles gesammelt niederzuschreiben und hier zu posten.

Das Wichtigste ist, das eure ISDN karte von I4B ( ISDN 4 BSD) unterstützt werden muss, falls ihr nicht wisst ob das der fall ist schaut in /usr/share/examples/isdn/SupportedCards nach hier findet ihr alle von I4B unterstützten werden.


Inhaltsverzeichnis:

1. Den Kernel anpassen
1.1 Die I4B Treiber
1.1.1 der Fritz! Card Classic Treiber
1.1.2 Allgemeines zu Fritz! Card PCI
1.1.3 der Fritz! Card PCI Treiber
1.1.4 der Fritz! Card PCI v2.0 Treiber
1.2 Weitere I4B Kerneleinstellungen
1.3. Den Kernel backen und installieren
2 Einstellen der rc.conf
3. Einstellen der die isdnd.conf
4. Einstellen der die rc.conf
5. Links



Ich werde mich hier speziell auf FreeBSD 4, u-ppp (user-ppp) sowie AVM Fritz! PCI v2.0 und AVM Fritz! Card classic beschränken. Der Grund das ich mich für FreeBSD 4.9 entschieden habe ist, das ich mit den AVM Fritz!Card passiv Controllern und FreeBSD 5 immer Probleme mit dem Verbindungsaufbau hatte (unabhängig von der rechner Hardware sowie der FreeBSD 5-Release).


1. Den Kernel anpassen

um I4B an den start zu bekommen braucht ihr einen ISDN fähigen Kernel den man wie folgt erstellen kann: (eine beispiel Kernelconfig findet ihr unter /usr/share/examples/isdn/KERNEL )


1.1.1 Der Fritz! Card classic Treiber:

Die Fritz! Card classic ist mit einem Siemens Chipsatz bestückt wenn ihr nun in der Beispielkonfig nachschaut werdet ihr sehn das Siemens/Infineon chipsets als isic bezeichnet werden. Daraus ergibt sich:
Code:
# Siemens/Infineon chipsets
device		isic0

um den Fritz! Card classic Treiber nun zu aktivieren braucht ihr noch folgende zeile:

Code:
# enable some ISA cards within the "isic" driver
options		AVM_A1

Um FreeBSD die Adressierung eurer ISDN karte bekannt zu geben müsst ihr die device zeile erweitern den i/o bereich , den speicherbereich , den irq sowie die karten „flags“ eintragen.

Hier ein beispiel meiner laufenden config:
Code:
device		isic0 at isa? port 0x340 iomem 0xd0000 irq 5 flags 4

erklärung:
device isic0 - der treibername
at isa? - isa karte
port 0x340 - der i/o bereich (wird bei der Classic auf der karte mit Jumper gesetzt)
iomem - der Speicherbereich (schaut in euer Kartenbeschreibung nach)
irq 5 - der IRQ bei mir von hand (im BIOS IRQ manuell zuweisen)


1.1.2 Der Fritz! Card PCI und v2.0 Treiber:

Hier ist zu beachten das die Fritz! Card PCI einen anderen Chipsatz als die classic verwendet. Der Treiber für die Fritz! Card PCI sowie für v2.0 kommt ohne weitere Option aus, da er nur von dem jeweiligen Fritz! Card Modell verwendet wird und dadurch kein Kartentyp aktiviert werden muss.


1.1.3 Hinzufügen des Fritz! Card PCI Treibers:
Code:
# AVM Fritz PCI
device		ifpi0

1.1.4 Hinzufügen des Fritz! Card PCI v2 treibers:
Code:
# AVM Fritz PCI version 2
device		"ifpi2"
da die Fritz! Card PCI und v2 eine PCI - Plug&Pray karte ist brauchen wir hier keine Kartenadressierung anfügen.


1.2 Weitere I4B Kerneleinstellungen

Diese Einstellungen werden von JEDER ISDN Karte benötigt und können so übernommen werden:
Code:
# protocol stack
pseudo-device     "i4bq921"
pseudo-device     "i4bq931"
pseudo-device     "i4b"

# control devices
pseudo-device     "i4btrc"	4
pseudo-device     "i4bctl"
pseudo-device     "i4brbch"	4
pseudo-device     "i4btel"	2

# IP over raw HDLC
options	                 IPR_VJ
pseudo-device     "i4bipr"	4

# kernel sppp
pseudo-device     sppp
pseudo-device     "i4bisppp"	4
Folgende devices müsst ihr noch in eurer Kernelconfig anpassen:
Code:
# Pseudo devices - the number indicates how many units to allocate.
pseudo-device     ether   1       # Ethernet support
pseudo-device     sl        1       # Kernel SLIP
pseudo-device     ppp     2       # Kernel PPP
pseudo-device     tun      2       # Packet tunnel.
pseudo-device     bpf     4       #Berkeley packet filter

1.3 Den Kernel backen und intstallieren

Für alle FreeBSD Neulinge: Zu diesem Thema findet ihr hier bei www.bsdforen.de howto´s auch ein blick ins FreeBSD Handbuch kann sicher nicht schaden.

Nachdem ihr nun alles in eure Kernelconfig eingefügt habt könnt ihr den Kernel compilieren und anschließend installieren.

Falls euer PC den Neustart nach der Kernelinstallation heil überlebt hat :P könnt ihr mit dmsg überprüfen ob die karte erkannt, die Treiber geladen und die controll devices aktiviert sind.

2. Einstellen der /etc/rc.conf:

Mit den Einstellungen in der rc.conf könnt ihr den ISDN dämon sowie ppp bei Rechner start laden.

Die Einstellungen des ISDN Dämons in der rc.conf:
Code:
### ISDN interface einstellungen: ###
isdn_enable="YES"                                                   #Das isdn System aktivieren
isdn_fsdev="NO"                                                      #NO = Dämonmode
isdn_flags="-dn -d0x1f9"                                          #Debuglevel des ISDN Dämons
isdn_trace="NO"                                                       #ISDN trace ein/ausschalten
isdn_traceflags="-f /var/tmp/isdntrace0"                  #logfile für ISDN trace

Die ppp Einstellungen in der rc.conf
Code:
# u-ppp einstellungen:
ppp_enable="YES"                                                #ein/ausschalten des user-ppp
ppp_mode="auto"                                                 # "auto", "ddial", "direct" oder "dedicated"
ppp_nat="YES"                                                      # verwenden des ppp internen NAT´s
ppp_profile="provider"                                          # welches ppp profile von /etc/ppp/ppp.conf.
ppp_user="root"                                                     # user in dem ppp läuft

bei fragen zum den ppp_mode ("auto", "ddial", "direct" oder "dedicated") verwendet ihr am besten man ppp


3. Einstellen der /etc/isdn/isdnd.conf

Ich werde hier einfach meine isdnd.conf Posten da die Einstellungsmöglichkeiten hier schier unendlich sind :)
Falls jedoch mehr Infos gewünscht werden verweise ich euch an man isdnd sowie an /usr/share/examples/isdn/contrib/anleitung.ppp :P

Code:
system
#accounting
acctall = on                    # generate info for everything
acctfile = /var/log/isdnd.acct  # name & location of accounting file
useacctfile = yes               # generate accouting info to file
isdntime = on
monitor-allowed = no            # global switch: monitor on/off

entry
name = I4BPPP
usrdevicename = rbch            # erster ISDN-Kanal
usrdeviceunit = 0
isdncontroller = 0
isdnchannel = -1
local-phone-incoming = 123456  # Durch richtige Telefonnummer ersetzen
remote-phone-incoming = *
local-phone-dialout = 123456   # Durch richtige Telefonnummer ersetzen
remote-phone-dialout = 123456  # ppp(8) will override this
remdial-handling = first
dialin-reaction = ignore
dialout-type = normal
b1protocol = hdlc
idletime-incoming = 240         # Should be larger than ppps timeout
idletime-outgoing = 30          # Should be larger than ppps timeout
ratetype = 0
unitlength = 90
unitlengthsrc = rate
dialretries = 3
dialrandincr = on
recoverytime = 25               # Should be smaller than ppps redial
usedown = off
downtries = 2
downtime = 30


4. Einstellen der /etc/ppp/ppp.conf

Auch hier gilt man ppp.conf lesen falls Tiefergehende fragen auftauchen :)

Code:
# PPP: /etc/ppp/ppp.conf
default:
 set cd 180
 set device /dev/i4brbch0 /dev/i4brbch1   # Beide ISDN Kanaelen initialisieren
 set dial
 set hangup
 set login
 set timeout 0
 set proctitle ppp-isdn
 set speed sync
 nat enable yes

provider:
 set phone "08154711"                    # Nummer des Internetproviders
 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 add default HISADDR
 enable dns
 set authname <deinauthname>
 set authkey <deinpass>


Anmerkungen:

Falls ihr entschlossen habt ppp nicht über die rc.conf zu starten könnt ihr nun in eurer shell ppp von hand starten:

Isdn# ppp -auto provider

Wartet ein paar Sekunden dann mit ifconfig kontrollieren ob ihr eine IP bei tun0 zu sehen ist. Bzw. ob ihr eine IP (Domain) im Internet pingen könnt.

Isdn# ping www.google.de

Falls beim Pingen einer Domain can´t resolv hostname als fehler erscheint müsst ihr noch den DNS - Server eures ISP in die /etc/resolv.conf (nameserver xxx.xxx.xxx.xxx) eintragen das wars



5. Links:

http://people.freebsd.org/~hm/i4b-1001/index.html ISDN 4 BSD Home
http://www.freebsd.org/doc/de/books/handbook/ FreeBSD Handbuch
http://www.myfreebsd.org/isdn/index.html Ein teil des hier geposteten stammt von myFreeBSD
http://lists.freebsd.org/mailman/listinfo/freebsd-isdn FreeBSD ISDN Mailing liste



Für fragen Anregungen und Wünsche steh ich euch jederzeit gerne zur Verfügung - Mail oder Post genügt.




So long


SadButTrue
 
Zuletzt bearbeitet:
Schickes HowTo! :)
Eine Anmerkung hätte ich da allerdings noch:
vielleicht das "ddial" jeweils durch "auto" ersetzen. Wenn jemand das HowTo original übernimmt, sich freut, dass sein ISDN läuft und erstmal nicht mehr grossartig danach schaut, kann es unter Umständen bei der nächsten Telefonrechnung ein böses Erwachen geben.
Auch sollte man vielleicht die Möglichkeit erwähnen, den isdnd komfortabel auf einem Terminal mitlaufen zu lassen (durch editieren von /etc/ttys) und so immer einen Überblick über dessen Aktivität zu haben.
 
hehe bei mir is das eg0l isdn flat :P die einzige die es in .at jemals gegeben hat :P


hab das ddail auf auto abgeändert :)
 
Die pseudo-devices gibt es nur in STABLE, im 5er-Branch sind es devices. Bei der ppp.conf gibt es auch Unterschiede, bei meinem ISDN-Router sieht sie so aus:

Code:
default:
 set cd 180
 set device /dev/i4brbch0
 set dial
 set login
 set logout
 set hangup
 set proctitle ppp-isdn
 set speed sync

citykom:
 set timeout 180
 set redial 2 2
 set phone "12345678"
 set authname "benutzer_name"
 set authkey "benutzer-passwort"
 enable dns
 disable lqr
 set ifaddr 172.16.0.1/0 212.0.0.0/0 0 0
 add! default hisaddr
 clone 1,2
 link deflink rm
 link * set mode auto
 set autoload 10 80 30

ppp-nat ist defaultmäßig enabled, deswegen brauchst du ihn nicht noch extra in /etc/rc.conf zu enablen, dasselbe gilt für die isdn_flags. Ich habe ppp-nat disabled und fahre sehr gut mit natd. Habe eine DSL- und ISDN-Flat-Fee gleichzeitig, daher kann ppp-mode sowohl auf auto als auch auf ddial stehen.
 
Original geschrieben von SadButTrue

Ich werde mich hier speziell auf FreeBSD 4, u-ppp (user-ppp) sowie AVM Fritz! PCI v2.0 und AVM Fritz! Card classic beschränken alles andere könnte ich vielleicht später noch einbringen.

bezüglich natd mach ein howto dann bind ichs ein :)
 
Zuletzt bearbeitet:
@SadButTrue
Erstmal, gelungene Anleitung.
Sind damit die von dir vorher (z.B. bei bsdforen.org) beschriebenen Verbindungsprobleme beseitigt? Wenn ja, woran lags denn?

Vielleicht solltest du auch noch rein schreiben, das gerade mit den AVM-Karten immerwieder Probleme auftreten können.

Ansonsten noch eine Kleinigkeit zu "ddial" und "auto". Da ISDN-Flats recht rar sind denke ich, das "ddial" unsinnig ist. Und auch wenn man auf "auto" stellt sollte man einschränken, das z.B. nicht jeder Zeitserver eine Verbindung aufbaut... das kann teuer werden. Oder, das die Verbindung nach x Minuten Inaktivität getrennt wird und bestimmte Pakete (etwa DNS-Anfragen) die Verbindung nicht offen halten können....
Jaja, steht fast alles in "man dial" und "man ppp" (glaube ich). Wollte es nur mal erwähnen.
 
naja sagen wir so die verbindungsprobleme sind seit downgrade auf FreeBSD 4.9 wie weggeblasen :)

anscheinend gibts entweder probleme mit I4B (AVM Treiber) unter FreeBSD 5.X oder ich bin zu dumm um meine karten unter FreeBSD 5.X ans laufen zu bekommen :)

zu den dial modis werd mich nochmal ranklemmen und es etwas ausbaun da schon einige diesbezüglichen wünsche gekommen sind :P


so long
 
Dann habe ich noch eine Frage dazu. Kann ich das ISDN dann auch als Fax Modem benutzen und mit meinem Hylafax Server zum Beispiel kombinieren?
 
Hm...
unter Linux hab ich genau dafür CapiSuite im Einsatz.
Funktioniert prima.

Da es auf die CAPI aufsetzt, sollte es zumindest mit den aktiven AVM-Karten auch unter FreeBSD zum Laufen zu bringen sein.

Gruss...

Der Indy
 
mit den aktiven ist das "kein" Problem habe ich mir sagen lassen.
Wohl aber mit ein Firtz Classic auf ISA Basis, wie ich es vorhatte zu benutzen.

Unter Linux gibt es capi4hylafax. Hab keine ahnung, ob man das auf FBSD umgebogen bekommt.

@ marzl So geht das bei mir zu Hause schon. Das Problem ist nur, dass ich das alles mit einem analogen Modem und einer zusaetzlichen TK Anlage realisieren musste.
 
Zuletzt bearbeitet:
> mit den aktiven ist das "kein" Problem habe ich mir sagen lassen.
> Wohl aber mit ein Firtz Classic auf ISA Basis, wie ich es vorhatte > zu benutzen.

Hm, vielleicht sollte man auf AVM zugehen und fragen, ob sie die
CAPI-Module von Linux für die passiven Karten auch unter FreeBSD verfügbar machen.

> Unter Linux gibt es capi4hylafax. Hab keine ahnung, ob man das
> auf FBSD umgebogen bekommt.
Naja, das capi4hylafax ist ja ein Patch für Hylafax um mit den
CAPI-"Modem" umgehen zu können. (Soviel ich weiß)

Was nach meiner Information fehlt, ist die Möglichkeit, CAPI überhaupt mit passiven Karten zu fahren.
(Hier kann ich auch falsch liegen, ich hab noch nicht alles
diesbezügliche unter FreeBSD gesammelt)

Gruss...

Der Indy
 
Geil, da steht der Quell Code ist drin! Also werd ich mal den Code auf ein FBSD System umsetzen. Sind ja keine Linuxer oder? ;)
Werde dann mal ein Hylafax howto schreiben und meine Erfahrung hier posten.

MFG

CAT
 
hallo,

ich habe da ein kleines problem:

wenn ich die folgende zeile:

device isic0 at isa? port 0x300 iomem 0xd0000 irq 5 flags 4

in den kernel schreibe und dann versuche zu kompilieren kommt sofot die fehlermeldung "no isa's to wildcard"

wodran kann das liegen? bin ein bischen ratlos...

installiert ist FreeBSD 4.9-R (iso vom ftp server)

[edit]
nur device isic0 (ohne den ganzen anhang) lässt sich kompilieren.
ohne den device lässt sich der kernel auch backen.

aber dann wird laut dmesg die karte nicht erkannt...
[/edit]

Gruß
Skara
 
Zuletzt bearbeitet:
skarabeus versuche mal folgendes:


1. ich habe die erfahrung gemacht (kann auch an meinem rechner liegen ka) das 300 mit bsd nicht läuft - mach den jumper mal auf 340 und ändere die entsprechende kernelzeile ab.

2. in deiner kernconf steht folgendes:

# AVM Konfiguration
device isic0 at isa? port 0x340 irq 5 flags 4 # AVM Classic Treiber
options AVM_A1 # Aktivierung des Treibers
device ifpi

also die zeile enthält keinen speicherbereich dieser wird aber zur adressierung benötigt, weiters ist die device ipfi nicht notwendig nimm es raus sofern du nich eine weitere isdn karte (Fritz!Card PCI) in deinem rechner hast

so sollte deine kernconf aussehn:

# Siemens/Infineon chipsets
device isic0 at isa? port 0x340 iomem 0xd0000 irq 5 flags 4

# enable some ISA cards within the "isic" driver
options AVM_A1


verwende mal genau die obrigen zeilen für deinen kernel und nimme deine zeilen raus!

die pseudo-devices stimmen und der kernel sollte sich dann backen lassen.

falls weitere fehler auftauchen bitte die genaue fehlermeldung mitposten.


so long
 
der kernel ist jetzt komplett durchgelaufen und die karte wird erkannt.

@SadButTrue: es hat daran gelegen das die zeile

device isa

nach

device isic0 (usw.)

gestanden hat...

nachdem ich die zeile "device isa" an den anfang gepackt hab e, hat alles einwandfrei gefunzt :)

Danke nochmal für die Unterstützung.

Gruß
Skara
 
jetzt läuft mein freebsd isdn router endlich :cool:

@Miggo: du hast mal geschrieben:

Auch sollte man vielleicht die Möglichkeit erwähnen, den isdnd komfortabel auf einem Terminal mitlaufen zu lassen (durch editieren von /etc/ttys) und so immer einen Überblick über dessen Aktivität zu haben.

ich habe mir schonmal die anleitung hier und auf der man-page von isdnd angeschaut. werde daraus aber nicht so wirklich schlau. :(

kannst du mir sagen was genau man in /etc/ttys editieren muss um den isdnd im full-screen mode laufen zu lassen?

Danke und Gruß
Skara:
 
Angenommen du willst isdnd auf tty3 laufen lassen, musst du tty3 in der /etc/ttys auf "off" setzen:

Code:
.... .... .... cons25 [b]off[/b] secure

damit schaltest du die Konsole erstmal ab, stellst also keinen Login zur Verfügung. - Du willst ja ein eigenes Programm darauf starten.
In der rc.conf nimmst du die Zeilen:

Code:
isdn_enable="YES" # wird vermutlich schon drinn stehen

isdn_fsdev="/dev/ttyv3" # gibt das Ausgabegeraet an
isdn_flags="-dn -d0x1f9" # optionale Parameter für isdnd

dazu.
Näheres unter
"man rc.conf" Stichwort: isdn
"man isdnd"
 
ok hat funktioniert! :D

aber jetzt noch eine frage ;)

an dem router wird später kein bildschirm mehr angeschlossen sein. Wie kann ich es nun machen das die ausgabe des isdnd auf einen anderen freebsd rechner geleitet wird? ist das überhaupt möglich?

so wie ich das sehe muss der eintrag unter isdn_fsdev angepasst werden... aber was muss anstelle von /dev/ttyv3 dahin?

Gruß
Skara
 
vielleicht kann man einfach eine "normale" datei angeben, z.b. /var/log/isdnd.log (falls es die nicht schon gibt.
diese Datei sieht man sich auf dem anderen rechner dann normal über ssh an.
 
Zurück
Oben