6006 lines
260 KiB

<!doctype linuxdoc system>
<title>FAQ for isdn4linux
<author>Matthias Hessler (<tt><htmlurl url="" name=""></tt>)
<date>v2.0.103, 15 January 2006
If you are reading this FAQ online, you may consider downloading the whole
thing, and reading it offline (much cheaper). To download the latest
version of this FAQ in TXT/HTML/SGML format, go to the homepage of this FAQ:
<url url="">.
A German translation of the FAQ is available at:
<url url="">.
This FAQ answers questions that were frequently asked in the newsgroup
de.alt.comm.isdn4linux. It contains questions any user should
know about ISDN under Linux using isdn4linux, as well as hints on how
to best make use of all the features isdn4linux provides.
Version 2 of the FAQ is derived from an earlier version which had become
outdated at the time of this writing. To obtain information on old versions
of isdn4linux (1997 and earlier) please have a look at the FAQ version 1.3.4.
About the format of this FAQ:
The main basis of this FAQ is the i4l mailing list (see question
<ref id="docu_mailinglist" name="docu_mailinglist">). I've treated the
knowledge gained from reading as public domain, without quoting the author of
the original mail. The FAQ is now written in SGML, as this format is flexible
to convert into any other form of documentation (though some restrictions
apply). The FAQ is now maintained in English since German-speaking people can
easily follow the mailing list/newsgroup (or search in the archives). Whoever
wants to translate back to German is welcome to do so!
The countless links in this documents are not always complete and I'm sure many
are no longer correct. I do not have the time to check them all. If you
discover a bad link, please let me know (I'll try to install some automatic
checking when I have the time).
Additions, improvements and other suggestions are always welcome (also
correction of typographical errors!), preferably send "diffs" from the SGML
version. Thank you very much in advance!
Send feedback about this FAQ to:
<tt><htmlurl url=""
<tt><htmlurl url=""
The newest version of this FAQ can be found at:
<tt><url url=""></tt>
<tt><url url=""></tt>.
This FAQ is protected by the GNU General Public License (GPL) Version 2;
(C) 1999-2002 Matthias Hessler (for version 2.0)
Distribution under the terms of the GPL is welcome. However,
we offer NO GUARANTEES for the information herein. Please read the GNU
General Public License for further details. A printed version is available
from Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
An electronic version is available from the author.
<!-- Table of Content
<!-- General Section: About isdn4linux, features
<sect> general: General information about isdn4linux
<label id="general">
<sect1> general_i4l: What is isdn4linux?
<label id="general_i4l">
isdn4linux is a set of kernel modules which are part of the Linux
kernel. It consists of the main module <tt/isdn/ and the
actual hardware driver that control some specific card.
In addition, the package <tt/isdn4k-utils/ contains utilities to
make use of ISDN specific features.
Please note that since kernel 2.6.0 isdn4linux is considered legacy.
It has been superseded by the new mISDN drivers (see question
<ref id="general_misdn" name="general_misdn">.
<sect1> general_misdn: What is mISDN?
<label id="general_misdn">
mISDN is the successor of isdn4linux, and also consists of kernel modules
that are part of the Linux kernel. The mISDN modules have been rewritten
from scratch since the old isdn4linux modules were difficult to maintain.
The new mISDN modules are based on the CAPI interface (see question
<ref id="feature_capi" name="feature_capi"> for more details on the CAPI
interface). Not all ISDN cards supported by isdn4linux have been/will be
ported to mISDN. However, it is planned to create a compatibility layer to
allow migration of the existing isdn4linux drivers. Also, ipppd would be
replaced by the standard pppd once pppd works as well as ipppd currently does.
For the moment, isdn4linux can still be used in parallel with mISDN, but this
may change in the future.
For more technical and configuration information about the mISDN driver
see question <ref id="config_misdn" name="config_misdn">.
<sect1> general_hardware: What hardware is supported by isdn4linux?
<label id="general_hardware">
Generally, isdn4linux can control ISDN cards that are connected to the PC's
ISA or PCI bus. Also a few PCMCIA cards are supported. However, isdn4linux can
<bf/not/ make use of any devices connected via a serial or parallel
interface (which are called 'terminal adaptors'), with only a few exceptions:
the Creatix/Teles S0 box for the parallel port, and the Gazel 128 USB.
For more details on which cards are supported see section
<ref id="hardware" name="hardware">.
<sect1> general_features: What features are supported by isdn4linux?
<label id="general_features">
Basically, isdn4linux can receive and transmit data via ISDN in several ways
(X.75, HDLC, raw ip, synchronous ppp, asynchronous ppp, V.110). Some of its
utilities offer additional features. Two examples are <tt/isdnlog/, which
allows logging of and reaction to ISDN events (including calculating any charges);
and <tt/vbox/, which provides voice answering machine capabilities. For more
details see the section <ref id="feature" name="feature">.
<sect1> general_countries: Which countries are supported by isdn4linux?
<label id="general_countries">
At least all countries which use Euro-ISDN are supported, however some
pecularities apply. To find more about your country, check the section
<ref id="countries" name="countries">.
<sect1> general_docu: Where do I find more documentation, how-to's, helpful tips
&amp; tricks?
<label id="general_docu">
Besides this FAQ, take a look at the various man pages and Readme's that come
with the isdn4linux package. Then there is the isdn4linux website:
<url url="">. There is also a mailing list on
isdn4linux which will give you the most up to date information. To find out
more about these great information sources, see section <ref id="docu"
And: check out all the great links listed in question
<ref id="config_links" name="config_links">!
You may find information in your language, or information specific to your
linux distribution.
<sect1> general_getlatest: Where do I get the latest version of isdn4linux?
<label id="general_getlatest">
The latest version of the kernel drivers should be found in the Linux
kernel. However, sometimes the Linux kernel does not have the latest version or
does not yet support your ISDN card. Additionally, you may need to use the
isdn4k-util package. In those cases you could try to get the very latest
version that is currently in development. See the section
<ref id="distrib" name="distrib">.
<sect1> general_contacts: How can I get in contact with the developers?
<label id="general_contacts">
You can contact the isdn4linux developers through the
website. Have a look at <url url="">.
<!-- Development & Distribution -->
<sect> distrib: Distribution
<label id="distrib">
<!-- Who are the developers? -->
<sect1> distrib_getlatest: How can I get the latest isdn4linux?
<label id="distrib_getlatest">
There are different ways, depending on your kernel. Unless you are an
experienced user of Linux, you should use a recent kernel (=first option).
<item>You have a recent kernel (at least 2.0.36/2.2.11/2.3.14):
Great choice, you have already the current kernel ISDN stuff.
Additionally, you just need to get the current isdn4k-utils package from
<url url=""> - unless it's already
included in your distribution.
<item>You have an older kernel (before 2.0.36/2.2.11/2.3.14):
An upgrade to a recent kernel is HIGHLY recommended. And it is MUCH easier
to do a kernel upgrade than to get ISDN to work with your older kernel.
Ok, now if you still want to keep your old kernel, here is how to do it:
First you have to identify the correct CVS extract for your kernel version
(CVS is the version control system the ISDN developers use to develop
ISDN4LINUX). Take a CVS snapshot that is dated with about the date when your
kernel came out. You find the kernel patches and the old isdn4k-utils packages
on <url url="">
or on one of its mirrors
(see <url url=""> on how to find
<item>As a developer:
If you want to participate in the development of i4l, you can get the very
latest stuff via CVS. For this, see the question about access to CVS:
<ref id="distrib_cvs" name="distrib_cvs">.
<sect1> distrib_cvs: How can I access the source from the current
development/what is the CVS tree all about?
<label id="distrib_cvs">
CVS - Concurrent Version System:
This is a multiuser/server extension to RCS (Revision Control System).
The I4L drivers are developed under CVS, and there is a server
( with a CVS tree to which all developers have
access. In addition, Fritz has configured anonymous read-only access
to the CVS tree . If you must have the very latest versions, you can
get them there, however they may contain more bugs than the released
Here is how to get the latest version:
<item>Create and go to the directory where you want to store i4l
<code>mkdir ~/cvs; cd ~/cvs
cvs -d login</code>
<item>Log in (asks for a password, enter <em>readonly</em>)
<item>Get the isdn kernel driver stuff (same hierarchy as in the linux source)
<code>cvs -d checkout isdn</code>
<item>Get the utility package into the current directory
<code>cvs -d checkout isdn4k-utils</code>
If you want to get the latest version for kernel 2.0.x rather than for the
latest kernel, then you have to give the additional option `-r':
<code>cvs -d checkout -r isdn4kernel_2_0 isdn</code>
<item>After having checked out, further updates can be done by first
changing into <tt>isdn</tt> or <tt>isdn4k-utils</tt> subdirectory and
<code>cvs update -P -d</code>
Tip: since cvs stores the password on your first login, you don't need to login
again when updating.
No newbie questions on this PLEASE! Use the source, Luke!
People who want to <em>continuously</em> help develop isdn4linux by writing
new drivers etc. can get a real account for full access. In this case write
an email to Fritz Elfert <tt><htmlurl url=""
<!-- Features
<sect> Features
<label id="feature">
<sect1> feature_not: Which ISDN features cannot be offered by isdn4linux?
<label id="feature_not">
Some ISDN features are device-specific and cannot be activated by
isdn4linux for other devices, unless isdn4linux were to falsify
the TEI (which would probably confuse the other device).
Such device-specific ISDN features are, among others: rejection of a
waiting call, caller id on/off, hold, conference calls, differing COLP/CLRP.
<sect1> feature_data: Which ISDN data transmission modes are supported?
<label id="feature_data">
These low-level formats are possible:
<item> 56k asynchronous : no
<item> 64k synchronous : yes
<item>128k synchronous : yes (channel bundling - see the question
<ref id="feature_2channel" name="feature_2channel">)
These level2 formats are possible:
These encapsulations are possible:
<item>Sync PPP
<item>X.25 (requires 2.1 or newer)
<item>cisco and cisco-h
<item>cisco-hk (=cisco with keepalive; requires 2.1 or newer)
<item>plus a few specialities: have a look at the man pages.
Please note that X.31a is supported as X.25 on top of ISDN, while X.31b
is not supported (neither in the B channel, nor in the D channel variation).
<sect1> feature_voice: Has isdn4linux voice support (e.g. answering
machine, voice-over-ip gateway for H.323 clients)?
<label id="feature_voice">
Yes, voice support is included in the current version of isdn4linux.
For an answering machine you can either use &dquot;vgetty&dquot; from Gert
Doerings &dquot;mgetty+sendfax&dquot;, or &dquot;vboxgetty&dquot; from
Michael Herold, which is made especially for isdn4linux.
The latter is part of the isdn4k-utils package, which can be found on:
<tt><url url=""></tt>
Also, you can use isdn4linux as a voice-over-ip gateway to let
H.323 clients (like Voxilla, Netmeeting) call normal telephones, and/or
the other way around. For configuration see question
<ref id="config_h323" name="config_h323">.
<sect1> feature_fax: Can I fax with isdn4linux?
<label id="feature_fax">
<item><bf>For passive cards: Yes</bf>. Since 2005 the GPL software ivcall
is able to send and receive voice calls and faxes even via passive cards.
It makes use of the spandsp library which is part of the Asterisk project.
You can find it on:
<tt><url url=""></tt>
An alternative project working on this problem existed (i4lfax) but has not
made any progress since 1999. For more info on its status have a look at:
<tt><url url=""></tt>
Also, an idea exists to extend the new modular mISDN with layer 2 and layer 3
protocols for fax. Once this works (e.g. with the Sedlbauer Speedfax card)
then the layer 1 protocol (modulation/demodulation) could be also be
implemented via the spandsp library.
<item><bf>For passive cards from AVM: Yes</bf>. AVM recently released a
binary CAPI 2.0 driver which supports faxing. However, the setup is rather
complicated. Get a start on:
<url url="">.
Here is a German website which has some nice installation instructions:
<tt><url url=""></tt> or
<tt><url url=""></tt> or
<tt><url url=""></tt>
Please also have a look on the mailing list for tips how to do it,
and what the consequences/disadvantages are.
<item><bf>For the active card AVM B1: Yes</bf> (its firmware has implemented
fax as one of its features). Get the newest stuff from:
<tt><url url=""></tt>
However, it has been reported that setting it up properly is very tricky.
Another site which could be helpful is:
<tt><url url=""></tt>
<item><bf>For the active Hypercope PCI cards HYSDN Ergo2 and
HYSDN Metro4: Yes, after upgrade with a special fax card</bf>.
The setup is similar to that of an AVM B1, but may require extra patches.
<item><bf>For the active Eicon Diva Server cards (except Diva 2.0Pro):
Yes</bf>. Have a look at README.fax and README.eicon in the
<tt>isdn/Documentation/isdn</tt> directory, as well as:
<tt><url url=""></tt>. The Eicon Diva Server cards
allow faxing with class 2 commands.
<item><bf>For semiactive cards Sedlbauer Speedfax+ and Siemens I-SURF 1.0: Yes</bf>
But currently this requires some manual work. Check the mailing list on how
to do it (special patch needed). Only class 1 fax commands are supported.
You can obtain the patch from:
<tt><url url="//"></tt>
The patch is not needed if your kernel is 2.2.15 or later.
You have to enable the kernel option for FCLASS2 (CONFIG_ISDN_TTY_FAX=Y).
Also, you need to load the firmware of the card (part of the isdn4k-utils) with
hisaxctrl &lt;driver_id&gt; 9 ISAR.BIN
Then initialize the ttyI* interface with:
and use a normal Hylafax class 1 config file, where you've replaced
non-supported commands (flow control,...) by dummies.
For the I-Surf 1.0 also check question <ref id="hardware_isurf" name="hardware_isurf">.
If you do want to fax now, your best choice is to install an analog fax modem
along with your ISDN card. For companies who want to set up a fax server
servicing multiple connections you could also have a look at the active
ISDN cards.
More information for setting up a fax server with hylafax can be found on:
on the web site for Hylafax: <url url=""> or on
<url url="">.
<sect1> feature_modem: Can isdn4linux connect to/be called by an analog
<label id="feature_modem">
Generally: <bf>NO</bf>. It may only work for cards with which you can fax: see
question <ref id="feature_fax" name="feature_fax">.
For the Sedlbauer card, you can give the following command on the ttyI*:
<sect1> feature_divert: Is it possible to initiate call forwarding with i4l?
<label id="feature_divert">
Call diversion features have been implemented recently. Use the new
program <tt>divertctrl</tt> in conjunction with the HiSax driver.
If you make use of capi4linux, then you find a similar program named
<tt>capidivert</tt> at:
<url url=";kai/i4l/">.
For now this is something only for the more experienced user, as so far there
is no howto and only little documentation, and it is not automatically included
in most distributions. However, it can be used with active ISDN cards.
In the Netherlands, the keypad protocol can be used as an alternative. To use
it you just dial with the usual dial command from an ttyI device:
<sect1> feature_ipx: Can I route ipx/spx over ISDN with Linux?
<label id="feature_ipx">
Yes, set up an ISDN interface with encapsulation <tt/ethernet/, and use
IPX framing ETHERNET_II. <em/mars_nwe/ can do the rest (e.g. routing).
Also, you can route ipx with ipppd, see question
<ref id="syncppp_ipx" name="syncppp_ipx">.
To use pppd for ipx, you have to give it the compile option IPX_CHANGE.
However, be careful when using dial out on demand (dod), since frequent ipx
broadcasts may cause a dod disaster (see question
<ref id="dod_disaster" name="dod_disaster">).
<sect1> feature_2channel: Does isdn4linux support channel bundling?
<label id="feature_2channel">
The current version of isdn4linux support 2 methods of channel
<item><bf>MPPP</bf> (based on sync PPP)
<item><bf>Raw bundling</bf> (configured by so-called slave channels)
Both variants have their own advantages and disadvantages.
See section <ref id="2channel" name="2channel">.
Bonding (16bit channel) is not supported,
since it can not work reliably when the dialup connections have deviating
Warning: Channel bundling saves time, but not telephone charges.
It is useful only if you really need the extra bandwidth.
<sect1> feature_diald: Can I combine isdn4linux with diald?
<label id="feature_diald">
Yes, you can. You have to configure it to use the ttyI* devices to dial
out. E.g. like this:
/usr/sbin/diald /dev/ttyI4 -m ppp [...]
where [...] stands for further dialout parameters.
The recent diald releases contain configuration files for ISDN. See
<url url=""> for details.
<sect1> feature_dod: Does the driver support &dquot;dial on demand&dquot;?
<label id="feature_dod">
Yes. If a network interface (e.g. &dquot;isdn0&dquot;) is set up, the driver
will dial the number. If in addition a hangup timeout (Idle Timeout) has been
given (like: <tt>isdnctrl huptime &lt;interface&gt; &lt;time&gt;</tt>), then
the driver will automatically hang up when no data was been transferred over
the interface for &gt;time&lt; seconds. However, with syncPPP there are
problems (see the syncPPP section).
Also look at the dialmode description (see question
<ref id="dialout_dialmode" name="dialout_dialmode">).
You should definitely be very interested in the large section of this FAQ that
talks about the dangers of unwanted dialouts: (<ref id="dod" name="dod">).
<sect1> feature_sms: Can I send SMS (short messages) to my mobile phone
via ISDN?
<label id="feature_sms">
Yes, you can use the program <tt>yaps</tt> to do this. However, due to some
pecularities in the SMS-callcenter's ISDN connection, you have to compile the
kernel with the options <tt>Disable send complete</tt> and
<tt>Disable sending llc</tt>. For the new CAPI 2.0 interface a patched
version of yaps, <tt>capi4yaps</tt>, is available on
<url url="">.
Please note that mainly German providers support sending SMS via ISDN
connection, in other countries this might not work. Dutch as well as UK
SMS callcenters seem to not support this feature. Please let me know if
you have additional information on this.
A useful sample config for yaps you might find on:
<url url="">
Another program to send SMS is <tt>asterisk</tt>. Have a look at:
<url url=""> and
<url url="">.
One advantage over yaps is that it can also receive SMS, for Germany
(you have to register for this first by sending a specific SMS -
otherwise the SMS will be communicated to you by an automated voice
Yet another program to send SMS is <tt>smsclient</tt>. You can find it on:
<url url="">.
<sect1> feature_btx: Is the German videotex/Btx/Datex-J possible with
<label id="feature_btx">
Yes, it works with the modem emulation with the ttyI* devices. There is
a special register to set for videotex (ATSx=y - see the Readme's)
Warning! XCept (formerly Xbtx) has an ISDN configuration option. This
should NOT be used. XCept should be configured as if a normal modem
were being used.
<sect1> feature_clock: Can I set the clock of my computer with ISDN?
<label id="feature_clock">
Yes. Isdnlog offers this feature with option &dquot;-t&dquot;. Unfortunately,
the seconds are not transmitted via ISDN, and the transmitted time is
not very accurate - depending on the ISDN equipment of your
telephone company there may be a deviation of several minutes (!).
It's better to get a PC clock that is set by radio signals and
check it with, for example, xntp. You can also use a time server in
the Internet with &dquot;netdate&dquot; or &dquot;rdate&dquot;.
Check out the following urls on information about using time servers:
<item> <url url="">
<item> In German: <url url="">
<item> In German: <url url="">
<sect1> feature_dosemu: Can I use isdn4linux under dosemu?
<label id="feature_dosemu">
Yes, you can! Steffan Henke
<tt><htmlurl url=""
name=""></tt> wrote on 25 Oct 96:
In dosemu.conf it is enough to enter a virtual com port,
(for example com2) that can be used with e.g. Telix or
Terminate: serial { com 2 device /dev/ttyI3 }
Access with Fossil is possible if (included with
dosemu) is started. Tested with the following configurations:
- Kernel 2.0.21, Teles driver incl. Karsten's patches
- Kernel 2.0.21, HiSax
<sect1> feature_capi: Is there a CAPI interface available?
<label id="feature_capi">
Currently, these cards support the CAPI 2.0 interface:
<item> the active card AVM B1.
<item> the active DIVA Server cards from Eicon.
<item> the active cards from Hypercope (HYSDN Champ2, HYSDN Ergo2,
HYSDN Metro4)
<item> the passive Fritz card from AVM. However, please note that you
have to download and manually install the binary drivers for this from
AVMs ftp server. See the following web site for a nice howto:
<url url="">. There was also
lots of stuff written in the mailing list on this.
Here is a German website which has some nice installation instructions:
<tt><url url=""></tt> or
<tt><url url=""></tt> or
<tt><url url=""></tt>
Please note that due to its binary nature, this driver will not work
if your distribution is incompatible with it (e.g. based on 64 bit).
This interface follows the official CAPI 2.0 standard that was established
recently for Linux by the CAPI Association (see
<url url="">).
Since kernel 2.6.0 the CAPI interface has been used as the general
interface, also for other cards. For passive cards, the new driver
mISDN will replace the old hisax driver once it is fully functional.
There are no plans to implement a CAPI 1.1 interface.
<sect1> feature_uus: Is UUS (user to user signaling) supported?
<label id="feature_uus">
Yes, isdn4linux could support both sending and receiving, but the
implementation is currently rather incomplete due to the unclear legal
situation for using this facility. Receiving UUS is only possible through
the debug interfaces. Sending is supported in connection with the diversion
services (when rejecting a call or announcing a busy condition), but not
on an ordinary call. It is recommended to use subaddressing (see question
<ref id="feature_subaddressing" name="feature_subaddressing">) instead.
Please note that sending UUS it is not a free service (receiving is free),
at least with some German phone providers you have to pay extra for it
(also have a close look on the usage conditions). Additionally, please note
that if you are connected through a PBX, it may filter out all the UUS
<sect1> feature_subaddressing: Is subaddressing supported?
<label id="feature_subaddressing">
Yes, isdn4linux does support subaddressing (available in France).
To configure it, give HiSax the number in this format:
<tt>&lt;number&gt;.&lt;subaddress&gt;</tt>. However, you may have to order
it separately and pay extra for receiving it (sending is free), depending
on your ISDN provider.
Additionally, please note that if you are connected through a PBX, it will
most likely filter out all the subaddressing stuff.
<sect1> feature_gsmv110: Can I connect from my PDA via GMS cellular phone
to isdn4linux?
<label id="feature_gsmv110">
Yes, if the provider of the cellular phone has a GSM to ISDN/V.110 gateway.
This has been reported to work from a PalmPilot to isdn4linux with V.110.
See question <ref id="config_gsmv110" name="config_gsmv110"> for details on how to configure it.
<sect1> feature_reversedcard: Can isdn4linux log ALL actions happening on the
ISDN bus (dual mode/reversed card/COLP/...)?
<label id="feature_reversedcard">
Yes, isdn4linux offers several possibilities to do this. Have a look at
question <ref id="isdnlog_reversedcard" name="isdnlog_reversedcard">.
Please note that you may also use the software ISDN Sniffer for this,
see the German web site
<url url="">.
<sect1> feature_chargeint: Can isdn4linux hang up just before the ISDN
provider would charge me for another unit?
<label id="feature_chargeint">
Yes, isdn4linux can do this. Check out section <ref id="chargeint" name="chargeint">.
<sect1> feature_eurofile: Can isdn4linux download or offer files via EFT
(Eurofile transfer)?
<label id="feature_eurofile">
Yes, isdn4linux offers special tools for this which are part of the
<sect1> feature_leased: Can isdn4linux handle leased lines (e.g. D64S)?
<label id="feature_leased">
Yes, isdn4linux can handle leased lines (explained in the glossary:
<ref id="glossary_leased" name="glossary_leased">). Have a look at section
<ref id="leased" name="leased">.
<sect1> feature_pointtopoint: Can isdn4linux work in point-to-point
mode as well as in multi-device mode?
<label id="feature_pointtopoint">
Yes, isdn4linux supports both. Check the glossary to understand the
difference: <ref id="glossary_pointtopointmode" name="glossary_pointtopointmode"> and
<ref id="glossary_multidevicemode" name="glossary_multidevicemode">.
<sect1> feature_ntmode: Does isdn4linux support running a card in NT mode?
<label id="feature_ntmode">
Yes, isdn4linux does support it, but only for a few special cards.
See question <ref id="feature_crossedcable" name="feature_crossedcable">
for details. In the glossary there is more information on what the NT mode is:
<ref id="glossary_ntmode" name="glossary_ntmode">.
<sect1> feature_crossedcable: Can isdn4linux directly connect two
ISDN user devices (two ISDN cards) via a crossed cable?
<label id="feature_crossedcable">
Yes, isdn4linux can do this. However, this requires that the ISDN card
can run in NT mode (for details on this mode see the glossary:
<ref id="glossary_ntmode" name="glossary_ntmode">).
Only very few cards (e.g. HFC chipset) are cable of doing this.
Use the following command to start the ISDN card in NT mode:
hisaxctrl &lt;id&gt; 98 1
Make sure that the crossed cable is terminated even if it is very short!
Nothing will work without termination, not even a 1m cable. Some HFC card
already have jumpers for termination. Since TX as well as RX circuits must
be terminated with its own resistor, two jumpers should be present, like this:
> 3 RX+ 2a --[100 Ohm]----+ ---------- / ----------
> 4 TX+ 1a --[100 Ohm]--+ | | 87654321 | | 12345678 |
> 5 TX- 1b ---oJ1o------+ | |__ __|/ |/_ /_|
> 6 RX- 2b ---oJ2o--------+ |____| |/___|
It has been reported that for proper functioning even on a short cable a
termination is required at/near both ends (at the ISDN card as well as at
the connecting ISDN device).
However, this will only give you the physical connection. Up to now
isdn4linux does not (yet?) implement the higher level ISDN protocol DSS1
(this means that isdn4linux can not pretend to an ISDN device that it is
an ISDN exchange, and give it the proper ISDN commands). As a result, you can
simulate a leased line, but not pretend to be the PBX with isdn4linux.
With the newer mISDN modules the situation is better. A special user space
module is available for the emulation of a PBX. Development of a kernel module
is in progress. In any case the chipset has to support the NT mode.
<sect1> feature_lcr: Can isdn4linux do least cost routing (LCR)?
<label id="feature_lcr">
Yes, this feature is now being supported by isdnlog. What it does is that
it allows isdnlog to choose your telephone provider when placing a call
through your ISDN card, depending on the time of day and the current rate
information. Since isdnlog 4.16 an external script is called (if configured)
to change various ISP settings (e.g. DNS lookup, proxy setup,...).
Note: the ABC-extensions (s. <ref id="docu_abc" name="docu_abc">) must be
installed. Also, isdnlog should always be running (otherwise your dialout
will be delayed by 3 seconds). If the ABC-extensions are not installed,
isdnlog prints hints to the log file, which provider would have been chosen.
<sect1> feature_internetdialin: Can isdn4linux be setup such that it
dials into the Internet, whenever I call it via telephone?
<label id="feature_internetdialin">
Yes, this is possible with isdnlog. You have to configure isdnlog such that
it can execute a script whenever someone dials in. In the script you can
check for the correct telephone number, then trigger the dialin.
To access your computer then over the internet, you can then access it via
its ip address. In case of dynamic ip address assignment, you probably want
to store the new ip somehow. Storage in a html page or via dynamic DNS
may be good possibilities.
If you understand German, there was an article about exactly this setup in
ct 18/2002, page 204 (Bei Anruf Internet - Handy-Anruf l&ouml;st
Internet-Einwahl aus). Also, the following German web site explains
how to set up such a configuration:
<tt><url url=""></tt>
<sect1> feature_future: Which features are planned for the future?
<label id="feature_future">
Actually, most features have been implemented and are now being improved.
But, who knows what other interesting stuff the developers may come up.
We'll see...
<!-- Helpful docu, links, mailing list, config examples, howto's -->
<sect> docu: Documentation, Howto's, Tips &amp; Tricks, Mailing List/Newsgroup
<label id="docu">
<sect1> docu_first: What documents should I read first?
<label id="docu_first">
<item>ISDN kernel subsystem:
<item>ISDN cards:
E.g.: /usr/src/linux/Documentation/isdn/README.HiSax
<item>Synchronous PPP:
<item>Voice capability:
<item>ISDN Utilities:
Many of the utilities also have man pages!
To get a good technical overview over isdn4linux have a look at the
great whitepaper 'ISDN4Linux, CAPI4Linux, CPI4Hisax and other cute acronyms:
The ISDN subsystem in the Linux kernel', which can be found at:
<tt><url url=""></tt>
For a Suse distribution the following information might be helpful:
<item><tt>/usr/doc/packages/i4l*</tt> (for i4l in general)
<item><tt>/usr/doc/faq/faq/PPP-FAQ</tt> (for synchronous PPP)
<item><tt>/usr/doc/howto/mini/Mail-Queue.gz</tt> (for email configuration)
Also, read the excellent manual!
For a Debian distribution the following information might be helpful:
If you are reader of the German computer magazine <tt/ct/, they had very
helpful articles at least on these issues:
<item>ct 5/1998, page 224: <tt>Der erste Kontakt/Linux: Mit PPP ans Internet</tt>
<item>ct 21/1998, page 288: <tt>Reiseleiter/Internet-Anbindung f&uuml;r das LAN</tt>
<item>ct 25/1998, page 218: <tt>Bei Anruf Netz/Linux: Dial-In Server</tt>
<item>ct 7/2001, page 228: <tt>Des Surfers Bastelstunde: Mobilfunktechnik
HSCSD aussch&ouml;pfen</tt>
(also contains information on dial-in configuration without HSCSD).
<item>ct 15/2002, page 204: <tt>Bei Anruf Internet: Handy-Anruf l&ouml;st
Internet-Einwahl aus</tt>
<item>ct 3/2004, page 182: <tt>Heimserver im Eigenbau - Teil 4: ISDN-Grundlagen
f&uuml;r Linux</tt> (also contains information about the new mISDN driver).
An online version is available on:
<tt><url url=""></tt>
<item>ct 9/2004, page 100: <tt>Tux vermittelt - Linux als Telefonanlage mit
VoIP</tt> (refers to software PBX4Linux)
<item>ct 12/2005, page 116: <tt>Guter Stern vom Amt - Asterisk: Linux als
professionelle Telefonanlage</tt> (refers to PBX software asterisk)
<item>ct 13/2005, page 216: <tt>Ein Pinguin als Sparfuchs - Linux-PC senkt
Handy-Geb&uuml;hren</tt> (refers to PBX software asterisk)
Also have a look at question <ref id="config_links" name="config_links"> for
helpful links on how to configure i4l (e.g. special help for SuSE, Red
Hat, or Mandrake users).
<sect1> docu_website: Where is the official website for isdn4linux?
<label id="docu_website">
The offical website can be found at:
<url url="">.
<sect1> docu_abc: Where do I find documentation on the abc extensions?
<label id="docu_abc">
You can find it on:
<url url="">
<sect1> docu_newsgroup: Where is the newsgroup for isdn4linux?
<label id="docu_newsgroup">
The newsgroup was <tt>de.alt.comm.isdn4linux</tt>, however had been
closed down some time ago due to spam issues. To get in contact with
the developers your best choice is to use the mailing list
<ref id="docu_mailinglist" name="docu_mailinglist">. Alternatively, you find some interesting
stuff in <tt>de.comp.os.unix.linux.isdn</tt>.
<sect1> docu_mailinglist: Where is the mailing list for isdn4linux?
<label id="docu_mailinglist">
The address of the mailing list is
<tt></tt>. Before posting a message
there please make sure it is not answered in this FAQ, and that the
question has not been answered numerous times in the past (search
<url url=""> with keywords like ISDN, Linux, i4l,
isdn4linux,...). People on the mailing list get really annoyed when
the question "can I fax with my card xxx" is asked yet another time
(see question <ref id="feature_fax" name="feature_fax"> for the answer).
To reduce spam, as of 25. Aug. 2003 the mailing list has been changed
to permit posts from subscribed members only. To write, you must be
subscribed first.
When writing on the mailing list, please always provide:
<item> Your Kernel version
<item> Your i4l/hisax version
<item> Your card type
Most isdn4linux developers are present on the mailing list, and many
other knowledgeable people. <bf>English postings are very welcome,
and will be answered in English!</bf>
The mailing list contains the same messages as the newsgroup (see question
<ref id="docu_newsgroup" name="docu_newsgroup">), so you can read any
responses to your question with your news reader. A bidirectional
gateway ensures that mailing list and news are in sync.
To subscribe to the mailing list, go to the web frontend at
<tt><htmlurl url=""
name=""></tt> and
submit the filled form. After that, you will <bf>not</bf> be subscribed yet.
Instead, you will receive a confirmation at the mail address you entered
in the above form. This is a security precaution to prevent subscription
by other persons or subscription of mistyped mail addresses. When you
receive the confirmation, just follow the instructions in that mail.
(I.e.: simply reply). After having replied, you will be subscribed and
receive a welcome mail. The welcome mail will contain your password, so
you should probably keep it just in case you want to unsubscribe or change
some options at the web frontend.
To unsubscribe, go to the web frontend again, use your password to login
and then unsubscribe.
Please note: there are about 20-50 messages per day on this mailing list.
To receive only one message per day, containing all postings, have a look
at question <ref id="docu_maillistdigest" name="docu_maillistdigest">.
<sect1> docu_maillistdigest: How can I get a digest of the mailing list for
isdn4linux (only one message per day)?
<label id="docu_maillistdigest">
While filling the form as described in question
<ref id="docu_mailinglist" name="docu_mailinglist">, simply click "Yes"
at the radio-button, named "Would you like to receive list mail batched
in a daily digest". You can change this option later when logging in
the web frontend.
<sect1> docu_mailarchive: Is there an archive of the isdn4linux mailing list?
<label id="docu_mailarchive">
To quickly search for keywords, you can use
<tt><url url=""></tt>. Make sure to also select older
archive to do a complete search.
Messages are also saved (unsorted) at, collected by
month. To access the archive, you can use
<url url="">.
Other archives are:
<sect1> docu_bugtracker: Is there a bug tracker available for isdn4linux?
<label id="docu_bugtracker">
Yes, there is a bugtracker available under the following url:
<url url="">. You have to register yourself
before you can search for known bugs and enter new issues.
<!-- Supported Hardware & hardware-specific stuff
<sect> hardware: Supported hardware, its specialities, and hardware-related
<label id="hardware">
<sect1> hardware_support: Which hardware is supported?
<label id="hardware_support">
Only internal cards that plug into an ISA or PCI slot are
supported. ISA Plug&amp;Play cards are also supported, but need some additional
manual configuration by means of the <tt/isapnptools/. For details on the
configuration see question <ref id="config_pnp" name="config_pnp">.
Internal cards may be <ref id="glossary_active" name="active">,
<ref id="glossary_semiactive" name="semi-active">, or
<ref id="glossary_passive" name="passive">. Unless you have paid big money,
assume you have a passive card. More about the difference: see question
<ref id="hardware_activepassive" name="hardware_activepassive">.
Right now there is a driver for all passive card with certain Siemens
chipsets (HiSax driver). Have a look at the <tt>README.HiSax</tt> that comes
with the driver for the most up to date information on supported cards and
which parameter to pass to Hisax.
Here the status from 1st February 2002 (constantly improving):
<item>Teles 8.0/16.0/16.3 and compatible ones (like: Dr. Neuhaus Niccy
1016, Creatix 16/S0)
<item>Teles 16.3c (can not be used as reversed card)
<item>Teles S0/PCMCIA (old hardware)
<item>Teles PCI
<item>Teles S0Box
<item>Creatix S0Box
<item>Creatix PnP S0
<item>Compaq ISDN S0 ISA card
<item>AVM A1 (Fritz, Teledat 150 ISA)
<item>AVM Fritz PCMCIA
<item>AVM Fritz PnP
<item>AVM Fritz PCI (Teledat 150 PCI)
<item>AVM Fritz PCI v2
<item>ELSA Microlink PCC-16, PCF, PCF-Pro, PCC-8
<item>ELSA Quickstep 1000
<item>ELSA Quickstep 1000PCI (new name: ELSA Microlink PCI)
<item>ELSA Quickstep 3000 (same settings as QS1000)
<item>ELSA Quickstep 3000PCI
<item>ITK ix1-micro Rev.2 (also: ITK colombus card)
<item>Eicon DIVA 2.0 ISA and PCI (S0 and U interface, no PRO version)
<item>Eicon.Diehl Diva 2.01 ISA and PCI, and Diva 2.02
<item>Eicon DIVA Piccola
<item>ASUSCOM NETWORK INC. ISDNLink 128K PC adapter (order code I-IN100-ST-D)
<item>Dynalink IS64PH (OEM version of ASUSCOM NETWORK INC. ISDNLink 128K
<item>All other ASUSCOM/Dynalink cards (includes OEM versions; in total more
than 50 card versions)
<item>HFC-2BS0 based cards (TeleInt SA1)
<item>Sedlbauer Speed Card (Speed Win, Teledat 100, PCI, Fax+)
<item>Sedlbauer Speed Star/Speed Star2 (PCMCIA)
<item>Sedlbauer ISDN-Controller PC/104
<item>USR Sportster internal TA (compatible Stollmann tina-pp V3)
<item>ith Kommunikationstechnik GmbH MIC 16 ISA card
<item>Traverse Technologie NETjet PCI S0 card and NETspider U card
<item>Dr. Neuhaus Niccy PnP/PCI
<item>Siemens I-Surf 1.x (with ISAR =&lt; try type 29)
<item>Siemens I-Surf 2.x (with IPAC =&gt; try type 12 asuscom)
<item>Trust PCI (only the old one with Siemens chip;
the one called 'Wisecom' in NL does not work)
<item>ACER P10
<item>HSR Saphir
<item>Berkom Telekom A4T
<item>Scitel Quadro
<item>Gazel ISDN cards
<item>HFC-PCI based cards
<item>PCI/Winbond W6692 based cards
<item>HFC-S+, HFC-SP/PCMCIA cards
<item>ST5481 based USB ISDN adapters, e.g. BeWan Gazel 128 USB
<item>AVM A1+ is not supported
<item>PCF, PCF-Pro: up to now, only the ISDN part is supported
<item>PCC-8: not tested yet
<item>Eicon Diva U interface not tested
<item>Some cards do not work when compiled into the kernel, only when
loaded as modules.
<item>Asuscom card: please note that the ISA version is a different type
(12) then the PCI version (35 for HFC chip or 36 for Winbond chip)!
<item>To distinguish between HFC-PCI and PCI/Winbond, have a look at the
output of <tt>cat /proc/pci</tt>. You have HFC-PCI if you have a line
saying "Master capable" for your card.
<item>DataFire Micro V PCI = HFC-based card (type 35)
<item>Xircom Cardbus Eth10/100+ (PCMCIA) is not supported by isdn4linux,
but you can use it like an active external ISDN terminal adapter
(requires the xircom and serial driver).
<item>Gazel 128 USB from BeWAN Systems is supported as hisax_st5481 module.
For configuration hints have a look at:
<url url="">.
In Germany: every ISDN card which German Telekom distributed in the past is
supported (the same is NOT true for the PBX they distributed).
The following cards are definitely not supported and will probably
never be supported, since the manufacturers have not released the
specifications for their very proprietary hardware/protocols:
<item>Eumex 404
As for the Eumex 404, there is an unofficial binary driver for isdn4linux
with Suse 6.3, which may or may not help you. Use it at your own risk:
<url url="">
<sect1> hardware_activepassive: What is the difference between an active and a
passive ISDN card?
<label id="hardware_activepassive">
An active ISDN card handles most of the ISDN connection protocols
(dialing, accepting calls, etc.) itself. The card includes a kind
of minicomputer with its own software (firmware). With a passive card, the
computer in which the card is installed has to perform these functions.
In principle, both types are supported by isdn4linux. However, since
active cards have non-standard interfaces, a driver can only be made
when the producer publishes the specifications for the
interface. Also, the card's firmware needs to be made freely
available. In contrast, many passive cards share the same
chipset. Therefore many passive cards can be supported once a driver
supports this one chipset.
These active cards are currently supported by an individual driver:
<item>AVM B1
<item>AVM C4
<item>Eicon DIVA Server BRI PCI
<item>Eicon DIVA Server 4BRI
<item>IBM Active 2000 ISDN card
<sect1> hardware_recommend: Which card is recommended by the developers?
<label id="hardware_recommend">
The developers suggest using ELSA cards. ELSA has made their specifications
available to the developers, and provided a lot of support, resulting in an
excellent driver. Also, their cards are certified for usage in Germany, see
question <ref id="country_certified" name="country_certified">.
If you want to buy an active card, then the developers would recommend
the PCI Server from Eicon. The reason is that it can fax on both channels
with AT class 2 commands, and includes a V.90 modem.
The AVM B1 works also very well, and is likewise recommended. Old versions
(up to 3.0) could receive faxes only on one channel, but since AVM B1 PCI V4
all channels can be used simulateously for sending and receiving faxes.
See also question <ref id="hardware_avmb1" name="hardware_avmb1"> for more details about this card.
The Hypercope cards have also been reported to work very well, servicing
all available channels for faxing. However, they require a hardware update
for faxing and their linux driver is fairly new. See also question
<ref id="hardware_hypercope" name="hardware_hypercope"> for more details about this card.
If faxing is important for you, but you don't want to spent the money for an
active card, then a card with ISAR chipset may work well for you, e.g.
Sedlbauer Speedfax+ (in Germany you may be able to buy it at Conrads).
And if you want to buy a USB terminal adapter, then the Gazel 128 USB from
BeWAN Systems <url url=""> has been reported to work fine
with the hisax_st5481 module.
<sect1> hardware_external: Does isdn4linux support external terminal adapters?
<label id="hardware_external">
Generally not, but it doesn't need to. Terminal adapters are designed to behave
either like a modem or like a network card. Linux already supports both
modems and network cards without isdn4linux - so no special ISDN driver
is necessary (which usually greatly simplifies the configuration).
For example, have a look at the dialout program wvdial.
However, there is (at least) one exception. The Gazel 128 USB from BeWAN
System in France <url url=""> has been reported to
work fine with the hisax_st5481 module. For configuration hints
have a look at: <url url="">.
<sect1> hardware_cabeling: How should I wire my ISDN cables?
<label id="hardware_cabeling">
For any details in this direction have a look at the excellent cable FAQ,
which can be found at least in a German version at:
<url url="">.
<sect1> hardware_irq: Why should I avoid IRQ 12 and 15 for my ISDN card?
<label id="hardware_irq">
On many PCI boards, interrupt 12 is often used by a PS/2 mouse (even though you
may not have any or the IRQ is not activated for it). It may be used even when
you have no PS/2 port. Interrupt 15 is also often used by the second IDE bus
(even when you are not using it or the IRQ is not activated for it).
Even though one thinks that some IRQs are available they are still somehow
reserved by the BIOS. Good IRQs to try are always IRQ 5 and IRQ 9. Without mice
or modems you could also try 4 and 3, which works even on very exotic boards.
<sect1> hardware_irqsharing: Can the isdn4linux driver work with shared
<label id="hardware_irqsharing">
Yes, the drivers have been written to work with shared interrupts. However,
at least for the AVM Fritz!PCI card occasional problems have been reported
for motherboards with a BIOS bug (DFI motherboards K6BV3+, P5BV3+ K6XV3).
Try to disable the BIOS option <tt>CPU to PCI WRITE Buffer</tt> in those
cases as a workaround.
<sect1> hardware_s2m: Which S2M cards are supported?
<label id="hardware_s2m">
At least these S2M cards have been reported to work:
<item>AVM T1
<item>Eicon S2M-ISA or DIVA Server PRI family (see
<url url="">)
<sect1> hardware_pcmcia: Which PCMCIA cards are supported?
<label id="hardware_pcmcia">
At least these PCMCIA cards have been reported to work:
<item>ELSA Microlink (NOT: ELSA Microlink/all)
<item>Teles PCMCIA (old hardware) - deprecated, since Teles often changes
hardware, and does not support the developers (see question
<ref id="hardware_teles" name="hardware_teles">).
<sect1> hardware_smp: Can I run isdn4linux on my multi-CPU board?
<label id="hardware_smp">
Yes, this works nicely. However, make sure to compile the kernel and all
modules with option <tt/SMP/. If you run into problems when both CPUs try to
handle the same IRQ, try to boot with <tt/noapic/.
<sect1> hardware_64bit: Can I run isdn4linux on 64bit hardware with Linux?
<label id="hardware_64bit">
In principle yes, however your hardware choice is currently limited to
active cards and external devices. Most desired are external devices using
standard interfaces (network, USB) which do not require isdn4linux at all.
The drivers for passive cards are currently not working under 64bit.
Obviously you can also not make use of binary drivers, unless you find a
binary compiled for 64bit.
One external USB device based on the HFC-S chipset reported to work with
isdn4linux is the Sitecom DC 104 with serial number greater than SN 46000202
(olders are ST chipset based, they have the same box). Also "tiny USB TA"
from Billion, and "surf mini usb" from Acer have been reported to work.
<sect1> hardware_alpha: Can I run isdn4linux on a DEC Alpha with Linux?
<label id="hardware_alpha">
Yes, most cards should run with isdn4linux on a DEC Alpha. Many cards have been
reported to work with the HiSax driver. Also the active ICN card has been
reported to work.
<sect1> hardware_sun: Can I run isdn4linux on a Sun workstation?
<label id="hardware_sun">
Probably not. There are three options for (internal) isdn in the SUN
<item> SBUS ISDN adapter:
Old SUN-workstations used to have a SBUS interface for additional
peripheral boards.
There exists an ISDN sbus board sold as "X1012". As no information is
available for these boards, they are NOT supported!
<item> Built-in ISDN adapter:
Sparc-Station-LX, Sparc-Station-10 and Sparc-Server-10 have a
motherboard with build-in isdn-adapter.
These machines were supported by HISAX (kernel 2.3.0) but the code has
been left unsupported for very long (over nine months).
All kinds of ancient hisax definitions are still left in these drivers.
Much work is to be done to get it properly working again.
Note from the original developer, not to expect too much: the dbri chip
is not capable of buffering (irq for each byte) and raw-hdlc has to be
done in software instead of hardware...
The author of dbri.c has stopped active work on it,
but made a copy of the DBRI data sheet available at:
<url url="">
for anyone who wants to fix the remaining glitches (status as of Jan 10,
2000). Please be aware that the code of the latest developments can not be
compiled for 32 bit machines like all sun-4m machines.
<item> PCI ISDN adapter:
Modern SUN-workstations and servers have a different busstructure
nowadays. The ULTRA series uses the PCI-bus.
Allthough some pc boards seem to be working in a SUN, there are NO
reports (yet) of properly functioning ISDN-PCI-boards in the SUN
environment. Please write me if anyone ever succeeds.
<sect1> hardware_ppc: Can I run isdn4linux on a PowerPC with Linux?
<label id="hardware_ppc">
Yes, in theory most cards should work. However some Endian format issues
remain due to the bugs. I heard that the AVMFritz!PCIv2 card may work well
with the old isdn4linux drivers (even with asterisk via chan_modem_i4l).
Also the Eicon Diva Server cards should work. You are welcome to report any
bugs and fixes to the mailing list.
In any case, you may also get a terminal adapter (= external ISDN "modem").
Since then you don't need isdn4linux (see question
<ref id="hardware_external" name="hardware_external">), this is not covered
here any further.
<sect1> hardware_maxcards: How many ISDN cards can I put into my computer?
<label id="hardware_maxcards">
It depends on the availability of slots, interrupts/IO addresses in your
computer as well as the possibilities of the ISDN card. Most passive cards
are limited by the supported IO addresses (e.g.: Teles 16.x: only 3 addresses
are legally possible: 0xf80, 0xd80, 0xe80), and the total usage of interrupts
(every card needs one).
To use more cards, the ICN card may be your choice. It has no interrupts, a
more flexible port configuration and the driver places the shared memory area
of all ICN cards at the same address. The card memory is shown only as
needed. Therefore, one can use as many cards are there are slots.
If you really need a lot of ports, then eventuelly, a S2M card might be
interesting for you, see question <ref id="hardware_s2m" name="hardware_s2m">.
See question <ref id="config_manycards" name="config_manycards"> about
the specialities for the configuration of more than one card.
<sect1> hardware_hfc: What is special about card with an HFC chip?
<label id="hardware_hfc">
Cards with an HFC-PCI chip allow some specialities that are not possible with
other ISDN cards. So it is possible to run the card in NT mode (requires
crossing the ISDN connection and change by software) - this means you can
simulate to another ISDN card that your card is an NTBA. Since isdn4linux does
not implement the level 3 protocol used by the exchange, you can only use this
mode like a leased line.
However, some special software named PBX4Linux has been written for this.
You may want to have a look at the German article in ct 9/2004 on how to use
PBX4Linux. You can also check the web site
<tt><url url=""></tt>.
You may especially be interested in the information about card support for the
NT mode with mISDN at: <tt><url url=""></tt>.
Another alternative for emulation of a PBX is Asterisk, to be found on:
<tt><url url=""></tt>.
Also, it is possible to give up one B-channel in exchange for reading the
complete D-channel protocol, which is great for isdnlog. The later can
also be done with a reversed card (see question
<ref id="isdnlog_reversedcard" name="isdnlog_reversedcard">)
but with HFC chips this works much more reliably and cleanly. You can
activate this special echo mode by calling:
hisaxctrl &lt;driver_name&gt; 10 1
hisaxctrl &lt;driver_name&gt; 12 1
You can deactivate it by calling:
hisaxctrl &lt;driver_name&gt; 12 0
hisaxctrl &lt;driver_name&gt; 10 2
Parameter 10 changes the number of available channels, parameter 12 switches
the echo mode.
Cards with HFC chips may be difficult to run on older mainboards.
Ensure with <tt>lspci -v</tt> that an IRQ has been assigned to the card
(if not check the PnP bios settings). Verify that the card is
located in a slot with busmaster DMA capabilities. Verify whether the
kernel is compiled such that it will run on your CPU (newer
distributions may not run on CPUs like 486 or Pentium; Suse provides
the kernel 'k_i386' to run with older hardware).
<sect1> hardware_elsa: What should I know about ISDN cards from ELSA?
<label id="hardware_elsa">
Generally, ELSA supports the ISDN4LINUX developers quite well with
documentation on how to access their cards. Thus, these cards are well
supported and very recommendable for use under ISDN4LINUX. Also, the
ELSA Quickstep 1000 PCI (new name Microlink PCI) is one of the only brands
of cards that are officially certified for use in Germany, and therefore
in EC (see question <ref id="country_certified" name="country_certified">
for more information on certification).
However, there is a speciality with some non-PCI-conformal mainboards and
the ELSA Quickstep 1000pro-PCI. These mainboards set the IO address to
incorrect values (they need to be on 0x100 boundaries, and in a higher
area). This may create an error message like
"You may have the wrong PCI bios" and hang the system. The best fix
is a Bios upgrade. If this is not feasible, you can get the module
<tt/pcitest/ from Karsten Keil <tt><htmlurl url=""
name=""></tt>. It will initialize the card correctly,
then exit with an intentional error (thus not occupying any memory).
To interface from ELSA's RJ11 plug to an RJ45 cable, use the following
cabling scheme:
RJ11 - RJ45
pins 1234 12345678
Cable abcd --abcd--
Regarding the Elsa Microlink ISDN USB: contrary to previous announcements
it does NOT works like a serial terminal adapter with the USB communication
class driver. Currently, it is not supported by isdn4linux.
<sect1> hardware_sedlbauer: What is special about the Sedlbauer card?
<label id="hardware_sedlbauer">
The Sedlbauer card comes in several versions:
<item> Sedlbauer Speedwin
<item> Sedlbauer Speedfax
<item> Sedlbauer Speedfax PCI
The Speedwin is a normal passive card with no specialities.
The Speedfax has a very special hardware: it is a semiactive card based
on the ISAR chipset which supports sending/receiving faxes and an analog
modem up to 14400. It is special in that you use it with HiSax which
normally works only for passive cards.
As all active card you have to load its firmware (in this case
after loading HiSax) from the file ISAR.BIN, which is part of the
Please note that compression (V42bis, MNP) are not implemented in firmware,
and therefore not supported when using the analog modem. The ideal init
string for the card to allow modem dialin is <tt>AT&percnt;C0&bsol;N0</tt>.
If for some fax senders receiving by Hylafax does not work, then try to
set the following configuration parameter for Hylafax:
Class1SwitchingDelay: 75
The Sedlbauer Speedfax PCI is special in that it was produced just for
Linux - there is no driver for it under Windows.
<sect1> hardware_teles: What should I know about before buying an ISDN card
from Teles?
<label id="hardware_teles">
First the latest news: according to the German magazine ct 02/2001, Teles has
closed down its business activities in the ISDN area. Therefore, this
FAQ does not really apply any more. However, I'll keep this FAQ for now
to document Teles' attitude towards their customers. The author has had
personal experience with Teles since 1994.
One of the most frequently asked questions for Teles cards: The Teles card
16.3c has a crippled FIFO, therefore it is required to use
<tt/AT&amp;B1024/ when using the ttyI* devices (if the remote side still
send packets with more than 1024 bytes it will not work
- unfortunately many CAPIs use 2048 bytes as default).
The latest Teles PCI card needs the <tt/netjet/ driver, the teles driver
will NOT work (that card identifies itself as 'TigerJet Tiger300' when doing a
<tt>cat /proc/pci</tt>).
Now some comments about Teles in general (these are the personal opinions of
the author of this FAQ, please blame nobody else than me):
Teles' business practices are very customer- and developer-unfriendly when
compared to those of other companies. Naturally, the developers give
priority to cards for which support is available, and where the specifications
are freely available.
So far, Teles has had a very unfriendly attitude towards the i4l
developers. No support has ever been received from them, and they don't publish
any information about how to access their card. The developers have invested a
lot of private effort into getting this card to work from the beginning without
receiving any support. The driver has been a complete private effort. Yet,
Teles has bragged on their web site that their cards run under Linux, without
giving proper credit.
Even companies that buy Teles cards and resell them under their own name have
not been able to improve the support. This has lead to the situation where a
re-branding company (!) itself had to go through the effort of obtaining
approval to legally use i4l in Germany on a Teles card.
From a customer point of view, check out the prices for their hotline before
you buy any hardware from them! The author of the FAQ refuses to use any
hotline that charges 216,- DM per hour. Reports about quality and waiting time
have not always been favorable.
And this company did not even give away drivers for other operating
systems, like Windows, for free for many years (I know about 1995-2000).
Only since about April 2000 you can download the drivers over the Internet.
Before you had to dial up a very expensive number (0190) where you had to pay
about DM 1,20 per minute in Germany to download the driver. Not that it's
advisable to use Windows anyway, but just to let you know...
Warning: Teles has often changed their cards without notice, while still
using the same name. When you buy a Teles card, you may find out that your
brand-new card can not be supported by i4l! (As has happened many
times in the past...)
The developers will try to support new Teles cards when information about how
to access it becomes available, and when they have no other priorities. Of
course you can always send a patch.
<sect1> hardware_fritz: What should I know when configuring a Fritz! card
(also known as: AVM A1, Teledat 150, BT Speedway)?
<label id="hardware_fritz">
The Fritz! card comes in different variations. Since the PCI card and the
ISA/PNP card have the same type (27), hisax will assume an ISA/PNP card
if you pass an io address, and a PCI card if you do NOT pass an io address.
Make sure to give the parameters properly.
The newest Fritz! PCI card (v2.0) is now supported by a new driver, however
it has not yet been tested thoroughly. The card can be identified by lspci
returning 0e00 as the card id.
If the interrupt for the card is shared with other devices and your card does
not work, then there could be an issue with the motherboard. See question
<ref id="hardware_irqsharing" name="hardware_irqsharing"> for this.
One very interesting thing: the Fritz! card was the first card
for which a capi driver existed which can be configured to
fax. See question <ref id="feature_capi" name="feature_capi"> and
<url url="">
for more information on this. Usage of the capi driver is completely optional,
you might as well stay with the standard driver if you do not need capi
In total three drivers exist: the old Hisax driver (part of isdn4linux), the
new mISDN driver, and the binary AVM driver. Only the last one is prepared
for sending faxes.
<sect1> hardware_avmb1: What is special about the AVM B1 card?
<label id="hardware_avmb1">
This card supports many special features in its firmware and is very well
supported by its Linux driver. It's currently one of the only ISDN cards
that you can use to fax under ISDN4LINUX, or which supports the
CAPI 2.0 interface. You can get the newest driver from:
<url url="">.
To get the firmware download the two perl scripts from:
<url url="">
They will download and extract the firmware from: <url url="">.
To use the AVM on a point-to-point connection (&dquot;Anlagenanschluss&dquot;)
add &dquot;DSS1 P2P&dquot; to the load command for the firmware, like:
avmcapictrl load /usr/lib/isdn/b1.t4 0 DSS1 P2P
There is also a mailing list for problems with the AVM B1 available.
Visit <url url="">
for more details about it.
<sect1> hardware_hypercope: What is special about the Hypercope cards?
<label id="hardware_hypercope">
These cards support several special features in their firmware. They are newly
supported by a Linux driver. They are currently one of the only ISDN cards
that support the CAPI 2.0 interface. Also, you can use them very well for
faxing under ISDN4LINUX (after upgrade with a fax card - possible for
HYSDN Ergo2 and HYSDN Metro4).
More information on company and hardware is available on:
<url url="">
Configuration is similar to that of an AVM B1.
<sect1> hardware_icn: What is special about the ICN card?
<label id="hardware_icn">
This was the first active card supported by isdn4linux. The manufacturer has
always supported i4l developers (<tt><url url=""></tt>).
The ICN does not need any interrupt (polling), therefore a PC can be equipped
with many of them without any interrupt conflicts. The newest firmware should
be available at
<tt><url url=""></tt>.
Unfortunately, the ICN is not produced any more.
<sect1> hardware_isurf: What should I know about the Siemens I-Surf cards?
<label id="hardware_isurf">
There are several interesting things.
<item> Two Versions: There are two different versions (version 1.0 and
version 2.0) with a different chipset. Both work fine, however you have
to set the type properly (29 for version 1.0, 12 for version 2.0).
<item> The USB version is currently not supported, there is no driver
<item> PnP bug: Due to a bug in the pnp chip it is very important for the
I-Surf 1.0 to have the following PEEK and POKE lines in your isapnp file
to properly initialize the PnP register:
(MEM 0 (BASE 0x0c8000) (MODE bu) (UPPER 0x0c8400))
# (MEM 0 (BASE 0x0c8000) (MODE br) (UPPER 0x000400))
(REG 0x31 (PEEK))
(REG 0x31 (POKE 0))
(REG 0x31 (PEEK))
<item> Memory mapping: Since the I-Surf 1.0 uses memory mapping for the
ISA bus, ensure that the used memory area is not shadowed or cached
(see BIOS setup).
<item> Firmware loading: Before usage you have to load the firmware:
hisaxctrl &lt;id&gt; 9 ISAR.BIN
(You find the file ISAR.BIN in the isdn4k-utils or on the I-SURF cd.)
<item> Fax: The I-Surf 1.0 can be setup to send and receive faxes (see
question <ref id="feature_fax" name="feature_fax"> for details).
<sect1> hardware_diva: What should I know about the Eicon Diva cards?
<label id="hardware_diva">
In general, a dedicated driver exists which supports the active Eicon
Diva cards very well. The Pro series are not supported by isdn4linux
since it is a semiactive card with a DSP as a B-channel controller.
There is no code available in isdn4linux to dynamically load DSP
programs into the card. However, check Eicon's website; maybe by now they
provide pre-compiled driver for their cards not supported by isdn4linux.
<!-- Trouble Hardware
<sect1> hardware_crossedcable1: If i4l uses one B-channel then the other one
will be blocked (incoming as well as outgoing)...
<label id="hardware_crossedcable1">
This behavior is typical for a cable with confused a/b wiring. Some
NT from Quante had a wrong labeling. They caused exactly the
mentioned behavior if the PBX was connected to the plug of the NT
and the ISDN card to the pins of the NT. As soon as some device
activates the bus the other one can no longer get through.
<sect1> hardware_crossedcable2: How can I test whether a a/b cable pair has
been crossed?
<label id="hardware_crossedcable2">
This question assumes that you are connected by an internal bus that you
installed, attached directly to the NT (without using an RJ45 cable).
The easiest way to test it is to buy a little cable tester (the author of this
FAQ got one from Conrad Electronics in Germany for 29,- DM - just follow the
simple instructions).
Otherwise you have a bit more work. Switch line a1 and b1. If it doesn't work,
put them back and switch a2 and b2. If it still doesn't work, try switching
them both. As long as {a|b}1 and {a|b}2 are kept, nothing can break. If you
want to be sure, before plugging it in measure between pins 4 and 5 and between
Pins 2 and 6 on the socket; there should be no current, but between 3 and 4 and
between 6 and 5 should be 40 V, 6 and 3 positive.
With the Western plug this works similar. 4 lines are used:
| | | |
| | | |
1 2 3 4
Then you can try to switch (1 with 4) or (2 with 3) or both. Never switch the
outer with the inner lines - this would cross the RX and TX lines and nothing
will work.
Check the Cable FAQ for more details on which line should be connected how.
If both devices are attached via RJ45, then one of the cables
has been twisted. That usually happens if one of the RJ45 plugs
has been attached upside-down (a1/b1 are inside, a2/b2 are outside,
so the order of the sending/receiving pairs is maintained), then
you just need a new plug and of course pliers for the RJ45, old
plug off, and new plug (in the right direction) on.
<sect1> hardware_pbx: i4l is connected to the internal bus of a PBX. Any problem?
<label id="hardware_pbx">
Many PBX run non-standard ISDN protocolls on their internal bus.
In old versions (before end of August 2003) this could cause i4l to print
warnings like "Unexpected discriminator 0xZZ" (where ZZ is a hexadecimal
number) when it encounters unexpected frames (some old versions even
crash). This can increase your message file by as much as 1 MB in 3 days. The
PBX <tt>Ackermann Euracom 181</tt> (discriminator 0xaa) as well as
<tt>Ascom</tt> (discriminator 0x44/0x47) seem to be notorious for this. You can
avoid the warning by adjusting the switch/case code for isdnlog in function
<tt>processctrl(...)</tt> in <tt>processor.c</tt> and recompiling isdnlog.
Since August 2003 ignoring these unknown packages has become the default,
therefore the recompile is not necessary any more.
Please note that isdnlog will not be able to log any incoming
data packages, since the PBX has to forward the packages. To see everything,
you have to bypass the PBX.
Please be aware, that the PBX may hang if the ISDN card does not respond to
the PBX requests - bypass the PBX in such a case.
Also, a PBX may run 1TR6 protocoll on the internal bus by default, rather
than Euro ISDN. You have to configure i4l (or the PBX) accordingly, best
is you try to configure both on the same or similar protocolls.
Also the MSN may be different than you expect. Check several versions, no
digit (then use <tt>0</tt>, which i4l will require in such a case), one digit,
or two digits, or the whole MSN. Best is you call some device (e.g. ISDN
telephone) on the internal bus and check what i4l writes into the log file.
When you can not dial out, the most common problem is that you have not
set the MSN properly for outgoing calls, which causes the PBX to refuse
your request.
For dial in be aware that some PBX add a leading 0 to any incoming
telephone number, so adjust your configuration for the secure option
Last, remember that you may have to configure your PBX to 'route' incoming
calls onto the internal ISDN bus.
If you have a point-to-point configuration ('Anlagenanschluss') then
you cannot connect your card directly to the S0 bus in parallel to the PBX
(otherwise nothing will work). You have to connect to an internal ISDN bus.
Your MSN is usually the extension at the end of your telefon number.
If your PBX is the <tt/Ackermann Euracom</tt>, then you may also check out
this German site for the configuration software maKs:
<url url="">
<sect1> hardware_telestrouble: The PNP tools done work with my Teles 16.3 PNP
<label id="hardware_telestrouble">
It's probably not a Plug 'n Play card at all - even though Teles
now prints PNP on all their card and packaging. The difference is easy
to recognize: a real Teles PNP card no longer has the (tiny) Dip switches
on the card to set the IO addresses.
<sect1> hardware_elsacabletrouble: On my ELSA card, the LED for the loss of the
TEI often blinks. My connections are also often disrupted...
<label id="hardware_elsacabletrouble">
These blinking LEDS are often caused by a bad cable or a too long or
unterminated SO bus.
<sect1> hardware_elsairq: My ELSA Quickstep 1000 ISA card produces very many
interrupts with the HiSax driver. Is this normal or a problem with the HiSax
<label id="hardware_elsairq">
This is normal. The ELSA Quickstep 1000 ISA card has a hardware timer on the
card which can not be disabled by software. You have to modify the card
hardware to get rid of it. Check with Karsten Keil for this:
<tt><htmlurl url="" name=""></tt>
<!-- Configuration/Troubleshooting
<sect> config: General information about Configuration
<label id="config">
<sect1> config_msn: How should I set up isdn4linux with my MSNs?
<label id="config_msn">
See section <ref id="msn" name="msn">.
<sect1> config_hardware: How should I configure my hardware? Is there
something special I should know about my ISDN card?
<label id="config_hardware">
Have a look in section <ref id="hardware" name="hardware">.
<sect1> config_dialout: How should I configure dialout?
<label id="config_dialout">
See section <ref id="dialout" name="dialout">.
<sect1> config_dialin: How should I configure dialin?
<label id="config_dialin">
See section <ref id="dialin" name="dialin">.
<sect1> config_suse: I can not select my card in yast?
<label id="config_suse">
If you have a SuSE distribution, and you can not find your card in yast,
then select card <tt/generic/ and enter the exact parameters in the
special case line, like: <tt>type=27 protocol=2</tt> for Fritz!PCI and
Euro ISDN. Get a newer kernel if the desired type is not yet supported.
<sect1> config_pnp: How do I configure a PNP (Plug and Play) card?
<label id="config_pnp">
For PCI cards Plug and Play works automatically, they don't need any manual
configuration if the correct card type is provided. ISA PNP cards will
require some manual configuration:
<item>With &dquot;make menuconfig&dquot; (or &dquot;make config&dquot;) set the
following kernel options:
<item>ISDN = &dquot;M&dquot; (as module - otherwise PNP doesn't work!)
<item>HiSax = &dquot;M&dquot; (as module - otherwise PNP doesn't work!)
<item>16.3/PNP support
<item>EURO support
<item>Compile and install kernel and modules, depmod. (Reboot!)
<item>Read the configuration of the PNP card with:
<code>pnpdump -c &gt; /etc/isapnp.conf</code>
<item>Verify whether pnpdump has prepared the configuration file
<tt>/etc/isapnp.conf</tt> properly:
<item>INT0 - the interrupt used by the card (Default for Teles 16.3 PNP: 10).
Make sure that interrupt 3 and 4 are not used, since they are reserved for
the serial interface (which, unfortunately, the serial driver may have
forgotten to reserve).
<item>IO0, IO1 - the IO ports used by the card (Default for Teles 16.3 PNP:
0x580 and 0x180) (Attention: these values must be 64-bit aligned (ending with
0, 4, 8, or c)! Early versions of the PNP cards may suggest incorrect values!)
<item>Comment removed in front of ACT Y!
<item>Activate the configuration with:
<code>isapnp /etc/isapnp.conf</code> (must be started at every boot)
<item>Now the HiSax module can be started for Euro-ISDN with:
<code>modprobe hisax io=4,2,INT,IO0,IO1</code>
(Replace INT, IO0, and IO1 with your values in isapnp.conf.)
<sect1> config_startstop: How can I start and stop the ISDN configuration?
<label id="config_startstop">
There are several options:
<item> Reboot: rebooting your computer always works. If you compiled i4l into
the kernel, then this is actually your only chance. The remaining options
only work if you configure i4l using modules.
<item> Manual: Unload the modules used by i4l with rmmod, then reload them with
<item> Runlevel: use telinit to switch to a runlevel which does not contain
ISDN, then switch back to the original runlevel.
<item> Scripts: most distributions come with start/stop scripts.
For example, on a Suse 7.0 distribution, this will stop ISDN:
rcroute stop
rci4l stop
rci4l_hardware stop
This will restart ISDN:
rci4l_hardware start
rci4l start
rcroute start
<sect1> config_kerneld: Why shouldn't I use <em>kerneld</em> to load the ISDN
modules in the kernel as needed?
<label id="config_kerneld">
<em>kerneld</em> does not work well with the ISDN modules, since the ISDN
modules can not store their status, and could miss important messages on the
D channel. Newer versions of i4l ensure that they won't be unloaded by
kerneld, but you should not try to use kerneld with any version of i4l.
<sect1> config_runlevel: How can I boot Linux sometimes with
ISDN, and sometimes without?
<label id="config_runlevel">
Yes, you can define two different run level for this (under SysVInit) in
<tt>/etc/inittab</tt>. One run level includes the ISDN processes, where the
other one does not.
<sect1> config_manycards: How do I configure more than 1 ISDN card?
<label id="config_manycards">
There are some specialities for configuration of more than 1 card:
<item>You have to start a driver for every type of card you have, with the
correct configuration arguments.
<item>To handle more than 1 card with the same driver (e.g. HiSax should
handle an ELSA and an ASUS card), you have to pass the configuration arguments
for all cards to this driver. Please note, that you'll have to use modules
for more than two cards, to pass all arguments. As an example, you can
load HiSax for two Sedlbauer cards with the following command:
modprobe -v hisax protocol=2,2 type=28,28
<item>Driver ID: the HiSax driver uses 'HiSax' as the default for a driver
id if you have only one card. For more cards you have to set the id
explicitly, e.g. for two cards in the form of
<item>Dialin of many people at the same time: have a look at question
<ref id="dialin_manyparallel" name="dialin_manyparallel">.
<item>Dialout through several cards: have a look at question
<ref id="dialout_manycards" name="dialout_manycards">.
<sect1> config_manychannels: How can I increase i4l's maximum number of
<label id="config_manychannels">
You can adjust the parameter ISDN_MAX_CHANNELS and the ISDN_MINOR* parameters
in <tt>/usr/src/linux/include/linux/isdn.h</tt> and rebuild the isdn stuff.
It is unlikely you have more than 64 physical B channels available, therefore
you probably want to leave ISDN_MINOR_B and ISDN_MINOR_BMAX as they are.
Your bottleneck are probably the number of potential (logical) network
connections (ipppX devices). The maximum number for this (ISDN_MAX_CHANNELS)
is 127, since the minor devices start at 128 (see ISDN_MINOR_PPP) and have to
end before 255 (ISDN_MINOR_STATUS).
To further increase the maximum number of logical connections you either
have the possibility to use an additional major (e.g. 44 - not used any
more) - this requires some small changes to the driver and the installation
of one ipppd instance per logical connection; or to use only one
ipppd per physical B channel with external Radius authentication. In the
first case you have to modify and recompile the driver, in the second case
you have to modify and recompile ipppd (you'll find some preparations for
this already in the source code).
Don't forget to create the additional devices with (part of
isdn4k-utils) or by hand.
<sect1> config_gsmv110: How do I connect my PalmPilot via GSM over V.110
to my computer?
<label id="config_gsmv110">
A connection via GSM will first go to the GSM provider via a special air
transmission protocol. To forwarding the data on to an analog or ISDN
line, an adapter called IWF (interworking function) has to translate this
into the analog or ISDN specific transmission protocol. Which analog or
ISDN transmission protocol is being used depends on how the mobile phone
requests its GSM connection.
An analog connection is not very attractive due to the lengthy modem
handshaking on dialin. For ISDN, HDLC and X.75 are currently not supported
by the IWF, so the choices are down to V.110 and V.120.
V.120 has better flow control and error correction, but currently isdn4linux
only supports V.110.
On the dialup server set up async PPP with a normal pppd on a ttyI* device
(sync ppp will not work). Additionally to setting the msn, you have to set
V.110 and the transmission rate to 9600 with <tt/AT&amp;R9600/
(<tt>/usr/src/linux/Documentation/isdn/README</tt> gives more details on
the V.110 bitrate adaption for this command).
Switch off autoanswer with <tt/ATS0=0/ if you use mgetty.
pppd needs to be called with <tt/noccp/ and <tt/require-pap/.
On the GSM mobile phone side, request an ISDN V.110 connection with the
For a Nokia 7110, you may have to use the undocumented command
If the bearer capability is reported as &dquot;88 90 21 48 06 bb&dquot; by
isdn4linux, then you have set it correctly (88 90 21 means V.110, 48 means
ASYNC 9.6kbit, 06 means flowcontrol RX/TX, bb means 8 bit 1 stop none parity).
If the call is indicated with service indicator byte 2 = 0 and not accepted
(happens with some wrongly configured PBX), then adjust with <tt/ATS19=0/.
A higher bandwidth of 19.2kbit (HSCSD) could be requested with the command
but you can not be sure that your GSM provider will really use this rate.
Configure your dialin server accordingly.
For a mini-howto see:
<url url="">
<sect1> config_h323: How do I configure isdn4linux to act as a voice-over-ip
gateway for H.323 clients?
<label id="config_h323">
You have to install a gateway which handles the translation. Several
versions exist which are all based on the OpenH323 and PWLib libraries.
The latest recommendation is to use isdngw at:
<url url="">. This is an updated
version of the isdngw located at:
<url url="">, which in turn is an
updated version of the Linux H.323 - ISDN Gateway found on
<url url="">.
Please note that not all sound cards support full duplex audio. Depending
on your hardware you may end up with uni-directional voice.
<sect1> config_point2point: How do I configure a point-to-point connection?
<label id="config_point2point">
First of all, the point-to-point connection will only work for one single
device connected to it - therefore nothing else but your ISDN card may
be attached to it. You can switch HiSax into point-to-point mode:
hisaxctrl &lt;driver_id&gt; 7 1
Additionally, you can use the &dquot;AT&amp;Lxxx$dquot; command to
configure the range of telephone numbers isdn4linux should be listening
to on the ttyI* devices.
If you really absolutely want to run your ISDN card for read-only purposes
in parallel to your pbx on a point-to-point connection, then you have
to disconnect the RX leads (pin 3 and 6 on western plug), so that the NTBA
will not see the ISDN card. In this case configure HiSax normally, NOT in
point-to-point mode.
<sect1> config_links: What helpful links are there about and around
<label id="config_links">
These are helpful links that are currently available on how to configure
<item>English: <url url="">
<item>Dutch: <url url="">
<item>German: <url url="">
<item>French: <url url="">
and <url url="">
<item>Suse Support database:
<url url="">; there is also an ISDN
howto (isdn.html) and a ISDN quick-install guide (isdnquick.html).
<item>Tips to configure Suse (and about offline reading):
<url url="">
<item>Tips to configure Red Hat:
<url url="">
<item>Tips to configure Debian with Fritz Card PCI and kernel 2.6 (in German):
<url url="">
<item>Tips to configure Mandrake:
<url url="">
<item>Tips to configure Gentoo:
<url url="">
<url url="">
<item>fli4l, a prepackaged Linux version to use an old PC as ISDN router:
<url url=""> (great!)
<item>LR101 (a project which tries to create a hardware router based on Linux):
<url url="">
<item>Scripts and installation tips from several people:
<tt><url url=";web/ISDN.html"></tt>
<item>Documentation on abc extensions:
<tt><url url=""></tt>
<item>Installation of CAPI4LINUX, CAPI4LINUX, and CAPI4Hylafax (in German):
<tt><url url=""></tt> or
<tt><url url=""></tt> or
<tt><url url=""></tt>
<item>Vbox development:
<tt><url url=""></tt>
<item>Michael Hipp's page (general informations):
<tt><url url=""></tt>
<item>Chargeint tips:
<tt><url url=""></tt>
<item>Homepage of linecontrol (manage isdn dialing similar to kisdn):
<tt><url url=""></tt>
<item>(German) Homepage of ISDN Sniffer (read ISDN bus, e.g. via reversed
card): <tt><url url=""></tt>
<item>Homepage of Asterisk (Open Source Linux PBX):
<tt><url url=""></tt>
<item>Homepage of ivcall (send and receive fax/voice calls):
<tt><url url=""></tt>
<item>Configuration software maKs for Ackermann Euracom (not isdn4linux related):
<tt><url url=""></tt>
<sect1> config_misdn: How should I configure the new mISDN driver, and what
is so special about it?
<label id="config_misdn">
The mISDN driver stands for modular ISDN. It is a complete rewrite of the old
isdn drivers and now communicates via CAPI messages. The mISDN driver is
retire the historical drivers once it is fully functional within the 2.6.x
kernels. As a temporary work around the historical drivers have been
ported into the early 2.6.x kernels to get isdn working, however, this will
be fixed in later versions.
To start mISDN, you have to load all the following modules:
<item>mISDN_isac (for isa card)
<item>Hardware specific driver (e.g. hfcpci, or avmfritz)
Not all features are available. It is currently not planned to port
1TR6 (the ancient ISDN protocoll in Germany) to the new driver.
For more information on how to configure it have a look at the following
website: <tt><url url=""></tt>
For a more general description on the mISDN driver and the future of isdn4linux
you may also read the German article published in ct 3/2004. An online
version is available at: <tt><url url=""></tt>
Please note that the current FAQ applies mainly to the old isdn4linux drivers.
mISDN may work differently than described in this FAQ.
Please let me know about any amendmends for this FAQ.
<sect1> config_kernel26: What has changed with the kernels 2.6.x?
<label id="config_kernel26">
With the kernels 2.6.x the mISDN driver has been introduced (see question
<ref id="config_misdn" name="config_misdn">). It is planned that the mISDN drivers will replace
the old isdn4linux drivers like HiSax, which have been ported to 2.6.x only
since mISDN was not ready yet.
Please note that the ported drivers have not been upgraded to make use of the
new kernel features like devfs. You still have to create all the devices you
need, either with (part of isdn4k-utils), or by hand. Some
distributions will do that for you (e.g. Suse), for others you have to do
this yourself (e.g. Mandrake 10).
<sect1> config_asterisk: How can I install asterisk with mISDN?
<label id="config_asterisk">
First you have to get mISDNuser and compile it. Then you have to compile
chan_misdn (included with asterisk) so it works together with mISDNuser.
For this you have to modify the Makefile in <tt>asterisk/channels/misdn/</tt>
to configure the correct location of mISDNuser. A make in the same directory,
followed by a 'make install' in the asterisk directory should be sufficient.
The easiest way is to get the install script published at:
<url url="">.
<!-- Troubleshooting
<sect> trouble: Troubleshooting
<label id="trouble">
<sect1> 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.".
<label id="trouble_22memory">
This is a memory problem and means you don't have enough <bf>unfragmented</bf>
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
<ref id="trouble_littlememory" name="trouble_littlememory">), compile
ISDN4LINUX into the kernel, or start and then exit a large program to ease
the memory fragmentation problems.
<sect1> trouble_littlememory: How can I reduce isdn4linux's memory
<label id="trouble_littlememory">
Try to do the following things:
<item> Stick with kernel 2.0.x if you have a 486 or lower.
<item> In <tt>/usr/src/linux/include/linux/isdn.h</tt>, change the line
#if 1
and recompile kernel.
<tt>include/linux/isdn.h</tt>, then recompile kernel.
<sect1> trouble_debug: How do I get maximum debug output?
<label id="trouble_debug">
Execute the following commands to get maximum debug output:
hisaxctrl &lt;id&gt; 1 0x33ff
hisaxctrl &lt;id&gt; 11 0xf4f
killall isdnlog
cat /dev/isdnctrl > /tmp/ilog
Be careful: this will generate a lot of output!
<sect1> trouble_strategy: My isdn4linux doesn't work! How do I best go about
finding the problem?
<label id="trouble_strategy">
The following steps are recommended:
<item>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 <ref id="trouble_boot" name="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.
<item>Make sure you configured the ISDN driver either as modules, or you
compiled them into the kernel - never both.
<item>Try calling your dialin number with a telephone. The number should be
shown in <tt>/var/log/messages</tt>. 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?!
<item>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 <tt>ATS18=1</tt> command to audio. Now you can get the
telephone to ring by dialing <tt>ATDxxxxxx</tt>, where xxxxxx is your own MSN.
<item>Next we try to transmit data via ISDN. Open 2 different consoles as root,
and on each run &dquot;minicom -s&dquot;... in the first set &dquot;Serial Port
Setup Serial Device&dquot; to <tt>/dev/ttyI0</tt>, and the other to
<tt>/dev/ttyI1</tt>. Then choose &dquot;Exit&dquot; and start the modem
emulation with &dquot;ATZ&dquot; and &dquot;AT&amp;Exxxxxx&dquot; (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 &dquot;CALLER NUMBER: xxxxxxx&dquot; and
&dquot;RING&dquot;. Accept the call on the second console with
&dquot;ATA&dquot;, and you should then see the message &dquot;CONNECT
64000/X.75&dquot; 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).
<item>Next, try calling a known ISDN BBS. If you don't know of any, try
Gernot (see &dquot;Are there sites that offer guest access where I can test my
isdn4linux setup?&dquot;). If you have problems with the modem emulation, see
&dquot;Troubleshooting Modem Emulation&dquot;
<item>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 &dquot;pppd, ipppd, syncPPP, asyncPPP -
what is that? What should I use?&dquot;), you can use the normal pppd with
modem emulation (i.e. /dev/ttyI*).
<item>Ensure that you set up your authentication configuration properly (see
questions in section <ref id="pap" name="pap">.
Otherwise, it is highly recommended that use an example script form
the HowTo (see the question &dquot;Where can I find scripts and other
information on configuring i4l?&dquot;). For testing you can try your own
provider or of the guest accounts (see &dquot;Are there sites that offer
guest access where I can test my isdn4linux setup?&dquot;). 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.... :-)
<sect1> trouble_boot: How can I tell whether my ISDN card has been correctly
<label id="trouble_boot">
<item>Check for error messages in the boot messages (you can review them at any
time with the command <tt/dmesg/.
<item>For the HiSax driver: During booting a message <tt>kernel: HSCX version
A:5 B:5</tt> and <tt>kernel: channels 2</tt> should appear. <tt>A:4 B:4</tt> is
also okay. Other values (in particular <tt>A:??? B:???</tt>) 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).
<item> 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.
<item>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.
<item>Check the io ports with
cat /proc/ioports
<sect1> trouble_isdncause: I get an error message like "cause: E1234" (or
<label id="trouble_isdncause">
Just have a look at <tt>man isdn_cause</tt> to find out what the problem is.
For the very popular cause "E001B" see question
<ref id="trouble_e001b" name="trouble_e001b">.
<sect1> trouble_e001b: I get an error message with "cause: E001B"?
<label id="trouble_e001b">
This is a very popular error and means (see <tt>man isdn_cause</tt>):
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
<ref id="hardware" name="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 <ref id="config" name="config">).
<sect1> trouble_noprotocol: upon startup of HiSax I get the message
&dquot;Warning - no protocol specified&dquot;?
<label id="trouble_noprotocol">
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.
<sect1> trouble_euronotsupported: upon startup of HiSax I get the error
"kernel hisax: protocol euro not supported"?
<label id="trouble_euronotsupported">
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.
<sect1> trouble_unknownprimitive: upon connection attempt I get the error
"lldata_handler unknown primitive"?
<label id="trouble_unknownprimitive">
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 &lt;interface&gt; &lt;protocol&gt;
<sect1> trouble_notelrings: Neither my telephone nor my fax machine ring
when I call them with isdn4linux?
<label id="trouble_notelrings">
Isdn4linux sets &dquot;digital data&dquot; 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.
<sect1> trouble_guestaccess: Are there sites that offer guest access where I
can test my isdn4linux setup?
<label id="trouble_guestaccess">
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:
<item>Eberhard Moenkeberg <tt><htmlurl url=""
<item>Welcome to Linux at (LAN,
Under ++49-551-7704103, ISDN NetCalls (HDLC-trans-rawip)
for get accepted. You should come as 192.168.*.*
because sometimes my &dquot;default&dquot; route is not your way.
/ftp is exported for NFS; try &dquot;showmount -e&dquot;.
You can login as &dquot;guest&dquot; without password.
FTP as &dquot;gast&dquot; with password &dquot;gast&dquot; avoids the
restricted shell.
<item>Under ++49-551-7704102, a 28800 bps modem and a Creatix ISDN
card (HDLC only, not X.75) are listening for logins.
<item>With the net setup from
<tt><url url=""></tt>
you can test NetCall at 551-7704103 (works as is within Germany,
from outside Germany you just have to change the number).
<item>Gernot Zander <tt><htmlurl url=""
There's a &dquot;gast&dquot; at +49 30 67 19 81 01 (X.75, mgetty). There's the
stones-html-page with pics in postscript to test downloading. Whoever
needs a target to call can use it. At ...81 03 there's a getty with
HDLC. As guest you enter a kind of BBS and can read some news.
<sect1> trouble_unload: I can't unload my ISDN modules (&dquot;isdn: Device or
resource busy&dquot;), even so I closed all ISDN applications?
<label id="trouble_unload">
In this case &dquot;fuser -v /dev/isdn* /dev/ippp* /dev/cui* /dev/ttyI*&dquot;
is very helpful. This helpful program shows, which processes are using those
<item>Is some program still using an ISDN device?
<item>Did you remove all getty's? (They may have restarted automatically)
<item>Are isdnlog, imon, iprofd, etc., still running?
<item>Maybe there is still a route on your net interface and it's not yet
deleted with &dquot;route del xxx&dquot;?
<item>Maybe the net interface wasn't put down. This can easily happen when
killing ipppd. It does not react to signal 15 and has to be killed with
&dquot;kill -9 ipppd pid&dquot;. Then the net interface is left
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!
<sect1> trouble_tcpdump: Why does my tcpdump not work for ip packets going
over ISDN (&dquot;truncated ip&dquot; or so)? How can I get a tcpdump
patched for ISDN?
<label id="trouble_tcpdump">
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 <tt><htmlurl url=""
name=""></tt> wrote on 23 Oct 1996:
Tip for ftp:
<tt><url url=""></tt>
There is the patch: &dquot;tcpdump-3.0.4-1-isdn.dif.gz&dquot;
and the rest is at:
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 <tt><htmlurl url=""
name=""></tt> further wrote on
30 Oct 1996:
After finding the patch from Eberhard Moenkeberg at 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
<tt><url url=""></tt>
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 <tt><htmlurl url=""
name=""></tt> 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(&dquot;ppp&dquot;, device, 3) == 0)
Either you name your ppp devices pppX instead of ipppX, or
change this line, e.g.
else if (strncmp(&dquot;ippp&dquot;, device, 4) == 0)
^^^^ ^^
Then tcpdump will also recognize syncPPP. At least it does for me.
<sect1> 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?
<label id="trouble_locatecrash">
The driver should be loaded with the command &dquot;insmod -m&dquot;. The output
has to be transformed somewhat to be a form similar to You can do
it like this:
insmod -m isdn.o | sort | sed -e 's/ / T /g' |
egrep '.* T (a-z,A-Z,_)+' /etc/isdn/
cat / /etc/isdn/ /
(The line ending with &dquot;|&dquot; has to have the following text on
the same line!) should then be used instead of for
finding the error.
<sect1> trouble_lotsdebug: My hard disk becomes very active when isdn4linux
run. How can I turn this off?
<label id="trouble_lotsdebug">
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:
<code>isdnctrl verbose 0
and/or by removing the &dquot;debug&dquot; option for ipppd.
<sect1> trouble_oldhardware: Maybe my hardware is too slow?
<label id="trouble_oldhardware">
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 <ref id="trouble_outofbuffers" name="trouble_outofbuffers">
when running out of buffers.
See question <ref id="trouble_littlememory" name="trouble_littlememory"> on how to reduce the amount of
memory needed.
<sect1> trouble_outofbuffers: I get messages like &dquot;HSCX RME out of
buffers&dquot;, &dquot;HSCX RFP out of buffers&dquot;, &dquot;HSCX B EXIR
10&dquot; in the syslog?
<label id="trouble_outofbuffers">
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 <tt/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:
&num;define HSCX_RBUF_ORDER 1
&num;define HSCX_RBUF_BPPS 2
&num;define HSCX_RBUF_MAXPAGES 3
The first two influence the size, the last one the maximum number of buffers.
<sect1> trouble_noresetinit: After a soft reset, my card does not initialize
<label id="trouble_noresetinit">
After you stopped your system with the <tt/reboot/ command or with
<tt/Ctrl-Alt-Del/, press the reset button (=hard reset). Sometimes the card
needs to receive a hardware signal to reinitialize properly.
<sect1> trouble_noisdnctrl: When attempting to use isdnctrl, I get the
error &dquot;/dev/isdnctrl: No such file or directory&dquot;?
<label id="trouble_noisdnctrl">
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 <tt>scripts/</tt>,
which is part of the isdn4k-utils.
<sect1> trouble_noisdnctrl2: When attempting to use isdnctrl, I get the
error &dquot;/dev/isdnctrl: No such device&dquot;?
<label id="trouble_noisdnctrl2">
In contrast to &dquot;/dev/isdnctrl: No such file or directory&dquot; the
message &dquot;/dev/isdnctrl: No such device&dquot; indicates that the
device /dev/isdnctrl exists, but no ISDN device driver is available.
To fix, load the ISDN modules (verify with &dquot;cat /proc/modules&dquot;
that they are loaded) or compile the ISDN drivers into the kernel.
<sect1> trouble_xosview: xosview doesn't show any network activity since
installing i4l.
<label id="trouble_xosview">
Peter Hettkamp <tt><htmlurl url=""
name=""></tt> 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
ipfwadm -A -a -D your-ip-address-here -S
(I don't know who it works with variable IP addresses. I have a fixed
<sect1> trouble_unknownhost: When I for example from a W95 box call up a page
with Netscape, I only get the answer &dquot;unknown host&dquot;.
<label id="trouble_unknownhost">
What is entered on the &dquot;Win95 box&dquot; 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.
<sect1> trouble_noroute: Addresses are now found, but now I get &dquot;no route
to host&dquot;.
<label id="trouble_noroute">
Please check:
<item>Is the Linux computer entered as the gateway? (Some 'operating systems'
have to be restarted before changes to the networking take effect)?
<item>Does the router have a default route to the prepared interface to the
provide (e.g. ippp0 with syncPPP or sl0 for diald (even when the real
connection is over ppp0, diald uses a slip interface as a &dquot;doorknob&dquot;)
<item>Does the provider require the use of proxies? Then the addresses
of the proxies have to the entered in the appropriate clients on the LAN
<item>Maybe your route was removed when using syncppp? Check the questions
<ref id="syncppp_noroute" name="syncppp_noroute"> and
<ref id="syncppp_nodefaultroute" name="syncppp_nodefaultroute">.
<sect1> trouble_nolocalnet: After booting, my local network can no longer be
reached. I use the network interface ippp0 with ifconfig; the default
route points to ippp0.
<label id="trouble_nolocalnet">
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 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
<sect1> trouble_unauthorizedcodechange: When HiSax starts, I get the
error messages 'Approval certification failed, unauthorized source code
<label id="trouble_unauthorizedcodechange">
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).
<sect1> trouble_crcerror: How can I see the number of packets for HiSax with
invalid CRC?
<label id="trouble_crcerror">
With HiSax you can view the accumulated number of hardware CRC errors with:
hisaxctrl &lt;id&gt; 0 0
and reset them with:
hisaxctrl &lt;id&gt; 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.
<sect1> trouble_amproglibtool: When compiling isdn4k-utils I get the
error 'AM_PROG_LIBTOOL not found'?
<label id="trouble_amproglibtool">
You have to regenerate the files from automake/autoconf with your version of
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*
libtoolize --force --automake --copy
automake --add-missing --copy
cd ..
for i in eicon isdnlog ipppd ; do
cd $i
cd ..
<sect1> trouble_hisaxparams: HiSax does not work - how can I set the
HiSax parameters for newer Linux kernels?
<label id="trouble_hisaxparams">
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.
<!-- Config MSN
<sect> msn: Configuration/MSNs
<label id="msn">
<sect1> msn_my1: What is my MSN? What if I don't have any?
<label id="msn_my1">
Your telephone company will tell you your MSN. It is your own telephone
number. Please note that you <bf/have/ to provide i4l with at least one MSN. If
you don't have any you can use `0', which is assumed if no MSN is transmitted
from your telephone company. Check section <ref id="countries"
name="countries">, together
with the following questions, on how to configure your MSN(s).
<sect1> msn_my2: How can I find out how my telephone number is transmitted
to the calling party?
<label id="msn_my2">
The transmitted MSN can simply be determined by calling yourself
(for example by telephone). In the log files you will find the
entry that looks like: &dquot;isdn_tty: call from XXX - YYY ignored&dquot;
(in order for this to work, you must of course already have the ISDN
drivers in your kernel and active).
<sect1> msn_config: How do I configure my MSN?
<label id="msn_config">
If your telephone number were 56789, then it would be configured as follows:
<item>Modem emulation: <tt>&dquot;AT&amp;e56789&dquot;</tt>
<item>Network interfaces: <tt>&dquot;isdnctrl msn interface 56789&dquot;</tt>
<item>For test calls to yourself add the area code (e.g. 01234):
&dquot;isdnctrl addphone interface in 123456789&dquot; (without leading zero)
&dquot;isdnctrl addphone interface out 0123456789&dquot; (with leading zero)
You may find national differences here (check section <ref id="countries"
<sect1> msn_max: How many MSNs as a maximum can I use for an isdn card?
<label id="msn_max">
For outgoing calls, at maximum one MSN can be used. Only incoming calls
may be configured to allow multiple MSNs.
For ttyI* devices, at a maximum you can listen to EVERY incoming MSN by
using the * as a wildcard:
When you have a point-to-point connection you should rather specify the
length of your number area with as many times &dquot;?&dquot; as you
have digits, otherwise your number may be accepted too early on overlapping
receiving. I.e. for 3 digits use:
For network devices, you can also use a '*' as a wildcard at the end of the
number for incoming calls (e.g. <tt>isdnctrl msn interface 123*</tt>).
However, this will create problems for outgoing calls. To handle such
a situation properly, please use the isdnctrl mapping feature
(see question <ref id="dialout_manycards" name="dialout_manycards">).
<sect1> msn_mindialin: How can I minimize usage of MSNs for digital data dialin?
<label id="msn_mindialin">
i4l gives priority to net interfaces. Therefore, you can get away with only
one MSN when you set it up like this:
<item>Set up net interfaces (sync ppp, rawip) for all users that will want to
use them (ipppd or rawip), with their incoming phone number (precondition is
that it is transmitted).
<item>Set up ttyI* for all other users (X.75, async ppp).
<item>Set option `secure on'.
i4l gives priority to net interfaces. `secure on' ensures that only users
that have been set up will be connected to a net interface. Users that want
to choose between both will have to use different outgoing MSNs to call you.
<sect1> msn_onlyone: How can I use one MSN for everything?
<label id="msn_onlyone">
In Germany, this is not much of an issue any more since you can get
10 MSN for free with Deutsche Telekom
(<url url="">). Other phone providers may offer
less MSN for free. In general, you can get at least 3 MSN. However,
minimizing MSN usage may still be very interesting for other countries
or if you have a large demand for numbers. On a normal ISDN bus with MSNs,
10 MSN per bus are the maximum. To get more numbers, your only alternative
would be to get a usually more expensive point-to-point ISDN connection.
Digital data dialin can easily be distinguished from voice/analog modem
dialin by the 'Service Recognition' code (&dquot;digital, data&dquot;).
For the differentiation between net interfaces (ipppd, rawip) and ttyI*
(X.75) see last question.
To get voice/analog modem to work in parallel, use mgetty for the analog
modem. Mgetty can handle analog data calls, faxes, and even voice calls as
answering machine if the modem supports it. Configure it for 10 rings. If
you take the phone and hear a fax or modem, send mgetty a USR1 signal (kill
-USR1 mgetty-pid). If your phone socket is correctly wired, the modem will
take over the connection, cutting off the phone. If you have an ISDN PBX
then you can forward the call to a different analog port when you picked up
a fax/modem call.
If your analog modem can not handle voice calls, then you have to
choose since incoming voice calls can not be distinguished from analog
fax/data calls. Use either VBOX to take your voice calls as an answering
machine. Or forget about voice calls and set up your modem to handle only
faxes and/or analog data calls.
<sect1> msn_buendel: Can I have several NTBAs, all with the same MSN?
<label id="msn_buendel">
Yes, but you need the cooperation of your telecommunication company. They
can set up several BRIs in Point-to-point mode that have the same MSN. In
Germany it is called a bundled line (`B&uuml;ndelanschlu&szlig;').
Please note that in such a case the MSN may not be transmitted to you. Just
use the default MSN 0 then.
<sect> lan: ISDN4LINUX in a LAN
<label id="lan">
<sect1> lan_config: How can I set up Linux so that other computers in my LAN can
access the internet via my Linux computer?
<label id="lan_config">
There are several possibilities:
<item>Your LAN is an official Class C net with IP addresses valid on the Internet.
This case is the easiest of configure. You give each network card on your
network one of these addresses and set a default route on the ISDN card that
goes to your provider.
<item>You'd only like to do http in Internet from your LAN. In this case you
can make up IP addresses for your LAN; the only official IP address is that for
your ISDN card. Then install a proxy server on your Linux router, and enter it
in all of your browsers. In this case you do not need a default route.
<item>From your LAN you only want to log in to your Linux ISDN router and FROM
THERE do your work on the Internet. This is even simpler, then you don't even
need a proxy server.
<item>Use ip masquerading. This is the most comfortable one to use, but more
difficult to set up. The Linux computer acts as a gateway. The trick is that it
hides the ip addresses of the LAN, by giving its own internet address as
response address. When receiving the response, it will forward it to the
correct computer on the LAN. You can also use masquerading with dynamic ip
addresses. If you don't want to start the ISDN connection from the Linux
computer to your internet provider manually, then you can set up dial on demand
functionality (see section <ref id="dod" name="dod">).
<sect1> lan_modemserver: How can forward ISDN data from a local computer in
my LAN to the ISDN card(s) in my Linux PC (like a modem server)?
<label id="lan_modemserver">
On the Linux PC you have to install a forwarding server.
One option is to use <tt>modemd</tt>. This is a very short perl script
(also see Linux Modem sharing mini-HOWTO at
<tt><url url=""></tt>):
select((select(STDOUT), &dollar;| = 1)[&dollar;[]);
select((select(STDIN), &dollar;| = 1)[&dollar;[]);
exec &dquot;cu&dquot;,&dquot;-E&dquot;,&dquot;''&dquot;, &dquot;-l&dquot;, &dquot;&dollar;ARGV[0]&dquot;;
die &dquot;&dollar;0: Cannot exec cu: &dollar;!\n&dquot;;
It has to be started by inetd, therefore this has to be added to
modem 20006/tcp modemd &num; Modem service via TCP
isdn 20007/tcp modemd &num; ISDN service via TCP
And this has to be added to <tt>/etc/inet.conf</tt>:
modemd stream tcp nowait root /usr/sbin/tcpd /usr/sbin/modemd ttyI5
Instead of modemd you can also use the program <tt>mserver</tt>, which has
some additional functionality (e.g. rights based on ip address):
<tt><url url=""></tt>
Additionally, you need some software on your non-ISDN computer which emulates a
serial port, but redirects it via telnet to the Linux ISDN computer.
Some telnet clients allow this functionality (e.g. some uucicos).
If you generally want to offer all applications a kind of &dquot;remote COM
port&dquot;, then there is COMT for Windows (95), and
&dquot;telser.device&dquot; for Amigas. Disadvantage of COMT: it is only
visible to ancient 16bit Win applications, and not even working in the DOS box.
Another program is DialOut/IP, but it's fairly expensive ($70).
COMT may be found on Simtel:
<tt><url url=""></tt>
DialOut/IP can be found on:
<tt><url url=""></tt>
Those who just want to save their CrossPoint installation should be aware that
it now offers tcp modem support, such that it will run without additional
software. Check out:
<tt><url url=""></tt>
<sect1> lan_remotedialing: How can I allow the users in my LAN to trigger
a dial out via the ISDN card(s) in my Linux PC?
<label id="lan_remotedialing">
For this you need two pieces of software. At the computer where the ISDN-line
is connected you need to install a <tt>dial daemon</tt>. The dial daemon
will execute any dial commands given from a <tt>dial frontend</tt> located on
a different computer on the LAN. You have several options to choose a dial
daemon and dial frontend.
At first you can use the free software <tt>smpppd</tt> (SuSE Meta PPP
Daemon) from SuSE as the dial daemon. smpppd gets used in the SuSE distribution
for all ISDN, Modem and DSL connections. You can connect to smpppd locally or
over a LAN via different dial frontends and trigger dial-out, hang-up and so
on. The most known dial frontend is kinternet a small applet for the KDE
Kicker. Others are the qt-only qinternet and the command line tool cinternet.
Unfortunately there is no frontend for Windows or Mac OS available.
Obviously this is the easiest way if you already have SuSE installed on the
server, and all other involved computers are also based on Linux (installation
of the dial frontend should not be too difficult with non-SuSE distributions).
Some more hints:
<item>The software is available in SuSE-Linux within the packages smpppd,
kinternet and qinternet, see <url url="">
<item>In order to allow smpppd listening into the LAN change the following
two options in /etc/smpppd.conf (see also "man smpppd.conf"):
open-inet-socket = yes # (default is no)
bind-address = &lt;IP&gt; # IP of the LAN-network-card of the dial in server;
# default is listening on all network cards (!)
<item>On the client side you can either enter the dial server via GUI or via
/etc/smpppd-c.conf (see also "man smpppd-c.conf").
Another free software solution working the same way is <tt>LineControl</tt>.
It has a dial daemon (linesrv) which you can configure dialing different
connections (similar to smpppd) be it ISDN, Modem, DSL or another dial-out
connection. Dial frontends are available for Linux (one for KDE and one for
Gnome), Windows and Java.
Some more hints:
<item>The software and tutorials can be found at
<url url="">
<item>The config files is located at <tt>/etc/linesrv.conf</tt>
(the relevant configuration options are similar to that of smpppd)
<item>Several dial and hang up scripts where you can define the system
commands how to dial/hang up certain connections are below
<item>In order to have the linesrv daemon running at system start of your
server you also need to enter it in your system start configuration.
<item>On the client side you now can enter the dial server via GUI in one of
the frontends and dial/hang up a connection configured at the server.
<!-- Dialout
<sect> dialout: Configuration of Dial-Out
<label id="dialout">
<sect1> dialout_config: How do I configure dialout properly?
<label id="dialout_config">
First you have to decide on how you want to dial out. You will have to
use whatever your counterpart requires. These are your main options:
<item> Sync PPP: This is what most Internet Service Provider expect
from you. See section <ref id="syncppp" name="syncppp">.
<item> Async PPP: May also be handled by your Internet Service
Provider. Use when Sync PPP does not work for you. See section
<ref id="asyncppp" name="asyncppp">.
<item> Raw IP: Most efficient for TCP/IP over ISDN. It has very quick
dialouts, but is not as common. See section <ref id="rawip" name="rawip">.
<item> X.75: This is what you need to dial into an ISDN mailbox. See
section <ref id="ttyI" name="ttyI">.
<item> Leased line: For this special case, see section
<ref id="leased" name="leased">.
Have a look on section <ref id="dod" name="dod"> on how to configure dial on
demand - and on the dangers attached to it.
For more advanced dialout features see question
<ref id="dialout_advanced" name="dialout_advanced">.
Also you may have a look at section <ref id="remote" name="remote">
when you try to connect to a special remote ISDN device.
<sect1> dialout_dialmode: When an IP packet should go over the link (which
usually triggers a dialout), all I see in the log is: &dquot;dial rejected:
interface not in dialmode <tt/auto/&dquot;?
<label id="dialout_dialmode">
The new ISDN drivers in 2.0.36 defaults to manual dialmode, not
autodial. This is done to prevent unexpected (and unnoticed) dialouts.
(See the big section about those and their dangers: <ref id="dod" name="dod">).
To enable autodial for a given interface e.g. ippp0, use
<code>isdnctrl dialmode ippp0 auto</code>
The meaning of the values for dialmode is:
means that you (or the system) cannot make any connection
(neither incoming nor outgoing connections are possible). Use
this if you want to be sure that no connections will be made.
means that the interface is in auto-dial mode, and will
attempt to make a connection whenever a network data packet needs
the interface's link. Note that this can cause unexpected dialouts,
and lead to a high phone bill! Some daemons or other pc's that use
this interface can cause this.
Incoming connections are also possible.
(DEFAULT) is a dial mode created to prevent the unexpected dialouts.
In this mode, the interface will never make any connections on its
own. You must explicitly initiate a connection with:
<code>isdnctrl dial ippp0</code>
To end the connection, use:
<code>isdnctrl hangup ippp0</code>
Please note that the <tt/huptimeout/ may still end the connection
automatically! To ensure that you have to hang up manually, you have to switch
this off:
<code>isdnctrl huptimeout ippp0 0</code>
To allow a normal user to initiate a dialout, have a look at question
<ref id="dialout_permission" name="dialout_permission">.
<sect1> dialout_advanced: What special dialout features are available?
<label id="dialout_advanced">
Check out these special dialout features:
<item> Save money by hanging up just before a charge unit:
see section <ref id="chargeint" name="chargeint">.
<item> Dialout on more than 1 channel at the same time:
see section <ref id="2channel" name="2channel">.
<item> Dialout on one specific channel:
see question <ref id="dialout_fixedchannel" name="dialout_fixedchannel">.
<item> Callback:
see section <ref id="callback" name="callback">.
<sect1> dialout_permission: How can I allow a normal user to initiate dialouts?
<label id="dialout_permission">
ISDN usage depends on the permissions to the devices <tt>/dev/ttyI*</tt> and
<tt>/dev/cui*</tt>. You have several choices to selectively allow users to do
ISDN transactions.
<item>You can establish the group `isdn' in <tt>/etc/group</tt>, and do:
chgrp isdn /dev/ttyI* /dev/cui*
chmod o-rw /dev/ttyI* /dev/cui*
It has been reported that you also may have to change group and
permissions on the programs <tt/ipppd/ and <tt/isdnctrl/ to 'isdn'.
Then all users not in the group 'isdn' have no reading or writing
privileges for the ISDN ttys. Those allowed to use ISDN have to be
explicitly added to the group 'isdn'.
<item>You can allow only root to log out, but set up exceptions for other users
with the su1 functionality (see man su1). As root edit
<tt>/etc/su1.priv</tt>. Add these lines if they (or similar ones) are not yet
there, to allow users XXXX and YYYY to initiate dialups/hangups:
# log all dialouts in syslog
syslog all
alias dial /sbin/isdnctrl dial ippp0
alias hangup /sbin/isdnctrl hangup ippp0
ask never
allow PPPUSER prefix dial
allow PPPUSER prefix hangup
Then create two links for dial and hangup:
ln -s /usr/bin/su1 /usr/local/bin/dial
ln -s /usr/bin/su1 /usr/local/bin/hangup
Now the users XXXX and YYYY can dial out by typing <tt/dial/, and hangup with
<item>isdnctrl can be set SETUID root. Please not that if it is called by a
user different from root, isdnctrl will only allow you to dialin/hangup,
and addlink/removelink/show. However, the setup/configuration data can only be
modified by root.
<item>If you only have one user that you use for ISDN interactions, you can
make him owner of the ISDN interface.
<sect1> dialout_manycards: How do I configure dialout with more than 1 ISDN
<label id="dialout_manycards">
There are several possibilities to configure dialout.
<item>Dialout anywhere (default: all available cards are a pool, dialout
on one MSN):
just configure your cards in the order in which you want them to be dialed out.
First all channels on the first card are used, then all on the second card,
and so on. Please note that the net interface or ttyI device will try to
dial out using the MSN it was configured for - on all cards. Even on those
that do not have this MSN! In such a case, the telco will replace that
invalid MSN with the correct one. Use <tt/isdnctrl mapping/ to configure the
correct MSNs (see item 'dialout on one specific card').
<item>Dialout on one specific channel: Use the <tt/isdnctrl bind/
(not pppbind) command to specify which channel should be used.
Please use this command after all other configuration with isdnctrl has
been done! Check with <tt/isdnctrl list/ that the binding actually works.
<item> Dialout with different MSN on each card:
You can configure this by using the <tt/isdnctrl mappping/ functionality.
Just map MSNs on the letters 0 to 9, like this:
isdnctrl mapping &lt;carddriver1&gt; 111,222,333,,
isdnctrl mapping &lt;carddriver2&gt; 999,888,,777
Now, you could configure for telephone number 0 when you really want to use
MSN 111 on &lt;carddriver1&gt; or 999 on &lt;carddriver2&gt; (however, since
0 has a special meaning, try to avoid using number 0). Configure to use
number 1 when you really want to use MSN 222 on &lt;carddriver1&gt; or 888
on &lt;carddriver2&gt;. Configure to use telephone number 2 when you really
want to use only MSN 333 on &lt;carddriver1&gt; (&lt;carddriver2&gt; will
use the default MSN when used). Configure to use telephone number 3 when you
really want to use only MSN 777 on &lt;carddriver2&gt; (&lt;carddriver1&gt;
will use the default MSN when used).
<item>Dialout on one specific card:
After installing a patch that was posted by Karsten Keil on the mailing
list against 2.2.12, you can disallow calls on some cards by using the
<tt/isdnctrl mapping/ functionality.
isdnctrl mapping &lt;carddriver1&gt; 111,222,333,-,
isdnctrl mapping &lt;carddriver2&gt; 999,888,-,777
It works as discribed for "Dialout with different MSN on each card", except
that the "-" means dialing is disallowed. Dialout on telephone number 2 will
now only dial out with MSN 333 on &lt;carddriver1&gt;, while dialout on 3 will
now only dial out with MSN 777 on &lt;carddriver2&gt;.
<sect1> dialout_fixedchannel: How can I force HiSax to always dial out on
a specific B channel?
<label id="dialout_fixedchannel">
HiSax has an undocumented feature for this. Add 'P1' in front of the dialout
phone number for the first B channel, or 'P2' for the second B channel, like
isdnctrl addphone &lt;device&gt; out P1&lt;your_out_number&gt;
This will indicate the preferred B channel in the outgoing SETUP message.
Please note that some PBX may not like this.
Obviously, a dialout will fail when another device already uses
the second B channel.
<sect1> dialout_dynip: On dynamic ip assignment, how do I find out which ip
address is being used for dialout?
<label id="dialout_dynip">
Create a script called <tt>ip-up</tt>. It will be called by the ipppd
whenever the connection is established with several parameters.
The ip address is passed in as the fourth parameter (access it as <tt>$4</tt>).
<sect1> dialout_bind: A dns query causes bind to dial out. Why does it take
about a minute before it is answered? How do I work around it?
<label id="dialout_bind">
You are probably using the name server in 'forward' mode, and your ISP works
with dynamic ip addresses. The initial UDP query will be lost since it
carries the wrong source address. Unfortunately, bind will wait a whole minute
before retransmitting the query again if you have only one forwarder.
As a workaround, you can enter 4 times the same forwarder in named.conf
to adjust retransmission timing (in 'forward' mode, bind retransmits its
queries after the following period of time: 60 seconds divided by the number
of nameservers given in the section "forwarders" of named.conf).
forwarders {;;;; }
Bind will then retransmit the query every 15 seconds to your forwarder
(here the forwarder is
The same principle applies to two or more forwarders.
Another option are the programs <tt/ip_resend/ and <tt/ip_resend_wakeup/
which you can find on:
<url url="">
<!-- Authenticate properly
<sect> pap: Authenticate properly (especially with PAP)
<label id="pap">
<sect1> pap_optionauth: When dialing out, I get the message &dquot;pppd: peer
authentication required but no authentication files accessible.&dquot;
What does this mean?
<label id="pap_optionauth">
Most likely the option &dquot;auth&dquot; was set by mistake. Then the
<em>other</em> side is required to be authorized.
<sect1> pap_requestauth: I cannot establish a connection - it's rejected by the
other side. In the log file I find a message that's something like: &dquot;sent
(0) (LCP ConfReq id=0x1 mru 1500 auth pap magic 0xcd12e9c4&dquot;
<label id="pap_requestauth">
Like in the last question, an option has been set that requires the
<em>other</em> side to be authorized. These options shouldn't be set.
Possible candidates are: &dquot;+pap&dquot; as well as &dquot;+chap&dquot;.
<sect1> pap_rejectauth: I cannot establish a connection - it's rejected by the
other side. In the log file I find a message that's something like:
&dquot;sent (0) (LCP ConfRej id=0x1 auth pap&dquot;
<label id="pap_rejectauth">
Your computer is refusing to identify itself with user name (e.g. XXX)
and password (e.g. YYY). That only works with the authorization options
&dquot;user XXX&dquot; and &dquot;remotename YYY&dquot; for ipppd or pppd
together with a correct (!) /etc/ppp/pap-secrets. With a password of ZZZ it
should ideally look like this:
If you have special characters in XXX, YYY, or ZZZ, try to use quotes
around them. If that doesn't work for getting XXX or YYY correct, you can
use wild cards, something like:
* * ZZZ *
Then <em>every</em> partner has the password ZZZ. If chap is required
for authorization, then /etc/ppp/chap-secrets must be set up correctly.
Important: the format is different from that of pap-secrets!
One important point is to use only the tabulator instead of space to
separate username, computer, password.
Make sure to consult the README's, or check out:
<tt><url url=";ui161ab/www/isdn/"></tt>
Also have a look at the next question: <ref id="pap_passwd" name="pap_passwd">.
<sect1> pap_checkpwd: How can I check which password is actually sent to
the remote side?
<label id="pap_checkpwd">
Use the options <tt/debug/ and <tt/+pwlog/ for ipppd or pppd. Then you can
see your password in the log file.
<sect1> pap_passwd: I have problems with PAP or CHAP authentication. It does
not work although I'm sure I entered passwords etc. correctly.
<label id="pap_passwd">
Stefan A. Muehlenweg <tt><htmlurl url=""
name=""></tt> wrote on
4 Oct 1996:
I had exactly the same problem/the same error message. The cause for it
was that I had three entries in chap-secrets/pap-secrets (for client,
server, secret), but not a fourth one (IP addresses). BUT: after the third
entry were some BLANKs. After removing the trailing BLANKs and/or TABs
(i)pppd is now very satisfied with my auth-files.
A further source of problems can be the password itself. If it contains
the &dquot;&num;&dquot; character, then everything after than is understood as a
comment. Spaces or tabs can cause similar problems. Solution: put
the password in quotes!
<!-- Config Sync PPP
<sect> syncppp: Sync PPP
<label id="syncppp">
<sect1> syncppp_whichppp: pppd, ipppd, syncPPP, asyncPPP .. what is they?
Which should I use?
<label id="syncppp_whichppp">
See this question in the <em/asnyc PPP/; section:
<ref id="asyncppp_whichppp" name="asyncppp_whichppp">.
<sect1> syncppp_compile: How do I compile isdn4linux with syncPPP?
<label id="syncppp_compile">
To compile the kernel with syncPPP included in ISDN4Linux, you have to answer
the appropriate questions with &dquot;yes&dquot;. Don't forget to load the
module slhc.o before isdn.o, if VJ compression is not compiled into the kernel
e.g. if you have no PPP and no CSLIP in the kernel. (Note that the use of VJ
is problematic for elder kernels and does not work reliably - however, the
support should still be included in the kernel, since there can otherwise
be side effects.)
<sect1> syncppp_netinterface: How should I name my network interface?
<label id="syncppp_netinterface">
The name of the network interface should <em>always</em> begin with
&dquot;ippp&dquot;, <em>not</em> with &dquot;syncppp&dquot; or
&dquot;isdn&dquot;; otherwise the communication with ipppd will not work
correctly. Please note that at least one of the interfaces has to be
&dquot;ippp0&dquot;, otherwise ipppd will not start. Check your
interfaces with the command <tt>ifconfig</tt>.
<sect1> syncppp_config: How do I configure isdn4linux with syncPPP?
<label id="syncppp_config">
Synchronous PPP is simply another encapsulation for ISDN4Linux. This
encapsulation is called &dquot;syncppp&dquot;. Here is an example to
configure the link level device ippp0:
/sbin/isdnctrl addif ippp0
/sbin/isdnctrl encap ippp0 syncppp
Please note that syncppp is very peculiar about the names of the device.
Only devices starting with &dquot;ippp&dquot; will work, at least one
interface has to be named ippp0 (see question <ref id="syncppp_netinterface" name="syncppp_netinterface">
for details).
All ippp* devices in use must be configured separately. Each ippp* device
should be assigned to its own IP address (routing!). Several ippp* devices can
be assigned to a single MSN. Several callers can then simultaneously use
this MSN.
To use these devices you need the program <tt/ipppd/, which you have to
configure. You have to start ipppd once after the modules are installed. ipppd
needs to be constantly running to allow dialout/dialin. It communicates with
the isdn4linux link level devices through <tt>/dev/ippp0</tt> to
<tt>/dev/ippp63</tt>. A single ipppd can handle all devices at once. If you
want two PPP connections at the same time, you need to bind ipppd to two
devices, etc. As a result, <tt/ipppd/ provides the network device
<tt>ippp0</tt>, which can be checked with ifconfig (even so it has the same
name, the network device <tt/ippp0/ is not to be confused with
<tt>/dev/ippp0</tt> which is used for communication between ipppd and link
ipppd has an additional option: &dquot;useifip&dquot; uses the IP address
of the connected network interface (if it is not (Even then, ipppd
tries to use the pointopoint address as the remote IP.) For the beginning,
disable all compression (lzs/stac, bsd, van jacobson), later you can try to
enable it (see question <ref id="syncppp_compression" name="syncppp_compression">).
It is very important to set up the authentication information
properly. Improper authentication is probably the most frequently
reported problem on the mailing list. Please, work through section
<ref id="pap" name="pap"> completely yourself, before asking others for
You can find an example configuration in the file <tt>etc/rc.isdn.syncppp</tt>
in the isdn4kernel-util package.
You can also run several ipppds to allow for different configurations,
in such a case use the <tt>&dquot;isdnctrl pppbind&quot;</tt>
functionality. However, normally one ipppd is meant to handle all traffic,
so it is highly recommended to only set up several ipppds if their
configuration has to be different.
<sect1> syncppp_busy: How can I tell if a connection is unsuccessful (busy)?
<label id="syncppp_busy">
When giving the option <tt/defaultroute/, then you can wait a few seconds, then
check whether the default route exists. Another way, when giving option
<tt>useifip</tt> is to check whether you find entries like <tt>&dquot;Local IP:
x.y.z.a&dquot;</tt> and/or <tt>&dquot;Remote IP: x.y.z.a&dquot;</tt> in syslog.
In either case, the connection is up.
<sect1> syncppp_logindelay: How can I reduce login delay?
<label id="syncppp_logindelay">
You can write out a login session with (&dquot;Debug-Log&dquot;), and see which
options the other computer is refusing. Next time, configure ipppd
without these unused options. A further side effect is that such
unused options increase the redundance (e.g. when the other computer
has bugs and refuses the options incorrectly). To create a log file,
see &dquot;How to I create a log for ipppd&dquot;.
<sect1> syncppp_2configs: I want to talk to remote machines which needs different
configurations. The only way I found to do this is to kill the ipppd and start
a new one with another config to connect to the second machine.
<label id="syncppp_2configs">
You must bind a network interface explicitly to an ippp device, where you
can connect a (for this interface) individually configured ipppd. With the
(unfortunately poorly documented) command
isdnctrl pppbind interface Number
you can link the interface interface to the device ipppNummer. You can
release the link with &dquot;pppunbind&dquot;.
<sect1> syncppp_pppbind: How does the (little-documented) &dquot;pppbind&dquot;
command in isdnctrl work?
<label id="syncppp_pppbind">
You have to first know how ipppd gets its data. All data that come in
over the ISDN line is received by the network devices (these are
set up with isdnctrl). Then the data given to one of the /dev/ippp*
devices - to one where a ipppd daemon is waiting for data.
To the network interfaces, all ipppd's appear to be able to handle the
just-received data - therefore it is normally impossible to predict
which ipppd will receive data from which network interface.
In practice, you usually install several ipppd's with differing
configurations. Each of these should receive data <em>exclusively</em>
from a certain network interface (that has also be specially configured).
The &dquot;pppdbind&dquot; command serves just this purpose. With:
&dquot;isdnctrl pppbind interface number&dquot;
attaches the interface interface to the device /dev/ipppnumber.
Example: To attach the interface &dquot;ippp5&dquot; to /dev/ippp2, the
following configuration should be used:
&dquot;isdnctrl pppbind ippp5 2&dquot;
Similarly, the command &dquot;pppunbind&dquot; will undo this attachment.
<sect1> syncppp_dynip: I want to use dynamic IP address assignment. How must I
configure the network device?
<label id="syncppp_dynip">
At least you must have a route, which forwards a packet to the ippp
network interface to trigger dialing. A default route to the ippp interface
will work. Now you must choose a dummy IP address for your interface. If for
some reason you can't set the default route to the ippp interface, you may
take any address of the subnet from which you expect your dynamic IP number
and set a 'network route' for this subnet to the ippp interface. To allow
overriding of the dummy address you must call the ipppd with
the 'ipcp-accept-local' option. You must know how the ipppd gets the
addresses it has to configure. If you don't give any option, the ipppd
tries to negotiate the local host address! With the option 'noipdefault'
it requests an address from the remote machine. With 'useifip' it gets the
addresses from the net interface. You also can set the addresses in the
option line with the a.b.c.d:e.f.g.h option. Note: the IP address of the
remote machine must be configured locally, or the remote machine must send
it in an IPCP request. If your side doesn't know the IP address after
negotiation, it will close the connection! You must allow overriding of
addresses with the 'ipcp-accept-*' options, if you have set your own or the
remote address explicitly. Try these options, e.g.:
/sbin/ipppd :&dollar;REMOTE noipdefault /dev/ippp0
where REMOTE must be the address of the remote machine (the machine giving
your address to you)
<sect1> syncppp_msgetdns: How do I configure ipppd to obtain or provide the
nameserver address at dial in?
<label id="syncppp_msgetdns">
Use the configuration option <tt/ms-get-dns/ to obtain the nameserver ip
address when you dial up your internet provider. Use <tt/ms-dns/ to
publish the nameserver ip address when someone dials up your ipppd.
<sect1> syncppp_ipx: How can I do IPX over ipppd?
<label id="syncppp_ipx">
Give the option <tt/+ipx-protocol/ to the ipppd.
<sect1> syncppp_faster: How can I increase my PPP data transfer rates?
<label id="syncppp_faster">
You can establish more channels with MPPP (see the MPPP section). Another way
is to use compression, see question
<ref id="syncppp_compression" name="syncppp_compression">.
<sect1> syncppp_compression: Which compressions can I use with ipppd?
<label id="syncppp_compression">
Several compressions can now be used with ipppd. However, if in doubt and
it does not work: disable it.
<item><em>Van Jacobson compression</em> (header compression).
Should work fine now for current kernels (later than 2.2.14). To use it you
have to compile it into the kernel. To get around some problems with
automatic loading of the VJ module try to also compile SLIP and CSLIP
into the kernel. Disable with options <tt>&dquot;-vj -vjccomp&dquot;</tt>.
<item><em>BSD compression</em>.
Seems to work quite well if your peer supports it. It is independent
of Van Jacobson compression, so you can use them both together.
<item><em>LZS compression</em> (sometimes also
called <em>Stac compression</em>).
Also works quite well. To enable it, some manual work has to be done to add
the code to the ipppd (see the isdn4k-util package).
<!-- Trouble ipppd
<sect1> syncppp_strategy: I can't get a connect. How can I find out where the
problem is?
<label id="syncppp_strategy">
The output of ipppd is very helpful... (see next question:
<ref id="syncppp_log" name="syncppp_log">)
<item>Have a look at the error messages and see the following questions...
<item>Check whether you can find a few &dquot;LCP-conf-req SENT&dquot; messages
(less than ten) and then a &dquot;TERM-REF&dquot;.
<item>Check whether the ISDN card was configured properly. It seems the
computer doesn't dial (IRQ, IO, protocol wrong?)
<item>At least a few &dquot;RECV&dquot; messages: good! The card is dialing and
your dialin computer tries to communicate. Maybe the pap/chap authentication
doesn't work (see question <ref id="pap" name="pap">). Check the ipppd
<item>The message that ipppd was exited for some reason: not so good!
Check <tt>/var/log/messages</tt>, <tt>/var/log/debug</tt>, and
<tt>/var/adm/daemon</tt> (if existing). Could be a bug in ipppd.
<item>The error/cause E0010 is <bf/NOT/ an error! It is just the informal
message that the call has ended.
<sect1> syncppp_log: How can I get a log for ipppd?
<label id="syncppp_log">
Normally when giving the option "debug" to ipppd, the debbuging output
may be logged in <tt>/var/log/messages</tt>, <tt>/var/log/debug</tt>, or
<tt>/var/adm/daemon</tt> (depends on your distribution, look around).
For debugging purposes you can redirect the PPP log into a separate file.
Just edit <tt>/etc/syslog.conf</tt> and add the following line (caution:
do NOT use blanks or tabs - check "man syslog.conf(5)" for more details):
daemon.* /var/log/ppp-log
then every information from PPP demon will be logged to /var/log/ppp-log.
Emil Stephan <tt><htmlurl url=""
name=""></tt> also wrote:
Remove the comment sign in front of this line in /etc/syslog.conf:
&num;*.=debug /tmp/debug
After changing this file you can restart syslogd with &dquot;kill -1 pid of
The output in /tmp/debug can be used to optimize the handshaking of
PPP options.
<sect1> syncppp_nopppsupport: Starting ipppd I get the error message
&dquot;this systems lacks ppp support&dquot; or &dquot;isdn driver is out
of date. maybe ippp0 has no syncppp0 encapsulation&dquot;.
<label id="syncppp_nopppsupport">
Check whether the device &dquot;ippp0&dquot; exists (i.e. with the program
&dquot;ifconfig&dquot;). See question
<ref id="syncppp_netinterface" name="syncppp_netinterface">
for details on the naming conventions for net interfaces.
The ipppd *needs* this device with exactly *that* name and *syncppp*
encapsulation. If it doesn't exist then you have to define it:
isdnctrl addif ippp0
isdnctrl encap ippp0 syncppp
(see i4l documentation or question
<ref id="syncppp_config" name="syncppp_config"> for more information...)
Maybe you compiled ipppd with the source of another kernel that you are not
<sect1> syncppp_nousabledevice: When I try to start ipppd it says &dquot;Can't
find usable ippp device&dquot;
<label id="syncppp_nousabledevice">
This message occurs when the linklevel interface is told to dial out, but ipppd
is not running, or not available.
<sect1> syncppp_starterror: When I start ipppd, I only get error messages from
the i4l driver.
<label id="syncppp_starterror">
When ipppd is started, it calls functions that can trigger a network
packet (e.g. gethostbyname()). Without ipppd (since at this time, ipppd
it has not been fully started), this network access cannot be processed,
You should try to put the needed hostnames in the local /etc/hosts or
in some way define the name so that it can be resolved without having
the access the ISDN/ippp interface.
<sect1> syncppp_framesdelayed: I get the message <tt>IP frames delayed</tt> -
but no connection.
<label id="syncppp_framesdelayed">
Have you really dialed out? Check question
<ref id="dialout_dialmode" name="dialout_dialmode"> and your configuration on the
different dialmodes.
<sect1> syncppp_noroute: I cannot dial out with <tt>isdnctrl dial
ippp0</tt>. It seems as if the route to ipppd is missing although I <bf/did/
set it (<tt>network unreachable</tt>). With my old kernel 2.0 everything works
<label id="syncppp_noroute">
In the newer kernels you have to place <tt>route</tt> as the very last command
before the dialout command. Otherwise the kernel will delete the route.
<sect1> syncppp_nodefaultroute: After ipppd dials out my default route is gone.
<label id="syncppp_nodefaultroute">
It's the kernel's fault. Newer kernels (= 2.0.x) have some changes in the
routing. Workaround: install a script /etc/ppp/ip-up like this:
/sbin/route add default ippp*
Please note, that for 2.2.x kernel, you should NOT do this (routing has changed
yet again). Instead, give the "defaultroute" option to ipppd.
If you make your connections manually, can use something like this script:
&num;! /bin/sh
case &dollar;1 in
/sbin/isdnctrl dial ippp0 &num; build up connection
sleep 5 &num; wait until line open
/sbin/route add default ippp0 &num; set route
/sbin/isdnctrl hangup ippp0 &num; hangup connection
/sbin/route del default &num; and delete route again
echo -e &dquot;\a Usage: 'isdn on' or 'isdn off'&dquot;
Please note, that for 2.2.x kernel, you should NOT use the
<tt>route add default</tt>, and <tt>route del default</tt> commands.
Instead, give the "defaultroute" option to ipppd.
<sect1> syncppp_packettoolarge: I often get the error message
<tt>hscx_empty_fifo: incoming packet too large</tt>
<label id="syncppp_packettoolarge">
Probably one of the compressions is activated (i4l can't handle those very
well). See also next question.
Another possible reason could be an IRQ problem - see question &dquot;Why should
I avoid IRQ 12 and 15 for my ISDN card?&dquot;.
Another problem can be `&num;' characters in your pap-secrets file. In this
case you have to surround user name and/or password with quotation marks
(depending on which one is affected).
<sect1> syncppp_slow: The connection with ipppd seems to work, but eventually it
crashes or is very slow.
<label id="syncppp_slow">
It could be that some compression is activated (that i4l can't
handle properly). Common error: &dquot;-vj&dquot; has to be used *additionally*
to &dquot;-vjccomp&dquot; (to completely switch off the VJ compression) - the
example scripts coming with ipppd don't have that option included already.
Other compression modes (bsd, pccomp) can cause trouble, too. Therefore, you
should switch off all compression options (see also question
<ref id="syncppp_compression" name="syncppp_compression">). Also giving the
option &dquot;noccp&dquot; can help.
<sect1> syncppp_loadproblem: I only have problems with ipppd when the
connection is being heavily burdened. Then everything stops. What could be
causing this?
<label id="syncppp_loadproblem">
Sven Engelhardt <tt><htmlurl url=""
name=""></tt> wrote on 12 Dec 1996:
We are an ISP here in Dresden and use Linux (among other systems)
for our access (with I4L as well as with external terminal adapters).
We have this problem mostly with Windows 95 and NT customers who
are using the &dquot;included&dquot; (modem network) software. It doesn't make
any difference whether the customer is dialing with async or sync PPP.
It also doesn't matter which modem emulation he is using on his side.
What they have in common is that the connection is made with Microsoft
modem adapter + Microsoft PPP (although a colleague recently told me
about a similar problem with a Macintosh customer).
Since it doesn't matter to PPP who is the server and who is the
client, ask your ISP what kind of hardware you are dialing into (we
have had no problems with Linux customers and Trumpet Winsock
users, therefore I suspect a bug in MS-PPP).
The following workaround usually works for us: (it's not a cure,
but helps to reduce the pain...)
* Reduce the Max MTU to 576 or even (296)
* Reduce the DefaultRcvWindow to 2144
On the Windows 95 side these are 2 Registry entries; on the Linux
side you can set &dquot;mtu 576&dquot; and &dquot;mru 576&dquot; in the PPP
options. (See also: <tt><url url=""></tt>)
Erik Corry <tt><htmlurl url=""
name=""></tt> added on 16 Dec 1996:
For me, neither PPP compression option nor mru/mtu 296 helped.
What did help was the AT command:
that limits the sent packets to 512 bytes.
<sect1> syncppp_mtu: My ipppd works, but I keep getting the message pppd(104):
ioctl(SIOCSIFMTU): Invalid argument&dquot;?
<label id="syncppp_mtu">
If mtu is not set, then a default value is assumed - possibly &dquot;0&dquot;
(which of course cannot be correct). Add <tt>&dquot;mtu 1024&dquot;</tt> to
your ipppd options (1500 could also be ok).
<sect1> syncppp_1stpacket: The first IP packet gets lost on automatic dialout
with dynamic IP address allocation.
<label id="syncppp_1stpacket">
There are some dialout problems in connection with syncPPP and dynamic IP
address allocation. In this case your IP address will change while packets
are waiting to be sent. All packets that should be sent before the change
in IP address have the wrong response ip address and will therefore never
receive an answer. The problem is that this may cause multiple dialouts
(see section <ref id="dod" name="dod">). Possible solutions:
<item>Dial out manually with &dquot;isdnctrl dial ippp*&dquot;
<item>Use diald to control when the connection goes up or down.
<item>Get a permanent IP address
<item>A workaround is included in the newest kernels, which can be
activated like this:
echo 7 > /proc/sys/net/ipv4/ip_dynaddr
(use 5 instad of 7 to not get warnings into /var/log/messages)
If you have a SuSE distribution, this workaround can also be configured by
setting <tt/IP_DYNIP=&dquot;yes&dquot;/ in <tt>/etc/rc.config</tt>.
<item>Increase the number of retries on your Windows machine for setting
up the connection. Change the registry entry
from 3 to a larger value (e.g. 5 or 7).
<sect1> syncppp_droppacket: What does the message &dquot;No phone number,
packet dropped&dquot; mean?
<label id="syncppp_droppacket">
Michael Engert <tt><htmlurl url=""
name=""></tt> wrote in Nov/Dec 1996:
That means that your computer has an IP packet from somewhat who was
logged on a few seconds before, but has since broken the connection.
Your computer tries to send this packet on and finds an appropriate
route. But the interface isdn(0|1|...) can't reach the other computer,
since it has no telephone number to dial.
<sect1> syncppp_leadingzero: Why does my ipppd dial one too many zeros
(<tt>&dquot;ippp0: dialing 0 089XXXXXX...&dquot;</tt>)? I don't have any
<label id="syncppp_leadingzero">
The first zero is not dialed. It only shows the retry counter, which is related
to the <tt/isdnctrl dialmax/ parameter.
<sect1> syncppp_ethfake: My ISDN device is shown with HWaddr and IRQ=0 and
base address = 0 when I list it with ifconfig
<label id="syncppp_ethfake">
The ISDN device fakes an Ethernet device. It ignores IRQ and baseaddr and
just needs the HWaddr for the Ethernet encapsulation.
<sect1> syncppp_lzsproblem: I get an error message like <tt>kernel check for
lzs failed</tt>?
<label id="syncppp_lzsproblem">
This means that ipppd tries to use lzs compression, but can't find a
compiled module which contains the code. The error message is only cosmetic,
since the system will still work fine. Either disable lzs compression by
providing <tt>noccp</tt> as an option for ipppd, or compile and load the
lzs module.
<!-- Config Async PPP
<sect> asyncppp: Configuration Async PPP
<label id="asyncppp">
<sect1> asyncppp_whichppp: pppd, ipppd, async PPP, sync PPP - what are they?
Which should I use?
<label id="asyncppp_whichppp">
<bf>async PPP</bf> is a character-based protocol which is usually used over
analog serial lines (async = asynchronous). You have to use the program
<tt/pppd/ for it, and use it with the ttyI* devices.
In contrast, <bf>Sync PPP</bf> is a bit-oriented protocol (sync = synchronous),
for which the original <tt/pppd/ cannot be used. Michael Hipp has written an
adapted version called <tt/ipppd/ which will use ipppd* net devices.
With i4l you can have both. It all depends on what your ISDN counterpart
supports. If it immediately begins to send frames, then you've probably reached
an sync PPP machine. If you can log in via same terminal screen, and then can
start <tt/pppd/, this can be an indication of async PPP.
Usually using <bf/sync PPP/ works fine, and it is slightly more efficient. To
take advantage of newer features of the <tt/pppd/, use <bf/async PPP/.
<sect1> asyncppp_config: How do I configure async PPP?
<label id="asyncppp_config">
Just set up a normal pppd, but tell it to use one of the ttyI* devices,
e.g. /dev/ttyI0. You can set up several pppd's with different configuration on
different ttyI* devices.
It is very important to set up the authentication information
properly. Improper authentication is probably the most frequently
reported problem on the mailing list. Please, work through section
<ref id="pap" name="pap"> completely yourself, before asking others for
On problems also check out the section about the syncppp problems, since many
configuration problems are common for pppd (async PPP) and ipppd (sync PPP).
<sect1> asyncppp_logindelay: How can I reduce login delay?
<label id="asyncppp_logindelay">
You can write out a login session with (&dquot;Debug-Log&dquot;), and see which