ISDN support for RedHat Linux

mauli kernel: isdn_net: isdn0 connected


* Doesn't RedHat already have ISDN support?
* What is wrong with ISDN support in RedHat Linux?
* What other alternatives do I have?
* What are the disadvantages of your solution?
* Setup, step by step
* Debugging
* Why don't you tell RedHat about it?
* Debugging
* Feedback

Doesn't RedHat already have ISDN support?

That is true. RedHat 6.x has some form of ISDN support. Older versions don't have ISDN support, and even the ISDN support for the 6.x versions looks like an afterthought. If you know other Linux distributions, you will notice that it has a close resemblance to that of SuSE Linux. Now, if you know that RedHat aquired DELIX, a german Linux distributor and competitor of SuSE, if you add the fact that ISDN support appeared closely after that, and if you know that a distribution without ISDN support will not sell here in Germany, you may assume that the ISDN support was done by the former DELIX people, and you're probably right with that.

What is wrong with ISDN support in RedHat Linux?

DLD was a competitor of SuSE, and SuSE is more a distribution targeted to the desktop and to former windows users. This explains why the current ISDN support is more targeted to users, and not to servers. They speak about "providers" and not "network connections". This makes a big difference if you are a network admin and not some Windows user.

What other alternatives do I have?

I'm using RedHat since about version 4.0. At that time there was no ISDN support, so I had to write my own. Because I'm using ISDN mostly as a communication between servers, my solution is much more network centric than the ISDN support in the current RedHat versions. It handles an ISDN line as a network connection, and configuration is simliar to that of the ethernet devices.

Let me repeat this in more depth: RedHat has had all necessary hooks for adding other network devices in their scripts since at least version 4.0. The additional scripts do not need any changes in the existing network configuration. This means that the old network stuff was really well designed. I don't know why they choose to add another solution with a completely different interface for version 6.x. I assume that the ISDN support did not come from the RedHat people, but from the former DELIX staff, that did not know or not care about the existing things.

My solution will add two network startup script for ISDN network devices. The interfaces are configured similar to ethernet devices using configuration scripts named ifcfg-xxxx where xxxx is the name of the device. You don't need any changes to other scripts (but you have to configure your ISDN card using other configuration files of course).

The scripts runs since version 4.0 of RedHat Linux with only minor changes. I did recently upgrade two machines from RedHat 4.1 to 6.1 and both came up with the ISDN devices configured (dialout was disabled, but this was caused by a change of the default setting in the kernal ISDN support).

What are the disadvantages of your solution?

Yes, there are some disadvantages. Here is a list:

I would assume that both problems could be solved with some work, but I do not have an unsupported card, or a need for PPP, so I didn't put any more work into it.

On the other side, if you have a matching card and don't need PPP, the solution is almost perfect (in my eyes, of course).

Setup, step by step

Install the scripts

First, get the ISDN scripts named ifup-isdn and ifdown-isdn from, and copy them into /etc/sysconfig/network-scripts. You may notice that there are other scripts with similar names already in that directory.

Configure your ISDN card

Make sure that your ISDN card works with ISDN support compiled as a module. Be sure to enter the hisax options needed into /etc/conf.modules. You may have to add a line like
options hisax type=27 protocol=2

You must be able to say

modprobe hisax.o

and have all modules loaded correctly without errors. Otherwise something is wrong and the scripts will not work.

Configure an ISDN network device

ISDN network devices have names isdnx, where x is a number. You may have as many network devices as the kernal permits. For each device needed, you have to create a file named ifcfg-isdnx (replace n by the number of the device - just start counting from zero). The file must be placed into the /etc/sysconfig/network-scripts directory. If you have one or more ethernet cards, you may notice that there are other files with similar names already in this directory.

Edit the file. Here are the possible settings:

Parameter Description Example
DEVICE Specify the device. Be sure to use the same device name that is used in the file name. DEVICE=isdn0
IPADDR Specify the IP address of the interface. IPADDR=
EAZ Specify the EAZ for this ISDN device. EAZ=1234567
POINTOPOINT Specify the remote IP if this is a point to point connection. POINTOPOINT=
NETWORK Specify a remote network. If you specify both, a point to point connection and a network, a pointopoint connection will be established and a network route will be setup for this interface. If you do only specify a network, this will be a network connection. In most cases you do not need the NETWORK parameter. NETWORK=
NETMASK Specify the net mask for the remote network. This parameter does only make sense together with the NETWORK parameter. NETMASK=
INPHONE Specify the phone numbers that are allowed to call in. You may use wildcards here, as with isdnctrl. INPHONE=897672398
OUTPHONE Specify the phone number to dial to establish the connection. This is often the same phone number as INPHONE, but with a 0 prepended. OUTPHONE=0897672398
CALLBACK If specified, may be "in" or "out". Enables callback for the connection. Beware: You must configure both interfaces to do callback, one using the "in" setting, and the other with the "out" setting. CALLBACK=out
CBDELAY Gives the callback delay (how log should the called party wait before calling back). The default is 5 seconds. A good value for most cases is 2 seconds. Must not be specified if callback is not enabled. CBDELAY=2
HUPTIMEOUT Specify the hangup timeout for incoming calls in seconds. The connectio is terminated if there is no data for this period of time. HUPTIMEOUT=90
ONBOOT This option was added by the RedHat upgrade routine. It specifies if the device is activated when booting the machine. You would usually say "yes" here. ONBOOT=yes
BOOTPROTO Specifies if you want to use bootp or dhcp with this interface. Set to "none". BOOTPROTO=none

A sample configuration file would be:


Bringing the device up

If you are sure that your config is right, you may bring the device up. Use

/sbin/ifup isdnx

to do this (be sure to replace the x above).

To bring the device down, use

/sbin/ifdown isdnx

ifconfig will show the new device together with the ethernet interfaces.


If things do not work as expected, /var/log/messages is your friend. The ifup-isdn script enables some debug messages, so just have a look into your log files.

First, make sure that your modules are loaded, that the interface is up (use ifconfig), and that the hisax driver is configured correctly.

Second, ping the remote destination. Is the kernal calling out? If it does not, go back to step one.

Third, does the log of the remote host show an incoming call? If so, is it accepted or ignored? If the call is ignored check the setup of the INPHONE parameter at the destination. If the remote host is never called, your OUTPHONE parameter for the calling host may be wrong.

Last, if the call is accepted, but you cannot get packets through, your routing is probably messed up. Check if the IP addresses for both interfaces are configured correctly, and that you don't have any route collisions.

Why don't you tell RedHat about it?

I did, but they did not care. I sent mail to several addresses at RedHat but I got not even a reply. Maybe they are too busy supporting Linux developers:-)


That's it! If you think there are important things missing from this article, feel free to contact me. Remember: If you don't share your information with others, it looses it's value (of course, this is the reason, why I did this web page). Other feedback is also appreciated! If you think, this page sucks, please tell me about it.


Valid HTML 4.0! redhat-isdn.html; last change: 03-Sep-2000