Next Previous Contents

7. trouble: Troubleshooting

7.1 trouble_22memory: I can't start ISDN on my machine with kernel 2.2.x. I get the error messages "init_module: Device or resource busy" and "isdn: Could not allocate device-struct.".

This is a memory problem and means you don't have enough unfragmented memory. While 2.0.x kernels may work on low memory/slow hardware (the author's answering machine is a 386 and used to run with 4MB of RAM), you can run into the memory fragmentation problem even if you have as much as 32MB of RAM when running 2.2.x kernels. The problem has been eased since 2.2.14, when ISDN4LINUX's memory allocation has been changed to use vmalloc.

You can try to reduce the memory requirements (see question trouble_littlememory), compile ISDN4LINUX into the kernel, or start and then exit a large program to ease the memory fragmentation problems.

7.2 trouble_littlememory: How can I reduce isdn4linux's memory requirements?

Try to do the following things:

7.3 trouble_debug: How do I get maximum debug output?

Execute the following commands to get maximum debug output:


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

Be careful: this will generate a lot of output!

7.4 trouble_strategy: My isdn4linux doesn't work! How do I best go about finding the problem?

The following steps are recommended:

  1. Check everything is working when booting. Are there unusual error messages in /var/log/messages? Are all programs active that should be started at boot (check with ps, or fuser /dev/xxx)? HiSax won't start if something isn't right. Check question trouble_boot for what you can check. The old Teles driver, on the other hand, will appear to start even if it is not working. See the questions under Troubleshooting Teles.
  2. Make sure you configured the ISDN driver either as modules, or you compiled them into the kernel - never both.
  3. Try calling your dialin number with a telephone. The number should be shown in /var/log/messages. Check for a line like this:
    Call from 0,1,2345 -> 6789
    

    This means that on channel 0 a call from 2345 with service indicator (SI) 1 (1 = voice; data would be 7) to MSN 6789 was received. Now at least you know that you have to configure your MSN to 6789 (or whatever other number you find there), and that your isdn4linux kernel driver understand ISDN commands coming from your ISDN card properly. If instead of the number 2345 you find a 0, then your ISDN provider does not pass you the caller id. If you don't find such a line: perhaps the driver was incorrectly started?!
  4. As a next step we'll try to get the telephone or fax to ring by dialing ourself using a ttyI device with minicom. First we have to change the service recognition with the ATS18=1 command to audio. Now you can get the telephone to ring by dialing ATDxxxxxx, where xxxxxx is your own MSN.
  5. Next we try to transmit data via ISDN. Open 2 different consoles as root, and on each run "minicom -s"... in the first set "Serial Port Setup Serial Device" to /dev/ttyI0, and the other to /dev/ttyI1. Then choose "Exit" and start the modem emulation with "ATZ" and "AT&Exxxxxx" (where xxxxxx is your own MSN without the area code). Then you can start. On the first console you can dial your own number with ATDxxxxxx. On the second console you should now see "CALLER NUMBER: xxxxxxx" and "RING". Accept the call on the second console with "ATA", and you should then see the message "CONNECT 64000/X.75" on both consoles. You can then send characters to the other console by typing (to see the characters on your own console, turn on local echo).
  6. Next, try calling a known ISDN BBS. If you don't know of any, try Gernot (see "Are there sites that offer guest access where I can test my isdn4linux setup?"). If you have problems with the modem emulation, see "Troubleshooting Modem Emulation"
  7. Fifth, try configuring the network interface or ipppd. Experience shows that they cause beginners (and not only beginners!) the most problems. To make things easier and you're happy with asyncPPP (to see what asyncPPP means, see the question "pppd, ipppd, syncPPP, asyncPPP - what is that? What should I use?"), you can use the normal pppd with modem emulation (i.e. /dev/ttyI*).
  8. Ensure that you set up your authentication configuration properly (see questions in section pap.
Otherwise, it is highly recommended that use an example script form the HowTo (see the question "Where can I find scripts and other information on configuring i4l?"). For testing you can try your own provider or of the guest accounts (see "Are there sites that offer guest access where I can test my isdn4linux setup?"). The latter have the advantage of being able to see the log files as well as a stable, working configuration. For example, if accessing via ipppd doesn't work, you can log in via modem or modem emulation to find out what happened on the other side. Not all providers are so cooperative.... :-)

7.5 trouble_boot: How can I tell whether my ISDN card has been correctly recognized?

  1. Check for error messages in the boot messages (you can review them at any time with the command dmesg.
  2. For the HiSax driver: During booting a message kernel: HSCX version A:5 B:5 and kernel: channels 2 should appear. A:4 B:4 is also okay. Other values (in particular A:??? B:???) mean the card is not recognized correctly. HiSax is only loaded if the hardware can be found and the appropriate interrupts can be generated. This means the card is installed correctly in the computer, and there are no hardware conflicts. It does not mean that everything will work (e.g. twisted cables, broken cables, terminators).
  3. Check that your card got an interrupt assigned, e.g. with
    lspci -v
    

    A common problem is that your BIOS did not assign an interrupt to your card. HiSax will then complain with "No IRQ for PCI card found". To fix, set the BIOS option "PnP OS" to NO.
  4. Check that the interrupts are registered correctly. Check with
    cat /proc/interrupts
    

    The following entry indicates that the card is configured on interrupt 11, and so far has received 3 interrupts:
    11:        3 + hisax
    
    When you call yourself, the number of received interrupts should increase.
  5. Check the io ports with
    cat /proc/ioports
    

7.6 trouble_isdncause: I get an error message like "cause: E1234" (or similar)?

Just have a look at man isdn_cause to find out what the problem is. For the very popular cause "E001B" see question trouble_e001b.

7.7 trouble_e001b: I get an error message with "cause: E001B"?

This is a very popular error and means (see man isdn_cause): euro ISDN (E), location user (00), and out of order (1b). Taken together means that the driver either can't get a layer 1 connect (cable problem, hardware error, hidden hardware conflict - see section hardware), or it can't get a layer 2 connect (wrong configuration: no Euro ISDN, no automatic TEI supported, point-to-point BRI instead of multi-device - see section config).

7.8 trouble_noprotocol: upon startup of HiSax I get the message "Warning - no protocol specified"?

This means that you did not specify which D-channel protocol you want to use with HiSax. In most cases this is wrong, and you have to specify that you want to use the Euro Protocol ISDN DSS1. Only if you have a leased line you don't need to specify any D-channel protocol.

7.9 trouble_euronotsupported: upon startup of HiSax I get the error "kernel hisax: protocol euro not supported"?

This means that you did not select the Euro Protocol ISDN DSS1 option when compiling your kernel. You have to switch this on and recompile your kernel to be able to use it.

7.10 trouble_unknownprimitive: upon connection attempt I get the error "lldata_handler unknown primitive"?

This means that the link level protocols do not match (e.g. you tried to connect with X.75, whereas your provider answers with HDLC). Check and fix your connection parameters with:


isdnctrl l2_prot <interface> <protocol>

7.11 trouble_notelrings: Neither my telephone nor my fax machine ring when I call them with isdn4linux?

Isdn4linux sets "digital data" as it's own service when it calls out. The switching station does in fact route such calls to analog devices like a telephone or a fax machine. However, since the machine is analog, it will only answer analog call, and ignore the digital data call.

7.12 trouble_guestaccess: Are there sites that offer guest access where I can test my isdn4linux setup?

The following information is quite old. Please tell me if you find out that the guest sites are not available any more:

The following sites offer guest access for modem emulation or IP:

7.13 trouble_unload: I can't unload my ISDN modules ("isdn: Device or resource busy"), even so I closed all ISDN applications?

In this case "fuser -v /dev/isdn* /dev/ippp* /dev/cui* /dev/ttyI*" is very helpful. This helpful program shows, which processes are using those devices.

Sporadic errors of this type can be fixed by inserting sleep commands between the unloading commands. As a very, very last resort, there are two secret telesctrl commands to adjust the module counter:
telesctrl id 3 1  --- dec module_count
telesctrl id 4 1  --- inc module_count

Please use with appropriate caution and on your own risk!

7.14 trouble_tcpdump: Why does my tcpdump not work for ip packets going over ISDN ("truncated ip" or so)? How can I get a tcpdump patched for ISDN?

The reason is that tcpdump does not always understand the special encapsulations that are possible with isdn4linux, especially syncppp. To change this, you need to patch tcpdump.

Michael Stiller michael@toyland.ping.de wrote on 23 Oct 1996:

Tip for ftp:

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

There is the patch: "tcpdump-3.0.4-1-isdn.dif.gz"

and the rest is at:

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

You might need to hack some, depending on the name of your ISDN interface (mine is bri0). By default, it recognizes only isdn* and isdnY* as interface names.

Henning Schmiedehausen henning@pong.iconsult.com further wrote on 30 Oct 1996:

After finding the patch from Eberhard Moenkeberg at ftp.gwdg.de cannot dump cisco HDLC, I made my own patch for tcpdump-3.0.4 that asks the interface which encapsulation it used and sets itself accordingly. The patch is against a tcpdump-3.0.4-1.tar.gz distribution, for example at
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/tools
This patch recognizes rawIP, ISDN-IP and CISCO-HDLC and can dump these packets.
(The patch was attached to the message - it should be easy to find in the mailing list archive - Ed.)

Sascha Ottolski sascha@alzhimer.isdn.cs.tu-berlin.de gave the following tip on 5 Nov 1996:

This is a isdn4k-utils-2.0/tcpdump-3.0.3-isdn.diff ! It work, if one makes some changes: In the file tcpdump-3.0.3-isdn/libpcap-0.0/pcap-linux.c after patching you find the following: else if (strncmp("ppp", device, 3) == 0) Either you name your ppp devices pppX instead of ipppX, or change this line, e.g. else if (strncmp("ippp", device, 4) == 0) ^^^^ ^^ Then tcpdump will also recognize syncPPP. At least it does for me.

7.15 trouble_locatecrash: My isdn driver crashes my machine! Since I've configured it as a module, the addresses change each time it's loaded. How can I find out where the driver is crashing?

The driver should be loaded with the command "insmod -m". The output has to be transformed somewhat to be a form similar to System.map. You can do it like this:


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

(The line ending with "|" has to have the following text on the same line!) iSystem.map should then be used instead of System.map for finding the error.

7.16 trouble_lotsdebug: My hard disk becomes very active when isdn4linux run. How can I turn this off?

Check whether the reason for the hard disk activity is caused by the amount of messages written into the logfile. If this is the case, you can reduce the output by:


isdnctrl verbose 0

and/or by removing the "debug" option for ipppd.

7.17 trouble_oldhardware: Maybe my hardware is too slow?

Actually, properly configured, isdn4linux will on much smaller machines, than you might expect (still running an elder version on my 386-25, which used to have only 4MB RAM). However, newer isdn4linux/kernel versions need more memory, and may require some tweaking before they run on very old hardware. Have a look at question trouble_outofbuffers when running out of buffers. See question trouble_littlememory on how to reduce the amount of memory needed.

7.18 trouble_outofbuffers: I get messages like "HSCX RME out of buffers", "HSCX RFP out of buffers", "HSCX B EXIR 10" in the syslog?

These errors happen when i4l is not able to process its buffers fast enough. They are often caused by bad sound cards or their drivers when they disable the interrupts too long! It may also happen on old hardware (happened to the author of this FAQ when using vbox on an old 386-25 with only 4MB RAM). You may be able to work around it by increasing the number and size of the buffers. Check the source code header files for definitions like:


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

The first two influence the size, the last one the maximum number of buffers.

7.19 trouble_noresetinit: After a soft reset, my card does not initialize correctly.

After you stopped your system with the reboot command or with Ctrl-Alt-Del, press the reset button (=hard reset). Sometimes the card needs to receive a hardware signal to reinitialize properly.

7.20 trouble_noisdnctrl: When attempting to use isdnctrl, I get the error "/dev/isdnctrl: No such file or directory"?

First check whether there is a device /dev/isdnctrl0. If there is, just create a symbolic link by executing


ln -s /dev/isdnctrl0 /dev/isdnctrl

If the device is not there, run the script scripts/makedev.sh, which is part of the isdn4k-utils.

7.21 trouble_noisdnctrl2: When attempting to use isdnctrl, I get the error "/dev/isdnctrl: No such device"?

In contrast to "/dev/isdnctrl: No such file or directory" the message "/dev/isdnctrl: No such device" indicates that the device /dev/isdnctrl exists, but no ISDN device driver is available. To fix, load the ISDN modules (verify with "cat /proc/modules" that they are loaded) or compile the ISDN drivers into the kernel.

7.22 trouble_xosview: xosview doesn't show any network activity since installing i4l.

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

xosview reacts, at least for me with version 1.4, to the IP accounting in the kernel. So, configure, if necessary build a new kernel, then couple with: ipfwadm -A -a -S your-ip-address-here -D 0.0.0.0/0 ipfwadm -A -a -D your-ip-address-here -S 0.0.0.0/0 (I don't know who it works with variable IP addresses. I have a fixed address.)

7.23 trouble_unknownhost: When I for example from a W95 box call up a page with Netscape, I only get the answer "unknown host".

What is entered on the "Win95 box" for the name server? As long as the router has no name server of its own, then the provider's name server of course has to be entered on all computers on the LAN.

7.24 trouble_noroute: Addresses are now found, but now I get "no route to host".

Please check:

7.25 trouble_nolocalnet: After booting, my local network can no longer be reached. I use the network interface ippp0 with ifconfig 0.0.0.0; the default route points to ippp0.

Wolfgang Barth wrote on 5 Jan 1997:

I've noticed that after the first connection via ippp0 that the local network can again be reached. Then the address 0.0.0.0 is no longer listed in ifconfig for ippp0, but instead the address assigned from the pool by the PPP partner. This was already discussed in de.comp.os.linux.networking, along this possible solution: Simply set ippp0 to a dummy IP number from the pool. Then the local network will have problems after booting, even with the default route, and the IP number in ifconfig will be overwritten anyway.

7.26 trouble_unauthorizedcodechange: When HiSax starts, I get the error messages 'Approval certification failed, unauthorized source code changes'?

Since the certification of the HiSax driver is only valid for unchanged source code, the source code is protected by a checksum. When you get this message, then either you have changed the source code yourself, or the author did not update the checksum when changing the source code (reason could be that the complete certification tests have not yet been run on the changed code).

7.27 trouble_crcerror: How can I see the number of packets for HiSax with invalid CRC?

With HiSax you can view the accumulated number of hardware CRC errors with:


hisaxctrl <id> 0 0

and reset them with:
hisaxctrl <id> 0 99

It is ok if you have the occasional CRC error, but if you see a lot of errors then check your cable termination & connectivity.

7.28 trouble_amproglibtool: When compiling isdn4k-utils I get the error 'AM_PROG_LIBTOOL not found'?

You have to regenerate the files from automake/autoconf with your version of automake/autoconf. You can do it with the following shell script (assuming you stored the source code for the isdn4k-utils under  /isdn/isdn4k-util):


cd ~/isdn/isdn4k-utils
for i in capi20 capiinfo capifax capiinit rcapid ; do
 cd $i
 rm -f lt*
 aclocal
 libtoolize --force --automake --copy
 automake --add-missing --copy
 autoconf
 cd ..
done
for i in eicon isdnlog ipppd ; do
 cd $i
 autoconf
 cd ..
done

7.29 trouble_hisaxparams: HiSax does not work - how can I set the HiSax parameters for newer Linux kernels?

Unfortunately the udev/hotplug mechanism of current kernels (written in November 2005) loads hisax without the needed parameters. To check whether this is the issue of missing parameters unload the hisax module with rmmod:


rmmod hisax

then insert the kernel module with the correct parameters again, e.g.:
modprobe -v hisax type=35 protocol=2

In case this solves the issue, you can permanently fix it by providing the needed parameters to the module loader, e.g. in /etc/modprobe.d/hisax on a Suse distribution.


Next Previous Contents