isdn4k-utils - HOWTO - Andreas Kool - 31-Mar-97 - 23:53

***************************************************************************
** Dieses Dokument wendet sich z.Zt. vor allem an all diejenigen, die es **
** nicht abwarten koennen, und sich die neuen isdn4k-utils ->PRE ALPHA ! **
** aus dem CVS-Baum ausgecheckt haben. 		     	     	     	 **
**                                                                       **
** Es handelt sich um ein gerade entstehendes Programmpaket - daher 	 **
** sind alle Fehlerhinweise, Verbesserungsvorschlaege etc. sehr gerne	 **
** gesehen, Anfragen bzgl. "ich bekomme das nicht kompiliert" jedoch  	 **
** koennen in diesem Fruehstadium leider *nicht* beantwortet werden!     **
***************************************************************************
 
Dieses Dokument versucht, jedem den Einstieg in die neuen isdn4k-utils
so einfach wie moeglich zu machen.

Fuer alte isdnlog-Hasen wirkt die neue Version sicherlich erst einmal
wie ein Kulturschock ... soo schlimm wird es aber gar nicht!

Um die Benutzung aller Utilities rund um isdn4linux auch fuer Neueinsteiger
so einfach wie irgend moeglich zu machen, haben wir versucht, alle
Tools ineinander zu verzahnen, und ueber eine einzige, gemeinsame
Konfigurationsdatei steuerbar zu machen.

Mit folgenden Schritten kommt man in den Genuss von isdnlog-2.99.2:


1. Es sollten als Vorbedingung Linux-2.0.29 nebst isdn4kernel-2.0.29.5
   installiert werden. isdnlog-2.99.2 arbeitet zwar auch mit aelteren
   Versionen von isdn4linux zusammen, jedoch entgehen einem dadurch
   viele neue Features, und ausserdem wurde isdnlog-2.99.2 primaer
   in dieser Umgebung getestet - daher koennen Probleme mit
   frueheren Versionen nicht ausgeschlossen werden.


2. Die isdn4k-utils auspacken:

     $ cd /usr/src 
     $ tar xzf isdn4k-utils.tar.gz

3. Die grundsaetzlichen Betriebsmodi einstellen:

     $ cd isdn4k-utils 
     $ make config

   Es erscheint nun ein interaktives Konfigurationsmenue, in dem die
   gewuenschten Programme/Optionen angewaehlt werden koennen.

     Besonderes Augenmerk sollte (neben dem Freischalten von isdnlog ;-)
     folgenden Einstellungen gelten:

       #define I4LCONFDIR "/etc/isdn"

         hier wird angegeben, in welchem Verzeichnis alle Configurations-
       	 Dateien untergebracht werden sollen. Wer alles wie frueher
       	 belassen will, traegt hier "/etc/isdnlog" ein.
         Die Developer von isdn4linux haben sich jedoch auf das
         zukuenftige Verzeichnis "/etc/isdn" geeinigt.

       # export LIBAREA=1
         isdnlog soll mit dem neuen AVON-Verzeichnis von
         Ullrich von Bassewitz (uz@musoftware.com)
         arbeiten. Dies sollte _immer_ eingeschaltet werden.
       
       # export POSTGRES=1   
         isdnlog soll alle Verbindungsinformationen auch in
         eine SQL-Relation eintragen. Dies darf nur eingeschaltet werden,
         wenn postgres95 einsatzbereit installiert ist!

Zur Zeit sind die naechsten beiden Schalter ueberfluessig, da der
xisdn voruebergehend aus der Distribution genommen wurde!!!!
       # export NEED_GDBM=1 
         Falls man _nicht_ LIBAREA=1 eingeschaltet hat, und zudem
         keine Datei "/usr/lib/libdbm.a", dafuer aber "/usr/lib/libgdbm.a"
         besitzt, muss dieser Schalter aktiviert werden.

       # export NEED_ICE=1
         Wer sich das X11-Frontend "xisdn" erstellen moechte, kann hiermit
         steuern, ob auch die Bibliotheken "libICE.so" sowie "libSM.so"
         hinzugelinkt werden muessen

       # export OLD_I4L=1
         Wer nicht bereit ist, den aktuellen Stand von isdn4linux
         einzusetzen, kann hiermit die Unterstuetzung fuer isdn4linux
         _kleiner_ Rev: 1.31/1.24/1.33 freischalten.
         Dadurch wird u.a. CHARGEINT unmoeglich!

       # export ISDN_NL=1    
         Hiermit wird die gesamte Gebuehrenauswertung auf die Niederlande
         umgeschaltet. Dieser Schalter muss also in den Niederlanden
         eingeschaltet werden.

       # export ISDN_CH=1   
         Hiermit wird die gesamte Gebuehrenauswertung auf die Schweiz
         umgeschaltet. Dieser Schalter muss also in der Schweiz
         eingeschaltet werden.


4. Nun kann alles kompiliert und installiert werden:

     $ make 
     $ make install

   Waehrend der Compiler arbeitet bietet sich die Wartezeit geradezu
   an, um ein wenig im README von isdnlog zu schmoeckern ;-)

   ACHTUNG: Der Schritt "make install" terminiert einen evtuell gerade
   	    aktiven alten isdnlog! Um nicht zu viele Verbindungsinformationen 
            zu verlieren, sollten daher die folgenden Schritte zuegig
            durchgefuehrt werden!


5. Vorbereiten des ersten Start des neuen isdnlog:
   
   Einige wenige Command-Line-Switches von isdnlog wurden erweitert:

    - Das Argument von "-v" wurde erweitert
    - Bei "-m", "-l" sowie "-x" wurden marginale Aenderungen durchgefuehrt
    - Das Argument von "-h" wurde geaendert

   Wer diese Schalter verwendet, sollte sich daher die entsprechende
   Beschreibung im "isdnlog/README" durchlesen, und seine
   Angaben entsprechend korrigieren.

   Der neue isdnlog arbeitet mit einer vollstaendig anderen 
   Konfigurationsdatei. 
   Diese wird automatisch aus der bestehenden generiert.
   Es wird das alte Verzeichnis "etc/isdnlog" nach "etc/isdn" umkopiert.

   isdnlog-2.99.2 versucht daher beim ersten Start, die alte 
   Konfigurationsdatei "isdnlog.conf" in die neue Syntax umzuwandeln.
   Dieses passiert automatisch mit make install
   Es werden in dieser Version alle Telefonnummern in der Datei callerid.conf
   ausgelagert, so dass die isdn.conf sehr klein wird.

6. Erster Start des neuen isdnlog:

   Nach diesen Vorbereitungen kann isdnlog-2.99.2 nun endlich gestartet
   werden. 
   
   Im folgenden unterstelle ich mal, das isdnlog folgendermassen
   aufgerufen wird (so betreibe ich isdnlog hier):
     
     isdnlog -nsS -v13 -t2 -w1 -m0x17f7 -l7 -h5:3 -H5 -22 /dev/isdnctrl0

   isdnlog sollte sich - je nach eingestelltem Ausgabekanal - auf
   der Konsole oder dem syslog in etwa folgendermassen melden:

     isdnlog Version 2.99.2 loaded
     (ISDN subsystem with ISDN_MAX_CHANNELS > 16 detected - x active channels
     (Data versions: iprofd=0x04  net_cfg=0x02  /dev/isdninfo=0x01)

   Nun sollte als erste Funktionspruefung z.b. der Hoerer des Telefons
   abgenommen, und wieder aufgelegt werden.
   Es sollte die Meldung

     (HiSax driver detected)

   auftauchen. Ist dies nicht der Fall, muss geprueft werden, ob mittels

     $ telesctrl ID 1 4

   das D-Kanal logging des Hisax-Treibers eingeschaltet wurde.

   Kurz danach sollten die D-Kanal-Meldungen erscheinen:

22.Feb 12:26:53 * Calling ? with ?  BEARER: Speech, CCITT standardized coding
22.Feb 12:26:53 * Calling ? with ?  64 kbit/s, Circuit mode
22.Feb 12:26:53 * Calling ? with ?  G.711 A-law
22.Feb 12:26:53 * Calling ? with Phone  HLC: CCITT
22.Feb 12:26:53 * Calling ? with Phone  HLC: Telefonie
22.Feb 12:26:53 * Calling ? with Phone  CHANNEL: BRI, B1 gefordert
22.Feb 12:26:53 * Calling ? with Phone  PROGRESS: Location: Local:public net
22.Feb 12:26:53 * Calling ? with Phone  PROGRESS: Inband Information available
22.Feb 12:26:56 Calling ? with Phone  Normal call clearing
22.Feb 12:26:56 Calling ? with Phone  HANGUP

   Die angezeigten Informationen koennen je nach Telefon, Telefonanlage
   sowie isdnlog-Konfigurationsdatei von obigem Beispiel abweichen,
   aber irgend etwas in dieser Art muss auftauchen - sonst stimmt
   etwas grundlegendes nicht!

   Neben diesen direkten Meldungen muss isdnlog-2.99.2 sowohl einen
   Eintrag in der "/var/log/isdn.log" vorgenommen, als auch
   die Protokolldatei "/tmp/isdnctrl0" fortgeschrieben haben.


7. Nachbearbeitung der neuen Konfigurationsdatei

   Nachdem isdnlog-2.99.2 nun offensichtlich arbeitet, ist es an der Zeit,
   die gerade automatisch neu erstellte Konfigurationsdatei zu ueberarbeiten.

   Die Syntax erschliesst sich einem eigentlich von alleine, eine naehere
   Beschreibung findet sich im "isdnlog/README"

   Die Umwandlung von alte auf neue Syntax ist leider ausser Stande,
   die eingestreuten Kommentare (-> Zeilen mit "#") zu uebernehmen.
   Daher muessen diese von Hand uebernommen werden.

   In der Section [GLOBAL]
   werden automatisch mit make install die beiden Eintraege
     COUNTRYCODE = +49
     AREACODE = xxxx
   eingefuegt, wenn vorher diese Daten im Menue eingegeben wurden.

   Nachdem die neue Konfigurationsdatei fuer gut befunden wurde, sollte 
   die alte Konfigurationsdatei "isdnlog.conf" geloescht werden, da
   isdnlog sonst staendig versuchen wuerde, die alte in die neue
   Syntax umzustellen (allerdings nur, wenn die alte Datei ein neueres
   Datum hat, als die neue)

   Wer bis hier gekommen ist, kann ein lautes "puuuh, geschafft!"
   ausstossen! Nun ist es endlich an der Zeit, 


7.1 Es gibt nun zwei (oder sogar drei!?!) neue Konfigurationsdateien:
      /etc/isdn/isdn.conf 
      /etc/isdn/callerid.conf
      ~/.isdn
    Wobei sich in der "isdn.conf" nur noch die rein auf isdnlog beziehenden
    Eintraege befinden, und in der "callerid.conf" die von isdnlog und
    (bald!?!) vbox gemeinsam verwendeten Eintraege!


8. Die neuen Features von isdnlog erkunden

    - mit dem ersten neuen Feature, der neuen Konfigurationsdatei
      wurde man ja bereits ausgiebig konfrontiert.
      Dazu gibt es nun ein neues Programm "isdnconf" zur komfortablen
      Beauskunftung - siehe dazu "isdnlog/README"

    - isdnlog arbeitet nun durchgaengig mit "full qualified" Telefonnummern,
      d.h. alle Telefonnummern werden _nur_noch_ in der Form 

        <Internationale Vorwahl> <Vorwahl> <Rufnummer>

      behandelt. Zum Beispiel wuerde die Nummer "4711" in Frankfurt, 
      Deutschland so "+49 69 4711" dargestellt werden.

    - isdnlog arbeitet nun mit der neuen Library "areacode-1.01" von
      Ullrich von Bassewitz (uz@musoftware.com) 
      
      Eine ausfuehrliche Beschreibung dazu findet sich in
        "areacode/areacode.doc"

      Diese Library ersetzt das alte "AVON" Verzeichnis der frueheren
      isdnlog-Versionen. Sie bietet folgende Vorteile:

        - sehr aktuelle Ortsnetz-Daten
        - Daten fuer Deutschland, Schweiz, Oesterreich, Funknetze, 0180-
	  0190- usw. enthalten
        - wesentlich schneller
        - eine einzige, UNIX-weit gemeinsame Bibliothek fuer Vorwahlen.
          Per heute unterstuetzen 
            - isdnlog
            - vbox
            - ESTIC
          diese Library, weitere Applikationen werden sicherlich folgen!
    
      Wer unbedingt auf seine AVON besteht, kann diese natuerlich
      weiterverwenden. Dieses muss dann allerdings im Menu angegeben werden.

    - chargeint (auflegen kurz vor dem naechsten Gebuehrenimpuls) ist
      mittlerweile offizieller Bestandteil von isdn4linux, und damit 
      aus dem "Patch" Stadium heraus. Die Steuerung durch isdnlog
      wurde verfeinert - siehe dazu den "-h" Schalter

    - isdnlog-2.99.2 bietet 4 verschiedene Moeglichkeiten, die Kosten 
      gegenueber der .T... sowie dem jeweiligen Internet-Provider 
      zu begrenzen:

       - Watchdog:
       	   isdnlog-2.99.2 erkennt Fehlverhalten von isdn4linux, und
   	   terminiert es rechtzeitig.
   	   (Neuer Schalter "-Hx" -> wenn seit mehr als "x"
   	   Gebuehreneinheiten kein Datentransfer mehr feststellbar ist,
           wird isdn4linux abgewuergt - wenn es sein muss, mit einem
           Reboot der ganzen Maschine)

       - CHARGEMAX:
           Hiermit kann definiert werden, wieviel Geld (in DM) man
   	   maximal gewillt ist, pro Tag zu vertelefonieren.
           Wird diese Grenze ueberschritten, wird isdn4linux
           abgewuergt (neuer Eintrag CHARGEMAX in der "isdn.conf")

       - CONNECTMAX: 
           Hiermit kann definiert werden, welche maximale Verbindungszeit
   	   man pro Monat haben moechte (ich habe dort die Freistunden
           meines Provider's eingetragen)
           Wird diese Grenze ueberschritten, wird isdn4linux
           abgewuergt (neuer Eintrag CONNECTMAX in der "isdn.conf")

       - BYTEMAX:    
           Hiermit kann definiert werden, wieviel Byte man pro Monat
   	   maximal saugen will (fuer Provider, die ein maximales
           Kontingent in Byte definieren).
           Wird diese Grenze ueberschritten, wird isdn4linux
           abgewuergt (neuer Eintrag BYTEMAX in der "isdn.conf")

    - isdnlog-2.99.2 besitzt eine Anbindung an die SQL-Datenbank postgres95.
      Wird diese freigeschaltet, traegt isdnlog-2.99.2 jede Verbindung nicht
      nur in die "/var/log/isdn.log", sondern auch in eine SQL-Relation ein.
      Beschreibung dazu siehe "isdnlog/README"

    - isdnlog-2.99.2 unterstuetzt nun den neuen "City Weekend Tarif"
      Wer das bei der .T... beantragt hat, muss isdnlog mit der neuen
      Option "-F" starten

      ACHTUNG: Im "City Weekend Tarif" sind die AOC-D / AOC-E Meldungen
    	       (Gebuehreninfos) der VSt *definitiv* falsch!
               (Siehe Kleingedrucktes auf dem Antrag ...)
               Daher sind die Aussagen von "isdnrep" hierzu natuerlich
               auch "falsch" !
               Die Steuerung des "CHARGEINT" von seiten isdnlog ist
               jedoch richtig!

    - isdnlog kann nun (incl. "ChargeInt" Feature) in den Niederlanden
      eingesetzt werden, da Ad Aerts (ad@aasup.nl) isdnlog _vollstaendig_
      an die Niederlande angepasst hat.

    - isdnlog-2.99.2 versteht eine Menge neuer D-Kanal-Frames, von denen einige
      in den vergangenen Monaten Bestandteil manchmal heftiger Diskussionen
      waren:

        - COLP
      	- CLIP
      	- Rufumleitung

      Wie mir leider erst in den letzten Tagen bekannt wurde, kann isdnlog-2.99.2
      mit dem neuen Feature "Rueckruf bei besetzt" noch _nicht_ umgehen.
      Hierzu werde ich einen Patch nachliefern, sofern mir die VSt Giessen
      dieses Feature *endlich* freischaltet!

      Entgegen frueheren Versionen verbucht isdnlog-2.99.2 jedoch ihm unbekannte
      FACILITY-Frames nicht mehr mit teilweise astronomischen Gebuehren.

      Daneben dekodiert isdnlog-2.99.2 nun vollstaendig die Elemente
        - Bearer capability
     	- Channel identification
     	- Progress indicator
     	- Notification indicator
     	- High layer compatibility
      aus, und kann die zahlreichen neuen Informationen bei Bedarf anzeigen.

    - isdnlog-2.99.2 zeigt nun die exakte Dauer (in Sekunden) bis zum naechsten
      berechneten (also genauen - fuer chargeint verwendeten) Gebuehrenimpuls
      an:

   Calling EUnet with HDLC  I=883,1Kb  5,8Kb/s  O= 40,5Kb 272,6 b/s  H#7= 12s
   ------------------------------------------------------------------^^^^^^^^

      Bedeutet: Wir befinden uns gerade in dem 7. Gebuehrentakt, noch exakt
      12 Sekunden bis zum faellig werden der naechsten DM 0,12

    - isdnlog-2.99.2 bietet nun den neuen Schalter "-Axxx" an. Hiermit
      kann angegeben werden, welche Ziffern oder Zahlen man an einer 
      Telefonanlage vorwaehlen muss, um "ein Amt" zu bekommen.
      Dadurch wird isdnlog in die Lage versetzt, diese wieder 
      herauszurechnen, womit die Falschmeldungen bzgl. den Vorwahlen
      vermieden werden koennen.

    - Unterstuetzung einer zweiten, falsch angeschlossenen Teles-Karte
      Wie mittlerweile allgemein bekannt, konnte isdnlog bislang die 
      Informationen von anderen Geraeten am S0-Bus (Telefon, Fax, Modem)
      nicht mitbekommen.

      Dagegen wurde mittlerweile eine Loesung erarbeitet:
      Falls man sich eine zweite Teles-Karte entsprechend dem
      Schaltbild in "isdnlog/README" einbaut, und isdnlog mit
      dem neuen Schalter "-2x" startet, bekommt isdnlog nun
      alle D-Kanal-Frames mit, und kann daher auch alle Informationen
      lueckenlos anzeigen.
      Wird fuer "x" 2 eingesetzt, also "isdnlog -22", zeigt isdnlog
      sogar direkt jede Ziffer an, die man z.b. an einem Telefon
      eintippt.

      Um Missverstaendnissen vorzubeugen: 
       - diese zweite Karte kann *nicht* zur Kommunikation eingesetzt
       	 werden - sie spielt *nur* noch Monitor 
       
       - die "-2" Option bedeutet nicht, das isdnlog nun mit mehr
       	 als 2 B-Kanaelen umgehen kann! isdnlog arbeitet nach wie
         vor nur mit einem Basis-Anschluss (BRI) zusammen.
         Gleichwohl koennen nun mehrere isdnlog's parallel betrieben
         werden (pro Basis-Anschluss einer), da sich die einzelnen
         isdnlog's nun nicht mehr gegenseitig in's Gehege kommen.
    
    - isdnlog-2.99.2 haelt die Log-Datei "/var/log/isdn.log" nun nicht
      mehr staendig offen. Daher kann diese nun zu einem beliebigen 
      Zeitpunkt verschoben oder geloescht werden. Danach _muss_ diese
      Datei jedoch wieder leer angelegt werden 
      (cp /dev/null /var/log/isdn.log) !


So, nun wuensche ich allen viel Spass mit dem neuen isdnlog-2.99.2 - nicht
ohne mich bei den Leuten zu bedanken, die viele freie Stunden in die
Weiterentwicklung von isdnlog gesteckt haben:
  Stefan Luethje (luethje@sl-gw.lake.de)
  Karsten Keil (isdn4@temic-ech.spacenet.de)
  Fritz Elfert (fritz@wuemaus.franken.de)
  Ullrich von Bassewitz (uz@musoftware.com)
  Hardy Buchholz (hardy@Kool.f.EUnet.de)
  Ad Aerts (ad@aasup.nl)
  Markus Leist (markus@hal.dirnet.com)
und ganz besonders bei Dr.-Ing. Joachim Goeller, der mich beim
Verstehen des ISDN-D-Kanal's unzaehlige Male beraten hat!

Abschliessend nochmals die Bitte: Wer Probleme mit isdnlog-2.99.2
hat, sollte zu allererst dieses HOWTO, das "isdnlog/README"
sowie die einschlaegigen FAQ's zu isdn4linux studieren.

Nur wer so nicht weiterkommt, schreibe uns eine email an
  
  isdnlog@Kool.f.EUnet.de

Diese sollte auf jeden Fall als Mindestausstattung:

 - die "isdn.conf"
 - die Aufruf-Parameter von isdnlog
 - die Versionen von Linux, isdn4linux, HiSax-Treiber
 - einen Ausschnitt der "/tmp/isdnctrl0"

enthalten.

Bitte bedenkt, das wir auf dieser Mailing-Liste mittlerweile taeglich
eine Unzahl von Anfragen erhalten, und auch unser Tag leider nur 24 Stunden
hat!


Andreas Kool (akool@Kool.f.EUnet.de)
