Next Previous Contents

8. trouble: Fehlerbeseitigung

8.1 trouble_22memory: Ich kann ISDN auf meiner Maschine mit dem Kernel 2.2.x nicht starten. Ich bekomme die Fehlermeldungen "init_module: Device or resource busy" und "isdn: Could not allocate device-struct.".

Das ist ein Speicherproblem. Es bedeutet, daß Du zuwenig unfragmentierten Speicher hast. Während 2.0.x Kernel mit kleiner Speicherausstattung/langsamer Hardware funktionieren mögen (das Anrufbeantworter-System des Autors ist ein 386er und läuft mit 4MB RAM), kannst Du auch mit 32M RAM mit dem Problem der Speicher-Fragmentierung konfrontiert werden. Das Problem wurde seit der Kernelversion 2.2.14 verringert indem ISDN4LINUX's Speicherbelegung auf den Gebrauch von vmalloc umgestellt wurde.

Du kannst versuchen, den Speicherbedarf zu senken (siehe trouble_littlememory), ISDN4LINUX in den Kernel fest einzubinden oder ein umfangreiches Programm zu starten und gleich wieder zu beenden um diese Probleme zu mindern.

8.2 trouble_littlememory: Wie kann ich den Speicherbedarf von ISDN4LINUX senken?

Versuche die folgenden Ansätze:

8.3 trouble_debug: Wie bekomme ich die meisten Debug-Informationen?

Dazu gib folgende Befehle ein:


hisaxctrl <id> 1 0x33ff
hisaxctrl <id> 11 0xf4f
killall isdnlog
cat /dev/isdnctrl > /tmp/ilog

Achtung: Das erzeugt eine Unmenge Output!

8.4 trouble_strategy: Mein ISDN4LINUX funktioniert nicht! Wie löse ich das Problem am besten?

Empfohlen werden die folgenden Schritte:

  1. Prüfe, ob beim Bootvorgang alles funktioniert. Gibt es ungewöhnliche Fehlermeldungen in /var/log/messages? Laufen alle Programme, die beim Booten gestartet werden sollten (zu überprüfen mit ps oder fuser /dev/xxx)? HiSax startet nicht, wenn etwas nicht in Ordnung ist. Informationen, was Du prüfen kannst, bekommst Du unter trouble_boot.Der alte Telestreiber scheint jedoch zu starten, auch wenn er nicht funktioniert. Schau Dir die Fragen unter "Fehlerbehebung bei Teles" an.
  2. Stelle sicher, daß Du den ISDN-Treiber als Modul eingebunden oder fest im Kernel integriert hast - niemals beides zusammen!
  3. Versuche, Deine Anrufnummer von einem Telefon aus anzurufen. Die Nummer sollte in /var/log/messages angezeigt werden. Suche nach einer Zeile wie dieser:
    Call from 0,1,2345 -> 6789
    

    Das bedeutet, daß auf Kanal 0 ein Anruf mit dem Service-Indikator (SI) 1 (1 = Stimme; 7 = Daten) von 2345 an die MSN 6789 empfangen wurde. Jetzt weist Du wenigstens, daß Du Deine MSN auf 6789 (oder welche Nummer Du da findest) setzen musst und daß Dein ISDN4LINUX-Treiber die Befehle, die von der ISDN-Karte kommen, richtig interpretiert. Wenn Du statt der 2345 eine 0 findest bedeutet das, daß Deine Telefongesellschaft die Anrufernummer nicht sendet. Wenn Du diese Zeile nicht findest: Wurde der Treiber vielleicht falsch gestartet?!
  4. Als nächsten Schritt versuchen wir, ob das Telefon oder Faxgerät läutet, wenn wir uns selbst mit einem ttyI Device über Minicom anrufen. Zuerst müssen wir die Diensterkennung mit ATS18=1 auf Audio setzen. Nun sollte das Telefon bei der Eingabe von ATDxxxxxx klingeln, wobei xxxxxx Deine eigene MSN ist.
  5. Jetzt versuchen wir eine Datenübertragung mit ISDN. Öffne 2 verschiedene Konsolenfenster als root und starte in beiden Fenstern 'minicom -s'... im ersten Fenster setze 'Serial Port Setup Serial Device' auf /dev/ttyI0 und im zweiten auf /dev/ttyI1. Anschließend wähle 'Exit' und starte die Modem-Emulation mit 'ATZ' und 'AT&Exxxxxx' (wobei xxxxxx Deine eigene MSN ohne Vorwahl ist). Fertig. Im ersten Fenster wählst Du Deine eigene Nummer mit ATDxxxxxx. Im zweiten Fenster solltest Du nun "CALLER NUMBER: xxxxxxx" und "RING" sehen. Nimm den Ruf im zweiten Fenster mit 'ATA' an und es erscheint die Meldung 'CONNECT 64000/X.75' in beiden Fenstern. Du kannst jetzt Zeichen von einem zum anderen Fenster senden (schalte LOCAL ECHO ein um die Zeichen im sendenden Fenster zu sehen).
  6. Nun versuche, eine bekannte ISDN Mailbox anzurufen. Wenn Du keine solche kennst, versuche es bei Gernot (siehe Gibt es Sites, die einen Gastzugang anbieten, wo ich meine ISDN4LINUX-Einstellungen testen kann?). Bei Problemen mit der Modem-Emulation siehe 'Fehlerbehebung bei Modem-Emulation'
  7. Als sechsten Schritt versuche, das Netzwerk-Interface oder ipppd einzurichten. Erfahrungsgemäß bereitet das den Anfängern (und nicht nur den Anfängern!) die meisten Probleme. Wenn Du mit asyncPPP zufrieden bist (über asyncPPP siehe die Frage 'pppd, ipppd, syncPPP, asyncPPP - was ist das? Was sollte ich benutzen?'), kannst Du, um die Sache zu vereinfachen, den normalen pppd mit Modem-Emulation (z.B. /dev/ttyI*) benutzen.
  8. Versichere Dich, daß die Anmeldeprozedur richtig konfiguriert wurde (siehe die Fragen in dem Bereich pap).

Anderenfalls ist ein Beispielscript aus dem HowTo sehr zu empfehlen (siehe Frage 'Wo finde ich Scripts und andere Informationen zum Einrichten von I4L?'). Zum Testen kannst Du Deinen eigenen Provider benutzen oder einen der Gast-Zugänge (siehe Gibt es Sites, die einen Gastzugang anbieten, wo ich meine ISDN4LINUX-Einstellungen testen kann?). Die letzteren bieten den Vorteil, daß sie die Log-Dateien sehen und auch eine funktionierende Konfiguration feststellen können. Wenn z.B. eine Verbindung über ipppd nicht zustande kommt, kannst Du Dich dort via Modem oder Modem-Emulation einloggen und herausfinden, woran es lag. Nicht alle Provider sind so kooperativ.... :-)

8.5 trouble_boot: Wie stelle ich fest, ob meine ISDN-Karte korrekt erkannt wurde?

  1. Suche nach Fehlermeldungen in den Boot-Meldungen, die Du jederzeit mit dem Befehl dmesg einsehen kannst.
  2. Bei dem HiSax Treiber: Während des Bootens sollte eine Meldung kernel: HSCX version A:5 B:5 und kernel: channels 2 erscheinen. A:4 B:4 ist ebenfalls in Ordnung. Andere Werte (insbesondere A:??? B:???) bedeuten, daß die Karte nicht richtig erkannt wurde. HiSax wird nur geladen wenn die Hardware gefunden wird und die passenden Interrupts ausgelöst werden können. Das bedeutet, die Karte ist richtig im Computer installiert und es bestehen keine Hardware-Konflikte. Es bedeutet nicht, daß alles funktionieren wird (z.B., verdrehte oder gebrochene Kabel, falsch gesetzte Terminatoren).
  3. Prüfe ob Deiner Karte ein Interrupt zugeordnet wurde, z.B. mit:
    lspci -v
    

    Ein oft vorkommendes Problem tritt ein, wenn Dein BIOS Deiner Karte keinen Interrupt zugeordnet hat. HiSax beschwert sich dann: "No IRQ for PCI card found". Abhilfe: Setze im BIOS die Option "PnP OS" auf "NO".
  4. Überprüfe die korrekte Erkennung der Interrupts mit dem Befehl
    cat /proc/interrupts
    

    Das folgende Ergebnis zeigt, daß bei der Karte der Interrupt 11 eingestellt ist und bisher 3 Interrupts ausgelöst wurden:
    11:        3 + hisax
    
    Bei einem Anruf an Dich selbst sollte sich die Anzahl der ausgelösten Interrupts erhöhen.
  5. Überprüfe die IO-Addressen mit
    cat /proc/ioports
    

8.6 trouble_isdncause: Ich bekomme eine Fehlermeldung "cause: E1234" (oder so ähnlich)?

Eine Erklärung dieser Meldung bekommst Du mit dem Befehl man isdn_cause. Bei dem sehr verbreiteten Fehler "cause: E001B" sieh Dir die folgende Frage trouble_e001b an.

8.7 trouble_e001b: Ich bekomme eine Fehlermeldung "cause: E001B"?

Dies ist ein sehr verbreiteter Fehler und bedeutet (siehe man isdn_cause): EuroISDN (E), User-Seite (00), außer Funktion (1b). Zusammen genommen bedeutet das entweder, daß der Treiber keine Layer 1 Verbindung herstellen kann (Kabelproblem, Hardwarefehler, verborgene Hardwarekonflikte - siehe Bereich hardware) oder er kann keine Layer 2 Verbindung bekommen (falsche Konfiguration: kein EuroISDN, kein automatisches TEI unterstützt, Point-to-Point BRI anstelle von Multi-Device - siehe Bereich config).

8.8 trouble_noprotocol: Beim Start von HiSax bekomme ich die Meldung "Warning - no protocol specified"?

Das bedeutet, daß Du das D-Kanal-Protokoll, das Du mit HiSax benutzen willst, nicht spezifiziert hast. Meistens ist die Voreinstellung falsch und Du musst angeben, daß Du das EURO-Protokoll ISDN DSS1 benutzen willst. Nur wenn Du eine Standleitung hast brauchst Du kein D-Kanal-Protokoll angeben.

8.9 trouble_euronotsupported: Beim Start von HiSax bekomme ich die Fehlermeldung: "kernel hisax: protocol euro not supported"?

Das bedeutet, daß Du die Option Euro Protocol ISDN DSS1 bei der Kernelkonfiguration nicht gesetzt hast. Aktiviere diese Option und kompiliere den Kernel neu.

8.10 trouble_unknownprimitive: Beim Connect-Versuch bekomme ich die Meldung: "lldata_handler unknown primitive"?

Das bedeutet, daß die link level Protokolle nicht zueinander passen (z.B., Du willst mit X.75 verbinden und Dein Provider antwortet mit HDLC). Prüfe und berichtige Deine Einstellungen:


isdnctrl l2_prot <interface> <protocol>

8.11 trouble_notelrings: Weder mein Telefon noch mein Fax klingelt wenn ich es mit ISDN4LINUX anrufe?

ISDN4LINUX setzt beim Wählen den Serviceindikator auf 'digital data'. Die Vermittlungsstelle stellt solche Anrufe tatsächlich an analoge Geräte wie Telefon oder Fax durch. Diese analogen Geräte antworten jedoch nur auf analoge Anrufe und ignorieren daher den digitalen Anruf.

8.12 trouble_guestaccess: Gibt es Sites, die einen Gastzugang anbieten, wo ich meine ISDN4LINUX-Einstellungen testen kann?

Die folgenden Informationen sind ziemlich alt. Gib mir bitte Bescheid, wenn Du feststellst, daß die Gastzugänge nicht mehr erreichbar sind:

Folgende Server bieten Gastzugänge für Modem-Emulation oder IP:

8.13 trouble_unload: Ich kann meine ISDN Module nicht entladen ('isdn: Device or resource busy') obwohl ich alle ISDN-Anwendungen geschlossen habe?

In diesem Fall zeigt der Aufruf 'fuser -v /dev/isdn* /dev/ippp* /dev/cui* /dev/ttyI*' welche Prozesse diese Geräte belegen.

Sporadische Fehler dieser Art können durch das Einfügen von sleep-Befehlen zwischen die Entlade-Befehle vermieden werden. Als wirklich allerletzte Möglichkeit gibt es zwei geheime telesctrl-Befehle um den Module Counter zurück zu setzen:
telesctrl id 3 1  --- dec module_count
telesctrl id 4 1  --- inc module_count

Diese sind mit der nötigen Vorsicht und auf eigenes Risiko zu benutzen!

8.14 trouble_tcpdump: Warum funktioniert mein tcpdump nicht bei IP-Paketen, die über ISDN laufen (' truncated ip' oder ähnlich)? Wie kann ich tcpdump für ISDN patchen?

tcpdump kommt nicht immer mit den besonderen encapsulations zurecht, die mit ISDN4LINUX möglich sind, speziell nicht mit syncPPP. Zur Abhilfe muss tcpdump gepatcht werden.

Michael Stiller michael@toyland.ping.de schrieb am 23. Okt. 1996:

Tip für ftp:

ftp://ftp.gwdg.de/pub/misc/isdn/linux/isdn4linux-gwdg

Dort gibt es den Patch: 'tcpdump-3.0.4-1-isdn.dif.gz'

und der Rest liegt auf:

/pub/linux/mirrors/funet/PEOPLE/Linus/net-source/tools/tcpdump-3.0.4-1.tar.gz

Du musst eventuell etwas ändern, abhängig von dem Namen Deines ISDN Interfaces (bei mir ist das bri0). Von sich aus erkennt der Patch nur Interfacenamen wie isdn* und isdnY*.

Des weiteren schrieb Henning Schmiedehausen henning@pong.iconsult.com am 30. Okt. 1996:

Nachdem ich feststellte, daß der Patch von Eberhard Moenkeberg auf ftp.gwdg.de mit CISCO-HDLC nicht zurechtkommt, schrieb ich meinen eigenen Patch für tcpdump-3.0.4, der das Interface fragt, welche encapsulation es benutzt und dann die entsprechende Einstellung vornimmt. Der Patch ist für die tcpdump-3.0.4-1.tar.gz Distribution, erhältlich z.B. bei
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/tools
Dieser Patch erkennt rawIP, ISDN-IP und CISCO-HDLC und kann Dumps dieser Pakete durchführen.
(Der Patch war der Message beigefügt - man sollte ihn leicht im Archiv der Mailingliste finden können - Editor.)

Sascha Ottolski sascha@alzhimer.isdn.cs.tu-berlin.de gab am 05. Nov. 1996 den folgenden Tip:

Dies ist ein isdn4k-utils-2.0/tcpdump-3.0.3-isdn.diff ! Es funktioniert mit folgenden Änderungen: In der Datei tcpdump-3.0.3-isdn/libpcap-0.0/pcap-linux.c findest Du nach dem Patchen die folgende Zeile: else if (strncmp('ppp', device, 3) == 0) Entweder benennst Du Deine PPP-Devices pppX anstatt ipppX, oder Du änderst diese Zeile entsprechend, z.B.: else if (strncmp('ippp', device, 4) == 0) Dann erkennt tcpdump auch syncPPP. Es macht es zumindest bei mir.

8.15 trouble_locatecrash: Mein ISDN Treiber bringt meine Maschine zum Absturz! Seit ich ihn als Modul konfiguriert habe ändern sich die Addressen bei jedem Laden. Wie finde ich heraus, wo der Treiber abbricht?

Der Treiber sollte mit dem Befehl 'insmod -m' geladen werden. Die Ausgabe des Befehls muss in eine Form ähnlich der System.map gebracht werden, z.B. so:


insmod -m isdn.o | sort | sed -e 's/   / T /g' |
                   egrep '.* T (a-z,A-Z,_)+' > /etc/isdn/isdn.map
cat /System.map /etc/isdn/isdn.map > /iSystem.map

(Die Zeile mit '|' am Ende und die nächste Zeile bilden eine Zeile!). Zum Aufspüren des Fehlers sollte dann iSystem.map anstelle von System.map benutzt werden.

8.16 trouble_lotsdebug: Meine Festplatte wird sehr aktiv wenn ISDN4LINUX läuft. Wie kann ich das abstellen?

Prüfe ob die erhöhte Festplattenaktivität an der Menge der Meldungen liegt, die in das Logfile geschrieben werden. Wenn ja, kannst Du die Ausgabe durch:


isdnctrl verbose 0

reduzieren und/oder 'debug' aus den Optionen für den ipppd entfernen.

8.17 trouble_oldhardware: Kann es sein, daß meine Hardware zu langsam ist?

Eigentlich läuft ISDN4LINUX, wenn es sauber konfiguriert ist, auf viel schwächeren Maschinen als Du erwarten wirst (bei mir läuft immer noch eine ältere Version auf einem 386-25, der nur 4MB RAM besitzt). Neuere Versionen von ISDN4LINUX und des Kernels benötigen jedoch mehr Speicher. Möglicherweise ist etwas Bearbeitung nötig um sie auf sehr alter Hardware laufen zu lassen. Schau Dir die Frage trouble_outofbuffers an, wenn Du knapp an Buffern wirst. Siehe Frage trouble_littlememory zur Reduzierung des benötigten Speichers.

8.18 trouble_outofbuffers: Ich bekomme Meldungen wie 'HSCX RME out of buffers', 'HSCX RFP out of buffers', 'HSCX B EXIR 10' im Syslog?

Diese Fehler tauchen auf, wenn I4L seine Buffer nicht schnell genug verarbeiten kann, was oft durch schlechte Soundkarten oder deren Treiber verursacht wird, die die Interrupts zu lange deaktivieren! Es kann auch durch alte Hardware ausgelöst werden (passierte dem Autor der FAQ, der vbox auf einem alten 386-25 mit nur 4MB RAM benutzen wollte). Du kannst das mit einer Erhöhung der Anzahl und Größe der Buffer umgehen. Suche in den Header-Dateien des Sourcecodes nach Definitionen wie:


#define HSCX_RBUF_ORDER 1 
#define HSCX_RBUF_BPPS 2 
#define HSCX_RBUF_MAXPAGES 3 

Die ersten beiden Zeilen verändern die Größe, die dritte Zeile verändert die maximale Anzahl der Buffer.

8.19 trouble_noresetinit: Meine Karte wird nach einem Warmstart nicht richtig initialisiert.

Nach einem Anhalten des Systems mit dem Befehl reboot oder Ctrl-Alt-Del solltest Du den Reset-Knopf drücken (= Kaltstart). Manchmal braucht die Karte ein Hardware-Signal um richtig initialisiert zu werden.

8.20 trouble_noisdnctrl: Beim Versuch, isdnctrl zu nutzen, bekomme ich die Meldung: "/dev/isdnctrl: no such file or directory"?

Prüfe zuerst, ob ein device /dev/isdnctrl0 existiert. Wenn ja, erstelle einen sybolischen Link mit dem Befehl:


ln -s /dev/isdnctrl0 /dev/isdnctrl

Wenn das Device nicht existiert musst Du das Skript scripts/makedev.sh laufen lassen. Es ist in den isdn4k-utils enthalten.

8.21 trouble_noisdnctrl2: Beim Versuch, isdnctrl zu benutzen, bekomme ich die Meldung: "/dev/isdnctrl: No such device"?

Im Gegensatz zu der Meldung "/dev/isdnctrl: No such file or directory" besagt die Meldung "/dev/isdnctrl: No such device", daß das Device /dev/isdnctrl zwar existiert aber kein ISDN-Treiber gefunden wird. Lösung: Lade die ISDN-Module (prüfe dann mit "cat /proc/modules" ob sie geladen wurden) oder binde die ISDN-Treiber fest in den Kernel ein.

8.22 trouble_xosview: xosview zeigt nach der Installation von I4L keine Netzwerk-Aktivität mehr an.

Peter Hettkamp Peter.Hettkamp@kassel.netsurf.de schrieb:

xosview reagiert, zumindest bei mir in der Version 1.4, auf das IP Accounting im Kernel. Also konfiguriere und, falls nötig, baue einen neuen Kernel und aktiviere es mit:
ipfwadm -A -a -S deine-ip-addresse-hier -D 0.0.0.0/0
ipfwadm -A -a -D deine-ip-addresse-hier -S 0.0.0.0/0

(Ich weis nicht wie das mit dynamischen IP-Addressen geht. Ich habe eine feste Addresse.)

8.23 trouble_unknownhost: Wenn ich z.B. von einer W95-Box eine Seite in Netscape aufrufe, bekomme ich nur die Antwort 'unknown host'.

Was ist auf der 'Win95-Box' als Nameserver eingetragen? Solange im LAN kein eigener Nameserver betrieben wird, muss natürlich auf allen Computern des LAN der Nameserver des Providers eingetragen werden.

8.24 trouble_noroute: Die Addressen werden jetzt gefunden, doch nun bekomme ich die Meldung 'no route to host'.

Prüfe nach:

8.25 trouble_nolocalnet: Nach dem Booten ist mein lokales Netzwerk nicht mehr erreichbar. Ich benutze das Netzwerk-Interface ippp0 mit ifconfig 0.0.0.0; die defaultroute zeigt auf ippp0.

Wolfgang Barth schrieb am 5. Januar 1997:

Ich habe festgestellt, dass das lokale Netzwerk nach der ersten Verbindung über ippp0 wieder erreichbar ist. Dann wird die Addresse 0.0.0.0 nicht mehr im ifconfig für ippp0 angezeigt sondern vielmehr die Addresse, die aus dem Pool des PPP-Partners zugewiesen wird. Dies wurde bereits in de.comp.os.linux.networking behandelt, zusammen mit dieser Lösung: Setze einfach ippp0 auf eine willkürliche IP aus dem Pool. Dann wird das lokale Netzwerk nach dem Booten auch mit der defaultroute Probleme haben und die IP in ifconfig wird auf jeden Fall überschrieben.

8.26 trouble_unauthorizedcodechange: Beim Start von HiSax bekomme ich die Fehlermeldung 'Approval certification failed, unauthorized source code changes'?

Da die Zulassung des HiSax-Treibers nur für den unveränderten Quellcode gilt ist dieser durch eine Prüfsumme geschützt. Wenn Du die Fehlermeldung bekommst, hast Du entweder selbst den Code geändert oder der Autor hat nach einer Änderung die Prüfsumme nicht aktualisiert (möglicherweise wurden die Zulassungstests mit dem geänderten Code noch nicht durchgeführt).


Next Previous Contents